From 35f19e6b92a55212f875182e032b7ac14537d903 Mon Sep 17 00:00:00 2001 From: Danglewood <85772166+deeleeramone@users.noreply.github.com> Date: Tue, 3 Oct 2023 22:26:38 -0700 Subject: [PATCH] add some blank standard models --- .../standard_models/index_constituents.py | 36 +++++++++++++++++ .../standard_models/index_info.py | 40 +++++++++++++++++++ .../standard_models/index_sectors.py | 28 +++++++++++++ .../standard_models/recent_performance.py | 33 +++++++++++++++ 4 files changed, 137 insertions(+) create mode 100644 openbb_platform/platform/provider/openbb_provider/standard_models/index_constituents.py create mode 100644 openbb_platform/platform/provider/openbb_provider/standard_models/index_info.py create mode 100644 openbb_platform/platform/provider/openbb_provider/standard_models/index_sectors.py create mode 100644 openbb_platform/platform/provider/openbb_provider/standard_models/recent_performance.py diff --git a/openbb_platform/platform/provider/openbb_provider/standard_models/index_constituents.py b/openbb_platform/platform/provider/openbb_provider/standard_models/index_constituents.py new file mode 100644 index 00000000000..78e80445f78 --- /dev/null +++ b/openbb_platform/platform/provider/openbb_provider/standard_models/index_constituents.py @@ -0,0 +1,36 @@ +"""Index Constituents data model.""" + +from typing import List, Optional, Set, Union + +from pydantic import Field, field_validator + +from openbb_provider.abstract.data import Data +from openbb_provider.abstract.query_params import QueryParams + + +class IndexConstituentsQueryParams(QueryParams): + """Index Constituents Query Params""" + + symbol: str = Field(description="The index ticker symbol.") + + @field_validator("symbol", pre=True, check_fields=False, always=True) + def upper_symbol(cls, v: Union[str, List[str], Set[str]]): + """Convert symbol to uppercase.""" + if isinstance(v, str): + return v.upper() + return ",".join([symbol.upper() for symbol in list(v)]) + + +class IndexConstituentsData(Data): + """Index Constituents Data.""" + + symbol: str = Field(description="The ticker symbol of the index constituent.") + name: Optional[str] = Field( + description="The name of the index constituent.", default=None + ) + weight: Optional[float] = Field( + description="The weight of the sector in the index.", default=None + ) + value: Optional[float] = Field( + description="The current market value of the index constituent.", default=None + ) diff --git a/openbb_platform/platform/provider/openbb_provider/standard_models/index_info.py b/openbb_platform/platform/provider/openbb_provider/standard_models/index_info.py new file mode 100644 index 00000000000..b54acceebd0 --- /dev/null +++ b/openbb_platform/platform/provider/openbb_provider/standard_models/index_info.py @@ -0,0 +1,40 @@ +"""Index Info data model.""" + +from typing import List, Optional, Set, Union + +from pydantic import Field, field_validator + +from openbb_provider.abstract.data import Data +from openbb_provider.abstract.query_params import QueryParams + + +class IndexInfoQueryParams(QueryParams): + """Index Info Query Params""" + + symbol: str = Field(description="The index ticker symbol.") + + @field_validator("symbol", pre=True, check_fields=False, always=True) + def upper_symbol(cls, v: Union[str, List[str], Set[str]]): + """Convert symbol to uppercase.""" + if isinstance(v, str): + return v.upper() + return ",".join([symbol.upper() for symbol in list(v)]) + + +class IndexInfoData(Data): + """Index Info Data.""" + + symbol: str = Field(description="The index ticker symbol.") + name: str = Field(description="The name of the index.") + description: Optional[str] = Field( + description="The short description of the index.", default=None + ) + methodology: Optional[str] = Field( + description="URL to the methodology document.", default=None + ) + factsheet: Optional[str] = Field( + description="URL to the factsheet document.", default=None + ) + nb_constituents: Optional[int] = Field( + description="The number of constituents in the index.", default=None + ) diff --git a/openbb_platform/platform/provider/openbb_provider/standard_models/index_sectors.py b/openbb_platform/platform/provider/openbb_provider/standard_models/index_sectors.py new file mode 100644 index 00000000000..79c1949ad30 --- /dev/null +++ b/openbb_platform/platform/provider/openbb_provider/standard_models/index_sectors.py @@ -0,0 +1,28 @@ +"""Index Sectors data model.""" + +from typing import List, Optional, Set, Union + +from pydantic import Field, field_validator + +from openbb_provider.abstract.data import Data +from openbb_provider.abstract.query_params import QueryParams + + +class IndexSectorsQueryParams(QueryParams): + """Index Info Query Params""" + + symbol: str = Field(description="The index ticker symbol.") + + @field_validator("symbol", pre=True, check_fields=False, always=True) + def upper_symbol(cls, v: Union[str, List[str], Set[str]]): + """Convert symbol to uppercase.""" + if isinstance(v, str): + return v.upper() + return ",".join([symbol.upper() for symbol in list(v)]) + + +class IndexSectorsData(Data): + """Index Sectors Data.""" + + sector: str = Field(description="The sector name.") + weight: float = Field(description="The weight of the sector in the index.") diff --git a/openbb_platform/platform/provider/openbb_provider/standard_models/recent_performance.py b/openbb_platform/platform/provider/openbb_provider/standard_models/recent_performance.py new file mode 100644 index 00000000000..0e4b2b240f3 --- /dev/null +++ b/openbb_platform/platform/provider/openbb_provider/standard_models/recent_performance.py @@ -0,0 +1,33 @@ +"""Recent Performance data model.""" + +from typing import List, Optional, Set, Union + +from pydantic import Field, field_validator + +from openbb_provider.abstract.data import Data +from openbb_provider.abstract.query_params import QueryParams + + +class RecentPerformanceQueryParams(QueryParams): + """Recent Performance Query Params""" + + symbol: str = Field(description="The ticker symbol to fetch.") + + @field_validator("symbol", pre=True, check_fields=False, always=True) + def upper_symbol(cls, v: Union[str, List[str], Set[str]]): + """Convert symbol to uppercase.""" + if isinstance(v, str): + return v.upper() + return ",".join([symbol.upper() for symbol in list(v)]) + + +class RecentPerformanceData(Data): + """Recent Performance Data.""" + + one_day: Optional[float] = Field(description="One-day return.", default=None) + one_week: Optional[float] = Field(description="One-week return.", default=None) + mtd: Optional[float] = Field(description="MTD return.", default=None) + qtd: Optional[float] = Field(description="QTD return.", default=None) + ytd: Optional[float] = Field(description="YTD return.", default=None) + ttm: Optional[float] = Field(description="TTM return.", default=None) + one_year: Optional[float] = Field(description="One-year return.", default=None)