mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-11-01 23:12:21 +00:00
added comsplit as stock split calendar from fmp
This commit is contained in:
@@ -47,6 +47,7 @@ from builtin_providers.fmp.stock_insider_trading import FMPStockInsiderTradingFe
|
||||
from builtin_providers.fmp.stock_news import FMPStockNewsFetcher
|
||||
from builtin_providers.fmp.stock_ownership import FMPStockOwnershipFetcher
|
||||
from builtin_providers.fmp.stock_price import FMPStockPriceFetcher
|
||||
from builtin_providers.fmp.stock_splits import FMPStockSplitCalendarFetcher
|
||||
from builtin_providers.fmp.treasury_rates import FMPTreasuryRatesFetcher
|
||||
|
||||
# mypy: disable-error-code="list-item"
|
||||
@@ -80,6 +81,7 @@ fmp_provider = Provider(
|
||||
FMPEarningsCalendarFetcher,
|
||||
FMPEarningsCallTranscriptFetcher,
|
||||
FMPHistoricalStockSplitsFetcher,
|
||||
FMPStockSplitCalendarFetcher,
|
||||
FMPHistoricalDividendsFetcher,
|
||||
FMPKeyMetricsFetcher,
|
||||
FMPSECFilingsFetcher,
|
||||
|
||||
69
openbb_providers/builtin_providers/fmp/stock_splits.py
Normal file
69
openbb_providers/builtin_providers/fmp/stock_splits.py
Normal file
@@ -0,0 +1,69 @@
|
||||
"""FMP Stock Splits Calendar fetcher."""
|
||||
|
||||
# IMPORT STANDARD
|
||||
from datetime import date
|
||||
from typing import Dict, List, Optional
|
||||
|
||||
# IMPORT INTERNAL
|
||||
from openbb_provider.model.data.stock_splits import (
|
||||
StockSplitCalendarData,
|
||||
StockSplitCalendarQueryParams,
|
||||
)
|
||||
from openbb_provider.provider.abstract.fetcher import Fetcher
|
||||
from openbb_provider.provider.provider_helpers import data_transformer
|
||||
|
||||
# IMPORT THIRD-PARTY
|
||||
from builtin_providers.fmp.helpers import create_url, get_data_many
|
||||
|
||||
|
||||
class FMPStockSplitCalendarQueryParams(StockSplitCalendarQueryParams):
|
||||
"""FMP Stock Split Calendar query.
|
||||
|
||||
Source: https://site.financialmodelingprep.com/developer/docs/stock-split-calendar-api/
|
||||
|
||||
Parameter
|
||||
---------
|
||||
start_date : date
|
||||
The start date of the stock splits from which to retrieve the data.
|
||||
end_date : date
|
||||
The end date of the stock splits up to which to retrieve the data.
|
||||
"""
|
||||
|
||||
start_date: date
|
||||
end_date: date
|
||||
|
||||
|
||||
class FMPStockSplitCalendarData(StockSplitCalendarData):
|
||||
"""FMP Stock Split Calendar data."""
|
||||
|
||||
|
||||
class FMPStockSplitCalendarFetcher(
|
||||
Fetcher[
|
||||
StockSplitCalendarQueryParams,
|
||||
StockSplitCalendarData,
|
||||
FMPStockSplitCalendarQueryParams,
|
||||
FMPStockSplitCalendarData,
|
||||
]
|
||||
):
|
||||
@staticmethod
|
||||
def transform_query(
|
||||
query: StockSplitCalendarQueryParams, extra_params: Optional[Dict] = None
|
||||
) -> FMPStockSplitCalendarQueryParams:
|
||||
return FMPStockSplitCalendarQueryParams(
|
||||
start_date=query.start_date,
|
||||
end_date=query.end_date,
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def extract_data(
|
||||
query: FMPStockSplitCalendarQueryParams, api_key: str
|
||||
) -> List[FMPStockSplitCalendarData]:
|
||||
query_str = f"from={query.start_date}&to={query.end_date}"
|
||||
url = create_url(3, f"stock_split_calendar?{query_str}", api_key)
|
||||
return get_data_many(url, FMPStockSplitCalendarData)
|
||||
|
||||
@staticmethod
|
||||
def transform_data(
|
||||
data: List[FMPStockSplitCalendarData],
|
||||
) -> List[StockSplitCalendarData]:
|
||||
return data_transformer(data, StockSplitCalendarData)
|
||||
56
openbb_providers/openbb_provider/model/data/stock_splits.py
Normal file
56
openbb_providers/openbb_provider/model/data/stock_splits.py
Normal file
@@ -0,0 +1,56 @@
|
||||
"""Stock Split Calendar data model."""
|
||||
|
||||
|
||||
from datetime import date as dateType, datetime, timedelta
|
||||
from typing import Optional
|
||||
|
||||
from pydantic import Field
|
||||
|
||||
from openbb_provider.metadata import DESCRIPTIONS
|
||||
|
||||
from openbb_provider.model.abstract.data import Data, QueryParams
|
||||
|
||||
|
||||
class StockSplitCalendarQueryParams(QueryParams):
|
||||
"""Stock Split Calendar query model.
|
||||
|
||||
Parameter
|
||||
---------
|
||||
start_date : date
|
||||
The start date of the stock splits from which to retrieve the data.
|
||||
end_date : date
|
||||
The end date of the stock splits up to which to retrieve the data.
|
||||
"""
|
||||
|
||||
start_date: dateType = Field(
|
||||
description=DESCRIPTIONS.get("start_date", ""),
|
||||
default=(datetime.now() - timedelta(days=90)).date(),
|
||||
)
|
||||
end_date: dateType = Field(
|
||||
description=DESCRIPTIONS.get("end_date", ""),
|
||||
default=datetime.now().date(),
|
||||
)
|
||||
|
||||
|
||||
class StockSplitCalendarData(Data):
|
||||
"""Stock Split Calendar data.
|
||||
|
||||
Returns
|
||||
-------
|
||||
date : date
|
||||
The date of the stock splits.
|
||||
label : str
|
||||
The label of the stock splits.
|
||||
symbol : str
|
||||
The symbol of the company.
|
||||
numerator : float
|
||||
The numerator of the stock splits.
|
||||
denominator : float
|
||||
The denominator of the stock splits.
|
||||
"""
|
||||
|
||||
date: dateType
|
||||
label: str
|
||||
symbol: str
|
||||
numerator: float
|
||||
denominator: float
|
||||
@@ -251,6 +251,18 @@ def cal(
|
||||
)
|
||||
|
||||
|
||||
@router.command(query="StockSplitCalendar")
|
||||
def comsplit(
|
||||
cc: CommandContext,
|
||||
provider_choices: ProviderChoices,
|
||||
standard_params: StandardParams,
|
||||
) -> CommandOutput[BaseModel]:
|
||||
"""Stock Split Calendar."""
|
||||
return CommandOutput(
|
||||
results=Query(**locals()).execute(), provider=provider_choices.provider
|
||||
)
|
||||
|
||||
|
||||
@router.command
|
||||
def customer() -> CommandOutput[Empty]: # type: ignore
|
||||
"""List of customers of the company."""
|
||||
|
||||
Reference in New Issue
Block a user