diff --git a/polygon/rest/models/financials.py b/polygon/rest/models/financials.py index 1a480c48..24d763b8 100644 --- a/polygon/rest/models/financials.py +++ b/polygon/rest/models/financials.py @@ -1,7 +1,6 @@ from typing import Optional, Dict from ...modelclass import modelclass - @modelclass class DataPoint: "An individual financial data point." @@ -16,7 +15,6 @@ class DataPoint: def from_dict(d): return DataPoint(**d) - @modelclass class ExchangeGainsLosses: "Contains exchange gains losses data for a cash flow statement." @@ -31,7 +29,6 @@ class ExchangeGainsLosses: def from_dict(d): return ExchangeGainsLosses(**d) - @modelclass class NetCashFlow: "Contains net cash flow data for a cash flow statement." @@ -46,7 +43,6 @@ class NetCashFlow: def from_dict(d): return NetCashFlow(**d) - @modelclass class NetCashFlowFromFinancingActivities: "Contains net cash flow from financing activities data for a cash flow statement." @@ -61,7 +57,6 @@ class NetCashFlowFromFinancingActivities: def from_dict(d): return NetCashFlowFromFinancingActivities(**d) - @modelclass class CashFlowStatement: "Contains cash flow statement data." @@ -93,7 +88,6 @@ def from_dict(d): ), ) - @modelclass class ComprehensiveIncomeLoss: "Contains comprehensive income loss data for comprehensive income." @@ -108,7 +102,6 @@ class ComprehensiveIncomeLoss: def from_dict(d): return ComprehensiveIncomeLoss(**d) - @modelclass class ComprehensiveIncomeLossAttributableToParent: "Contains comprehensive income loss attributable to parent data for comprehensive income." @@ -123,7 +116,6 @@ class ComprehensiveIncomeLossAttributableToParent: def from_dict(d): return ComprehensiveIncomeLossAttributableToParent(**d) - @modelclass class OtherComprehensiveIncomeLoss: "Contains other comprehensive income loss data for comprehensive income." @@ -138,7 +130,6 @@ class OtherComprehensiveIncomeLoss: def from_dict(d): return OtherComprehensiveIncomeLoss(**d) - @modelclass class ComprehensiveIncome: "Contains comprehensive income data." @@ -172,7 +163,6 @@ def from_dict(d): ), ) - @modelclass class BasicEarningsPerShare: "Contains basic earning per share data for an income statement." @@ -187,6 +177,19 @@ class BasicEarningsPerShare: def from_dict(d): return BasicEarningsPerShare(**d) +@modelclass +class DilutedEarningsPerShare: + "Contains diluted earnings per share data for an income statement." + formula: Optional[str] = None + label: Optional[str] = None + order: Optional[int] = None + unit: Optional[str] = None + value: Optional[float] = None + xpath: Optional[str] = None + + @staticmethod + def from_dict(d): + return DilutedEarningsPerShare(**d) @modelclass class CostOfRevenue: @@ -202,7 +205,6 @@ class CostOfRevenue: def from_dict(d): return CostOfRevenue(**d) - @modelclass class GrossProfit: "Contains gross profit data for an income statement." @@ -217,7 +219,6 @@ class GrossProfit: def from_dict(d): return GrossProfit(**d) - @modelclass class OperatingExpenses: "Contains operating expenses data for an income statement." @@ -232,7 +233,6 @@ class OperatingExpenses: def from_dict(d): return OperatingExpenses(**d) - @modelclass class Revenues: "Contains revenues data for an income statement." @@ -247,11 +247,11 @@ class Revenues: def from_dict(d): return Revenues(**d) - @modelclass class IncomeStatement: "Contains income statement data." basic_earnings_per_share: Optional[BasicEarningsPerShare] = None + diluted_earnings_per_share: Optional[DilutedEarningsPerShare] = None cost_of_revenue: Optional[CostOfRevenue] = None gross_profit: Optional[GrossProfit] = None operating_expenses: Optional[OperatingExpenses] = None @@ -265,6 +265,11 @@ def from_dict(d): if "basic_earnings_per_share" not in d else BasicEarningsPerShare.from_dict(d["basic_earnings_per_share"]) ), + diluted_earnings_per_share=( + None + if "diluted_earnings_per_share" not in d + else DilutedEarningsPerShare.from_dict(d["diluted_earnings_per_share"]) + ), cost_of_revenue=( None if "cost_of_revenue" not in d @@ -283,7 +288,6 @@ def from_dict(d): revenues=None if "revenues" not in d else Revenues.from_dict(d["revenues"]), ) - @modelclass class Financials: "Contains financial data." @@ -319,7 +323,6 @@ def from_dict(d): ), ) - @modelclass class StockFinancial: "StockFinancial contains historical financial data for a stock ticker." @@ -349,4 +352,4 @@ def from_dict(d): source_filing_file_url=d.get("source_filing_file_url", None), source_filing_url=d.get("source_filing_url", None), start_date=d.get("start_date", None), - ) + ) \ No newline at end of file diff --git a/test_rest/test_financials.py b/test_rest/test_financials.py index f5196212..5d04c000 100644 --- a/test_rest/test_financials.py +++ b/test_rest/test_financials.py @@ -12,6 +12,7 @@ OtherComprehensiveIncomeLoss, IncomeStatement, BasicEarningsPerShare, + DilutedEarningsPerShare, CostOfRevenue, GrossProfit, OperatingExpenses, @@ -189,6 +190,14 @@ def test_list_stock_financials(self): value=2.5, xpath=None, ), + diluted_earnings_per_share=DilutedEarningsPerShare( + formula=None, + label="Diluted Earnings Per Share", + order=4300, + unit="USD / shares", + value=2.3, + xpath=None, + ), cost_of_revenue=CostOfRevenue( formula=None, label="Cost Of Revenue",