Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions massive/rest/financials.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
FinancialCashFlowStatement,
FinancialIncomeStatement,
FinancialRatio,
FinancialFloat,
)
from .models.common import Sort
from .models.request import RequestOptionBuilder
Expand Down Expand Up @@ -318,3 +319,34 @@ def list_financials_ratios(
deserializer=FinancialRatio.from_dict,
options=options,
)

def list_stocks_floats(
self,
ticker: Optional[str] = None,
ticker_any_of: Optional[str] = None,
ticker_gt: Optional[str] = None,
ticker_gte: Optional[str] = None,
ticker_lt: Optional[str] = None,
ticker_lte: Optional[str] = None,
free_float_percent: Optional[float] = None,
free_float_percent_gt: Optional[float] = None,
free_float_percent_gte: Optional[float] = None,
free_float_percent_lt: Optional[float] = None,
free_float_percent_lte: Optional[float] = None,
limit: Optional[int] = None,
sort: Optional[Union[str, Sort]] = None,
params: Optional[Dict[str, Any]] = None,
raw: bool = False,
options: Optional[RequestOptionBuilder] = None,
) -> Union[Iterator[FinancialFloat], HTTPResponse]:
"""
Endpoint: GET /stocks/vX/float
"""
url = "/stocks/vX/float"
return self._paginate(
path=url,
params=self._get_params(self.list_stocks_floats, locals()),
raw=raw,
deserializer=FinancialFloat.from_dict,
options=options,
)
33 changes: 33 additions & 0 deletions massive/rest/models/dividends.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,3 +19,36 @@ class Dividend:
@staticmethod
def from_dict(d):
return Dividend(**d)


@modelclass
class StockDividend:
cash_amount: Optional[float] = None
currency: Optional[str] = None
declaration_date: Optional[str] = None
distribution_type: Optional[str] = None
ex_dividend_date: Optional[str] = None
frequency: Optional[int] = None
historical_adjustment_factor: Optional[float] = None
id: Optional[str] = None
pay_date: Optional[str] = None
record_date: Optional[str] = None
split_adjusted_cash_amount: Optional[float] = None
ticker: Optional[str] = None

@staticmethod
def from_dict(d):
return StockDividend(
cash_amount=d.get("cash_amount"),
currency=d.get("currency"),
declaration_date=d.get("declaration_date"),
distribution_type=d.get("distribution_type"),
ex_dividend_date=d.get("ex_dividend_date"),
frequency=d.get("frequency"),
historical_adjustment_factor=d.get("historical_adjustment_factor"),
id=d.get("id"),
pay_date=d.get("pay_date"),
record_date=d.get("record_date"),
split_adjusted_cash_amount=d.get("split_adjusted_cash_amount"),
ticker=d.get("ticker"),
)
59 changes: 59 additions & 0 deletions massive/rest/models/financials.py
Original file line number Diff line number Diff line change
Expand Up @@ -861,3 +861,62 @@ def from_dict(d):
return_on_equity=d.get("return_on_equity"),
ticker=d.get("ticker"),
)


@modelclass
class FinancialFloat:
effective_date: Optional[str] = None
free_float: Optional[int] = None
free_float_percent: Optional[float] = None
ticker: Optional[str] = None

@staticmethod
def from_dict(d):
return FinancialFloat(
effective_date=d.get("effective_date"),
free_float=d.get("free_float"),
free_float_percent=d.get("free_float_percent"),
ticker=d.get("ticker"),
)


@modelclass
class RiskFactor:
cik: Optional[str] = None
filing_date: Optional[str] = None
primary_category: Optional[str] = None
secondary_category: Optional[str] = None
supporting_text: Optional[str] = None
tertiary_category: Optional[str] = None
ticker: Optional[str] = None

@staticmethod
def from_dict(d):
return RiskFactor(
cik=d.get("cik"),
filing_date=d.get("filing_date"),
primary_category=d.get("primary_category"),
secondary_category=d.get("secondary_category"),
supporting_text=d.get("supporting_text"),
tertiary_category=d.get("tertiary_category"),
ticker=d.get("ticker"),
)


@modelclass
class RiskFactorTaxonomy:
description: Optional[str] = None
primary_category: Optional[str] = None
secondary_category: Optional[str] = None
taxonomy: Optional[float] = None
tertiary_category: Optional[str] = None

@staticmethod
def from_dict(d):
return RiskFactorTaxonomy(
description=d.get("description"),
primary_category=d.get("primary_category"),
secondary_category=d.get("secondary_category"),
taxonomy=d.get("taxonomy"),
tertiary_category=d.get("tertiary_category"),
)
23 changes: 23 additions & 0 deletions massive/rest/models/splits.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,3 +14,26 @@ class Split:
@staticmethod
def from_dict(d):
return Split(**d)


@modelclass
class StockSplit:
adjustment_type: Optional[str] = None
execution_date: Optional[str] = None
historical_adjustment_factor: Optional[float] = None
id: Optional[str] = None
split_from: Optional[float] = None
split_to: Optional[float] = None
ticker: Optional[str] = None

@staticmethod
def from_dict(d):
return StockSplit(
adjustment_type=d.get("adjustment_type"),
execution_date=d.get("execution_date"),
historical_adjustment_factor=d.get("historical_adjustment_factor"),
id=d.get("id"),
split_from=d.get("split_from"),
split_to=d.get("split_to"),
ticker=d.get("ticker"),
)
158 changes: 158 additions & 0 deletions massive/rest/reference.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@
AssetClass,
Locale,
Split,
StockSplit,
Dividend,
StockDividend,
DividendType,
Frequency,
Condition,
Expand All @@ -24,6 +26,8 @@
OptionsContract,
ShortInterest,
ShortVolume,
RiskFactor,
RiskFactorTaxonomy,
)
from urllib3 import HTTPResponse
from datetime import date
Expand Down Expand Up @@ -695,3 +699,157 @@ def list_short_volume(
result_key="results",
options=options,
)

# Add these functions to financials.py in the FinancialsClient class

def list_stocks_splits(
self,
ticker: Optional[str] = None,
ticker_any_of: Optional[str] = None,
ticker_gt: Optional[str] = None,
ticker_gte: Optional[str] = None,
ticker_lt: Optional[str] = None,
ticker_lte: Optional[str] = None,
execution_date: Optional[Union[str, date]] = None,
execution_date_gt: Optional[Union[str, date]] = None,
execution_date_gte: Optional[Union[str, date]] = None,
execution_date_lt: Optional[Union[str, date]] = None,
execution_date_lte: Optional[Union[str, date]] = None,
adjustment_type: Optional[str] = None,
adjustment_type_any_of: Optional[str] = None,
limit: Optional[int] = None,
sort: Optional[Union[str, Sort]] = None,
params: Optional[Dict[str, Any]] = None,
raw: bool = False,
options: Optional[RequestOptionBuilder] = None,
) -> Union[Iterator[StockSplit], HTTPResponse]:
"""
Endpoint: GET /stocks/v1/splits
"""
url = "/stocks/v1/splits"
return self._paginate(
path=url,
params=self._get_params(self.list_stocks_splits, locals()),
raw=raw,
deserializer=StockSplit.from_dict,
options=options,
)

def list_stocks_dividends(
self,
ticker: Optional[str] = None,
ticker_any_of: Optional[str] = None,
ticker_gt: Optional[str] = None,
ticker_gte: Optional[str] = None,
ticker_lt: Optional[str] = None,
ticker_lte: Optional[str] = None,
ex_dividend_date: Optional[Union[str, date]] = None,
ex_dividend_date_gt: Optional[Union[str, date]] = None,
ex_dividend_date_gte: Optional[Union[str, date]] = None,
ex_dividend_date_lt: Optional[Union[str, date]] = None,
ex_dividend_date_lte: Optional[Union[str, date]] = None,
frequency: Optional[int] = None,
frequency_gt: Optional[int] = None,
frequency_gte: Optional[int] = None,
frequency_lt: Optional[int] = None,
frequency_lte: Optional[int] = None,
distribution_type: Optional[str] = None,
distribution_type_any_of: Optional[str] = None,
limit: Optional[int] = None,
sort: Optional[Union[str, Sort]] = None,
params: Optional[Dict[str, Any]] = None,
raw: bool = False,
options: Optional[RequestOptionBuilder] = None,
) -> Union[Iterator[StockDividend], HTTPResponse]:
"""
Endpoint: GET /stocks/v1/dividends
"""
url = "/stocks/v1/dividends"
return self._paginate(
path=url,
params=self._get_params(self.list_stocks_dividends, locals()),
raw=raw,
deserializer=StockDividend.from_dict,
options=options,
)

def list_stocks_filings_risk_factors(
self,
filing_date: Optional[Union[str, date]] = None,
filing_date_any_of: Optional[str] = None,
filing_date_gt: Optional[Union[str, date]] = None,
filing_date_gte: Optional[Union[str, date]] = None,
filing_date_lt: Optional[Union[str, date]] = None,
filing_date_lte: Optional[Union[str, date]] = None,
ticker: Optional[str] = None,
ticker_any_of: Optional[str] = None,
ticker_gt: Optional[str] = None,
ticker_gte: Optional[str] = None,
ticker_lt: Optional[str] = None,
ticker_lte: Optional[str] = None,
cik: Optional[str] = None,
cik_any_of: Optional[str] = None,
cik_gt: Optional[str] = None,
cik_gte: Optional[str] = None,
cik_lt: Optional[str] = None,
cik_lte: Optional[str] = None,
limit: Optional[int] = None,
sort: Optional[Union[str, Sort]] = None,
params: Optional[Dict[str, Any]] = None,
raw: bool = False,
options: Optional[RequestOptionBuilder] = None,
) -> Union[Iterator[RiskFactor], HTTPResponse]:
"""
Endpoint: GET /stocks/filings/vX/risk-factors
"""
url = "/stocks/filings/vX/risk-factors"
return self._paginate(
path=url,
params=self._get_params(self.list_stocks_filings_risk_factors, locals()),
raw=raw,
deserializer=RiskFactor.from_dict,
options=options,
)

def list_stocks_taxonomies_risk_factors(
self,
taxonomy: Optional[float] = None,
taxonomy_gt: Optional[float] = None,
taxonomy_gte: Optional[float] = None,
taxonomy_lt: Optional[float] = None,
taxonomy_lte: Optional[float] = None,
primary_category: Optional[str] = None,
primary_category_any_of: Optional[str] = None,
primary_category_gt: Optional[str] = None,
primary_category_gte: Optional[str] = None,
primary_category_lt: Optional[str] = None,
primary_category_lte: Optional[str] = None,
secondary_category: Optional[str] = None,
secondary_category_any_of: Optional[str] = None,
secondary_category_gt: Optional[str] = None,
secondary_category_gte: Optional[str] = None,
secondary_category_lt: Optional[str] = None,
secondary_category_lte: Optional[str] = None,
tertiary_category: Optional[str] = None,
tertiary_category_any_of: Optional[str] = None,
tertiary_category_gt: Optional[str] = None,
tertiary_category_gte: Optional[str] = None,
tertiary_category_lt: Optional[str] = None,
tertiary_category_lte: Optional[str] = None,
limit: Optional[int] = None,
sort: Optional[Union[str, Sort]] = None,
params: Optional[Dict[str, Any]] = None,
raw: bool = False,
options: Optional[RequestOptionBuilder] = None,
) -> Union[Iterator[RiskFactorTaxonomy], HTTPResponse]:
"""
Endpoint: GET /stocks/taxonomies/vX/risk-factors
"""
url = "/stocks/taxonomies/vX/risk-factors"
return self._paginate(
path=url,
params=self._get_params(self.list_stocks_taxonomies_risk_factors, locals()),
raw=raw,
deserializer=RiskFactorTaxonomy.from_dict,
options=options,
)
Loading