12 fix docs #13

Merged
Berack96 merged 18 commits from 12-fix-docs into main 2025-10-02 01:41:00 +02:00
3 changed files with 5 additions and 33 deletions
Showing only changes of commit 1e7e10ab44 - Show all commits

View File

@@ -23,9 +23,9 @@ class MarketAPIsTool(BaseWrapper, Toolkit):
""" """
def __init__(self, currency: str = "USD", enable_aggregation: bool = False): def __init__(self, currency: str = "USD", enable_aggregation: bool = False):
self.currency = currency kwargs = {"currency": currency or "USD"}
wrappers = [ BinanceWrapper, CoinBaseWrapper, CryptoCompareWrapper, YFinanceWrapper ] wrappers = [ BinanceWrapper, CoinBaseWrapper, CryptoCompareWrapper, YFinanceWrapper ]
self.wrappers: WrapperHandler[BaseWrapper] = WrapperHandler.build_wrappers(wrappers) self.wrappers: WrapperHandler[BaseWrapper] = WrapperHandler.build_wrappers(wrappers, kwargs=kwargs)
# Inizializza l'aggregatore solo se richiesto (lazy initialization) # Inizializza l'aggregatore solo se richiesto (lazy initialization)
self._aggregator = None self._aggregator = None

View File

@@ -100,7 +100,7 @@ class WrapperHandler(Generic[W]):
return f"{e} [\"{last_frame.filename}\", line {last_frame.lineno}]" return f"{e} [\"{last_frame.filename}\", line {last_frame.lineno}]"
@staticmethod @staticmethod
def build_wrappers(constructors: Iterable[Type[W]], try_per_wrapper: int = 3, retry_delay: int = 2) -> 'WrapperHandler[W]': def build_wrappers(constructors: Iterable[Type[W]], try_per_wrapper: int = 3, retry_delay: int = 2, kwargs: dict | None = None) -> 'WrapperHandler[W]':
""" """
Builds a WrapperHandler instance with the given wrapper constructors. Builds a WrapperHandler instance with the given wrapper constructors.
It attempts to initialize each wrapper and logs a warning if any cannot be initialized. It attempts to initialize each wrapper and logs a warning if any cannot be initialized.
@@ -109,6 +109,7 @@ class WrapperHandler(Generic[W]):
constructors (Iterable[Type[W]]): An iterable of wrapper classes to instantiate. e.g. [WrapperA, WrapperB] constructors (Iterable[Type[W]]): An iterable of wrapper classes to instantiate. e.g. [WrapperA, WrapperB]
try_per_wrapper (int): Number of retries per wrapper before switching to the next. try_per_wrapper (int): Number of retries per wrapper before switching to the next.
retry_delay (int): Delay in seconds between retries. retry_delay (int): Delay in seconds between retries.
kwargs (dict | None): Optional dictionary with keyword arguments common to all wrappers.
Returns: Returns:
WrapperHandler[W]: An instance of WrapperHandler with the initialized wrappers. WrapperHandler[W]: An instance of WrapperHandler with the initialized wrappers.
Raises: Raises:
@@ -119,7 +120,7 @@ class WrapperHandler(Generic[W]):
result = [] result = []
for wrapper_class in constructors: for wrapper_class in constructors:
try: try:
wrapper = wrapper_class() wrapper = wrapper_class(**(kwargs or {}))
result.append(wrapper) result.append(wrapper)
except Exception as e: except Exception as e:
log_warning(f"{wrapper_class} cannot be initialized: {e}") log_warning(f"{wrapper_class} cannot be initialized: {e}")

View File

@@ -1,6 +1,4 @@
import os
import pytest import pytest
from app.agents.market_agent import MarketToolkit
from app.markets import MarketAPIsTool from app.markets import MarketAPIsTool
@@ -35,27 +33,6 @@ class TestMarketAPIsTool:
assert hasattr(btc_product, 'price') assert hasattr(btc_product, 'price')
assert btc_product.price > 0 assert btc_product.price > 0
def test_market_toolkit_integration(self):
try:
toolkit = MarketToolkit()
assert toolkit is not None
assert hasattr(toolkit, 'market_agent')
assert toolkit.market_api is not None
tools = toolkit.tools
assert len(tools) > 0
except Exception as e:
print(f"MarketToolkit test failed: {e}")
# Non fail completamente - il toolkit potrebbe avere dipendenze specifiche
def test_provider_selection_mechanism(self):
potential_providers = 0
if os.getenv('CDP_API_KEY_NAME') and os.getenv('CDP_API_PRIVATE_KEY'):
potential_providers += 1
if os.getenv('CRYPTOCOMPARE_API_KEY'):
potential_providers += 1
def test_error_handling(self): def test_error_handling(self):
try: try:
market_wrapper = MarketAPIsTool("USD") market_wrapper = MarketAPIsTool("USD")
@@ -63,9 +40,3 @@ class TestMarketAPIsTool:
assert fake_product is None or fake_product.price == 0 assert fake_product is None or fake_product.price == 0
except Exception as e: except Exception as e:
pass pass
def test_wrapper_currency_support(self):
market_wrapper = MarketAPIsTool("USD")
assert hasattr(market_wrapper, 'currency')
assert isinstance(market_wrapper.currency, str)
assert len(market_wrapper.currency) >= 3 # USD, EUR, etc.