mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-11-07 01:41:17 +00:00
make the changes and some etf models
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
"""ETF Countries data model."""
|
||||
|
||||
from typing import List, Set, Union
|
||||
|
||||
from pydantic import Field, field_validator
|
||||
|
||||
from openbb_provider.abstract.data import Data
|
||||
from openbb_provider.abstract.query_params import QueryParams
|
||||
|
||||
|
||||
class EtfCountriesQueryParams(QueryParams):
|
||||
"""ETF Countries Query Params"""
|
||||
|
||||
symbol: str = Field(description="The exchange ticker symbol for the ETF.")
|
||||
|
||||
@field_validator("symbol")
|
||||
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 EtfCountriesData(Data):
|
||||
"""ETF Countries Data."""
|
||||
|
||||
country: str = Field(description="The country of the exposure.")
|
||||
weight: float = Field(description="The weight of the country in the ETF.")
|
||||
@@ -0,0 +1,29 @@
|
||||
"""ETF Historical NAV model."""
|
||||
|
||||
from datetime import date as dateType
|
||||
from typing import List, Set, Union
|
||||
|
||||
from pydantic import Field, field_validator
|
||||
|
||||
from openbb_provider.abstract.data import Data
|
||||
from openbb_provider.abstract.query_params import QueryParams
|
||||
|
||||
|
||||
class EtfHistoricalNavQueryParams(QueryParams):
|
||||
"""ETF Historicl NAV Query Params"""
|
||||
|
||||
symbol: str = Field(description="The exchange ticker symbol for the ETF.")
|
||||
|
||||
@field_validator("symbol")
|
||||
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 EtfHistoricalNavData(Data):
|
||||
"""ETF Historical NAV Data."""
|
||||
|
||||
date: dateType = Field(description="The date of the NAV.")
|
||||
nav: float = Field(description="The net asset value on the date.")
|
||||
@@ -0,0 +1,24 @@
|
||||
"""ETF Holdings data model."""
|
||||
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import Field
|
||||
|
||||
from openbb_provider.abstract.data import Data
|
||||
from openbb_provider.abstract.query_params import QueryParams
|
||||
|
||||
|
||||
class EtfHoldingsQueryParams(QueryParams):
|
||||
"""ETF Holdings Query Params"""
|
||||
|
||||
symbol: str = Field(description="The exchange ticker symbol for the ETF.")
|
||||
|
||||
|
||||
class EtfHoldingsData(Data):
|
||||
"""ETF Holdings Data."""
|
||||
|
||||
symbol: Optional[str] = Field(
|
||||
description="The exchange ticker symbol for the holding."
|
||||
)
|
||||
name: Optional[str] = Field(description="Name of the ETF holding.")
|
||||
weight: Optional[float] = Field(description="Weight of the ETF holding.")
|
||||
@@ -0,0 +1,29 @@
|
||||
"""ETF 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 EtfInfoQueryParams(QueryParams):
|
||||
"""ETF Info Query Params"""
|
||||
|
||||
symbol: str = Field(description="The exchange ticker symbol for the ETF.")
|
||||
|
||||
@field_validator("symbol")
|
||||
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 EtfInfoData(Data):
|
||||
"""ETF Info Data."""
|
||||
|
||||
symbol: str = Field(description="The exchange ticker symbol for the ETF.")
|
||||
inception_date: Optional[str] = Field(description="Inception date of the ETF.")
|
||||
name: Optional[str] = Field(description="Name of the ETF.")
|
||||
@@ -0,0 +1,21 @@
|
||||
"""ETF Search data model."""
|
||||
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import Field
|
||||
|
||||
from openbb_provider.abstract.data import Data
|
||||
from openbb_provider.abstract.query_params import QueryParams
|
||||
|
||||
|
||||
class EtfSearchQueryParams(QueryParams):
|
||||
"""ETF Search Query Params"""
|
||||
|
||||
query: Optional[str] = Field(description="Search query.", default="")
|
||||
|
||||
|
||||
class EtfSearchData(Data):
|
||||
"""ETF Search Data."""
|
||||
|
||||
symbol: str = Field(description="The exchange ticker symbol for the ETF.")
|
||||
name: Optional[str] = Field(description="Name of the ETF.", default=None)
|
||||
@@ -0,0 +1,59 @@
|
||||
"""ETF 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 EtfSectorsQueryParams(QueryParams):
|
||||
"""ETF Sectors Query Params"""
|
||||
|
||||
symbol: str = Field(description="The exchange ticker symbol for the ETF.")
|
||||
|
||||
@field_validator("symbol")
|
||||
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 EtfSectorsData(Data):
|
||||
"""ETF Sectors Data."""
|
||||
|
||||
energy: Optional[float] = Field(description="Energy Sector Weight", default=None)
|
||||
materials: Optional[float] = Field(
|
||||
description="Materials Sector Weight.", default=None
|
||||
)
|
||||
industrials: Optional[float] = Field(
|
||||
description="Industrials Sector Weight.", default=None
|
||||
)
|
||||
consumer_cyclical: Optional[float] = Field(
|
||||
description="Consumer Cyclical Sector Weight.", default=None
|
||||
)
|
||||
consumer_defensive: Optional[float] = Field(
|
||||
description="Consumer Defensive Sector Weight.", default=None
|
||||
)
|
||||
financial_services: Optional[float] = Field(
|
||||
description="Financial Services Sector Weight.", default=None
|
||||
)
|
||||
technology: Optional[float] = Field(
|
||||
description="Technology Sector Weight.", default=None
|
||||
)
|
||||
health_care: Optional[float] = Field(
|
||||
description="Health Care Sector Weight.", default=None
|
||||
)
|
||||
communication_services: Optional[float] = Field(
|
||||
description="Communication Services Sector Weight.",
|
||||
alias="Communication Services",
|
||||
default=None,
|
||||
)
|
||||
utilities: Optional[float] = Field(
|
||||
description="Utilities Sector Weight.", default=None
|
||||
)
|
||||
real_estate: Optional[float] = Field(
|
||||
description="Real Estate Sector Weight.", default=None
|
||||
)
|
||||
@@ -0,0 +1,48 @@
|
||||
"""Historical EPS data model."""
|
||||
|
||||
|
||||
from datetime import (
|
||||
date as dateType,
|
||||
)
|
||||
from typing import List, Optional, Set, Union
|
||||
|
||||
from dateutil import parser
|
||||
from pydantic import Field, validator
|
||||
|
||||
from openbb_provider.abstract.data import Data
|
||||
from openbb_provider.abstract.query_params import QueryParams
|
||||
from openbb_provider.utils.descriptions import DATA_DESCRIPTIONS, QUERY_DESCRIPTIONS
|
||||
|
||||
|
||||
class HistoricalEpsQueryParams(QueryParams):
|
||||
"""Historical EPS Query."""
|
||||
|
||||
symbol: str = Field(description=QUERY_DESCRIPTIONS.get("symbol", ""))
|
||||
|
||||
@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 HistoricalEpsData(Data):
|
||||
"""Historical EPS Data."""
|
||||
|
||||
date: dateType = Field(default=None, description=DATA_DESCRIPTIONS.get("date", ""))
|
||||
symbol: str = Field(description=QUERY_DESCRIPTIONS.get("symbol", ""))
|
||||
announce_time: Optional[str] = Field(
|
||||
default=None, description="Timing of the earnings announcement."
|
||||
)
|
||||
eps_actual: Optional[float] = Field(
|
||||
default=None, description="Actual EPS from the earnings date."
|
||||
)
|
||||
eps_estimated: Optional[float] = Field(
|
||||
default=None, description="Estimated EPS for the earnings date."
|
||||
)
|
||||
|
||||
@validator("date", pre=True, check_fields=False)
|
||||
def date_validate(cls, v): # pylint: disable=E0213
|
||||
"""Return formatted datetime."""
|
||||
return parser.isoparse(str(v))
|
||||
@@ -13,7 +13,7 @@ class IndexConstituentsQueryParams(QueryParams):
|
||||
|
||||
symbol: str = Field(description="The index ticker symbol.")
|
||||
|
||||
@field_validator("symbol", pre=True, check_fields=False, always=True)
|
||||
@field_validator("symbol")
|
||||
def upper_symbol(cls, v: Union[str, List[str], Set[str]]):
|
||||
"""Convert symbol to uppercase."""
|
||||
if isinstance(v, str):
|
||||
|
||||
@@ -13,7 +13,7 @@ class IndexInfoQueryParams(QueryParams):
|
||||
|
||||
symbol: str = Field(description="The index ticker symbol.")
|
||||
|
||||
@field_validator("symbol", pre=True, check_fields=False, always=True)
|
||||
@field_validator("symbol")
|
||||
def upper_symbol(cls, v: Union[str, List[str], Set[str]]):
|
||||
"""Convert symbol to uppercase."""
|
||||
if isinstance(v, str):
|
||||
@@ -35,6 +35,6 @@ class IndexInfoData(Data):
|
||||
factsheet: Optional[str] = Field(
|
||||
description="URL to the factsheet document.", default=None
|
||||
)
|
||||
nb_constituents: Optional[int] = Field(
|
||||
num_constituents: Optional[int] = Field(
|
||||
description="The number of constituents in the index.", default=None
|
||||
)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
"""Index Sectors data model."""
|
||||
|
||||
from typing import List, Optional, Set, Union
|
||||
from typing import List, Set, Union
|
||||
|
||||
from pydantic import Field, field_validator
|
||||
|
||||
@@ -13,7 +13,7 @@ class IndexSectorsQueryParams(QueryParams):
|
||||
|
||||
symbol: str = Field(description="The index ticker symbol.")
|
||||
|
||||
@field_validator("symbol", pre=True, check_fields=False, always=True)
|
||||
@field_validator("symbol")
|
||||
def upper_symbol(cls, v: Union[str, List[str], Set[str]]):
|
||||
"""Convert symbol to uppercase."""
|
||||
if isinstance(v, str):
|
||||
|
||||
@@ -9,11 +9,11 @@ from openbb_provider.abstract.data import Data
|
||||
from openbb_provider.abstract.query_params import QueryParams
|
||||
|
||||
|
||||
class IndustryPeQueryParams(QueryParams):
|
||||
class IndustryPEQueryParams(QueryParams):
|
||||
"""Industry P/E Ratio Query."""
|
||||
|
||||
|
||||
class IndustryPeData(Data):
|
||||
class IndustryPEData(Data):
|
||||
"""Industry P/E Ratio Data."""
|
||||
|
||||
date: Optional[dateType] = Field(
|
||||
@@ -22,5 +22,5 @@ class IndustryPeData(Data):
|
||||
exchange: Optional[str] = Field(
|
||||
default=None, description="The exchange where the data is from."
|
||||
)
|
||||
sector: str = Field(description="The name of the industry.")
|
||||
industry: str = Field(description="The name of the industry.")
|
||||
pe: float = Field(description="The P/E ratio of the industry.")
|
||||
|
||||
@@ -13,7 +13,7 @@ class RecentPerformanceQueryParams(QueryParams):
|
||||
|
||||
symbol: str = Field(description="The ticker symbol to fetch.")
|
||||
|
||||
@field_validator("symbol", pre=True, check_fields=False, always=True)
|
||||
@field_validator("symbol")
|
||||
def upper_symbol(cls, v: Union[str, List[str], Set[str]]):
|
||||
"""Convert symbol to uppercase."""
|
||||
if isinstance(v, str):
|
||||
@@ -25,9 +25,20 @@ class RecentPerformanceData(Data):
|
||||
"""Recent Performance Data."""
|
||||
|
||||
one_day: Optional[float] = Field(description="One-day return.", default=None)
|
||||
wtd: Optional[float] = Field(description="Week to date 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)
|
||||
three_year: Optional[float] = Field(description="One-year return.", default=None)
|
||||
mtd: Optional[float] = Field(description="Month to date return.", default=None)
|
||||
one_month: Optional[float] = Field(description="One-month return.", default=None)
|
||||
qtd: Optional[float] = Field(description="Quarter to date return.", default=None)
|
||||
three_month: Optional[float] = Field(
|
||||
description="Three-month return.", default=None
|
||||
)
|
||||
six_month: Optional[float] = Field(description="Six-month return.", default=None)
|
||||
ytd: Optional[float] = Field(description="Year to date return.", default=None)
|
||||
one_year: Optional[float] = Field(description="One-year return.", default=None)
|
||||
three_year: Optional[float] = Field(description="Three-year return.", default=None)
|
||||
five_year: Optional[float] = Field(description="Five-year return.", default=None)
|
||||
ten_year: Optional[float] = Field(description="Ten-year return.", default=None)
|
||||
max: Optional[float] = Field(
|
||||
description="Return from the beginning of the time series.", default=None
|
||||
)
|
||||
|
||||
@@ -9,11 +9,11 @@ from openbb_provider.abstract.data import Data
|
||||
from openbb_provider.abstract.query_params import QueryParams
|
||||
|
||||
|
||||
class SectorPeQueryParams(QueryParams):
|
||||
class SectorPEQueryParams(QueryParams):
|
||||
"""Sector P/E Ratio Query."""
|
||||
|
||||
|
||||
class SectorPeData(Data):
|
||||
class SectorPEData(Data):
|
||||
"""Sector P/E Ratio Data."""
|
||||
|
||||
date: Optional[dateType] = Field(
|
||||
|
||||
Reference in New Issue
Block a user