diff options
author | Danglewood <85772166+deeleeramone@users.noreply.github.com> | 2024-02-09 12:13:59 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-09 20:13:59 +0000 |
commit | bc24709cbaeb5eb19a8c4ce4ece45a65f99d91f2 (patch) | |
tree | 4975757d39004c99f2d5b54ea7ffdde6f87624a6 | |
parent | 3fae9c20b2fa3f229ef8d296a724b39fc607c618 (diff) |
[HotFix] Index Router Docstrings & `sp500_multiples()` Cleanup (#6063)
* sp500 multiples cleanup
* remove dict from standard model
* static pacakge
* pylint
8 files changed, 157 insertions, 101 deletions
diff --git a/openbb_platform/core/openbb_core/provider/standard_models/sp500_multiples.py b/openbb_platform/core/openbb_core/provider/standard_models/sp500_multiples.py index cd7b247a8d8..8631478c467 100644 --- a/openbb_platform/core/openbb_core/provider/standard_models/sp500_multiples.py +++ b/openbb_platform/core/openbb_core/provider/standard_models/sp500_multiples.py @@ -12,57 +12,58 @@ from openbb_core.provider.utils.descriptions import ( QUERY_DESCRIPTIONS, ) +SERIES_NAMES = Literal[ + "shiller_pe_month", + "shiller_pe_year", + "pe_year", + "pe_month", + "dividend_year", + "dividend_month", + "dividend_growth_quarter", + "dividend_growth_year", + "dividend_yield_year", + "dividend_yield_month", + "earnings_year", + "earnings_month", + "earnings_growth_year", + "earnings_growth_quarter", + "real_earnings_growth_year", + "real_earnings_growth_quarter", + "earnings_yield_year", + "earnings_yield_month", + "real_price_year", + "real_price_month", + "inflation_adjusted_price_year", + "inflation_adjusted_price_month", + "sales_year", + "sales_quarter", + "sales_growth_year", + "sales_growth_quarter", + "real_sales_year", + "real_sales_quarter", + "real_sales_growth_year", + "real_sales_growth_quarter", + "price_to_sales_year", + "price_to_sales_quarter", + "price_to_book_value_year", + "price_to_book_value_quarter", + "book_value_year", + "book_value_quarter", +] + class SP500MultiplesQueryParams(QueryParams): """SP500 Multiples Query.""" - series_name: Literal[ - "Shiller PE Ratio by Month", - "Shiller PE Ratio by Year", - "PE Ratio by Year", - "PE Ratio by Month", - "Dividend by Year", - "Dividend by Month", - "Dividend Growth by Quarter", - "Dividend Growth by Year", - "Dividend Yield by Year", - "Dividend Yield by Month", - "Earnings by Year", - "Earnings by Month", - "Earnings Growth by Year", - "Earnings Growth by Quarter", - "Real Earnings Growth by Year", - "Real Earnings Growth by Quarter", - "Earnings Yield by Year", - "Earnings Yield by Month", - "Real Price by Year", - "Real Price by Month", - "Inflation Adjusted Price by Year", - "Inflation Adjusted Price by Month", - "Sales by Year", - "Sales by Quarter", - "Sales Growth by Year", - "Sales Growth by Quarter", - "Real Sales by Year", - "Real Sales by Quarter", - "Real Sales Growth by Year", - "Real Sales Growth by Quarter", - "Price to Sales Ratio by Year", - "Price to Sales Ratio by Quarter", - "Price to Book Value Ratio by Year", - "Price to Book Value Ratio by Quarter", - "Book Value per Share by Year", - "Book Value per Share by Quarter", - ] = Field( - description="The name of the series. Defaults to 'PE Ratio by Month'.", - default="PE Ratio by Month", + series_name: SERIES_NAMES = Field( + description="The name of the series. Defaults to 'pe_month'.", + default="pe_month", ) - - start_date: Optional[str] = Field( - description=QUERY_DESCRIPTIONS.get("start_date", ""), default="" + start_date: Optional[dateType] = Field( + description=QUERY_DESCRIPTIONS.get("start_date", ""), default=None ) - end_date: Optional[str] = Field( - description=QUERY_DESCRIPTIONS.get("end_date", ""), default="" + end_date: Optional[dateType] = Field( + description=QUERY_DESCRIPTIONS.get("end_date", ""), default=None ) diff --git a/openbb_platform/extensions/index/integration/test_index_api.py b/openbb_platform/extensions/index/integration/test_index_api.py index dff0265d57a..9a0df1c8e44 100644 --- a/openbb_platform/extensions/index/integration/test_index_api.py +++ b/openbb_platform/extensions/index/integration/test_index_api.py @@ -334,7 +334,7 @@ def test_index_snapshots(params, headers): [ ( { - "series_name": "PE Ratio by Month", + "series_name": "pe_month", "start_date": "2023-01-01", "end_date": "2023-06-06", "collapse": "monthly", diff --git a/openbb_platform/extensions/index/integration/test_index_python.py b/openbb_platform/extensions/index/integration/test_index_python.py index 600a1279d7e..80139634288 100644 --- a/openbb_platform/extensions/index/integration/test_index_python.py +++ b/openbb_platform/extensions/index/integration/test_index_python.py @@ -318,7 +318,7 @@ def test_index_snapshots(params, obb): [ ( { - "series_name": "PE Ratio by Month", + "series_name": "pe_month", "start_date": "2023-01-01", "end_date": "2023-06-06", "collapse": "monthly", diff --git a/openbb_platform/extensions/index/openbb_index/index_router.py b/openbb_platform/extensions/index/openbb_index/index_router.py index 7b1298c8aae..5b4432325f2 100644 --- a/openbb_platform/extensions/index/openbb_index/index_router.py +++ b/openbb_platform/extensions/index/openbb_index/index_router.py @@ -38,56 +38,88 @@ async def market( return await OBBject.from_query(Query(**locals())) -@router.command(model="IndexConstituents") +@router.command( + model="IndexConstituents", + exclude_auto_examples=True, + examples=[ + 'obb.index.constituents("dowjones", provider="fmp").to_df()', + "#### Providers other than FMP will use the ticker symbol. ####", + 'obb.index.constituents("BEP50P", provider="cboe").to_df()', + ], +) async def constituents( cc: CommandContext, provider_choices: ProviderChoices, standard_params: StandardParams, extra_params: ExtraParams, ) -> OBBject: - """Index Constituents. Constituents of an index.""" + """Index Constituents.""" return await OBBject.from_query(Query(**locals())) -@router.command(model="IndexSnapshots") +@router.command( + model="IndexSnapshots", + exclude_auto_examples=True, + examples=[ + 'obb.index.snapshots(region="us",provider="cboe").to_df()', + ], +) async def snapshots( cc: CommandContext, provider_choices: ProviderChoices, standard_params: StandardParams, extra_params: ExtraParams, ) -> OBBject: - """Index Snapshots. Current levels for all indices from a provider.""" + """Index Snapshots. Current levels for all indices from a provider, grouped by `region`.""" return await OBBject.from_query(Query(**locals())) -@router.command(model="AvailableIndices") +@router.command( + model="AvailableIndices", + exclude_auto_examples=True, + examples=[ + 'obb.index.available(provider="yfinance").to_df()', + ], +) async def available( cc: CommandContext, provider_choices: ProviderChoices, standard_params: StandardParams, extra_params: ExtraParams, ) -> OBBject: - """Available Indices. Available indices for a given provider.""" + """All indices available from a given provider.""" return await OBBject.from_query(Query(**locals())) -@router.command(model="IndexSearch") +@router.command( + model="IndexSearch", + exclude_auto_examples=True, + examples=[ + "obb.index.search(query='SPX', provider='cboe').to_df()", + ], +) async def search( cc: CommandContext, provider_choices: ProviderChoices, standard_params: StandardParams, extra_params: ExtraParams, ) -> OBBject: - """Index Search. Search for indices.""" + """Filters indices for rows containing the query.""" return await OBBject.from_query(Query(**locals())) -@router.command(model="SP500Multiples") +@router.command( + model="SP500Multiples", + exclude_auto_examples=True, + examples=[ + 'obb.index.sp500_multiples(series_name="shiller_pe_year", provider="nasdaq").to_df()', + ], +) async def sp500_multiples( cc: CommandContext, provider_choices: ProviderChoices, standard_params: StandardParams, extra_params: ExtraParams, ) -> OBBject: - """S&P 500 Multiples. Historical S&P 500 multiples and Shiller PE ratios.""" + """Historical S&P 500 multiples and Shiller PE ratios.""" return await OBBject.from_query(Query(**locals())) diff --git a/openbb_platform/extensions/index/openbb_index/price/price_router.py b/openbb_platform/extensions/index/openbb_index/price/price_router.py index 36feb2547f4..c5f44332eff 100644 --- a/openbb_platform/extensions/index/openbb_index/price/price_router.py +++ b/openbb_platform/extensions/index/openbb_index/price/price_router.py @@ -15,12 +15,20 @@ router = Router(prefix="/price") # pylint: disable=unused-argument -@router.command(model="IndexHistorical") +@router.command( + model="IndexHistorical", + exclude_auto_examples=True, + examples=[ + 'obb.index.price.historical("^GSPC", provider="fmp").to_df()', + "#### Not all providers have the same symbols. ####", + 'obb.index.price.historical("SPX", provider="intrinio").to_df()', + ], +) async def historical( cc: CommandContext, provider_choices: ProviderChoices, standard_params: StandardParams, extra_params: ExtraParams, ) -> OBBject: - """Index Historical Price. Load stock data for a specific index.""" + """Historical Index Levels.""" return await OBBject.from_query(Query(**locals())) diff --git a/openbb_platform/openbb/package/index.py b/openbb_platform/openbb/package/index.py index 28f923ee7e6..b2930f7244d 100644 --- a/openbb_platform/openbb/package/index.py +++ b/openbb_platform/openbb/package/index.py @@ -28,7 +28,7 @@ class ROUTER_index(Container): def available( self, provider: Optional[Literal["fmp", "yfinance"]] = None, **kwargs ) -> OBBject: - """Available Indices. Available indices for a given provider. + """All indices available from a given provider. Parameters ---------- @@ -69,7 +69,7 @@ class ROUTER_index(Container): Example ------- >>> from openbb import obb - >>> obb.index.available() + >>> obb.index.available(provider="yfinance").to_df() """ # noqa: E501 return self._run( @@ -93,7 +93,7 @@ class ROUTER_index(Container): provider: Optional[Literal["fmp"]] = None, **kwargs ) -> OBBject: - """Index Constituents. Constituents of an index. + """Index Constituents. Parameters ---------- @@ -140,7 +140,9 @@ class ROUTER_index(Container): Example ------- >>> from openbb import obb - >>> obb.index.constituents(index="^IBEX") + >>> obb.index.constituents("dowjones", provider="fmp").to_df() + >>> #### Providers other than FMP will use the ticker symbol. #### + >>> obb.index.constituents("BEP50P", provider="cboe").to_df() """ # noqa: E501 return self._run( diff --git a/openbb_platform/providers/nasdaq/openbb_nasdaq/models/sp500_multiples.py b/openbb_platform/providers/nasdaq/openbb_nasdaq/models/sp500_multiples.py index bc5bcdff74f..5b81188e629 100644 --- a/openbb_platform/providers/nasdaq/openbb_nasdaq/models/sp500_multiples.py +++ b/openbb_platform/providers/nasdaq/openbb_nasdaq/models/sp500_multiples.py @@ -1,5 +1,7 @@ """Nasdaq SP500 Multiples Model.""" +# pylint: disable=unused-argument + from typing import Any, Dict, List, Optional import nasdaqdatalink @@ -10,6 +12,7 @@ from openbb_core.provider.standard_models.sp500_multiples import ( ) from openbb_nasdaq.utils.query_params import DataLinkQueryParams from openbb_nasdaq.utils.series_ids import SP500MULTIPLES +from pydantic import model_validator class NasdaqSP500MultiplesQueryParams(SP500MultiplesQueryParams, DataLinkQueryParams): @@ -19,6 +22,15 @@ class NasdaqSP500MultiplesQueryParams(SP500MultiplesQueryParams, DataLinkQueryPa class NasdaqSP500MultiplesData(SP500MultiplesData): """Nasdaq SP500 Multiples Data.""" + @model_validator(mode="before") + @classmethod + def normalize_percent(cls, values): + """Normalize percent values.""" + for k, v in values.items(): + if any(x in k for x in ["yield", "growth"]): + values[k] = float(v) / 100 + return values + class NasdaqSP500MultiplesFetcher( Fetcher[NasdaqSP500MultiplesQueryParams, List[NasdaqSP500MultiplesData]] @@ -68,5 +80,5 @@ class NasdaqSP500MultiplesFetcher( data: List[Dict], **kwargs: Any, ) -> List[NasdaqSP500MultiplesData]: - """Parse data into the NasdaqSP500MultiplesData format.""" + """Transform the data to the model.""" return [NasdaqSP500MultiplesData.model_validate(d) for d in data] diff --git a/openbb_platform/providers/nasdaq/openbb_nasdaq/utils/series_ids.py b/openbb_platform/providers/nasdaq/openbb_nasdaq/utils/series_ids.py index bd6ccb08e05..2194889db6f 100644 --- a/openbb_platform/providers/nasdaq/openbb_nasdaq/utils/series_ids.py +++ b/openbb_platform/providers/nasdaq/openbb_nasdaq/utils/series_ids.py @@ -1,45 +1,46 @@ """Nasdaq Data Link Series ID Dictionaries.""" +# pylint: disable=too-many-lines, line-too-long + SP500MULTIPLES = { - "Shiller PE Ratio by Month": "MULTPL/SHILLER_PE_RATIO_MONTH", - "Shiller PE Ratio by Year": "MULTPL/SHILLER_PE_RATIO_YEAR", - "PE Ratio by Year": "MULTPL/SP500_PE_RATIO_YEAR", - "PE Ratio by Month": "MULTPL/SP500_PE_RATIO_MONTH", - "Dividend by Year": "MULTPL/SP500_DIV_YEAR", - "Dividend by Month": "MULTPL/SP500_DIV_MONTH", - "Dividend Growth by Quarter": "MULTPL/SP500_DIV_GROWTH_QUARTER", - "Dividend Growth by Year": "MULTPL/SP500_DIV_GROWTH_YEAR", - "Dividend Yield by Year": "MULTPL/SP500_DIV_YIELD_YEAR", - "Dividend Yield by Month": "MULTPL/SP500_DIV_YIELD_MONTH", - "Earnings by Year": "MULTPL/SP500_EARNINGS_YEAR", - "Earnings by Month": "MULTPL/SP500_EARNINGS_MONTH", - "Earnings Growth by Year": "MULTPL/SP500_EARNINGS_GROWTH_YEAR", - "Earnings Growth by Quarter": "MULTPL/SP500_EARNINGS_GROWTH_QUARTER", - "Real Earnings Growth by Year": "MULTPL/SP500_REAL_EARNINGS_GROWTH_YEAR", - "Real Earnings Growth by Quarter": "MULTPL/SP500_REAL_EARNINGS_GROWTH_QUARTER", - "Earnings Yield by Year": "MULTPL/SP500_EARNINGS_YIELD_YEAR", - "Earnings Yield by Month": "MULTPL/SP500_EARNINGS_YIELD_MONTH", - "Real Price by Year": "MULTPL/SP500_REAL_PRICE_YEAR", - "Real Price by Month": "MULTPL/SP500_REAL_PRICE_MONTH", - "Inflation Adjusted Price by Year": "MULTPL/SP500_INFLADJ_YEAR", - "Inflation Adjusted Price by Month": "MULTPL/SP500_INFLADJ_MONTH", - "Sales by Year": "MULTPL/SP500_SALES_YEAR", - "Sales by Quarter": "MULTPL/SP500_SALES_QUARTER", - "Sales Growth by Year": "MULTPL/SP500_SALES_GROWTH_YEAR", - "Sales Growth by Quarter": "MULTPL/SP500_SALES_GROWTH_Quarter", - "Real Sales by Year": "MULTPL/SP500_REAL_SALES_YEAR", - "Real Sales by Quarter": "MULTPL/SP500_REAL_SALES_QUARTER", - "Real Sales Growth by Year": "MULTPL/SP500_REAL_SALES_GROWTH_YEAR", - "Real Sales Growth by Quarter": "MULTPL/SP500_REAL_SALES_GROWTH_QUARTER", - "Price to Sales Ratio by Year": "MULTPL/SP500_PSR_YEAR", - "Price to Sales Ratio by Quarter": "MULTPL/SP500_PSR_QUARTER", - "Price to Book Value Ratio by Year": "MULTPL/SP500_PBV_RATIO_YEAR", - "Price to Book Value Ratio by Quarter": "MULTPL/SP500_PBV_RATIO_QUARTER", - "Book Value per Share by Year": "MULTPL/SP500_BVPS_YEAR", - "Book Value per Share by Quarter": "MULTPL/SP500_BVPS_QUARTER", + "shiller_pe_month": "MULTPL/SHILLER_PE_RATIO_MONTH", + "shiller_pe_year": "MULTPL/SHILLER_PE_RATIO_YEAR", + "pe_year": "MULTPL/SP500_PE_RATIO_YEAR", + "pe_month": "MULTPL/SP500_PE_RATIO_MONTH", + "dividend_year": "MULTPL/SP500_DIV_YEAR", + "dividend_month": "MULTPL/SP500_DIV_MONTH", + "dividend_growth_quarter": "MULTPL/SP500_DIV_GROWTH_QUARTER", + "dividend_growth_year": "MULTPL/SP500_DIV_GROWTH_YEAR", + "dividend_yield_year": "MULTPL/SP500_DIV_YIELD_YEAR", + "dividend_yield_month": "MULTPL/SP500_DIV_YIELD_MONTH", + "earnings_year": "MULTPL/SP500_EARNINGS_YEAR", + "earnings_month": "MULTPL/SP500_EARNINGS_MONTH", + "earnings_growth_year": "MULTPL/SP500_EARNINGS_GROWTH_YEAR", + "earnings_growth_quarter": "MULTPL/SP500_EARNINGS_GROWTH_QUARTER", + "real_earnings_growth_year": "MULTPL/SP500_REAL_EARNINGS_GROWTH_YEAR", + "real_earnings_growth_quarter": "MULTPL/SP500_REAL_EARNINGS_GROWTH_QUARTER", + "earnings_yield_year": "MULTPL/SP500_EARNINGS_YIELD_YEAR", + "earnings_yield_month": "MULTPL/SP500_EARNINGS_YIELD_MONTH", + "real_price_month": "MULTPL/SP500_REAL_PRICE_YEAR", + "real_price_year": "MULTPL/SP500_REAL_PRICE_MONTH", + "inflation_adjusted_price_year": "MULTPL/SP500_INFLADJ_YEAR", + "inflation_adjusted_price_month": "MULTPL/SP500_INFLADJ_MONTH", + "sales_year": "MULTPL/SP500_SALES_YEAR", + "sales_quarter": "MULTPL/SP500_SALES_QUARTER", + "sales_growth_year": "MULTPL/SP500_SALES_GROWTH_YEAR", + "sales_growth_quarter": "MULTPL/SP500_SALES_GROWTH_Quarter", + "real_sales_year": "MULTPL/SP500_REAL_SALES_YEAR", + "real_sales_quarter": "MULTPL/SP500_REAL_SALES_QUARTER", + "real_sales_growth_year": "MULTPL/SP500_REAL_SALES_GROWTH_YEAR", + "real_sales_growth_quarter": "MULTPL/SP500_REAL_SALES_GROWTH_QUARTER", + "price_to_sales_year": "MULTPL/SP500_PSR_YEAR", + "price_to_sales_quarter": "MULTPL/SP500_PSR_QUARTER", + "price_to_book_value_year": "MULTPL/SP500_PBV_RATIO_YEAR", + "price_to_book_value_quarter": "MULTPL/SP500_PBV_RATIO_QUARTER", + "book_value_year": "MULTPL/SP500_BVPS_YEAR", + "book_value_quarter": "MULTPL/SP500_BVPS_QUARTER", } - CFTC = { "098662": { "Name": "USD Index (ICUS)", |