mirror of
https://github.com/OpenBB-finance/OpenBB.git
synced 2026-10-27 20:42:26 +00:00
rename sec_filings -> company_filings (#5501)
This commit is contained in:
@@ -467,14 +467,14 @@ def test_stocks_fa_revseg(params, headers):
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"params",
|
||||
[({"symbol": "AAPL", "type": "1", "page": 1, "limit": 100})],
|
||||
[({"symbol": "AAPL", "type": "1", "page": 1, "limit": 100, "provider": "fmp"})],
|
||||
)
|
||||
@pytest.mark.integration
|
||||
def test_stocks_fa_sec(params, headers):
|
||||
def test_stocks_fa_filings(params, headers):
|
||||
params = {p: v for p, v in params.items() if v}
|
||||
|
||||
query_str = get_querystring(params, [])
|
||||
url = f"http://0.0.0.0:8000/api/v1/stocks/fa/sec?{query_str}"
|
||||
url = f"http://0.0.0.0:8000/api/v1/stocks/fa/filings?{query_str}"
|
||||
result = requests.get(url, headers=headers, timeout=5)
|
||||
assert isinstance(result, requests.Response)
|
||||
assert result.status_code == 200
|
||||
|
||||
@@ -440,12 +440,12 @@ def test_stocks_fa_revseg(params):
|
||||
@pytest.mark.parametrize(
|
||||
"params",
|
||||
[
|
||||
({"symbol": "AAPL", "type": "1", "page": 1, "limit": 100}),
|
||||
({"symbol": "AAPL", "type": "1", "page": 1, "limit": 100, "provider": "fmp"}),
|
||||
],
|
||||
)
|
||||
@pytest.mark.integration
|
||||
def test_stocks_fa_sec(params):
|
||||
result = obb.stocks.fa.sec(**params)
|
||||
def test_stocks_fa_filings(params):
|
||||
result = obb.stocks.fa.filings(**params)
|
||||
assert result
|
||||
assert isinstance(result, OBBject)
|
||||
assert len(result.results) > 0
|
||||
|
||||
@@ -279,14 +279,14 @@ def revseg(
|
||||
return OBBject(results=Query(**locals()).execute())
|
||||
|
||||
|
||||
@router.command(model="SECFilings")
|
||||
def sec(
|
||||
@router.command(model="CompanyFilings")
|
||||
def filings(
|
||||
cc: CommandContext,
|
||||
provider_choices: ProviderChoices,
|
||||
standard_params: StandardParams,
|
||||
extra_params: ExtraParams,
|
||||
) -> OBBject[BaseModel]:
|
||||
"""SEC Filings."""
|
||||
"""Company Filings."""
|
||||
return OBBject(results=Query(**locals()).execute())
|
||||
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
"stocks_fa_earning": "/stocks/fa/earning",
|
||||
"stocks_fa_emp": "/stocks/fa/emp",
|
||||
"stocks_fa_est": "/stocks/fa/est",
|
||||
"stocks_fa_filings": "/stocks/fa/filings",
|
||||
"stocks_fa_income": "/stocks/fa/income",
|
||||
"stocks_fa_income_growth": "/stocks/fa/income_growth",
|
||||
"stocks_fa_ins": "/stocks/fa/ins",
|
||||
@@ -52,7 +53,6 @@
|
||||
"stocks_fa_ratios": "/stocks/fa/ratios",
|
||||
"stocks_fa_revgeo": "/stocks/fa/revgeo",
|
||||
"stocks_fa_revseg": "/stocks/fa/revseg",
|
||||
"stocks_fa_sec": "/stocks/fa/sec",
|
||||
"stocks_fa_shrs": "/stocks/fa/shrs",
|
||||
"stocks_fa_split": "/stocks/fa/split",
|
||||
"stocks_fa_transcript": "/stocks/fa/transcript",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,7 +1,7 @@
|
||||
"""SEC Filings data model."""
|
||||
"""Company Filings data model."""
|
||||
|
||||
|
||||
from datetime import datetime
|
||||
from datetime import date as dateType
|
||||
from typing import List, Literal, Optional, Set, Union
|
||||
|
||||
from pydantic import Field, validator
|
||||
@@ -10,7 +10,7 @@ from openbb_provider.abstract.data import Data
|
||||
from openbb_provider.abstract.query_params import QueryParams
|
||||
from openbb_provider.utils.descriptions import QUERY_DESCRIPTIONS
|
||||
|
||||
FORM_TYPES = Literal[
|
||||
SEC_FORM_TYPES = Literal[
|
||||
"1",
|
||||
"1-A",
|
||||
"1-E",
|
||||
@@ -114,14 +114,10 @@ FORM_TYPES = Literal[
|
||||
]
|
||||
|
||||
|
||||
class SECFilingsQueryParams(QueryParams):
|
||||
"""SEC Filings Query."""
|
||||
class CompanyFilingsQueryParams(QueryParams):
|
||||
"""Company Filings Query Params."""
|
||||
|
||||
symbol: str = Field(description=QUERY_DESCRIPTIONS.get("symbol", ""))
|
||||
type: Optional[FORM_TYPES] = Field(
|
||||
default=None, description="Type of the SEC filing form."
|
||||
)
|
||||
page: Optional[int] = Field(default=0, description="Page number of the results.")
|
||||
limit: Optional[int] = Field(
|
||||
default=100, description=QUERY_DESCRIPTIONS.get("limit", "")
|
||||
)
|
||||
@@ -134,20 +130,9 @@ class SECFilingsQueryParams(QueryParams):
|
||||
return ",".join([symbol.upper() for symbol in list(v)])
|
||||
|
||||
|
||||
class SECFilingsData(Data):
|
||||
"""SEC Filings Data."""
|
||||
class CompanyFilingsData(Data):
|
||||
"""Company Filings Data."""
|
||||
|
||||
symbol: str = Field(description=QUERY_DESCRIPTIONS.get("symbol", ""))
|
||||
filling_date: datetime = Field(description="Filling date of the SEC filing.")
|
||||
accepted_date: datetime = Field(description="Accepted date of the SEC filing.")
|
||||
cik: str = Field(description="CIK of the SEC filing.")
|
||||
type: str = Field(description="Type of the SEC filing.")
|
||||
link: str = Field(description="Link of the SEC filing.")
|
||||
final_link: str = Field(description="Final link of the SEC filing.")
|
||||
|
||||
@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)])
|
||||
date: dateType = Field(description="The date of the filing.")
|
||||
type: str = Field(description="Type of document.")
|
||||
link: str = Field(description="URL to the document.")
|
||||
@@ -5,6 +5,7 @@ from openbb_fmp.models.balance_sheet import FMPBalanceSheetFetcher
|
||||
from openbb_fmp.models.balance_sheet_growth import FMPBalanceSheetGrowthFetcher
|
||||
from openbb_fmp.models.cash_flow import FMPCashFlowStatementFetcher
|
||||
from openbb_fmp.models.cash_flow_growth import FMPCashFlowStatementGrowthFetcher
|
||||
from openbb_fmp.models.company_filings import FMPCompanyFilingsFetcher
|
||||
from openbb_fmp.models.company_overview import FMPCompanyOverviewFetcher
|
||||
from openbb_fmp.models.crypto_historical import FMPCryptoHistoricalFetcher
|
||||
from openbb_fmp.models.dividend_calendar import FMPDividendCalendarFetcher
|
||||
@@ -32,7 +33,6 @@ from openbb_fmp.models.price_target_consensus import FMPPriceTargetConsensusFetc
|
||||
from openbb_fmp.models.revenue_business_line import FMPRevenueBusinessLineFetcher
|
||||
from openbb_fmp.models.revenue_geographic import FMPRevenueGeographicFetcher
|
||||
from openbb_fmp.models.risk_premium import FMPRiskPremiumFetcher
|
||||
from openbb_fmp.models.sec_filings import FMPSECFilingsFetcher
|
||||
from openbb_fmp.models.share_statistics import FMPShareStatisticsFetcher
|
||||
from openbb_fmp.models.stock_historical import FMPStockHistoricalFetcher
|
||||
from openbb_fmp.models.stock_insider_trading import FMPStockInsiderTradingFetcher
|
||||
@@ -79,7 +79,7 @@ fmp_provider = Provider(
|
||||
"StockSplitCalendar": FMPStockSplitCalendarFetcher,
|
||||
"HistoricalDividends": FMPHistoricalDividendsFetcher,
|
||||
"KeyMetrics": FMPKeyMetricsFetcher,
|
||||
"SECFilings": FMPSECFilingsFetcher,
|
||||
"CompanyFilings": FMPCompanyFilingsFetcher,
|
||||
"TreasuryRates": FMPTreasuryRatesFetcher,
|
||||
"ExecutiveCompensation": FMPExecutiveCompensationFetcher,
|
||||
"CryptoHistorical": FMPCryptoHistoricalFetcher,
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
"""FMP Company Filings fetcher."""
|
||||
|
||||
from datetime import datetime
|
||||
from typing import Any, Dict, List, Optional, Set, Union
|
||||
|
||||
from openbb_fmp.utils.helpers import create_url, get_data_many
|
||||
from openbb_provider.abstract.fetcher import Fetcher
|
||||
from openbb_provider.standard_models.company_filings import (
|
||||
SEC_FORM_TYPES,
|
||||
CompanyFilingsData,
|
||||
CompanyFilingsQueryParams,
|
||||
)
|
||||
from pydantic import Field, validator
|
||||
|
||||
|
||||
class FMPCompanyFilingsQueryParams(CompanyFilingsQueryParams):
|
||||
"""FMP Copmany Filings Query.
|
||||
|
||||
Source: https://site.financialmodelingprep.com/developer/docs/sec-filings-api/
|
||||
"""
|
||||
|
||||
type: Optional[SEC_FORM_TYPES] = Field(
|
||||
default=None, description="Type of the SEC filing form."
|
||||
)
|
||||
page: Optional[int] = Field(default=0, description="Page number of the results.")
|
||||
|
||||
|
||||
class FMPCompanyFilingsData(CompanyFilingsData):
|
||||
"""FMP Company Filings Data."""
|
||||
|
||||
__alias_dict__ = {
|
||||
"date": "fillingDate",
|
||||
}
|
||||
|
||||
symbol: str = Field(description="The ticker symbol of the company.")
|
||||
cik: str = Field(description="CIK of the SEC filing.")
|
||||
accepted_date: datetime = Field(description="Accepted date of the SEC filing.")
|
||||
final_link: str = Field(description="Final link of the SEC filing.")
|
||||
|
||||
@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 FMPCompanyFilingsFetcher(
|
||||
Fetcher[
|
||||
FMPCompanyFilingsQueryParams,
|
||||
List[FMPCompanyFilingsData],
|
||||
]
|
||||
):
|
||||
"""Transform the query, extract and transform the data from the FMP endpoints."""
|
||||
|
||||
@staticmethod
|
||||
def transform_query(params: Dict[str, Any]) -> FMPCompanyFilingsQueryParams:
|
||||
"""Transform the query params."""
|
||||
return FMPCompanyFilingsQueryParams(**params)
|
||||
|
||||
@staticmethod
|
||||
def extract_data(
|
||||
query: FMPCompanyFilingsQueryParams,
|
||||
credentials: Optional[Dict[str, str]],
|
||||
**kwargs: Any,
|
||||
) -> List[Dict]:
|
||||
"""Return the raw data from the FMP endpoint."""
|
||||
api_key = credentials.get("fmp_api_key") if credentials else ""
|
||||
|
||||
url = create_url(
|
||||
3, f"sec_filings/{query.symbol}", api_key, query, exclude=["symbol"]
|
||||
)
|
||||
|
||||
return get_data_many(url, **kwargs)
|
||||
|
||||
@staticmethod
|
||||
def transform_data(data: List[Dict]) -> List[FMPCompanyFilingsData]:
|
||||
"""Return the transformed data."""
|
||||
return [FMPCompanyFilingsData.model_validate(d) for d in data]
|
||||
@@ -1,56 +0,0 @@
|
||||
"""SEC Filings fetcher."""
|
||||
|
||||
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
from openbb_fmp.utils.helpers import create_url, get_data_many
|
||||
from openbb_provider.abstract.fetcher import Fetcher
|
||||
from openbb_provider.standard_models.sec_filings import (
|
||||
SECFilingsData,
|
||||
SECFilingsQueryParams,
|
||||
)
|
||||
|
||||
|
||||
class FMPSECFilingsQueryParams(SECFilingsQueryParams):
|
||||
"""FMP SEC Filings Query.
|
||||
|
||||
Source: https://site.financialmodelingprep.com/developer/docs/sec-filings-api/
|
||||
"""
|
||||
|
||||
|
||||
class FMPSECFilingsData(SECFilingsData):
|
||||
"""FMP SEC Filings Data."""
|
||||
|
||||
|
||||
class FMPSECFilingsFetcher(
|
||||
Fetcher[
|
||||
FMPSECFilingsQueryParams,
|
||||
List[FMPSECFilingsData],
|
||||
]
|
||||
):
|
||||
"""Transform the query, extract and transform the data from the FMP endpoints."""
|
||||
|
||||
@staticmethod
|
||||
def transform_query(params: Dict[str, Any]) -> FMPSECFilingsQueryParams:
|
||||
"""Transform the query params."""
|
||||
return FMPSECFilingsQueryParams(**params)
|
||||
|
||||
@staticmethod
|
||||
def extract_data(
|
||||
query: FMPSECFilingsQueryParams,
|
||||
credentials: Optional[Dict[str, str]],
|
||||
**kwargs: Any,
|
||||
) -> List[Dict]:
|
||||
"""Return the raw data from the FMP endpoint."""
|
||||
api_key = credentials.get("fmp_api_key") if credentials else ""
|
||||
|
||||
url = create_url(
|
||||
3, f"sec_filings/{query.symbol}", api_key, query, exclude=["symbol"]
|
||||
)
|
||||
|
||||
return get_data_many(url, **kwargs)
|
||||
|
||||
@staticmethod
|
||||
def transform_data(data: List[Dict]) -> List[FMPSECFilingsData]:
|
||||
"""Return the transformed data."""
|
||||
return [FMPSECFilingsData.model_validate(d) for d in data]
|
||||
@@ -8,6 +8,7 @@ from openbb_fmp.models.balance_sheet import FMPBalanceSheetFetcher
|
||||
from openbb_fmp.models.balance_sheet_growth import FMPBalanceSheetGrowthFetcher
|
||||
from openbb_fmp.models.cash_flow import FMPCashFlowStatementFetcher
|
||||
from openbb_fmp.models.cash_flow_growth import FMPCashFlowStatementGrowthFetcher
|
||||
from openbb_fmp.models.company_filings import FMPCompanyFilingsFetcher
|
||||
from openbb_fmp.models.company_overview import FMPCompanyOverviewFetcher
|
||||
from openbb_fmp.models.crypto_historical import FMPCryptoHistoricalFetcher
|
||||
from openbb_fmp.models.dividend_calendar import FMPDividendCalendarFetcher
|
||||
@@ -35,7 +36,6 @@ from openbb_fmp.models.price_target_consensus import FMPPriceTargetConsensusFetc
|
||||
from openbb_fmp.models.revenue_business_line import FMPRevenueBusinessLineFetcher
|
||||
from openbb_fmp.models.revenue_geographic import FMPRevenueGeographicFetcher
|
||||
from openbb_fmp.models.risk_premium import FMPRiskPremiumFetcher
|
||||
from openbb_fmp.models.sec_filings import FMPSECFilingsFetcher
|
||||
from openbb_fmp.models.share_statistics import FMPShareStatisticsFetcher
|
||||
from openbb_fmp.models.stock_historical import FMPStockHistoricalFetcher
|
||||
from openbb_fmp.models.stock_insider_trading import FMPStockInsiderTradingFetcher
|
||||
@@ -347,10 +347,10 @@ def test_fmp_key_metrics_fetcher(credentials=test_credentials):
|
||||
|
||||
|
||||
@pytest.mark.record_http
|
||||
def test_fmpsec_filings_fetcher(credentials=test_credentials):
|
||||
def test_fmp_company_filings_fetcher(credentials=test_credentials):
|
||||
params = {"symbol": "AAPL"}
|
||||
|
||||
fetcher = FMPSECFilingsFetcher()
|
||||
fetcher = FMPCompanyFilingsFetcher()
|
||||
result = fetcher.test(params, credentials)
|
||||
assert result is None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user