add some blank standard models

This commit is contained in:
Danglewood
2023-10-03 22:26:38 -07:00
parent 5f89c46327
commit 35f19e6b92
4 changed files with 137 additions and 0 deletions

View File

@@ -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
)

View File

@@ -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
)

View File

@@ -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.")

View File

@@ -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)