From 4dfaa173d9a3dce7a469a3c9af659bd50233e262 Mon Sep 17 00:00:00 2001 From: tehcoderer Date: Fri, 11 Aug 2023 14:13:25 -0400 Subject: [PATCH] financial_ratios multi symbols --- .../core/openbb_figure_table.py | 5 +---- .../fmp/openbb_fmp/models/financial_ratios.py | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/openbb_sdk/extensions/charting/openbb_charting/core/openbb_figure_table.py b/openbb_sdk/extensions/charting/openbb_charting/core/openbb_figure_table.py index b0d131a7251..aad63f1a374 100644 --- a/openbb_sdk/extensions/charting/openbb_charting/core/openbb_figure_table.py +++ b/openbb_sdk/extensions/charting/openbb_charting/core/openbb_figure_table.py @@ -1,10 +1,7 @@ from typing import List, Optional, Union import pandas as pd - -from openbb_sdk.extensions.charting.openbb_charting.core.openbb_figure import ( - OpenBBFigure, -) +from openbb_charting.core.openbb_figure import OpenBBFigure class OpenBBFigureTable(OpenBBFigure): diff --git a/openbb_sdk/providers/fmp/openbb_fmp/models/financial_ratios.py b/openbb_sdk/providers/fmp/openbb_fmp/models/financial_ratios.py index 22439d1c45f..fec9b75435f 100644 --- a/openbb_sdk/providers/fmp/openbb_fmp/models/financial_ratios.py +++ b/openbb_sdk/providers/fmp/openbb_fmp/models/financial_ratios.py @@ -1,6 +1,8 @@ """FMP Financial Ratios Fetcher.""" +from concurrent.futures import ThreadPoolExecutor +from itertools import repeat from typing import Any, Dict, List, Literal, Optional from openbb_provider.abstract.fetcher import Fetcher @@ -104,12 +106,19 @@ class FMPFinancialRatiosFetcher( query.period = "annual" if query.period == "annually" else "quarter" base_url = "https://financialmodelingprep.com/api/v3" - url = ( - f"{base_url}/ratios/{query.symbol}?" - f"period={query.period}&limit={query.limit}&apikey={api_key}" - ) + data = [] - return get_data_many(url, FMPFinancialRatiosData, **kwargs) + def multiple_symbols(symbol: str, data: List[FMPFinancialRatiosData]) -> None: + url = ( + f"{base_url}/ratios/{symbol}?" + f"period={query.period}&limit={query.limit}&apikey={api_key}" + ) + return data.extend(get_data_many(url, FMPFinancialRatiosData, **kwargs)) + + with ThreadPoolExecutor() as executor: + executor.map(multiple_symbols, query.symbol.split(","), repeat(data)) + + return data @staticmethod def transform_data(