diff --git a/openbb_platform/core/openbb_core/provider/standard_models/currency_pairs.py b/openbb_platform/core/openbb_core/provider/standard_models/currency_pairs.py index 23326ebbc94..c910236c0d6 100644 --- a/openbb_platform/core/openbb_core/provider/standard_models/currency_pairs.py +++ b/openbb_platform/core/openbb_core/provider/standard_models/currency_pairs.py @@ -1,16 +1,24 @@ """Currency Available Pairs Standard Model.""" +from typing import Optional + from pydantic import Field from openbb_core.provider.abstract.data import Data from openbb_core.provider.abstract.query_params import QueryParams +from openbb_core.provider.utils.descriptions import DATA_DESCRIPTIONS class CurrencyPairsQueryParams(QueryParams): """Currency Available Pairs Query.""" + query: Optional[str] = Field( + default=None, description="Query to search for currency pairs." + ) + class CurrencyPairsData(Data): """Currency Available Pairs Data.""" - name: str = Field(description="Name of the currency pair.") + symbol: str = Field(description=DATA_DESCRIPTIONS.get("symbol", "")) + name: Optional[str] = Field(default=None, description="Name of the currency pair.") diff --git a/openbb_platform/extensions/currency/integration/test_currency_api.py b/openbb_platform/extensions/currency/integration/test_currency_api.py index e85f2e931e9..58c47d3af72 100644 --- a/openbb_platform/extensions/currency/integration/test_currency_api.py +++ b/openbb_platform/extensions/currency/integration/test_currency_api.py @@ -27,23 +27,19 @@ def headers(): ( { "provider": "polygon", - "symbol": "USDJPY", - "date": "2023-10-12", - "search": "", - "active": True, - "order": "asc", - "sort": "currency_name", - "limit": 100, + "query": "eur", } ), ( { "provider": "fmp", + "query": "eur", } ), ( { "provider": "intrinio", + "query": "eur", } ), ], diff --git a/openbb_platform/extensions/currency/integration/test_currency_python.py b/openbb_platform/extensions/currency/integration/test_currency_python.py index 2c81518ab41..62069b8796c 100644 --- a/openbb_platform/extensions/currency/integration/test_currency_python.py +++ b/openbb_platform/extensions/currency/integration/test_currency_python.py @@ -24,23 +24,19 @@ def obb(pytestconfig): ( { "provider": "polygon", - "symbol": "USDJPY", - "date": "2023-10-12", - "search": "", - "active": True, - "order": "asc", - "sort": "currency_name", - "limit": 100, + "query": "eur", } ), ( { "provider": "fmp", + "query": "eur", } ), ( { "provider": "intrinio", + "query": "eur", } ), ], diff --git a/openbb_platform/extensions/currency/openbb_currency/currency_router.py b/openbb_platform/extensions/currency/openbb_currency/currency_router.py index 111acd3b5e2..8999e507f42 100644 --- a/openbb_platform/extensions/currency/openbb_currency/currency_router.py +++ b/openbb_platform/extensions/currency/openbb_currency/currency_router.py @@ -21,18 +21,14 @@ router.include_router(price_router) @router.command( model="CurrencyPairs", examples=[ - APIEx(parameters={"provider": "intrinio"}), + APIEx(parameters={"provider": "fmp"}), APIEx( - description="Search for 'EURUSD' currency pair using 'intrinio' as provider.", - parameters={"provider": "intrinio", "symbol": "EURUSD"}, - ), - APIEx( - description="Search for actively traded currency pairs on the queried date using 'polygon' as provider.", - parameters={"provider": "polygon", "date": "2024-01-02", "active": True}, + description="Search for 'EUR' currency pair using 'intrinio' as provider.", + parameters={"provider": "intrinio", "query": "EUR"}, ), APIEx( description="Search for terms using 'polygon' as provider.", - parameters={"provider": "polygon", "search": "Euro zone"}, + parameters={"provider": "polygon", "query": "Euro zone"}, ), ], ) diff --git a/openbb_platform/openbb/assets/reference.json b/openbb_platform/openbb/assets/reference.json index 004e047344c..495c4e0b5ca 100644 --- a/openbb_platform/openbb/assets/reference.json +++ b/openbb_platform/openbb/assets/reference.json @@ -576,9 +576,16 @@ "message": null }, "description": "Currency Search.\n\nSearch available currency pairs.\nCurrency pairs are the national currencies from two countries coupled for trading on\nthe foreign exchange (FX) marketplace.\nBoth currencies will have exchange rates on which the trade will have its position basis.\nAll trading within the forex market, whether selling, buying, or trading, will take place through currency pairs.\n(ref: Investopedia)\nMajor currency pairs include pairs such as EUR/USD, USD/JPY, GBP/USD, etc.", - "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.currency.search(provider='intrinio')\n# Search for 'EURUSD' currency pair using 'intrinio' as provider.\nobb.currency.search(provider='intrinio', symbol=EURUSD)\n# Search for actively traded currency pairs on the queried date using 'polygon' as provider.\nobb.currency.search(provider='polygon', date=2024-01-02, active=True)\n# Search for terms using 'polygon' as provider.\nobb.currency.search(provider='polygon', search=Euro zone)\n```\n\n", + "examples": "\nExamples\n--------\n\n```python\nfrom openbb import obb\nobb.currency.search(provider='fmp')\n# Search for 'EUR' currency pair using 'intrinio' as provider.\nobb.currency.search(provider='intrinio', query='EUR')\n# Search for terms using 'polygon' as provider.\nobb.currency.search(provider='polygon', query='Euro zone')\n```\n\n", "parameters": { "standard": [ + { + "name": "query", + "type": "str", + "description": "Query to search for currency pairs.", + "default": null, + "optional": true + }, { "name": "provider", "type": "Literal['fmp', 'intrinio', 'polygon']", @@ -589,57 +596,7 @@ ], "fmp": [], "intrinio": [], - "polygon": [ - { - "name": "symbol", - "type": "str", - "description": "Symbol of the pair to search.", - "default": null, - "optional": true - }, - { - "name": "date", - "type": "Union[date, str]", - "description": "A specific date to get data for.", - "default": null, - "optional": true - }, - { - "name": "search", - "type": "str", - "description": "Search for terms within the ticker and/or company name.", - "default": "", - "optional": true - }, - { - "name": "active", - "type": "bool", - "description": "Specify if the tickers returned should be actively traded on the queried date.", - "default": true, - "optional": true - }, - { - "name": "order", - "type": "Literal['asc', 'desc']", - "description": "Order data by ascending or descending.", - "default": "asc", - "optional": true - }, - { - "name": "sort", - "type": "Literal['ticker', 'name', 'market', 'locale', 'currency_symbol', 'currency_name', 'base_currency_symbol', 'base_currency_name', 'last_updated_utc', 'delisted_utc']", - "description": "Sort field used for ordering.", - "default": null, - "optional": true - }, - { - "name": "limit", - "type": "Annotated[int, Gt(gt=0)]", - "description": "The number of data entries to return.", - "default": 1000, - "optional": true - } - ] + "polygon": [] }, "returns": { "OBBject": [ @@ -672,22 +629,22 @@ }, "data": { "standard": [ - { - "name": "name", - "type": "str", - "description": "Name of the currency pair.", - "default": "", - "optional": false - } - ], - "fmp": [ { "name": "symbol", "type": "str", - "description": "Symbol of the currency pair.", + "description": "Symbol representing the entity requested in the data.", "default": "", "optional": false }, + { + "name": "name", + "type": "str", + "description": "Name of the currency pair.", + "default": null, + "optional": true + } + ], + "fmp": [ { "name": "currency", "type": "str", @@ -711,13 +668,6 @@ } ], "intrinio": [ - { - "name": "code", - "type": "str", - "description": "Code of the currency pair.", - "default": "", - "optional": false - }, { "name": "base_currency", "type": "str", @@ -734,20 +684,6 @@ } ], "polygon": [ - { - "name": "market", - "type": "str", - "description": "Name of the trading market. Always 'fx'.", - "default": "", - "optional": false - }, - { - "name": "locale", - "type": "str", - "description": "Locale of the currency pair.", - "default": "", - "optional": false - }, { "name": "currency_symbol", "type": "str", @@ -755,13 +691,6 @@ "default": null, "optional": true }, - { - "name": "currency_name", - "type": "str", - "description": "Name of the quote currency.", - "default": null, - "optional": true - }, { "name": "base_currency_symbol", "type": "str", @@ -777,16 +706,30 @@ "optional": true }, { - "name": "last_updated_utc", - "type": "datetime", - "description": "The last updated timestamp in UTC.", + "name": "market", + "type": "str", + "description": "Name of the trading market. Always 'fx'.", "default": "", "optional": false }, { - "name": "delisted_utc", - "type": "datetime", - "description": "The delisted timestamp in UTC.", + "name": "locale", + "type": "str", + "description": "Locale of the currency pair.", + "default": "", + "optional": false + }, + { + "name": "last_updated", + "type": "date", + "description": "The date the reference data was last updated.", + "default": null, + "optional": true + }, + { + "name": "delisted", + "type": "date", + "description": "The date the item was delisted.", "default": null, "optional": true } diff --git a/openbb_platform/openbb/package/currency.py b/openbb_platform/openbb/package/currency.py index b2a90cfa9bc..05c7b823969 100644 --- a/openbb_platform/openbb/package/currency.py +++ b/openbb_platform/openbb/package/currency.py @@ -31,6 +31,10 @@ class ROUTER_currency(Container): @validate def search( self, + query: Annotated[ + Optional[str], + OpenBBField(description="Query to search for currency pairs."), + ] = None, provider: Annotated[ Optional[Literal["fmp", "intrinio", "polygon"]], OpenBBField( @@ -52,24 +56,12 @@ class ROUTER_currency(Container): Parameters ---------- + query : Optional[str] + Query to search for currency pairs. provider : Optional[Literal['fmp', 'intrinio', 'polygon']] The provider to use for the query, by default None. If None, the provider specified in defaults is selected or 'fmp' if there is no default. - symbol : Optional[str] - Symbol of the pair to search. (provider: polygon) - date : Optional[datetime.date] - A specific date to get data for. (provider: polygon) - search : Optional[str] - Search for terms within the ticker and/or company name. (provider: polygon) - active : Optional[bool] - Specify if the tickers returned should be actively traded on the queried date. (provider: polygon) - order : Optional[Literal['asc', 'desc']] - Order data by ascending or descending. (provider: polygon) - sort : Optional[Literal['ticker', 'name', 'market', 'locale', 'currency_symbol', 'currency_name', 'base_currency_symbol', 'base_currency_name', 'last_updated_utc', 'delisted_utc']] - Sort field used for ordering. (provider: polygon) - limit : Optional[Annotated[int, Gt(gt=0)]] - The number of data entries to return. (provider: polygon) Returns ------- @@ -87,49 +79,43 @@ class ROUTER_currency(Container): CurrencyPairs ------------- - name : str + symbol : str + Symbol representing the entity requested in the data. + name : Optional[str] Name of the currency pair. - symbol : Optional[str] - Symbol of the currency pair. (provider: fmp) currency : Optional[str] Base currency of the currency pair. (provider: fmp) stock_exchange : Optional[str] Stock exchange of the currency pair. (provider: fmp) exchange_short_name : Optional[str] Short name of the stock exchange of the currency pair. (provider: fmp) - code : Optional[str] - Code of the currency pair. (provider: intrinio) base_currency : Optional[str] ISO 4217 currency code of the base currency. (provider: intrinio) quote_currency : Optional[str] ISO 4217 currency code of the quote currency. (provider: intrinio) - market : Optional[str] - Name of the trading market. Always 'fx'. (provider: polygon) - locale : Optional[str] - Locale of the currency pair. (provider: polygon) currency_symbol : Optional[str] The symbol of the quote currency. (provider: polygon) - currency_name : Optional[str] - Name of the quote currency. (provider: polygon) base_currency_symbol : Optional[str] The symbol of the base currency. (provider: polygon) base_currency_name : Optional[str] Name of the base currency. (provider: polygon) - last_updated_utc : Optional[datetime] - The last updated timestamp in UTC. (provider: polygon) - delisted_utc : Optional[datetime] - The delisted timestamp in UTC. (provider: polygon) + market : Optional[str] + Name of the trading market. Always 'fx'. (provider: polygon) + locale : Optional[str] + Locale of the currency pair. (provider: polygon) + last_updated : Optional[date] + The date the reference data was last updated. (provider: polygon) + delisted : Optional[date] + The date the item was delisted. (provider: polygon) Examples -------- >>> from openbb import obb - >>> obb.currency.search(provider='intrinio') - >>> # Search for 'EURUSD' currency pair using 'intrinio' as provider. - >>> obb.currency.search(provider='intrinio', symbol='EURUSD') - >>> # Search for actively traded currency pairs on the queried date using 'polygon' as provider. - >>> obb.currency.search(provider='polygon', date='2024-01-02', active=True) + >>> obb.currency.search(provider='fmp') + >>> # Search for 'EUR' currency pair using 'intrinio' as provider. + >>> obb.currency.search(provider='intrinio', query='EUR') >>> # Search for terms using 'polygon' as provider. - >>> obb.currency.search(provider='polygon', search='Euro zone') + >>> obb.currency.search(provider='polygon', query='Euro zone') """ # noqa: E501 return self._run( @@ -142,7 +128,9 @@ class ROUTER_currency(Container): ("fmp", "intrinio", "polygon"), ) }, - standard_params={}, + standard_params={ + "query": query, + }, extra_params=kwargs, ) ) diff --git a/openbb_platform/providers/fmp/openbb_fmp/models/currency_pairs.py b/openbb_platform/providers/fmp/openbb_fmp/models/currency_pairs.py index b5c3f2cd561..23c2d9b37a5 100644 --- a/openbb_platform/providers/fmp/openbb_fmp/models/currency_pairs.py +++ b/openbb_platform/providers/fmp/openbb_fmp/models/currency_pairs.py @@ -1,5 +1,7 @@ """FMP Currency Available Pairs Model.""" +# pylint: disable=unused-argument + from typing import Any, Dict, List, Optional from openbb_core.provider.abstract.fetcher import Fetcher @@ -7,7 +9,9 @@ from openbb_core.provider.standard_models.currency_pairs import ( CurrencyPairsData, CurrencyPairsQueryParams, ) +from openbb_core.provider.utils.errors import EmptyDataError from openbb_fmp.utils.helpers import get_data_many +from pandas import DataFrame from pydantic import Field @@ -53,7 +57,6 @@ class FMPCurrencyPairsFetcher( ) -> List[Dict]: """Return the raw data from the FMP endpoint.""" api_key = credentials.get("fmp_api_key") if credentials else "" - base_url = "https://financialmodelingprep.com/api/v3" url = f"{base_url}/symbol/available-forex-currency-pairs?apikey={api_key}" @@ -64,4 +67,20 @@ class FMPCurrencyPairsFetcher( query: FMPCurrencyPairsQueryParams, data: List[Dict], **kwargs: Any ) -> List[FMPCurrencyPairsData]: """Return the transformed data.""" - return [FMPCurrencyPairsData.model_validate(d) for d in data] + if not data: + raise EmptyDataError("The request was returned empty.") + df = DataFrame(data) + if query.query: + df = df[ + df["name"].str.contains(query.query, case=False) + | df["symbol"].str.contains(query.query, case=False) + | df["currency"].str.contains(query.query, case=False) + | df["stockExchange"].str.contains(query.query, case=False) + | df["exchangeShortName"].str.contains(query.query, case=False) + ] + if len(df) == 0: + raise EmptyDataError( + f"No results were found with the query supplied. -> {query.query}" + + " Hint: Names and descriptions are not searchable from FMP, try 3-letter symbols." + ) + return [FMPCurrencyPairsData.model_validate(d) for d in df.to_dict("records")] diff --git a/openbb_platform/providers/intrinio/openbb_intrinio/models/currency_pairs.py b/openbb_platform/providers/intrinio/openbb_intrinio/models/currency_pairs.py index fb99b5e5af2..9c418c166dd 100644 --- a/openbb_platform/providers/intrinio/openbb_intrinio/models/currency_pairs.py +++ b/openbb_platform/providers/intrinio/openbb_intrinio/models/currency_pairs.py @@ -7,7 +7,9 @@ from openbb_core.provider.standard_models.currency_pairs import ( CurrencyPairsData, CurrencyPairsQueryParams, ) +from openbb_core.provider.utils.errors import EmptyDataError from openbb_intrinio.utils.helpers import get_data_many +from pandas import DataFrame from pydantic import Field @@ -21,9 +23,8 @@ class IntrinioCurrencyPairsQueryParams(CurrencyPairsQueryParams): class IntrinioCurrencyPairsData(CurrencyPairsData): """Intrinio Currency Available Pairs Data.""" - __alias_dict__ = {"name": "code"} + __alias_dict__ = {"symbol": "code"} - code: str = Field(description="Code of the currency pair.", alias="name") base_currency: str = Field( description="ISO 4217 currency code of the base currency." ) @@ -56,7 +57,6 @@ class IntrinioCurrencyPairsFetcher( base_url = "https://api-v2.intrinio.com" url = f"{base_url}/forex/pairs?api_key={api_key}" - return await get_data_many(url, "pairs", **kwargs) @staticmethod @@ -64,4 +64,21 @@ class IntrinioCurrencyPairsFetcher( query: IntrinioCurrencyPairsQueryParams, data: List[Dict], **kwargs: Any ) -> List[IntrinioCurrencyPairsData]: """Return the transformed data.""" - return [IntrinioCurrencyPairsData.model_validate(d) for d in data] + if not data: + raise EmptyDataError("The request was returned empty.") + df = DataFrame(data) + if query.query: + df = df[ + df["code"].str.contains(query.query, case=False) + | df["base_currency"].str.contains(query.query, case=False) + | df["quote_currency"].str.contains(query.query, case=False) + ] + if len(df) == 0: + raise EmptyDataError( + f"No results were found with the query supplied. -> {query.query}" + + " Hint: Names and descriptions are not searchable from Intrinio, try 3-letter symbols." + ) + return [ + IntrinioCurrencyPairsData.model_validate(d) + for d in df.to_dict(orient="records") + ] diff --git a/openbb_platform/providers/polygon/openbb_polygon/models/currency_pairs.py b/openbb_platform/providers/polygon/openbb_polygon/models/currency_pairs.py index 28ee909d701..83cb753b64c 100644 --- a/openbb_platform/providers/polygon/openbb_polygon/models/currency_pairs.py +++ b/openbb_platform/providers/polygon/openbb_polygon/models/currency_pairs.py @@ -1,19 +1,22 @@ """Polygon Currency Available Pairs Model.""" +# pylint: disable=unused-argument + from datetime import ( date as dateType, datetime, ) -from typing import Any, Dict, List, Literal, Optional +from typing import Any, Dict, List, Optional from openbb_core.provider.abstract.fetcher import Fetcher from openbb_core.provider.standard_models.currency_pairs import ( CurrencyPairsData, CurrencyPairsQueryParams, ) -from openbb_core.provider.utils.descriptions import QUERY_DESCRIPTIONS +from openbb_core.provider.utils.errors import EmptyDataError from openbb_polygon.utils.helpers import get_data -from pydantic import Field, PositiveInt, field_validator +from pandas import DataFrame +from pydantic import Field, field_validator class PolygonCurrencyPairsQueryParams(CurrencyPairsQueryParams): @@ -22,75 +25,39 @@ class PolygonCurrencyPairsQueryParams(CurrencyPairsQueryParams): Source: https://polygon.io/docs/forex/get_v3_reference_tickers """ - symbol: Optional[str] = Field( - default=None, description="Symbol of the pair to search." - ) - date: Optional[dateType] = Field( - default=None, description=QUERY_DESCRIPTIONS.get("date", "") - ) - search: Optional[str] = Field( - default="", - description="Search for terms within the ticker and/or company name.", - ) - active: Optional[bool] = Field( - default=True, - description="Specify if the tickers returned should be actively traded on the queried date.", - ) - order: Optional[Literal["asc", "desc"]] = Field( - default="asc", description="Order data by ascending or descending." - ) - sort: Optional[ - Literal[ - "ticker", - "name", - "market", - "locale", - "currency_symbol", - "currency_name", - "base_currency_symbol", - "base_currency_name", - "last_updated_utc", - "delisted_utc", - ] - ] = Field(default=None, description="Sort field used for ordering.") - limit: Optional[PositiveInt] = Field( - default=1000, description=QUERY_DESCRIPTIONS.get("limit", "") - ) - class PolygonCurrencyPairsData(CurrencyPairsData): """Polygon Currency Available Pairs Data.""" - market: str = Field(description="Name of the trading market. Always 'fx'.") - locale: str = Field(description="Locale of the currency pair.") + __alias_dict__ = { + "last_updated": "last_updated_utc", + "delisted": "delisted_utc", + "name": "currency_name", + "symbol": "ticker", + } currency_symbol: Optional[str] = Field( default=None, description="The symbol of the quote currency." ) - currency_name: Optional[str] = Field( - default=None, description="Name of the quote currency." - ) base_currency_symbol: Optional[str] = Field( default=None, description="The symbol of the base currency." ) base_currency_name: Optional[str] = Field( default=None, description="Name of the base currency." ) - last_updated_utc: datetime = Field(description="The last updated timestamp in UTC.") - delisted_utc: Optional[datetime] = Field( - default=None, description="The delisted timestamp in UTC." + market: str = Field(description="Name of the trading market. Always 'fx'.") + locale: str = Field(description="Locale of the currency pair.") + last_updated: Optional[dateType] = Field( + default=None, description="The date the reference data was last updated." + ) + delisted: Optional[dateType] = Field( + default=None, description="The date the item was delisted." ) - @field_validator("last_updated_utc", mode="before", check_fields=False) + @field_validator("last_updated", "delisted", mode="before", check_fields=False) @classmethod def last_updated_utc_validate(cls, v): # pylint: disable=E0213 """Return the parsed last updated timestamp in UTC.""" - return datetime.strptime(v, "%Y-%m-%dT%H:%M:%SZ") - - @field_validator("delisted_utc", mode="before", check_fields=False) - @classmethod - def delisted_utc_validate(cls, v): # pylint: disable=E0213 - """Return the parsed delisted timestamp in UTC.""" - return datetime.strptime(v, "%Y-%m-%dT%H:%M:%SZ") + return datetime.strptime(v, "%Y-%m-%dT%H:%M:%SZ").date() if v else None class PolygonCurrencyPairsFetcher( @@ -99,51 +66,36 @@ class PolygonCurrencyPairsFetcher( List[PolygonCurrencyPairsData], ] ): - """Transform the query, extract and transform the data from the Polygon endpoints.""" + """Polygon Currency Pairs Fetcher.""" @staticmethod def transform_query(params: Dict[str, Any]) -> PolygonCurrencyPairsQueryParams: - """Transform the query parameters. Ticker is set if symbol is provided.""" - transform_params = params - now = datetime.now().date().isoformat() - symbol = params.get("symbol") - transform_params["symbol"] = f"ticker=C:{symbol.upper()}" if symbol else "" - if params.get("date") is None: - transform_params["date"] = now - - return PolygonCurrencyPairsQueryParams(**transform_params) + """Transform the query parameters.""" + return PolygonCurrencyPairsQueryParams(**params) @staticmethod async def aextract_data( query: PolygonCurrencyPairsQueryParams, credentials: Optional[Dict[str, str]], **kwargs: Any, - ) -> List[dict]: + ) -> List[Dict]: """Extract the data from the Polygon API.""" api_key = credentials.get("polygon_api_key") if credentials else "" - request_url = ( f"https://api.polygon.io/v3/reference/" - f"tickers?{query.symbol}&market=fx&date={query.date}&" - f"search={query.search}&active={query.active}&order={query.order}&" - f"limit={query.limit}" + f"tickers?&market=fx&limit=1000" + f"&apiKey={api_key}" ) - if query.sort: - request_url += f"&sort={query.sort}" - request_url = f"{request_url}&apiKey={api_key}" data = {"next_url": request_url} all_data: List[Dict] = [] while "next_url" in data: data = await get_data(request_url, **kwargs) - if isinstance(data, list): raise ValueError("Expected a dict, got a list") - if len(data["results"]) == 0: raise RuntimeError( "No results found. Please change your query parameters." ) - if data["status"] == "OK": results = data.get("results") if not isinstance(results, list): @@ -153,18 +105,34 @@ class PolygonCurrencyPairsFetcher( all_data.extend(results) elif data["status"] == "ERROR": raise UserWarning(data["error"]) - if "next_url" in data: request_url = f"{data['next_url']}&apiKey={api_key}" - return all_data - # pylint: disable=unused-argument @staticmethod def transform_data( query: PolygonCurrencyPairsQueryParams, - data: List[dict], + data: List[Dict], **kwargs: Any, ) -> List[PolygonCurrencyPairsData]: - """Transform the data into a list of PolygonCurrencyPairsData.""" - return [PolygonCurrencyPairsData.model_validate(d) for d in data] + """Filter data by search query and validate the model.""" + if not data: + raise EmptyDataError("The request was returned empty.") + df = DataFrame(data) + df["ticker"] = df["ticker"].str.replace("C:", "") + if query.query: + df = df[ + df["name"].str.contains(query.query, case=False) + | df["base_currency_name"].str.contains(query.query, case=False) + | df["currency_name"].str.contains(query.query, case=False) + | df["base_currency_symbol"].str.contains(query.query, case=False) + | df["currency_symbol"].str.contains(query.query, case=False) + | df["ticker"].str.contains(query.query, case=False) + ] + if len(df) == 0: + raise EmptyDataError( + f"No results were found with the query supplied. -> {query.query}" + ) + return [ + PolygonCurrencyPairsData.model_validate(d) for d in df.to_dict("records") + ] diff --git a/openbb_platform/providers/polygon/tests/record/http/test_polygon_fetchers/test_polygon_currency_pairs_fetcher.yaml b/openbb_platform/providers/polygon/tests/record/http/test_polygon_fetchers/test_polygon_currency_pairs_fetcher.yaml index 6cd40bde933..2f63edb4130 100644 --- a/openbb_platform/providers/polygon/tests/record/http/test_polygon_fetchers/test_polygon_currency_pairs_fetcher.yaml +++ b/openbb_platform/providers/polygon/tests/record/http/test_polygon_fetchers/test_polygon_currency_pairs_fetcher.yaml @@ -9,283 +9,283 @@ interactions: Connection: - keep-alive method: GET - uri: https://api.polygon.io/v3/reference/tickers?active=True&apiKey=MOCK_API_KEY&date=2023-01-01&limit=1000&market=fx&order=asc + uri: https://api.polygon.io/v3/reference/tickers?apiKey=MOCK_API_KEY&limit=1000&market=fx response: body: string: !!binary | - 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 - AP//68nYAu8yBAA= + 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 + 686P79TtMFt8vD77j/8XAAD//zVlYESiMwQA headers: Connection: - keep-alive @@ -294,9 +294,9 @@ interactions: Content-Type: - application/json Date: - - Tue, 07 May 2024 16:14:03 GMT + - Thu, 09 May 2024 05:16:50 GMT Link: - - ; + - ; rel="next" Server: - nginx/1.19.2 @@ -309,7 +309,7 @@ interactions: X-Item-Count: - '1000' X-Request-Id: - - b6491d6a58833e8f17bf0ea48c2fb8d3 + - 2557e9c6a8d55bf0bf57cfb244abe400 status: code: 200 message: OK @@ -323,123 +323,123 @@ interactions: Connection: - keep-alive method: GET - uri: https://api.polygon.io/v3/reference/tickers?apiKey=MOCK_API_KEY&cursor=YWN0aXZlPXRydWUmYXA9QyUzQVNFS1pBUiU3QzMzMTc2YTg2ZjlhZGY2YThhMjE1MWY2M2Y5MjJkMjBkZTU0YzMwYTVjN2RhMGM5ZjgxYWJiNjQ3ZmU5ZWU3M2UmYXM9JmRhdGU9MjAyMy0wMS0wMSZsaW1pdD0xMDAwJm1hcmtldD1meCZvcmRlcj1hc2Mmc29ydD10aWNrZXI + uri: https://api.polygon.io/v3/reference/tickers?apiKey=MOCK_API_KEY&cursor=YWN0aXZlPXRydWUmYXA9QyUzQVNFS1pBUiU3QzMzMTc2YTg2ZjlhZGY2YThhMjE1MWY2M2Y5MjJkMjBkZTU0YzMwYTVjN2RhMGM5ZjgxYWJiNjQ3ZmU5ZWU3M2UmYXM9JmRhdGU9MjAyNC0wNS0wOSZsaW1pdD0xMDAwJm1hcmtldD1meCZvcmRlcj1hc2Mmc29ydD10aWNrZXI response: body: string: !!binary | - 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 - h8Alz1nWuPrxz+/+8f8BAAD//07s25ishQEA + 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 headers: Connection: - keep-alive @@ -448,7 +448,7 @@ interactions: Content-Type: - application/json Date: - - Tue, 07 May 2024 16:14:03 GMT + - Thu, 09 May 2024 05:16:50 GMT Server: - nginx/1.19.2 Strict-Transport-Security: @@ -460,7 +460,7 @@ interactions: X-Item-Count: - '351' X-Request-Id: - - 3e66ea32a52f1eab3957b9ea2177678c + - 304d360bcfd5e560d5b2a0fe2bbbb357 status: code: 200 message: OK diff --git a/openbb_platform/providers/polygon/tests/test_polygon_fetchers.py b/openbb_platform/providers/polygon/tests/test_polygon_fetchers.py index 9d6ee5b4440..a0c108e573b 100644 --- a/openbb_platform/providers/polygon/tests/test_polygon_fetchers.py +++ b/openbb_platform/providers/polygon/tests/test_polygon_fetchers.py @@ -152,7 +152,7 @@ def test_polygon_currency_historical_fetcher(credentials=test_credentials): @pytest.mark.record_http def test_polygon_currency_pairs_fetcher(credentials=test_credentials): """Test the Polygon Currency Pairs fetcher.""" - params = {"date": date(2023, 1, 1)} + params = {} fetcher = PolygonCurrencyPairsFetcher() result = fetcher.test(params, credentials)