diff options
author | montezdesousa <79287829+montezdesousa@users.noreply.github.com> | 2024-01-09 14:38:33 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-01-09 14:38:33 +0000 |
commit | 16bd470a782449474e1aae31d6b4356e3b904ab5 (patch) | |
tree | 15968573965048ef64f5958ba786f035ee03433c | |
parent | 0b8d6e6620dc18e2af5f57280d19b8e7837b0337 (diff) |
Allow multiple symbols `equity.profile` (#5929)
* allow multiple symbols
* pylint
* pylint ignore position
* change callback to helper func
---------
Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com>
Co-authored-by: Danglewood <85772166+deeleeramone@users.noreply.github.com>
Co-authored-by: hjoaquim <h.joaquim@campus.fct.unl.pt>
4 files changed, 24 insertions, 11 deletions
diff --git a/openbb_platform/extensions/equity/integration/test_equity_api.py b/openbb_platform/extensions/equity/integration/test_equity_api.py index b25085736b6..e2720cd3065 100644 --- a/openbb_platform/extensions/equity/integration/test_equity_api.py +++ b/openbb_platform/extensions/equity/integration/test_equity_api.py @@ -1102,7 +1102,9 @@ def test_equity_price_quote(params, headers): "params", [ ({"symbol": "AAPL", "provider": "cboe"}), - ({"provider": "intrinio", "symbol": "AAPL"}), + ({"symbol": "MSFT", "provider": "intrinio"}), + ({"symbol": "AAPL,MSFT", "provider": "cboe"}), + ({"symbol": "AAPL,MSFT", "provider": "intrinio"}), ], ) @pytest.mark.integration diff --git a/openbb_platform/extensions/equity/integration/test_equity_python.py b/openbb_platform/extensions/equity/integration/test_equity_python.py index 9c6cf964b73..679555b6cc4 100644 --- a/openbb_platform/extensions/equity/integration/test_equity_python.py +++ b/openbb_platform/extensions/equity/integration/test_equity_python.py @@ -1049,7 +1049,9 @@ def test_equity_price_quote(params, obb): "params", [ ({"symbol": "AAPL", "provider": "cboe"}), - ({"provider": "intrinio", "symbol": "AAPL"}), + ({"symbol": "MSFT", "provider": "intrinio"}), + ({"symbol": "AAPL,MSFT", "provider": "cboe"}), + ({"symbol": "AAPL,MSFT", "provider": "intrinio"}), ], ) @pytest.mark.integration diff --git a/openbb_platform/openbb/package/equity.py b/openbb_platform/openbb/package/equity.py index 4f363a8f121..63924b32bc2 100644 --- a/openbb_platform/openbb/package/equity.py +++ b/openbb_platform/openbb/package/equity.py @@ -241,7 +241,7 @@ class ROUTER_equity(Container): Returns ------- OBBject - results : EquityInfo + results : List[EquityInfo] Serializable results. provider : Optional[Literal['intrinio']] Provider name. diff --git a/openbb_platform/providers/intrinio/openbb_intrinio/models/equity_info.py b/openbb_platform/providers/intrinio/openbb_intrinio/models/equity_info.py index 27f23a6f08d..3bcc679a543 100644 --- a/openbb_platform/providers/intrinio/openbb_intrinio/models/equity_info.py +++ b/openbb_platform/providers/intrinio/openbb_intrinio/models/equity_info.py @@ -7,7 +7,10 @@ from openbb_core.provider.standard_models.equity_info import ( EquityInfoData, EquityInfoQueryParams, ) -from openbb_intrinio.utils.helpers import get_data_one +from openbb_core.provider.utils.helpers import ( + amake_requests, +) +from openbb_intrinio.utils.helpers import response_callback from pydantic import Field @@ -34,7 +37,7 @@ class IntrinioEquityInfoData(EquityInfoData): class IntrinioEquityInfoFetcher( Fetcher[ IntrinioEquityInfoQueryParams, - IntrinioEquityInfoData, + List[IntrinioEquityInfoData], ] ): """Transform the query, extract and transform the data from the Intrinio endpoints.""" @@ -44,24 +47,30 @@ class IntrinioEquityInfoFetcher( """Transform the query.""" return IntrinioEquityInfoQueryParams(**params) + # pylint: disable=W0613:unused-argument @staticmethod async def aextract_data( - query: IntrinioEquityInfoQueryParams, # pylint: disable=unused-argument + query: IntrinioEquityInfoQueryParams, credentials: Optional[Dict[str, str]], **kwargs: Any, ) -> Dict: """Return the raw data from the Intrinio endpoint.""" api_key = credentials.get("intrinio_api_key") if credentials else "" base_url = "https://api-v2.intrinio.com" - url = f"{base_url}/companies/{query.symbol}?api_key={api_key}" - return await get_data_one(url, **kwargs) + urls = [ + f"{base_url}/companies/{s.strip()}?api_key={api_key}" + for s in query.symbol.split(",") + ] + return await amake_requests(urls, response_callback, **kwargs) + + # pylint: disable=W0613:unused-argument @staticmethod def transform_data( query: IntrinioEquityInfoQueryParams, data: List[Dict], - **kwargs: Any, # pylint: disable=unused-argument - ) -> IntrinioEquityInfoData: + **kwargs: Any, + ) -> List[IntrinioEquityInfoData]: """Transforms the data.""" - return IntrinioEquityInfoData.model_validate(data) + return [IntrinioEquityInfoData.model_validate(d) for d in data] |