summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--openbb_platform/core/openbb_core/provider/standard_models/equity_quote.py2
-rw-r--r--openbb_platform/core/openbb_core/provider/standard_models/etf_equity_exposure.py2
-rw-r--r--openbb_platform/core/openbb_core/provider/standard_models/eu_yield_curve.py2
-rw-r--r--openbb_platform/core/openbb_core/provider/standard_models/index_historical.py2
-rw-r--r--openbb_platform/core/openbb_core/provider/standard_models/treasury_rates.py26
-rw-r--r--openbb_platform/core/tests/app/logs/test_handlers_manager.py44
-rw-r--r--openbb_platform/providers/benzinga/openbb_benzinga/models/analyst_search.py38
-rw-r--r--openbb_platform/providers/benzinga/openbb_benzinga/models/price_target.py25
-rw-r--r--openbb_platform/providers/fmp/openbb_fmp/models/equity_historical.py1
-rw-r--r--openbb_platform/providers/fmp/openbb_fmp/models/etf_holdings.py2
-rw-r--r--openbb_platform/providers/fmp/openbb_fmp/models/etf_info.py4
-rw-r--r--openbb_platform/providers/fmp/openbb_fmp/models/financial_ratios.py158
-rw-r--r--openbb_platform/providers/fmp/openbb_fmp/models/key_metrics.py7
-rw-r--r--openbb_platform/providers/fmp/tests/record/http/test_fmp_fetchers/test_fmp_financial_ratios_fetcher.yaml309
-rw-r--r--openbb_platform/providers/fred/openbb_fred/models/regional.py2
-rw-r--r--openbb_platform/providers/intrinio/openbb_intrinio/models/equity_historical.py12
16 files changed, 353 insertions, 283 deletions
diff --git a/openbb_platform/core/openbb_core/provider/standard_models/equity_quote.py b/openbb_platform/core/openbb_core/provider/standard_models/equity_quote.py
index c98c7cfdfad..fe8885d89dd 100644
--- a/openbb_platform/core/openbb_core/provider/standard_models/equity_quote.py
+++ b/openbb_platform/core/openbb_core/provider/standard_models/equity_quote.py
@@ -142,7 +142,7 @@ class EquityQuoteData(Data):
change_percent: Optional[float] = Field(
default=None,
description="Change in price as a normalized percentage.",
- json_schema_extra={"x-frontendmultiply": 100},
+ json_schema_extra={"x-frontend_multiply": 100},
)
year_high: Optional[float] = Field(
default=None, description="The one year high (52W High)."
diff --git a/openbb_platform/core/openbb_core/provider/standard_models/etf_equity_exposure.py b/openbb_platform/core/openbb_core/provider/standard_models/etf_equity_exposure.py
index eb739ea1122..b2ceb5f02ea 100644
--- a/openbb_platform/core/openbb_core/provider/standard_models/etf_equity_exposure.py
+++ b/openbb_platform/core/openbb_core/provider/standard_models/etf_equity_exposure.py
@@ -35,7 +35,7 @@ class EtfEquityExposureData(Data):
weight: Optional[float] = Field(
default=None,
description="The weight of the equity in the ETF, as a normalized percent.",
- json_schema_extra={"units_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
market_value: Optional[Union[int, float]] = Field(
default=None,
diff --git a/openbb_platform/core/openbb_core/provider/standard_models/eu_yield_curve.py b/openbb_platform/core/openbb_core/provider/standard_models/eu_yield_curve.py
index 81d01c278b8..eaf9efd6877 100644
--- a/openbb_platform/core/openbb_core/provider/standard_models/eu_yield_curve.py
+++ b/openbb_platform/core/openbb_core/provider/standard_models/eu_yield_curve.py
@@ -25,5 +25,5 @@ class EUYieldCurveData(Data):
rate: Optional[float] = Field(
description="Yield curve rate, as a normalized percent.",
default=None,
- json_schema_extra={"unit_measurement": "percent.", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
diff --git a/openbb_platform/core/openbb_core/provider/standard_models/index_historical.py b/openbb_platform/core/openbb_core/provider/standard_models/index_historical.py
index ad5c1ecea46..cd32f05e594 100644
--- a/openbb_platform/core/openbb_core/provider/standard_models/index_historical.py
+++ b/openbb_platform/core/openbb_core/provider/standard_models/index_historical.py
@@ -69,7 +69,7 @@ class IndexHistoricalData(Data):
@field_validator("date", mode="before", check_fields=False)
@classmethod
- def date_validate(cls, v):
+ def date_validate(cls, v): # pylint: disable=E0213
"""Return formatted datetime."""
if ":" in str(v):
return parser.isoparse(str(v))
diff --git a/openbb_platform/core/openbb_core/provider/standard_models/treasury_rates.py b/openbb_platform/core/openbb_core/provider/standard_models/treasury_rates.py
index 743ec65a746..93149d1c377 100644
--- a/openbb_platform/core/openbb_core/provider/standard_models/treasury_rates.py
+++ b/openbb_platform/core/openbb_core/provider/standard_models/treasury_rates.py
@@ -33,65 +33,65 @@ class TreasuryRatesData(Data):
week_4: Optional[float] = Field(
default=None,
description="4 week Treasury bills rate (secondary market).",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
month_1: Optional[float] = Field(
description="1 month Treasury rate.",
default=None,
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
month_2: Optional[float] = Field(
description="2 month Treasury rate.",
default=None,
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
month_3: Optional[float] = Field(
description="3 month Treasury rate.",
default=None,
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
month_6: Optional[float] = Field(
description="6 month Treasury rate.",
default=None,
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
year_1: Optional[float] = Field(
description="1 year Treasury rate.",
default=None,
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
year_2: Optional[float] = Field(
description="2 year Treasury rate.",
default=None,
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
year_3: Optional[float] = Field(
description="3 year Treasury rate.",
default=None,
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
year_5: Optional[float] = Field(
description="5 year Treasury rate.",
default=None,
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
year_7: Optional[float] = Field(
description="7 year Treasury rate.",
default=None,
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
year_10: Optional[float] = Field(
description="10 year Treasury rate.",
default=None,
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
year_20: Optional[float] = Field(
description="20 year Treasury rate.",
default=None,
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
year_30: Optional[float] = Field(
description="30 year Treasury rate.",
default=None,
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
diff --git a/openbb_platform/core/tests/app/logs/test_handlers_manager.py b/openbb_platform/core/tests/app/logs/test_handlers_manager.py
index d46451c6314..1d0f865565f 100644
--- a/openbb_platform/core/tests/app/logs/test_handlers_manager.py
+++ b/openbb_platform/core/tests/app/logs/test_handlers_manager.py
@@ -40,15 +40,19 @@ class MockFormatterWithExceptions(logging.Formatter):
def test_handlers_added_correctly():
"""Test if the handlers are added correctly."""
- with patch(
- "openbb_core.app.logs.handlers_manager.PosthogHandler",
- MockPosthogHandler,
- ), patch(
- "openbb_core.app.logs.handlers_manager.PathTrackingFileHandler",
- MockPathTrackingFileHandler,
- ), patch(
- "openbb_core.app.logs.handlers_manager.FormatterWithExceptions",
- MockFormatterWithExceptions,
+ with (
+ patch(
+ "openbb_core.app.logs.handlers_manager.PosthogHandler",
+ MockPosthogHandler,
+ ),
+ patch(
+ "openbb_core.app.logs.handlers_manager.PathTrackingFileHandler",
+ MockPathTrackingFileHandler,
+ ),
+ patch(
+ "openbb_core.app.logs.handlers_manager.FormatterWithExceptions",
+ MockFormatterWithExceptions,
+ ),
):
settings = Mock()
settings.handler_list = ["stdout", "stderr", "noop", "file", "posthog"]
@@ -75,15 +79,19 @@ def test_handlers_added_correctly():
def test_update_handlers():
"""Test if the handlers are updated correctly."""
- with patch(
- "openbb_core.app.logs.handlers_manager.PosthogHandler",
- MockPosthogHandler,
- ), patch(
- "openbb_core.app.logs.handlers_manager.PathTrackingFileHandler",
- MockPathTrackingFileHandler,
- ), patch(
- "openbb_core.app.logs.handlers_manager.FormatterWithExceptions",
- MockFormatterWithExceptions,
+ with (
+ patch(
+ "openbb_core.app.logs.handlers_manager.PosthogHandler",
+ MockPosthogHandler,
+ ),
+ patch(
+ "openbb_core.app.logs.handlers_manager.PathTrackingFileHandler",
+ MockPathTrackingFileHandler,
+ ),
+ patch(
+ "openbb_core.app.logs.handlers_manager.FormatterWithExceptions",
+ MockFormatterWithExceptions,
+ ),
):
settings = Mock()
settings.handler_list = ["file", "posthog"]
diff --git a/openbb_platform/providers/benzinga/openbb_benzinga/models/analyst_search.py b/openbb_platform/providers/benzinga/openbb_benzinga/models/analyst_search.py
index f5cf40a2a5a..3c9cf4646ab 100644
--- a/openbb_platform/providers/benzinga/openbb_benzinga/models/analyst_search.py
+++ b/openbb_platform/providers/benzinga/openbb_benzinga/models/analyst_search.py
@@ -90,19 +90,19 @@ class BenzingaAnalystSearchData(AnalystSearchData):
overall_success_rate: Optional[float] = Field(
default=None,
description="The percentage (normalized) of gain/loss ratings that resulted in a gain overall.",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
overall_avg_return_percentile: Optional[float] = Field(
default=None,
description="The percentile (normalized) of this analyst's overall average"
+ " return per rating in comparison to other analysts' overall average returns per rating.",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
total_ratings_percentile: Optional[float] = Field(
default=None,
description="The percentile (normalized) of this analyst's total number of ratings"
+ " in comparison to the total number of ratings published by all other analysts",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
total_ratings: Optional[int] = Field(
default=None,
@@ -119,13 +119,13 @@ class BenzingaAnalystSearchData(AnalystSearchData):
overall_average_return: Optional[float] = Field(
default=None,
description="The average percent (normalized) price difference per rating since the date of recommendation",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
overall_std_dev: Optional[float] = Field(
default=None,
description="The standard deviation in percent (normalized) price difference in the"
+ " analyst's ratings since the date of recommendation",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
alias="overall_stdev",
)
gain_count_1m: Optional[int] = Field(
@@ -141,14 +141,14 @@ class BenzingaAnalystSearchData(AnalystSearchData):
average_return_1m: Optional[float] = Field(
default=None,
description="The average percent (normalized) price difference per rating over the last month",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
alias="1m_average_return",
)
std_dev_1m: Optional[float] = Field(
default=None,
description="The standard deviation in percent (normalized) price difference in the"
+ " analyst's ratings over the last month",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
alias="1m_stdev",
)
smart_score_1m: Optional[float] = Field(
@@ -176,14 +176,14 @@ class BenzingaAnalystSearchData(AnalystSearchData):
default=None,
description="The average percent (normalized) price difference per rating over"
+ " the last 3 months",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
alias="3m_average_return",
)
std_dev_3m: Optional[float] = Field(
default=None,
description="The standard deviation in percent (normalized) price difference in the"
+ " analyst's ratings over the last 3 months",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
alias="3m_stdev",
)
smart_score_3m: Optional[float] = Field(
@@ -211,14 +211,14 @@ class BenzingaAnalystSearchData(AnalystSearchData):
default=None,
description="The average percent (normalized) price difference per rating over"
+ " the last 6 months",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
alias="6m_average_return",
)
std_dev_6m: Optional[float] = Field(
default=None,
description="The standard deviation in percent (normalized) price difference in the"
+ " analyst's ratings over the last 6 months",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
alias="6m_stdev",
)
gain_count_9m: Optional[int] = Field(
@@ -235,14 +235,14 @@ class BenzingaAnalystSearchData(AnalystSearchData):
default=None,
description="The average percent (normalized) price difference per rating over"
+ " the last 9 months",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
alias="9m_average_return",
)
std_dev_9m: Optional[float] = Field(
default=None,
description="The standard deviation in percent (normalized) price difference in the"
+ " analyst's ratings over the last 9 months",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
alias="9m_stdev",
)
smart_score_9m: Optional[float] = Field(
@@ -270,14 +270,14 @@ class BenzingaAnalystSearchData(AnalystSearchData):
default=None,
description="The average percent (normalized) price difference per rating over"
+ " the last 1 year",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
alias="1y_average_return",
)
std_dev_1y: Optional[float] = Field(
default=None,
description="The standard deviation in percent (normalized) price difference in the"
+ " analyst's ratings over the last 1 year",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
alias="1y_stdev",
)
smart_score_1y: Optional[float] = Field(
@@ -305,14 +305,14 @@ class BenzingaAnalystSearchData(AnalystSearchData):
default=None,
description="The average percent (normalized) price difference per rating over"
+ " the last 2 years",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
alias="2y_average_return",
)
std_dev_2y: Optional[float] = Field(
default=None,
description="The standard deviation in percent (normalized) price difference in the"
+ " analyst's ratings over the last 2 years",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
alias="2y_stdev",
)
smart_score_2y: Optional[float] = Field(
@@ -340,14 +340,14 @@ class BenzingaAnalystSearchData(AnalystSearchData):
default=None,
description="The average percent (normalized) price difference per rating over"
+ " the last 3 years",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
alias="3y_average_return",
)
std_dev_3y: Optional[float] = Field(
default=None,
description="The standard deviation in percent (normalized) price difference in the"
+ " analyst's ratings over the last 3 years",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
alias="3y_stdev",
)
smart_score_3y: Optional[float] = Field(
diff --git a/openbb_platform/providers/benzinga/openbb_benzinga/models/price_target.py b/openbb_platform/providers/benzinga/openbb_benzinga/models/price_target.py
index d799e3410d8..b0517af5127 100644
--- a/openbb_platform/providers/benzinga/openbb_benzinga/models/price_target.py
+++ b/openbb_platform/providers/benzinga/openbb_benzinga/models/price_target.py
@@ -45,11 +45,26 @@ class BenzingaPriceTargetQueryParams(PriceTargetQueryParams):
Source: https://docs.benzinga.io/benzinga-apis/calendar/get-ratings
"""
+ # using __alias_dict__ for the aliasing of the fields instead of `Field` alias kwarg
+ # otherwise openapi schema shows as `parameters[date_from]` instead of `start_date`
__alias_dict__ = {
"limit": "pagesize",
"symbol": "parameters[tickers]",
+ "date": "parameters[date]",
+ "start_date": "parameters[date_from]",
+ "end_date": "parameters[date_to]",
+ "updated": "parameters[updated]",
+ "importance": "parameters[importance]",
+ "action": "parameters[action]",
+ "analyst_ids": "parameters[analyst_id]",
+ "firm_ids": "parameters[firm_id]",
+ }
+ __json_schema_extra__ = {
+ "symbol": ["multiple_items_allowed"],
+ "analyst_ids": ["multiple_items_allowed"],
+ "firm_ids": ["multiple_items_allowed"],
+ "fields": ["multiple_items_allowed"],
}
- __json_schema_extra__ = {"symbol": ["multiple_items_allowed"]}
page: Optional[int] = Field(
default=0,
@@ -60,17 +75,14 @@ class BenzingaPriceTargetQueryParams(PriceTargetQueryParams):
date: Optional[dateType] = Field(
default=None,
description="Date for calendar data, shorthand for date_from and date_to.",
- alias="parameters[date]",
)
start_date: Optional[dateType] = Field(
default=None,
description=QUERY_DESCRIPTIONS.get("start_date", ""),
- alias="parameters[date_from]",
)
end_date: Optional[dateType] = Field(
default=None,
description=QUERY_DESCRIPTIONS.get("end_date", ""),
- alias="parameters[date_to]",
)
updated: Optional[Union[dateType, int]] = Field(
default=None,
@@ -78,13 +90,11 @@ class BenzingaPriceTargetQueryParams(PriceTargetQueryParams):
+ " This will force the sort order to be Greater Than or Equal to the timestamp indicated."
+ " The date can be a date string or a Unix timestamp."
+ " The date string must be in the format of YYYY-MM-DD.",
- alias="parameters[updated]",
)
importance: Optional[int] = Field(
default=None,
description="Importance level to filter by."
+ " Uses Greater Than or Equal To the importance indicated",
- alias="parameters[importance]",
)
action: Optional[
Literal[
@@ -103,18 +113,15 @@ class BenzingaPriceTargetQueryParams(PriceTargetQueryParams):
] = Field(
default=None,
description="Filter by a specific action_company.",
- alias="parameters[action]",
)
analyst_ids: Optional[Union[List[str], str]] = Field(
default=None,
description="Comma-separated list of analyst (person) IDs."
+ " Omitting will bring back all available analysts.",
- alias="parameters[analyst_id]",
)
firm_ids: Optional[Union[List[str], str]] = Field(
default=None,
description="Comma-separated list of firm IDs.",
- alias="parameters[firm_id]",
)
fields: Optional[Union[List[str], str]] = Field(
default=None,
diff --git a/openbb_platform/providers/fmp/openbb_fmp/models/equity_historical.py b/openbb_platform/providers/fmp/openbb_fmp/models/equity_historical.py
index 5225a0daa18..27e78bcf101 100644
--- a/openbb_platform/providers/fmp/openbb_fmp/models/equity_historical.py
+++ b/openbb_platform/providers/fmp/openbb_fmp/models/equity_historical.py
@@ -43,6 +43,7 @@ class FMPEquityHistoricalQueryParams(EquityHistoricalQueryParams):
class FMPEquityHistoricalData(EquityHistoricalData):
"""FMP Equity Historical Price Data."""
+ symbol: Optional[str] = Field(default=None, description="Symbol of the equity.")
adj_close: Optional[float] = Field(
default=None, description=DATA_DESCRIPTIONS.get("adj_close", "")
)
diff --git a/openbb_platform/providers/fmp/openbb_fmp/models/etf_holdings.py b/openbb_platform/providers/fmp/openbb_fmp/models/etf_holdings.py
index 6c6566828de..385a2403926 100644
--- a/openbb_platform/providers/fmp/openbb_fmp/models/etf_holdings.py
+++ b/openbb_platform/providers/fmp/openbb_fmp/models/etf_holdings.py
@@ -73,7 +73,7 @@ class FMPEtfHoldingsData(EtfHoldingsData):
description="The weight of the holding, as a normalized percent.",
alias="pctVal",
default=None,
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
payoff_profile: Optional[str] = Field(
description="The payoff profile of the holding.",
diff --git a/openbb_platform/providers/fmp/openbb_fmp/models/etf_info.py b/openbb_platform/providers/fmp/openbb_fmp/models/etf_info.py
index 21cfab00a8a..4df138fc01a 100644
--- a/openbb_platform/providers/fmp/openbb_fmp/models/etf_info.py
+++ b/openbb_platform/providers/fmp/openbb_fmp/models/etf_info.py
@@ -43,7 +43,7 @@ class FMPEtfInfoData(EtfInfoData):
expense_ratio: Optional[float] = Field(
default=None,
description="The expense ratio, as a normalized percent.",
- json_schema_extra={"unit_measurement": "percent", "frontend_multiply": 100},
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
holdings_count: Optional[int] = Field(
default=None, description="Number of holdings."
@@ -76,7 +76,7 @@ class FMPEtfInfoFetcher(
"""Return the raw data from the FMP endpoint."""
api_key = credentials.get("fmp_api_key") if credentials else ""
symbols = query.symbol.split(",")
- results = []
+ results: List[dict] = []
async def get_one(symbol):
"""Get one symbol."""
diff --git a/openbb_platform/providers/fmp/openbb_fmp/models/financial_ratios.py b/openbb_platform/providers/fmp/openbb_fmp/models/financial_ratios.py
index 2cc5b5f7d9b..74c678fd300 100644
--- a/openbb_platform/providers/fmp/openbb_fmp/models/financial_ratios.py
+++ b/openbb_platform/providers/fmp/openbb_fmp/models/financial_ratios.py
@@ -8,13 +8,16 @@ from openbb_core.provider.standard_models.financial_ratios import (
FinancialRatiosData,
FinancialRatiosQueryParams,
)
-from openbb_core.provider.utils.descriptions import QUERY_DESCRIPTIONS
-from openbb_core.provider.utils.errors import EmptyDataError
+from openbb_core.provider.utils.descriptions import (
+ DATA_DESCRIPTIONS,
+ QUERY_DESCRIPTIONS,
+)
from openbb_core.provider.utils.helpers import (
- amake_request,
+ ClientResponse,
+ ClientSession,
+ amake_requests,
to_snake_case,
)
-from openbb_fmp.utils.helpers import response_callback
from pydantic import Field, model_validator
@@ -24,22 +27,33 @@ class FMPFinancialRatiosQueryParams(FinancialRatiosQueryParams):
Source: https://financialmodelingprep.com/developer/docs/#Company-Financial-Ratios
"""
+ __json_schema_extra__ = {"symbol": ["multiple_items_allowed"]}
+
period: Literal["annual", "quarter", "ttm"] = Field(
default="annual", description=QUERY_DESCRIPTIONS.get("period", "")
)
+ with_ttm: Optional[bool] = Field(
+ default=False, description="Include trailing twelve months (TTM) data."
+ )
class FMPFinancialRatiosData(FinancialRatiosData):
"""FMP Financial Ratios Data."""
__alias_dict__ = {
- "dividend_yield_ttm": "dividend_yiel_ttm",
- "dividend_yield_ttm_percent": "dividend_yiel_percentage_ttm",
"period_ending": "date",
"fiscal_period": "period",
"fiscal_year": "calendar_year",
+ "dividend_yield": "dividend_yiel",
+ "cash_flow_coverage_ratio": "cash_flow_coverage_ratios",
+ "short_term_coverage_ratio": "short_term_coverage_ratios",
+ "cash_flow_to_debt": "cash_flow_to_debt_ratio",
+ "interest_coverage_ratio": "interest_coverage",
}
+ symbol: Optional[str] = Field(
+ default=None, description=DATA_DESCRIPTIONS.get("symbol", "")
+ )
current_ratio: Optional[float] = Field(default=None, description="Current ratio.")
quick_ratio: Optional[float] = Field(default=None, description="Quick ratio.")
cash_ratio: Optional[float] = Field(default=None, description="Cash ratio.")
@@ -59,28 +73,44 @@ class FMPFinancialRatiosData(FinancialRatiosData):
default=None, description="Cash conversion cycle."
)
gross_profit_margin: Optional[float] = Field(
- default=None, description="Gross profit margin."
+ default=None,
+ description="Gross profit margin.",
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
operating_profit_margin: Optional[float] = Field(
- default=None, description="Operating profit margin."
+ default=None,
+ description="Operating profit margin.",
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
pretax_profit_margin: Optional[float] = Field(
- default=None, description="Pretax profit margin."
+ default=None,
+ description="Pretax profit margin.",
+ json_schema_extra={"x-unit_measurement": "percent", "x-frontend_multiply": 100},
)
net_profit_margin: Optional[float] = Field(
- default=None, description="Net profit margin."
+ default=None,
+ description=