Files
OpenBB/openbb_platform/providers/fred/openbb_fred/models/ffrmc.py
Danglewood 78445ce007 [Feature] Delay/Optimize Imports (#6532)
* round 1

* black

* more black

* providers a-thru-fmp

* charting settings

* charting backend

* black

* charting_settings

* missing nasdaq import

* nasdaq mypy

* fed money measure

* some linting

* black

* more linting

* more linting

* charting imports

* black

* pylint

* refactor fred

* more linting

* rest of the providers

* didn't want that file

* more cleanup

* missed

* ta_helpers

* router views

* chart ta_class

* forgot a file

* forgot another file

* biztoc

* package builder

* technical router

* fred params

* bump finviz

* fix tmx

* more cleanup

* try again

* currency historical

* equity search

* missed files in commit

* fix some tests

* black

* fix more test cassettes

* more patchy

* black

* linters

* more tests

* black

* mypy

* delete unused model

* more linting

* forgot files

* more linting

* make up your mind, black, and stop moving pylint for me

* more black

* back to where we were before black destroyed it

* ..........

* ..................

* unused fetcher test

* remove standard model validator

* commodity router

* treasury prices

* oecd tests

* finra

* container cleanup

* black

* forgotten file

* linter

* remove wrapped ""

* fix merge

* patches

* ecb test

* finra cassette

* finviz cassettes

* nasdaq cassettes

* oecd cassettes

* yfinance cassettes

* more test cassettes

* black

* merge cleanup

* cboe helpers

* black

* fix typo

---------

Co-authored-by: Henrique Joaquim <henriquecjoaquim@gmail.com>
Co-authored-by: Igor Radovanovic <74266147+IgorWounds@users.noreply.github.com>
2024-07-09 16:28:15 +00:00

91 lines
2.5 KiB
Python

"""FRED Selected Treasury Constant Maturity Model."""
# pylint: disable=unused-argument
from typing import Any, Dict, List, Optional
from openbb_core.provider.abstract.fetcher import Fetcher
from openbb_core.provider.standard_models.ffrmc import (
SelectedTreasuryConstantMaturityData,
SelectedTreasuryConstantMaturityQueryParams,
)
from pydantic import field_validator
FFRMC_PARAMETER_TO_FRED_ID = {
"10y": "T10YFF",
"5y": "T5YFF",
"1y": "T1YFF",
"6m": "T6MFF",
"3m": "T3MFF",
}
class FREDSelectedTreasuryConstantMaturityQueryParams(
SelectedTreasuryConstantMaturityQueryParams
):
"""FRED Selected Treasury Constant Maturity Query."""
class FREDSelectedTreasuryConstantMaturityData(SelectedTreasuryConstantMaturityData):
"""FRED Selected Treasury Constant Maturity Data."""
__alias_dict__ = {"rate": "value"}
@field_validator("rate", mode="before", check_fields=False)
@classmethod
def value_validate(cls, v):
"""Validate rate."""
try:
return float(v)
except ValueError:
return None
class FREDSelectedTreasuryConstantMaturityFetcher(
Fetcher[
FREDSelectedTreasuryConstantMaturityQueryParams,
List[FREDSelectedTreasuryConstantMaturityData],
]
):
"""FRED Selected Treasury Constant Maturity Fetcher."""
@staticmethod
def transform_query(
params: Dict[str, Any]
) -> FREDSelectedTreasuryConstantMaturityQueryParams:
"""Transform query."""
return FREDSelectedTreasuryConstantMaturityQueryParams(**params)
@staticmethod
def extract_data(
query: FREDSelectedTreasuryConstantMaturityQueryParams,
credentials: Optional[Dict[str, str]],
**kwargs: Any
) -> List:
"""Extract data."""
# pylint: disable=import-outside-toplevel
from openbb_fred.utils.fred_base import Fred
key = credentials.get("fred_api_key") if credentials else ""
fred = Fred(key)
data = fred.get_series(
series_id=FFRMC_PARAMETER_TO_FRED_ID[query.maturity], # type: ignore
start_date=query.start_date,
end_date=query.end_date,
**kwargs,
)
return data
@staticmethod
def transform_data(
query: FREDSelectedTreasuryConstantMaturityQueryParams,
data: List,
**kwargs: Any
) -> List[FREDSelectedTreasuryConstantMaturityData]:
"""Transform data."""
return [
FREDSelectedTreasuryConstantMaturityData.model_validate(d) for d in data
]