mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-30 05:52:23 +00:00
Merge branch 'feature/openbb-sdk-v4' into feature/integration-tests
This commit is contained in:
@@ -3203,7 +3203,7 @@ class ROUTER_stocks_fa(Container):
|
||||
OpenBBCustomParameter(description="Year of the earnings call transcript."),
|
||||
],
|
||||
quarter: Annotated[
|
||||
Literal[1, 2, 3, 4],
|
||||
int,
|
||||
OpenBBCustomParameter(
|
||||
description="Quarter of the earnings call transcript."
|
||||
),
|
||||
@@ -3219,7 +3219,7 @@ class ROUTER_stocks_fa(Container):
|
||||
Symbol to get data for.
|
||||
year : int
|
||||
Year of the earnings call transcript.
|
||||
quarter : Literal[1, 2, 3, 4]
|
||||
quarter : int
|
||||
Quarter of the earnings call transcript.
|
||||
provider : Optional[Literal['fmp']]
|
||||
The provider to use for the query, by default None.
|
||||
|
||||
@@ -59,7 +59,7 @@ class FREDAMERIBORData(AMERIBORData):
|
||||
try:
|
||||
return float(v)
|
||||
except ValueError:
|
||||
return float("nan")
|
||||
return None
|
||||
|
||||
|
||||
class FREDAMERIBORFetcher(
|
||||
|
||||
@@ -50,7 +50,7 @@ class FREDESTRData(ESTRData):
|
||||
try:
|
||||
return float(v)
|
||||
except ValueError:
|
||||
return float("nan")
|
||||
return None
|
||||
|
||||
|
||||
class FREDESTRFetcher(
|
||||
|
||||
@@ -51,7 +51,7 @@ class FREDFEDData(FEDData):
|
||||
try:
|
||||
return float(v)
|
||||
except ValueError:
|
||||
return float("nan")
|
||||
return None
|
||||
|
||||
|
||||
class FREDFEDFetcher(Fetcher[FREDFEDQueryParams, List[Dict[str, List[FREDFEDData]]]]):
|
||||
|
||||
@@ -31,7 +31,7 @@ class FREDIORBData(IORBData):
|
||||
try:
|
||||
return float(v)
|
||||
except ValueError:
|
||||
return float("nan")
|
||||
return None
|
||||
|
||||
|
||||
class FREDIORBFetcher(
|
||||
|
||||
@@ -40,7 +40,7 @@ class FREDSOFRData(SOFRData):
|
||||
try:
|
||||
return float(v)
|
||||
except ValueError:
|
||||
return float("nan")
|
||||
return None
|
||||
|
||||
|
||||
class FREDSOFRFetcher(
|
||||
|
||||
@@ -48,7 +48,7 @@ class FREDSONIAData(SONIAData):
|
||||
try:
|
||||
return float(v)
|
||||
except ValueError:
|
||||
return float("nan")
|
||||
return None
|
||||
|
||||
|
||||
class FREDSONIAFetcher(
|
||||
|
||||
@@ -67,9 +67,9 @@ def process_projections(data: Dict) -> List[Dict]:
|
||||
for key, value in data.items():
|
||||
val = [item["value"] for item in value if item["date"] == date]
|
||||
if val:
|
||||
entry[key] = float(val[0]) if val != "." else float("nan")
|
||||
entry[key] = float(val[0]) if val[0] != "." else None
|
||||
else:
|
||||
entry[key] = float("nan")
|
||||
entry[key] = None
|
||||
ldata.append(entry)
|
||||
|
||||
return ldata
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# ruff: noqa: SIM105
|
||||
|
||||
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
from dateutil.relativedelta import relativedelta
|
||||
@@ -14,6 +14,7 @@ from openbb_provider.standard_models.futures_historical import (
|
||||
from openbb_provider.utils.descriptions import QUERY_DESCRIPTIONS
|
||||
from openbb_yfinance.utils.helpers import get_futures_data
|
||||
from openbb_yfinance.utils.references import INTERVALS, MONTHS, PERIODS
|
||||
from pandas import Timestamp, to_datetime
|
||||
from pydantic import Field, validator
|
||||
from yfinance import Ticker
|
||||
|
||||
@@ -40,10 +41,12 @@ class YFinanceFuturesHistoricalQueryParams(FuturesHistoricalQueryParams):
|
||||
class YFinanceFuturesHistoricalData(FuturesHistoricalData):
|
||||
"""YFinance Futures End of Day Data."""
|
||||
|
||||
@validator("Date", pre=True, check_fields=False)
|
||||
@validator("date", pre=True, check_fields=False)
|
||||
def date_validate(cls, v): # pylint: disable=E0213
|
||||
"""Return datetime object from string."""
|
||||
return datetime.strptime(v, "%Y-%m-%dT%H:%M:%S")
|
||||
"""Return formatted datetime."""
|
||||
if isinstance(v, Timestamp):
|
||||
return v.to_pydatetime()
|
||||
return v
|
||||
|
||||
|
||||
class YFinanceFuturesHistoricalFetcher(
|
||||
@@ -63,23 +66,9 @@ class YFinanceFuturesHistoricalFetcher(
|
||||
now = datetime.now().date()
|
||||
if params.get("start_date") is None:
|
||||
transformed_params["start_date"] = now - relativedelta(years=1)
|
||||
else:
|
||||
try:
|
||||
transformed_params["start_date"] = datetime.strptime(
|
||||
params["start_date"], "%Y-%m-%d"
|
||||
).date()
|
||||
except TypeError:
|
||||
pass
|
||||
|
||||
if params.get("end_date") is None:
|
||||
transformed_params["end_date"] = now
|
||||
else:
|
||||
try:
|
||||
transformed_params["end_date"] = datetime.strptime(
|
||||
params["end_date"], "%Y-%m-%d"
|
||||
).date()
|
||||
except TypeError:
|
||||
pass
|
||||
|
||||
return YFinanceFuturesHistoricalQueryParams(**transformed_params)
|
||||
|
||||
@@ -124,10 +113,29 @@ class YFinanceFuturesHistoricalFetcher(
|
||||
raise_errors=True,
|
||||
)
|
||||
|
||||
data = data.reset_index()
|
||||
data["Date"] = (
|
||||
data["Date"].dt.tz_localize(None).dt.strftime("%Y-%m-%dT%H:%M:%S")
|
||||
query.end_date = (
|
||||
datetime.now().date() if query.end_date is None else query.end_date
|
||||
)
|
||||
days = (
|
||||
1
|
||||
if query.interval in ["1m", "2m", "5m", "15m", "30m", "60m", "1h", "90m"]
|
||||
else 0
|
||||
)
|
||||
if query.start_date:
|
||||
data.set_index("date", inplace=True)
|
||||
data.index = to_datetime(data.index)
|
||||
|
||||
start_date_dt = datetime.combine(query.start_date, datetime.min.time())
|
||||
end_date_dt = datetime.combine(query.end_date, datetime.min.time())
|
||||
|
||||
data = data[
|
||||
(data.index >= start_date_dt + timedelta(days=days))
|
||||
& (data.index <= end_date_dt)
|
||||
]
|
||||
|
||||
data.reset_index(inplace=True)
|
||||
data.rename(columns={"index": "date"}, inplace=True)
|
||||
|
||||
return data.to_dict("records")
|
||||
|
||||
@staticmethod
|
||||
|
||||
@@ -28,4 +28,4 @@ class AMERIBORData(Data):
|
||||
"""Return Treasury Rates Data."""
|
||||
|
||||
date: dateType = Field(description=DATA_DESCRIPTIONS.get("date", ""))
|
||||
rate: float = Field(description="AMERIBOR rate.")
|
||||
rate: Optional[float] = Field(description="AMERIBOR rate.")
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
|
||||
from datetime import datetime
|
||||
from typing import List, Literal, Set, Union
|
||||
from typing import List, Set, Union
|
||||
|
||||
from pydantic import Field, validator
|
||||
|
||||
@@ -16,8 +16,11 @@ class EarningsCallTranscriptQueryParams(QueryParams):
|
||||
|
||||
symbol: str = Field(description=QUERY_DESCRIPTIONS.get("symbol", ""))
|
||||
year: int = Field(description="Year of the earnings call transcript.")
|
||||
quarter: Literal[1, 2, 3, 4] = Field(
|
||||
default=1, description="Quarter of the earnings call transcript."
|
||||
quarter: int = Field(
|
||||
default=1,
|
||||
gt=0,
|
||||
lt=5,
|
||||
description="Quarter of the earnings call transcript.",
|
||||
)
|
||||
|
||||
@validator("symbol", pre=True, check_fields=False, always=True)
|
||||
|
||||
@@ -28,4 +28,4 @@ class ESTRData(Data):
|
||||
"""Return Treasury Rates Data."""
|
||||
|
||||
date: dateType = Field(description=DATA_DESCRIPTIONS.get("date", ""))
|
||||
rate: float = Field(description="ESTR rate.")
|
||||
rate: Optional[float] = Field(description="ESTR rate.")
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
|
||||
from datetime import date as dateType
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import Field
|
||||
|
||||
@@ -18,16 +19,16 @@ class PROJECTIONData(Data):
|
||||
"""Return Treasury Rates Data."""
|
||||
|
||||
date: dateType = Field(description=DATA_DESCRIPTIONS.get("date", ""))
|
||||
range_high: float = Field(description="High projection of rates.")
|
||||
central_tendency_high: float = Field(
|
||||
range_high: Optional[float] = Field(description="High projection of rates.")
|
||||
central_tendency_high: Optional[float] = Field(
|
||||
description="Central tendency of high projection of rates."
|
||||
)
|
||||
median: float = Field(description="Median projection of rates.")
|
||||
range_midpoint: float = Field(description="Midpoint projection of rates.")
|
||||
central_tendency_midpoint: float = Field(
|
||||
median: Optional[float] = Field(description="Median projection of rates.")
|
||||
range_midpoint: Optional[float] = Field(description="Midpoint projection of rates.")
|
||||
central_tendency_midpoint: Optional[float] = Field(
|
||||
description="Central tendency of midpoint projection of rates."
|
||||
)
|
||||
range_low: float = Field(description="Low projection of rates.")
|
||||
central_tendency_low: float = Field(
|
||||
range_low: Optional[float] = Field(description="Low projection of rates.")
|
||||
central_tendency_low: Optional[float] = Field(
|
||||
description="Central tendency of low projection of rates."
|
||||
)
|
||||
|
||||
@@ -28,4 +28,4 @@ class FEDData(Data):
|
||||
"""Return Treasury Rates Data."""
|
||||
|
||||
date: dateType = Field(description=DATA_DESCRIPTIONS.get("date", ""))
|
||||
rate: float = Field(description="FED rate.")
|
||||
rate: Optional[float] = Field(description="FED rate.")
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
from datetime import date, datetime
|
||||
from typing import List, Optional, Set, Union
|
||||
|
||||
from dateutil import parser
|
||||
from pydantic import Field, validator
|
||||
|
||||
from openbb_provider.abstract.data import Data
|
||||
@@ -45,3 +46,8 @@ class FuturesHistoricalData(Data):
|
||||
low: float = Field(description=DATA_DESCRIPTIONS.get("low", ""))
|
||||
close: float = Field(description=DATA_DESCRIPTIONS.get("close", ""))
|
||||
volume: float = Field(description=DATA_DESCRIPTIONS.get("volume", ""))
|
||||
|
||||
@validator("date", pre=True, check_fields=False)
|
||||
def date_validate(cls, v): # pylint: disable=E0213
|
||||
"""Return formatted datetime."""
|
||||
return parser.isoparse(str(v))
|
||||
|
||||
@@ -28,4 +28,4 @@ class IORBData(Data):
|
||||
"""Return Treasury Rates Data."""
|
||||
|
||||
date: dateType = Field(description=DATA_DESCRIPTIONS.get("date", ""))
|
||||
rate: float = Field(description="IORB rate.")
|
||||
rate: Optional[float] = Field(description="IORB rate.")
|
||||
|
||||
@@ -28,4 +28,4 @@ class SOFRData(Data):
|
||||
"""Return Treasury Rates Data."""
|
||||
|
||||
date: dateType = Field(description=DATA_DESCRIPTIONS.get("date", ""))
|
||||
rate: float = Field(description="SOFR rate.")
|
||||
rate: Optional[float] = Field(description="SOFR rate.")
|
||||
|
||||
@@ -28,4 +28,4 @@ class SONIAData(Data):
|
||||
"""Return Treasury Rates Data."""
|
||||
|
||||
date: dateType = Field(description=DATA_DESCRIPTIONS.get("date", ""))
|
||||
rate: float = Field(description="SONIA rate.")
|
||||
rate: Optional[float] = Field(description="SONIA rate.")
|
||||
|
||||
Reference in New Issue
Block a user