finance_dev 0.9.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- finance_dev/__init__.py +18 -0
- finance_dev/_hooks/__init__.py +7 -0
- finance_dev/_hooks/clientcredentials.py +319 -0
- finance_dev/_hooks/oauth2scopes.py +50 -0
- finance_dev/_hooks/registration.py +13 -0
- finance_dev/_hooks/sdkhooks.py +82 -0
- finance_dev/_hooks/types.py +125 -0
- finance_dev/_version.py +16 -0
- finance_dev/accounts.py +797 -0
- finance_dev/alternativedata.py +4830 -0
- finance_dev/analytics.py +3757 -0
- finance_dev/basesdk.py +393 -0
- finance_dev/calendar.py +1523 -0
- finance_dev/chart.py +1881 -0
- finance_dev/company.py +1105 -0
- finance_dev/corporateactions.py +1795 -0
- finance_dev/economy.py +1153 -0
- finance_dev/errors/__init__.py +94 -0
- finance_dev/errors/apierror.py +41 -0
- finance_dev/errors/authenticationerrorenvelope.py +43 -0
- finance_dev/errors/badrequest.py +34 -0
- finance_dev/errors/errorenvelope.py +42 -0
- finance_dev/errors/errorresponse.py +45 -0
- finance_dev/errors/financedevapierror.py +31 -0
- finance_dev/errors/forbidden.py +34 -0
- finance_dev/errors/internalservererror.py +35 -0
- finance_dev/errors/no_response_error.py +18 -0
- finance_dev/errors/notfound.py +34 -0
- finance_dev/errors/orderhistorybadrequest.py +35 -0
- finance_dev/errors/predorderserrorenvelope.py +42 -0
- finance_dev/errors/responsevalidationerror.py +28 -0
- finance_dev/errors/unauthorized.py +34 -0
- finance_dev/estimates.py +1906 -0
- finance_dev/etf.py +1108 -0
- finance_dev/filings.py +586 -0
- finance_dev/financials.py +4079 -0
- finance_dev/history.py +477 -0
- finance_dev/httpclient.py +126 -0
- finance_dev/indices.py +2308 -0
- finance_dev/logos.py +692 -0
- finance_dev/market.py +1825 -0
- finance_dev/markets.py +952 -0
- finance_dev/models/__init__.py +4568 -0
- finance_dev/models/accountbalancev2.py +340 -0
- finance_dev/models/accountitem.py +78 -0
- finance_dev/models/accountposition.py +147 -0
- finance_dev/models/aggregatetechnicalindicatorsresponse.py +192 -0
- finance_dev/models/analystinsightitem.py +161 -0
- finance_dev/models/analystinsightsresponse.py +39 -0
- finance_dev/models/apperror.py +123 -0
- finance_dev/models/authenticationerrordetail.py +58 -0
- finance_dev/models/bankbranchesresponse.py +96 -0
- finance_dev/models/basicfinancials.py +243 -0
- finance_dev/models/bullbearanalysisresponse.py +150 -0
- finance_dev/models/cancelorderop.py +40 -0
- finance_dev/models/cancelordrequest_union.py +287 -0
- finance_dev/models/cancelordresponse.py +115 -0
- finance_dev/models/cashflowstatement.py +290 -0
- finance_dev/models/cashflowstatementsresponse.py +61 -0
- finance_dev/models/chartbars.py +111 -0
- finance_dev/models/chartconfig.py +81 -0
- finance_dev/models/chartresolution.py +46 -0
- finance_dev/models/companyesgresponse.py +408 -0
- finance_dev/models/companyexecutive.py +70 -0
- finance_dev/models/companyexecutiveresponse.py +39 -0
- finance_dev/models/companypeersresponse.py +38 -0
- finance_dev/models/companypresentationresponse.py +96 -0
- finance_dev/models/companyprofile.py +255 -0
- finance_dev/models/conferencecallsresponse.py +169 -0
- finance_dev/models/congressionaltradingresponse.py +138 -0
- finance_dev/models/covid19uscasesresponse.py +79 -0
- finance_dev/models/createconfigwatchlistop.py +40 -0
- finance_dev/models/createwatchlistrequest.py +43 -0
- finance_dev/models/dailymarketsummaryresponse.py +73 -0
- finance_dev/models/deleteconfigwatchlistbyidop.py +53 -0
- finance_dev/models/dividenditem.py +125 -0
- finance_dev/models/dividendsresponse.py +61 -0
- finance_dev/models/earningrelease.py +291 -0
- finance_dev/models/earningscallliveresponse.py +103 -0
- finance_dev/models/earningsqualityscoreresponse.py +140 -0
- finance_dev/models/earningssurprisesresponse.py +125 -0
- finance_dev/models/ebitdaestimatesresponse.py +176 -0
- finance_dev/models/ebitestimatesresponse.py +176 -0
- finance_dev/models/economicscalendarevent.py +160 -0
- finance_dev/models/economicsindicator.py +87 -0
- finance_dev/models/epsestimatesresponse.py +176 -0
- finance_dev/models/equitydetailsdto.py +569 -0
- finance_dev/models/errorcode.py +48 -0
- finance_dev/models/etblistresponse.py +43 -0
- finance_dev/models/etbsearchrequest.py +21 -0
- finance_dev/models/etbsearchresponse.py +43 -0
- finance_dev/models/etfcountryallocationresponse.py +113 -0
- finance_dev/models/etfholdingsresponse.py +163 -0
- finance_dev/models/etfprofileresponse.py +234 -0
- finance_dev/models/etfsectorallocationresponse.py +113 -0
- finance_dev/models/exchangecode.py +90 -0
- finance_dev/models/fdaadvisorycommitteecalendarresponse.py +88 -0
- finance_dev/models/filingsimilarityrecord.py +115 -0
- finance_dev/models/filingssimilarityindexdatawrapper.py +52 -0
- finance_dev/models/filingssimilarityindexresponse.py +42 -0
- finance_dev/models/financialratiosresponse.py +252 -0
- finance_dev/models/financialsreporteddatawrapper.py +49 -0
- finance_dev/models/financialsreportedresponse.py +42 -0
- finance_dev/models/financialsrevenuebreakdowndatawrapper.py +49 -0
- finance_dev/models/financialsrevenuebreakdownresponse.py +42 -0
- finance_dev/models/financialsstatementsdatawrapper.py +44 -0
- finance_dev/models/financialsstatementsresponse.py +42 -0
- finance_dev/models/financialstatement.py +171 -0
- finance_dev/models/financialstatementtype.py +14 -0
- finance_dev/models/getaccountbalanceop.py +53 -0
- finance_dev/models/getaccountpositionsop.py +53 -0
- finance_dev/models/getaccountsresponse.py +22 -0
- finance_dev/models/getaggregatetechnicalindicatorsop.py +94 -0
- finance_dev/models/getanalystinsightsop.py +164 -0
- finance_dev/models/getbankbranchesop.py +53 -0
- finance_dev/models/getbaseeventop.py +87 -0
- finance_dev/models/getbullbearanalysisop.py +91 -0
- finance_dev/models/getcashflowstatementsop.py +564 -0
- finance_dev/models/getchartconfigop.py +40 -0
- finance_dev/models/getcharthistoryop.py +122 -0
- finance_dev/models/getcharttimeop.py +39 -0
- finance_dev/models/getcompanyesgop.py +53 -0
- finance_dev/models/getcompanyexecutivesop.py +56 -0
- finance_dev/models/getcompanymetricsop.py +68 -0
- finance_dev/models/getcompanypeersop.py +53 -0
- finance_dev/models/getcompanypresentationop.py +56 -0
- finance_dev/models/getcompanyprofileop.py +86 -0
- finance_dev/models/getconferencecallsop.py +111 -0
- finance_dev/models/getconfigwatchlistbyidop.py +53 -0
- finance_dev/models/getconfigwatchlistsop.py +40 -0
- finance_dev/models/getcongressionaltradingop.py +73 -0
- finance_dev/models/getcovid19uscasesop.py +43 -0
- finance_dev/models/getdailymarketsummaryop.py +92 -0
- finance_dev/models/getdividendsop.py +294 -0
- finance_dev/models/getearningscalendarop.py +87 -0
- finance_dev/models/getearningscallliveop.py +91 -0
- finance_dev/models/getearningsqualityscoreop.py +81 -0
- finance_dev/models/getearningssurprisesop.py +80 -0
- finance_dev/models/getebitdaestimatesop.py +91 -0
- finance_dev/models/getebitestimatesop.py +88 -0
- finance_dev/models/geteconomicscalendarop.py +92 -0
- finance_dev/models/geteconomicscalendarresponse.py +56 -0
- finance_dev/models/getepsestimatesop.py +88 -0
- finance_dev/models/getequitydetailsop.py +56 -0
- finance_dev/models/getequitydetailsresponse.py +45 -0
- finance_dev/models/getetblistop.py +40 -0
- finance_dev/models/getetfcountryallocationop.py +80 -0
- finance_dev/models/getetfholdingsop.py +96 -0
- finance_dev/models/getetfprofileop.py +77 -0
- finance_dev/models/getetfsectorallocationop.py +80 -0
- finance_dev/models/geteventcontractsop.py +87 -0
- finance_dev/models/getfdaadvisorycommitteecalendarop.py +47 -0
- finance_dev/models/getfilingssimilarityindexop.py +102 -0
- finance_dev/models/getfinancialratiosop.py +612 -0
- finance_dev/models/getfinancialstatementsop.py +117 -0
- finance_dev/models/getfundownershipop.py +77 -0
- finance_dev/models/gethistoricaldataop.py +61 -0
- finance_dev/models/gethistoricalesgop.py +53 -0
- finance_dev/models/gethistorybatchop.py +74 -0
- finance_dev/models/gethistoryop.py +123 -0
- finance_dev/models/getincomestatementsop.py +564 -0
- finance_dev/models/getindexbarop.py +140 -0
- finance_dev/models/getindexbarsop.py +149 -0
- finance_dev/models/getindexchartbarsop.py +178 -0
- finance_dev/models/getindexrealtimevaluesop.py +94 -0
- finance_dev/models/getinflationexpectationsop.py +157 -0
- finance_dev/models/getinflationop.py +154 -0
- finance_dev/models/getinsidertransactionsop.py +90 -0
- finance_dev/models/getinstitutionalownershipop.py +99 -0
- finance_dev/models/getinstitutionalportfolioop.py +75 -0
- finance_dev/models/getinvestmentthemeop.py +68 -0
- finance_dev/models/getipocalendarop.py +63 -0
- finance_dev/models/getlobbyingop.py +70 -0
- finance_dev/models/getmarketbreadthop.py +40 -0
- finance_dev/models/getmarketholidaysop.py +65 -0
- finance_dev/models/getmarketstatusop.py +65 -0
- finance_dev/models/getmergersandacquisitionsop.py +113 -0
- finance_dev/models/getnetinflowop.py +40 -0
- finance_dev/models/getnewsbyidop.py +73 -0
- finance_dev/models/getnewsop.py +98 -0
- finance_dev/models/getnewssentimentop.py +53 -0
- finance_dev/models/getoptionchainsnapshotop.py +244 -0
- finance_dev/models/getoptioncontractsnapshotop.py +69 -0
- finance_dev/models/getoptiondetailsop.py +56 -0
- finance_dev/models/getoptiondetailsresponse.py +45 -0
- finance_dev/models/getoptionlasttradeop.py +56 -0
- finance_dev/models/getoptionopencloseop.py +66 -0
- finance_dev/models/getoptionpreviousdayop.py +56 -0
- finance_dev/models/getoptionquotesop.py +177 -0
- finance_dev/models/getoptionsactivityop.py +111 -0
- finance_dev/models/getoptionsetfstopvolumeop.py +70 -0
- finance_dev/models/getoptionsstockstopgainersop.py +70 -0
- finance_dev/models/getoptionsstockstopvolumeop.py +70 -0
- finance_dev/models/getoptionsunusualactivityop.py +100 -0
- finance_dev/models/getoptiontradesop.py +177 -0
- finance_dev/models/getordersv2response.py +66 -0
- finance_dev/models/getownershipdataop.py +77 -0
- finance_dev/models/getpositionsresponse.py +39 -0
- finance_dev/models/getpredictionorderop.py +88 -0
- finance_dev/models/getpricetargetop.py +53 -0
- finance_dev/models/getquotesop.py +53 -0
- finance_dev/models/getratingsop.py +164 -0
- finance_dev/models/getratingsresponse.py +39 -0
- finance_dev/models/getreportedfinancialsop.py +127 -0
- finance_dev/models/getrevenuebreakdownop.py +85 -0
- finance_dev/models/getrevenueestimatesop.py +91 -0
- finance_dev/models/getsecfilingsop.py +113 -0
- finance_dev/models/getsectortickersop.py +124 -0
- finance_dev/models/getsectorwisechangeop.py +84 -0
- finance_dev/models/getshortinterestop.py +334 -0
- finance_dev/models/getshortvolumeop.py +333 -0
- finance_dev/models/getsocialsentimentop.py +90 -0
- finance_dev/models/getspinoffsop.py +112 -0
- finance_dev/models/getstockaggregatesop.py +174 -0
- finance_dev/models/getstocklastquoteop.py +56 -0
- finance_dev/models/getstocklasttradeop.py +56 -0
- finance_dev/models/getstockopencloseop.py +90 -0
- finance_dev/models/getstockpreviousdayop.py +80 -0
- finance_dev/models/getstockquotesop.py +177 -0
- finance_dev/models/getstocksnapshotsop.py +82 -0
- finance_dev/models/getstocksplitsop.py +243 -0
- finance_dev/models/getstocktradesop.py +177 -0
- finance_dev/models/getsupplychainop.py +53 -0
- finance_dev/models/getsupportresistancelevelsop.py +90 -0
- finance_dev/models/getsymbolinfoop.py +53 -0
- finance_dev/models/gettechnicalindicatorop.py +172 -0
- finance_dev/models/gettechnicalpatternsop.py +88 -0
- finance_dev/models/gettenderoffersop.py +112 -0
- finance_dev/models/gettickhistoryop.py +104 -0
- finance_dev/models/gettopgainersop.py +78 -0
- finance_dev/models/gettoplosersop.py +78 -0
- finance_dev/models/gettopmostactiveop.py +78 -0
- finance_dev/models/gettranscriptop.py +53 -0
- finance_dev/models/gettreasuryyieldsop.py +157 -0
- finance_dev/models/getunifiedsnapshotop.py +223 -0
- finance_dev/models/getupgradesdowngradesop.py +91 -0
- finance_dev/models/getusaspendingop.py +70 -0
- finance_dev/models/getuseraccountsop.py +40 -0
- finance_dev/models/getusptopatentsop.py +70 -0
- finance_dev/models/getvisaapplicationsop.py +73 -0
- finance_dev/models/historicalesgresponse.py +439 -0
- finance_dev/models/httpmetadata.py +24 -0
- finance_dev/models/incomestatement.py +296 -0
- finance_dev/models/incomestatementsresponse.py +61 -0
- finance_dev/models/indexbarresponse.py +194 -0
- finance_dev/models/indexbarsresponse.py +123 -0
- finance_dev/models/indexchartbarsresponse.py +213 -0
- finance_dev/models/indexgroupsresponse.py +78 -0
- finance_dev/models/indexlistresponse.py +95 -0
- finance_dev/models/indexsearchresponse.py +93 -0
- finance_dev/models/indicesbygroupresponse.py +93 -0
- finance_dev/models/indicesidentifiertype.py +28 -0
- finance_dev/models/indicesrealtimeindexinfo.py +67 -0
- finance_dev/models/indicesrealtimeindexvalue.py +157 -0
- finance_dev/models/indicesrealtimevaluesitem.py +80 -0
- finance_dev/models/indicesrealtimevaluesresponse.py +42 -0
- finance_dev/models/inflationexpectationsresponse.py +140 -0
- finance_dev/models/inflationresponse.py +132 -0
- finance_dev/models/insidertransaction.py +97 -0
- finance_dev/models/insidertransactionsresponse.py +39 -0
- finance_dev/models/institutionalholding.py +77 -0
- finance_dev/models/institutionalownershipresponse.py +39 -0
- finance_dev/models/institutionalportfolioresponse.py +39 -0
- finance_dev/models/investmentthemeid.py +35 -0
- finance_dev/models/investmentthemeresponse.py +80 -0
- finance_dev/models/ipocalendarresponse.py +39 -0
- finance_dev/models/ipoitem.py +93 -0
- finance_dev/models/listactiveordersop.py +87 -0
- finance_dev/models/listcategoriesop.py +79 -0
- finance_dev/models/listindexgroupsop.py +40 -0
- finance_dev/models/listindicesbygroupop.py +58 -0
- finance_dev/models/listindicesop.py +91 -0
- finance_dev/models/listoptioncontractsop.py +66 -0
- finance_dev/models/listoptionexpirydatesop.py +56 -0
- finance_dev/models/listorderhistoryop.py +139 -0
- finance_dev/models/listpredictionordersop.py +134 -0
- finance_dev/models/listtranscriptsop.py +53 -0
- finance_dev/models/lobbyingresponse.py +166 -0
- finance_dev/models/logosearchresponse.py +152 -0
- finance_dev/models/logosyncresponse.py +277 -0
- finance_dev/models/marketbreadth.py +97 -0
- finance_dev/models/marketbreadthresponse.py +44 -0
- finance_dev/models/marketholiday.py +56 -0
- finance_dev/models/marketholidayresponse.py +39 -0
- finance_dev/models/marketstatus.py +67 -0
- finance_dev/models/mergersandacquisitionsresponse.py +186 -0
- finance_dev/models/metricseriespoint.py +43 -0
- finance_dev/models/netinflow.py +81 -0
- finance_dev/models/netinflowresponse.py +44 -0
- finance_dev/models/newsitem.py +102 -0
- finance_dev/models/newslistresponse.py +128 -0
- finance_dev/models/newssentimentresponse.py +176 -0
- finance_dev/models/newstypeenum.py +16 -0
- finance_dev/models/optionchainsnapshotresponse.py +64 -0
- finance_dev/models/optioncontractsnapshotresponse.py +64 -0
- finance_dev/models/optioncontractsnapshotrow.py +164 -0
- finance_dev/models/optioncontractsresponse.py +131 -0
- finance_dev/models/optiondetailsdto.py +72 -0
- finance_dev/models/optionexpirydatesresponse.py +53 -0
- finance_dev/models/optionlasttraderesponse.py +169 -0
- finance_dev/models/optionopencloseresponse.py +97 -0
- finance_dev/models/optionpreviousdayresponse.py +89 -0
- finance_dev/models/optionquotesresponse.py +138 -0
- finance_dev/models/optionsactivityresponse.py +265 -0
- finance_dev/models/optionsnapshotcontractdetails.py +85 -0
- finance_dev/models/optionsnapshotdaybar.py +107 -0
- finance_dev/models/optionsnapshotgreeks.py +67 -0
- finance_dev/models/optionsnapshotlastquote.py +116 -0
- finance_dev/models/optionsnapshotlasttrade.py +102 -0
- finance_dev/models/optionsnapshotunderlying.py +86 -0
- finance_dev/models/optionsscreeneritem.py +151 -0
- finance_dev/models/optionsunusualactivityresponse.py +62 -0
- finance_dev/models/optionsunusualactivitytrade.py +103 -0
- finance_dev/models/optiontradesresponse.py +132 -0
- finance_dev/models/orderrequesttimeinforceenum.py +29 -0
- finance_dev/models/ordersideenum.py +20 -0
- finance_dev/models/ordertypeenum.py +20 -0
- finance_dev/models/ordleg.py +162 -0
- finance_dev/models/ordresponse.py +202 -0
- finance_dev/models/ownershipdataresponse.py +39 -0
- finance_dev/models/ownershiprecord.py +74 -0
- finance_dev/models/placeorderop.py +40 -0
- finance_dev/models/placeordrequest_union.py +335 -0
- finance_dev/models/placepredictionorderop.py +114 -0
- finance_dev/models/predmdbaseevent.py +62 -0
- finance_dev/models/predmdbaseeventhit.py +53 -0
- finance_dev/models/predmdbaseeventsearchresult.py +46 -0
- finance_dev/models/predmdbaseeventwithevents.py +32 -0
- finance_dev/models/predmdbatchhistoryrequest.py +16 -0
- finance_dev/models/predmdbatchhistoryresponse.py +16 -0
- finance_dev/models/predmdcategory.py +48 -0
- finance_dev/models/predmdcontract.py +177 -0
- finance_dev/models/predmdcontracthit.py +157 -0
- finance_dev/models/predmdcontractsearchresult.py +46 -0
- finance_dev/models/predmdevent.py +136 -0
- finance_dev/models/predmdeventhit.py +73 -0
- finance_dev/models/predmdeventsearchresult.py +46 -0
- finance_dev/models/predmdeventwithcontracts.py +22 -0
- finance_dev/models/predmdhistoryrequest.py +59 -0
- finance_dev/models/predmdhistoryresponse.py +53 -0
- finance_dev/models/predmdtick.py +53 -0
- finance_dev/models/predordersapperror.py +78 -0
- finance_dev/models/predordersorder.py +267 -0
- finance_dev/models/predordersorderdetail.py +26 -0
- finance_dev/models/predordersorderpage.py +45 -0
- finance_dev/models/predordersorderreport.py +88 -0
- finance_dev/models/predordersplaceorderrequest.py +159 -0
- finance_dev/models/previeworderop.py +40 -0
- finance_dev/models/previeworderresponse.py +127 -0
- finance_dev/models/pricetargetresponse.py +89 -0
- finance_dev/models/quotedata.py +49 -0
- finance_dev/models/quotesresponse.py +62 -0
- finance_dev/models/quotevalues.py +114 -0
- finance_dev/models/rating.py +193 -0
- finance_dev/models/ratingsaccuracy.py +242 -0
- finance_dev/models/replaceconfigwatchlistsop.py +40 -0
- finance_dev/models/replaceorderop.py +40 -0
- finance_dev/models/replaceordrequest_union.py +367 -0
- finance_dev/models/replaceordresponse.py +144 -0
- finance_dev/models/reportedbsitem.py +53 -0
- finance_dev/models/reportedfiling.py +110 -0
- finance_dev/models/reportedreport.py +39 -0
- finance_dev/models/reportingfrequency.py +16 -0
- finance_dev/models/revenuebreakdownaxis.py +52 -0
- finance_dev/models/revenuebreakdowndatapoint.py +58 -0
- finance_dev/models/revenuebreakdownentry.py +51 -0
- finance_dev/models/revenuebreakdowninner.py +75 -0
- finance_dev/models/revenueestimatesresponse.py +176 -0
- finance_dev/models/screenclause.py +70 -0
- finance_dev/models/screengroup.py +75 -0
- finance_dev/models/searchetbsymbolsop.py +40 -0
- finance_dev/models/searchindicesop.py +55 -0
- finance_dev/models/searchlogosop.py +158 -0
- finance_dev/models/searchmarketsymbolsop.py +80 -0
- finance_dev/models/searchop.py +232 -0
- finance_dev/models/searchsymbolitem.py +76 -0
- finance_dev/models/searchsymbolresponseitem.py +71 -0
- finance_dev/models/searchsymbolsop.py +77 -0
- finance_dev/models/secfiling.py +91 -0
- finance_dev/models/secfilingsresponse.py +39 -0
- finance_dev/models/sectoravgchange.py +50 -0
- finance_dev/models/security.py +59 -0
- finance_dev/models/securitytypeenum.py +16 -0
- finance_dev/models/shortinterestresponse.py +126 -0
- finance_dev/models/shortvolumeresponse.py +198 -0
- finance_dev/models/socialsentimentresponse.py +124 -0
- finance_dev/models/sortorderenum.py +13 -0
- finance_dev/models/spinoffsresponse.py +136 -0
- finance_dev/models/stockaggregatesresponse.py +92 -0
- finance_dev/models/stocklastquoteresponse.py +175 -0
- finance_dev/models/stocklasttraderesponse.py +169 -0
- finance_dev/models/stockohlcbar.py +85 -0
- finance_dev/models/stockopencloseresponse.py +109 -0
- finance_dev/models/stockpreviousdayresponse.py +86 -0
- finance_dev/models/stockquotesresponse.py +170 -0
- finance_dev/models/stockscreenerop.py +144 -0
- finance_dev/models/stockscreenerrequest.py +131 -0
- finance_dev/models/stockscreenerresponse.py +197 -0
- finance_dev/models/stocksnapshotsresponse.py +454 -0
- finance_dev/models/stocksplitsresponse.py +144 -0
- finance_dev/models/stocktradesresponse.py +164 -0
- finance_dev/models/supplychainresponse.py +158 -0
- finance_dev/models/supportresistancelevelsresponse.py +68 -0
- finance_dev/models/symboldetails.py +119 -0
- finance_dev/models/symbolerror.py +43 -0
- finance_dev/models/symbolinfo.py +183 -0
- finance_dev/models/synclogosop.py +146 -0
- finance_dev/models/technicalindicatorresponse.py +43 -0
- finance_dev/models/technicalindicatortype.py +21 -0
- finance_dev/models/technicalpatternsresponse.py +249 -0
- finance_dev/models/tenderofferidentifiertype.py +26 -0
- finance_dev/models/tenderoffersresponse.py +548 -0
- finance_dev/models/tickchartbars.py +104 -0
- finance_dev/models/tickresolution.py +20 -0
- finance_dev/models/timeinforceenum.py +26 -0
- finance_dev/models/tradeorderlegv2.py +164 -0
- finance_dev/models/tradeorderv2.py +434 -0
- finance_dev/models/transcriptresponse.py +162 -0
- finance_dev/models/transcriptsresponse.py +89 -0
- finance_dev/models/treasuryyieldsresponse.py +160 -0
- finance_dev/models/unifiedsnapshotresponse.py +308 -0
- finance_dev/models/updateconfigwatchlistbyidop.py +65 -0
- finance_dev/models/updatewatchlistrequest_union.py +134 -0
- finance_dev/models/upgradesdowngradesresponse.py +98 -0
- finance_dev/models/usaspendingresponse.py +222 -0
- finance_dev/models/usptopatentsresponse.py +134 -0
- finance_dev/models/visaapplicationsresponse.py +228 -0
- finance_dev/models/watchlist.py +68 -0
- finance_dev/models/watchlistrequest.py +43 -0
- finance_dev/models/watchlistresponse.py +44 -0
- finance_dev/news_sdk.py +829 -0
- finance_dev/options.py +3443 -0
- finance_dev/orders.py +1907 -0
- finance_dev/ownership.py +1386 -0
- finance_dev/predictions.py +29 -0
- finance_dev/predictions_orders.py +852 -0
- finance_dev/py.typed +1 -0
- finance_dev/sdk.py +347 -0
- finance_dev/sdkconfiguration.py +50 -0
- finance_dev/signals.py +338 -0
- finance_dev/stocks.py +3131 -0
- finance_dev/technicalanalysis_sdk.py +1137 -0
- finance_dev/types/__init__.py +25 -0
- finance_dev/types/base64fileinput.py +44 -0
- finance_dev/types/basemodel.py +78 -0
- finance_dev/utils/__init__.py +181 -0
- finance_dev/utils/annotations.py +80 -0
- finance_dev/utils/datetimes.py +42 -0
- finance_dev/utils/dynamic_imports.py +55 -0
- finance_dev/utils/enums.py +135 -0
- finance_dev/utils/eventstreaming.py +327 -0
- finance_dev/utils/forms.py +240 -0
- finance_dev/utils/headers.py +137 -0
- finance_dev/utils/logger.py +23 -0
- finance_dev/utils/metadata.py +120 -0
- finance_dev/utils/queryparams.py +218 -0
- finance_dev/utils/requestbodies.py +68 -0
- finance_dev/utils/retries.py +373 -0
- finance_dev/utils/security.py +199 -0
- finance_dev/utils/serializers.py +327 -0
- finance_dev/utils/unmarshal_json_response.py +39 -0
- finance_dev/utils/url.py +155 -0
- finance_dev/utils/values.py +143 -0
- finance_dev/watchlist_sdk.py +1583 -0
- finance_dev/websocket/__init__.py +57 -0
- finance_dev/websocket/account.py +5 -0
- finance_dev/websocket/auth.py +124 -0
- finance_dev/websocket/chart.py +5 -0
- finance_dev/websocket/codec.py +66 -0
- finance_dev/websocket/config.py +52 -0
- finance_dev/websocket/errors.py +54 -0
- finance_dev/websocket/market.py +5 -0
- finance_dev/websocket/models/__init__.py +52 -0
- finance_dev/websocket/models/account.py +60 -0
- finance_dev/websocket/models/chart.py +44 -0
- finance_dev/websocket/models/common.py +85 -0
- finance_dev/websocket/models/market.py +113 -0
- finance_dev/websocket/resources.py +327 -0
- finance_dev/websocket/sdk.py +13 -0
- finance_dev/websocket/transport/async_connection.py +493 -0
- finance_dev/websocket/transport/base.py +78 -0
- finance_dev/websocket/transport/sync_connection.py +470 -0
- finance_dev-0.9.0.dist-info/METADATA +913 -0
- finance_dev-0.9.0.dist-info/RECORD +486 -0
- finance_dev-0.9.0.dist-info/WHEEL +5 -0
- finance_dev-0.9.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 5aa0aea91bf4
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .reportingfrequency import ReportingFrequency
|
|
6
|
+
from finance_dev import models
|
|
7
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
8
|
+
import pydantic
|
|
9
|
+
from pydantic import field_serializer, model_serializer
|
|
10
|
+
from typing import List, Optional
|
|
11
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class EbitEstimatesResponseDataTypedDict(TypedDict):
|
|
15
|
+
ebit_avg: NotRequired[int]
|
|
16
|
+
r"""Average analyst EBIT estimate for the period"""
|
|
17
|
+
ebit_high: NotRequired[int]
|
|
18
|
+
r"""Highest analyst EBIT estimate for the period"""
|
|
19
|
+
ebit_low: NotRequired[int]
|
|
20
|
+
r"""Lowest analyst EBIT estimate for the period"""
|
|
21
|
+
number_analysts: NotRequired[int]
|
|
22
|
+
r"""Number of analysts contributing to the estimate"""
|
|
23
|
+
period: NotRequired[str]
|
|
24
|
+
r"""End date of the reporting period the estimate applies to"""
|
|
25
|
+
quarter: NotRequired[int]
|
|
26
|
+
r"""Fiscal quarter of the period; 0 for annual estimates"""
|
|
27
|
+
year: NotRequired[int]
|
|
28
|
+
r"""Fiscal year of the period"""
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class EbitEstimatesResponseData(BaseModel):
|
|
32
|
+
ebit_avg: Annotated[Optional[int], pydantic.Field(alias="ebitAvg")] = None
|
|
33
|
+
r"""Average analyst EBIT estimate for the period"""
|
|
34
|
+
|
|
35
|
+
ebit_high: Annotated[Optional[int], pydantic.Field(alias="ebitHigh")] = None
|
|
36
|
+
r"""Highest analyst EBIT estimate for the period"""
|
|
37
|
+
|
|
38
|
+
ebit_low: Annotated[Optional[int], pydantic.Field(alias="ebitLow")] = None
|
|
39
|
+
r"""Lowest analyst EBIT estimate for the period"""
|
|
40
|
+
|
|
41
|
+
number_analysts: Annotated[
|
|
42
|
+
Optional[int], pydantic.Field(alias="numberAnalysts")
|
|
43
|
+
] = None
|
|
44
|
+
r"""Number of analysts contributing to the estimate"""
|
|
45
|
+
|
|
46
|
+
period: Optional[str] = None
|
|
47
|
+
r"""End date of the reporting period the estimate applies to"""
|
|
48
|
+
|
|
49
|
+
quarter: Optional[int] = None
|
|
50
|
+
r"""Fiscal quarter of the period; 0 for annual estimates"""
|
|
51
|
+
|
|
52
|
+
year: Optional[int] = None
|
|
53
|
+
r"""Fiscal year of the period"""
|
|
54
|
+
|
|
55
|
+
@model_serializer(mode="wrap")
|
|
56
|
+
def serialize_model(self, handler):
|
|
57
|
+
optional_fields = set(
|
|
58
|
+
[
|
|
59
|
+
"ebitAvg",
|
|
60
|
+
"ebitHigh",
|
|
61
|
+
"ebitLow",
|
|
62
|
+
"numberAnalysts",
|
|
63
|
+
"period",
|
|
64
|
+
"quarter",
|
|
65
|
+
"year",
|
|
66
|
+
]
|
|
67
|
+
)
|
|
68
|
+
serialized = handler(self)
|
|
69
|
+
m = {}
|
|
70
|
+
|
|
71
|
+
for n, f in type(self).model_fields.items():
|
|
72
|
+
k = f.alias or n
|
|
73
|
+
val = serialized.get(k, serialized.get(n))
|
|
74
|
+
|
|
75
|
+
if val != UNSET_SENTINEL:
|
|
76
|
+
if val is not None or k not in optional_fields:
|
|
77
|
+
m[k] = val
|
|
78
|
+
|
|
79
|
+
return m
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class EbitEstimatesTypedDict(TypedDict):
|
|
83
|
+
r"""EBIT estimates container for the symbol"""
|
|
84
|
+
|
|
85
|
+
data: NotRequired[List[EbitEstimatesResponseDataTypedDict]]
|
|
86
|
+
r"""List of EBIT estimates, one per reporting period"""
|
|
87
|
+
freq: NotRequired[ReportingFrequency]
|
|
88
|
+
r"""How often the underlying data is reported:
|
|
89
|
+
- `annual` — once per fiscal year (10-K, full-year statements).
|
|
90
|
+
- `quarterly` — once per fiscal quarter (10-Q, quarterly statements).
|
|
91
|
+
"""
|
|
92
|
+
symbol: NotRequired[str]
|
|
93
|
+
r"""Stock ticker symbol"""
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
class EbitEstimates(BaseModel):
|
|
97
|
+
r"""EBIT estimates container for the symbol"""
|
|
98
|
+
|
|
99
|
+
data: Optional[List[EbitEstimatesResponseData]] = None
|
|
100
|
+
r"""List of EBIT estimates, one per reporting period"""
|
|
101
|
+
|
|
102
|
+
freq: Optional[ReportingFrequency] = None
|
|
103
|
+
r"""How often the underlying data is reported:
|
|
104
|
+
- `annual` — once per fiscal year (10-K, full-year statements).
|
|
105
|
+
- `quarterly` — once per fiscal quarter (10-Q, quarterly statements).
|
|
106
|
+
"""
|
|
107
|
+
|
|
108
|
+
symbol: Optional[str] = None
|
|
109
|
+
r"""Stock ticker symbol"""
|
|
110
|
+
|
|
111
|
+
@field_serializer("freq")
|
|
112
|
+
def serialize_freq(self, value):
|
|
113
|
+
if isinstance(value, str):
|
|
114
|
+
try:
|
|
115
|
+
return models.ReportingFrequency(value)
|
|
116
|
+
except ValueError:
|
|
117
|
+
return value
|
|
118
|
+
return value
|
|
119
|
+
|
|
120
|
+
@model_serializer(mode="wrap")
|
|
121
|
+
def serialize_model(self, handler):
|
|
122
|
+
optional_fields = set(["data", "freq", "symbol"])
|
|
123
|
+
serialized = handler(self)
|
|
124
|
+
m = {}
|
|
125
|
+
|
|
126
|
+
for n, f in type(self).model_fields.items():
|
|
127
|
+
k = f.alias or n
|
|
128
|
+
val = serialized.get(k, serialized.get(n))
|
|
129
|
+
|
|
130
|
+
if val != UNSET_SENTINEL:
|
|
131
|
+
if val is not None or k not in optional_fields:
|
|
132
|
+
m[k] = val
|
|
133
|
+
|
|
134
|
+
return m
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
class EbitEstimatesResponseTypedDict(TypedDict):
|
|
138
|
+
r"""Analyst consensus EBIT estimates for a stock by reporting period, sourced from Finnhub."""
|
|
139
|
+
|
|
140
|
+
ebit_estimates: NotRequired[EbitEstimatesTypedDict]
|
|
141
|
+
r"""EBIT estimates container for the symbol"""
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
class EbitEstimatesResponse(BaseModel):
|
|
145
|
+
r"""Analyst consensus EBIT estimates for a stock by reporting period, sourced from Finnhub."""
|
|
146
|
+
|
|
147
|
+
ebit_estimates: Annotated[
|
|
148
|
+
Optional[EbitEstimates], pydantic.Field(alias="ebitEstimates")
|
|
149
|
+
] = None
|
|
150
|
+
r"""EBIT estimates container for the symbol"""
|
|
151
|
+
|
|
152
|
+
@model_serializer(mode="wrap")
|
|
153
|
+
def serialize_model(self, handler):
|
|
154
|
+
optional_fields = set(["ebitEstimates"])
|
|
155
|
+
serialized = handler(self)
|
|
156
|
+
m = {}
|
|
157
|
+
|
|
158
|
+
for n, f in type(self).model_fields.items():
|
|
159
|
+
k = f.alias or n
|
|
160
|
+
val = serialized.get(k, serialized.get(n))
|
|
161
|
+
|
|
162
|
+
if val != UNSET_SENTINEL:
|
|
163
|
+
if val is not None or k not in optional_fields:
|
|
164
|
+
m[k] = val
|
|
165
|
+
|
|
166
|
+
return m
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
try:
|
|
170
|
+
EbitEstimatesResponseData.model_rebuild()
|
|
171
|
+
except NameError:
|
|
172
|
+
pass
|
|
173
|
+
try:
|
|
174
|
+
EbitEstimatesResponse.model_rebuild()
|
|
175
|
+
except NameError:
|
|
176
|
+
pass
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: cc90ede7b35c
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from datetime import date, datetime
|
|
6
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
7
|
+
import pydantic
|
|
8
|
+
from pydantic import model_serializer
|
|
9
|
+
from typing import Optional
|
|
10
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class EconomicsCalendarEventTypedDict(TypedDict):
|
|
14
|
+
r"""Economic calendar event with its schedule, reported and forecast values."""
|
|
15
|
+
|
|
16
|
+
actual: NotRequired[str]
|
|
17
|
+
r"""Actual reported value (present after release)"""
|
|
18
|
+
calendar_id: NotRequired[str]
|
|
19
|
+
r"""Unique identifier for the calendar event"""
|
|
20
|
+
category: NotRequired[str]
|
|
21
|
+
r"""Category label for the economic event/indicator (e.g. `GDP`, `Inflation`, `Employment`). Format depends on the upstream data source."""
|
|
22
|
+
country: NotRequired[str]
|
|
23
|
+
r"""Country name"""
|
|
24
|
+
date_: NotRequired[date]
|
|
25
|
+
r"""Event date (YYYY-MM-DD)"""
|
|
26
|
+
event: NotRequired[str]
|
|
27
|
+
r"""Event name"""
|
|
28
|
+
forecast: NotRequired[str]
|
|
29
|
+
r"""Market forecast value"""
|
|
30
|
+
importance: NotRequired[int]
|
|
31
|
+
r"""Event importance level"""
|
|
32
|
+
last_update: NotRequired[str]
|
|
33
|
+
r"""Last update timestamp supplied by the provider; timezone information may be absent."""
|
|
34
|
+
previous: NotRequired[str]
|
|
35
|
+
r"""Previous period value"""
|
|
36
|
+
reference: NotRequired[str]
|
|
37
|
+
r"""Reference period (e.g. Feb/21)"""
|
|
38
|
+
reference_date: NotRequired[datetime]
|
|
39
|
+
r"""Reference period date (ISO 8601)"""
|
|
40
|
+
source: NotRequired[str]
|
|
41
|
+
r"""Organization or agency that published the economic event."""
|
|
42
|
+
source_url: NotRequired[str]
|
|
43
|
+
r"""URL to the data source"""
|
|
44
|
+
symbol: NotRequired[str]
|
|
45
|
+
r"""Economic indicator symbol"""
|
|
46
|
+
te_forecast: NotRequired[str]
|
|
47
|
+
r"""Trading Economics forecast value"""
|
|
48
|
+
ticker: NotRequired[str]
|
|
49
|
+
r"""Economic indicator ticker symbol"""
|
|
50
|
+
time: NotRequired[str]
|
|
51
|
+
r"""Event time (HH:MM:SS)"""
|
|
52
|
+
unit: NotRequired[str]
|
|
53
|
+
r"""Unit of measure for the indicator"""
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class EconomicsCalendarEvent(BaseModel):
|
|
57
|
+
r"""Economic calendar event with its schedule, reported and forecast values."""
|
|
58
|
+
|
|
59
|
+
actual: Optional[str] = None
|
|
60
|
+
r"""Actual reported value (present after release)"""
|
|
61
|
+
|
|
62
|
+
calendar_id: Annotated[Optional[str], pydantic.Field(alias="calendarID")] = None
|
|
63
|
+
r"""Unique identifier for the calendar event"""
|
|
64
|
+
|
|
65
|
+
category: Optional[str] = None
|
|
66
|
+
r"""Category label for the economic event/indicator (e.g. `GDP`, `Inflation`, `Employment`). Format depends on the upstream data source."""
|
|
67
|
+
|
|
68
|
+
country: Optional[str] = None
|
|
69
|
+
r"""Country name"""
|
|
70
|
+
|
|
71
|
+
date_: Annotated[Optional[date], pydantic.Field(alias="date")] = None
|
|
72
|
+
r"""Event date (YYYY-MM-DD)"""
|
|
73
|
+
|
|
74
|
+
event: Optional[str] = None
|
|
75
|
+
r"""Event name"""
|
|
76
|
+
|
|
77
|
+
forecast: Optional[str] = None
|
|
78
|
+
r"""Market forecast value"""
|
|
79
|
+
|
|
80
|
+
importance: Optional[int] = None
|
|
81
|
+
r"""Event importance level"""
|
|
82
|
+
|
|
83
|
+
last_update: Annotated[Optional[str], pydantic.Field(alias="lastUpdate")] = None
|
|
84
|
+
r"""Last update timestamp supplied by the provider; timezone information may be absent."""
|
|
85
|
+
|
|
86
|
+
previous: Optional[str] = None
|
|
87
|
+
r"""Previous period value"""
|
|
88
|
+
|
|
89
|
+
reference: Optional[str] = None
|
|
90
|
+
r"""Reference period (e.g. Feb/21)"""
|
|
91
|
+
|
|
92
|
+
reference_date: Annotated[
|
|
93
|
+
Optional[datetime], pydantic.Field(alias="referenceDate")
|
|
94
|
+
] = None
|
|
95
|
+
r"""Reference period date (ISO 8601)"""
|
|
96
|
+
|
|
97
|
+
source: Optional[str] = None
|
|
98
|
+
r"""Organization or agency that published the economic event."""
|
|
99
|
+
|
|
100
|
+
source_url: Annotated[Optional[str], pydantic.Field(alias="sourceUrl")] = None
|
|
101
|
+
r"""URL to the data source"""
|
|
102
|
+
|
|
103
|
+
symbol: Optional[str] = None
|
|
104
|
+
r"""Economic indicator symbol"""
|
|
105
|
+
|
|
106
|
+
te_forecast: Annotated[Optional[str], pydantic.Field(alias="teForecast")] = None
|
|
107
|
+
r"""Trading Economics forecast value"""
|
|
108
|
+
|
|
109
|
+
ticker: Optional[str] = None
|
|
110
|
+
r"""Economic indicator ticker symbol"""
|
|
111
|
+
|
|
112
|
+
time: Optional[str] = None
|
|
113
|
+
r"""Event time (HH:MM:SS)"""
|
|
114
|
+
|
|
115
|
+
unit: Optional[str] = None
|
|
116
|
+
r"""Unit of measure for the indicator"""
|
|
117
|
+
|
|
118
|
+
@model_serializer(mode="wrap")
|
|
119
|
+
def serialize_model(self, handler):
|
|
120
|
+
optional_fields = set(
|
|
121
|
+
[
|
|
122
|
+
"actual",
|
|
123
|
+
"calendarID",
|
|
124
|
+
"category",
|
|
125
|
+
"country",
|
|
126
|
+
"date",
|
|
127
|
+
"event",
|
|
128
|
+
"forecast",
|
|
129
|
+
"importance",
|
|
130
|
+
"lastUpdate",
|
|
131
|
+
"previous",
|
|
132
|
+
"reference",
|
|
133
|
+
"referenceDate",
|
|
134
|
+
"source",
|
|
135
|
+
"sourceUrl",
|
|
136
|
+
"symbol",
|
|
137
|
+
"teForecast",
|
|
138
|
+
"ticker",
|
|
139
|
+
"time",
|
|
140
|
+
"unit",
|
|
141
|
+
]
|
|
142
|
+
)
|
|
143
|
+
serialized = handler(self)
|
|
144
|
+
m = {}
|
|
145
|
+
|
|
146
|
+
for n, f in type(self).model_fields.items():
|
|
147
|
+
k = f.alias or n
|
|
148
|
+
val = serialized.get(k, serialized.get(n))
|
|
149
|
+
|
|
150
|
+
if val != UNSET_SENTINEL:
|
|
151
|
+
if val is not None or k not in optional_fields:
|
|
152
|
+
m[k] = val
|
|
153
|
+
|
|
154
|
+
return m
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
try:
|
|
158
|
+
EconomicsCalendarEvent.model_rebuild()
|
|
159
|
+
except NameError:
|
|
160
|
+
pass
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 9886cc670853
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
6
|
+
import pydantic
|
|
7
|
+
from pydantic import model_serializer
|
|
8
|
+
from typing import Optional
|
|
9
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class EconomicsIndicatorTypedDict(TypedDict):
|
|
13
|
+
r"""Single historical data point for an economic indicator."""
|
|
14
|
+
|
|
15
|
+
category: NotRequired[str]
|
|
16
|
+
r"""Category label for the economic event/indicator (e.g. `GDP`, `Inflation`, `Employment`). Format depends on the upstream data source."""
|
|
17
|
+
country: NotRequired[str]
|
|
18
|
+
r"""Country code or name"""
|
|
19
|
+
date_time: NotRequired[str]
|
|
20
|
+
r"""Date and time of the data point"""
|
|
21
|
+
frequency: NotRequired[str]
|
|
22
|
+
r"""Data frequency (e.g., monthly, quarterly, yearly)"""
|
|
23
|
+
historical_data_symbol: NotRequired[str]
|
|
24
|
+
r"""Symbol identifier for the historical data"""
|
|
25
|
+
last_update: NotRequired[str]
|
|
26
|
+
r"""Last update timestamp"""
|
|
27
|
+
value: NotRequired[float]
|
|
28
|
+
r"""Indicator value"""
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class EconomicsIndicator(BaseModel):
|
|
32
|
+
r"""Single historical data point for an economic indicator."""
|
|
33
|
+
|
|
34
|
+
category: Optional[str] = None
|
|
35
|
+
r"""Category label for the economic event/indicator (e.g. `GDP`, `Inflation`, `Employment`). Format depends on the upstream data source."""
|
|
36
|
+
|
|
37
|
+
country: Optional[str] = None
|
|
38
|
+
r"""Country code or name"""
|
|
39
|
+
|
|
40
|
+
date_time: Annotated[Optional[str], pydantic.Field(alias="dateTime")] = None
|
|
41
|
+
r"""Date and time of the data point"""
|
|
42
|
+
|
|
43
|
+
frequency: Optional[str] = None
|
|
44
|
+
r"""Data frequency (e.g., monthly, quarterly, yearly)"""
|
|
45
|
+
|
|
46
|
+
historical_data_symbol: Annotated[
|
|
47
|
+
Optional[str], pydantic.Field(alias="historicalDataSymbol")
|
|
48
|
+
] = None
|
|
49
|
+
r"""Symbol identifier for the historical data"""
|
|
50
|
+
|
|
51
|
+
last_update: Annotated[Optional[str], pydantic.Field(alias="lastUpdate")] = None
|
|
52
|
+
r"""Last update timestamp"""
|
|
53
|
+
|
|
54
|
+
value: Optional[float] = None
|
|
55
|
+
r"""Indicator value"""
|
|
56
|
+
|
|
57
|
+
@model_serializer(mode="wrap")
|
|
58
|
+
def serialize_model(self, handler):
|
|
59
|
+
optional_fields = set(
|
|
60
|
+
[
|
|
61
|
+
"category",
|
|
62
|
+
"country",
|
|
63
|
+
"dateTime",
|
|
64
|
+
"frequency",
|
|
65
|
+
"historicalDataSymbol",
|
|
66
|
+
"lastUpdate",
|
|
67
|
+
"value",
|
|
68
|
+
]
|
|
69
|
+
)
|
|
70
|
+
serialized = handler(self)
|
|
71
|
+
m = {}
|
|
72
|
+
|
|
73
|
+
for n, f in type(self).model_fields.items():
|
|
74
|
+
k = f.alias or n
|
|
75
|
+
val = serialized.get(k, serialized.get(n))
|
|
76
|
+
|
|
77
|
+
if val != UNSET_SENTINEL:
|
|
78
|
+
if val is not None or k not in optional_fields:
|
|
79
|
+
m[k] = val
|
|
80
|
+
|
|
81
|
+
return m
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
try:
|
|
85
|
+
EconomicsIndicator.model_rebuild()
|
|
86
|
+
except NameError:
|
|
87
|
+
pass
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 9445723d127f
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .reportingfrequency import ReportingFrequency
|
|
6
|
+
from finance_dev import models
|
|
7
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
8
|
+
import pydantic
|
|
9
|
+
from pydantic import field_serializer, model_serializer
|
|
10
|
+
from typing import List, Optional
|
|
11
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class EpsEstimatesResponseDataTypedDict(TypedDict):
|
|
15
|
+
eps_avg: NotRequired[float]
|
|
16
|
+
r"""Average analyst EPS estimate for the period"""
|
|
17
|
+
eps_high: NotRequired[float]
|
|
18
|
+
r"""Highest analyst EPS estimate for the period"""
|
|
19
|
+
eps_low: NotRequired[float]
|
|
20
|
+
r"""Lowest analyst EPS estimate for the period"""
|
|
21
|
+
number_analysts: NotRequired[int]
|
|
22
|
+
r"""Number of analysts contributing to the estimate"""
|
|
23
|
+
period: NotRequired[str]
|
|
24
|
+
r"""End date of the reporting period the estimate applies to"""
|
|
25
|
+
quarter: NotRequired[int]
|
|
26
|
+
r"""Fiscal quarter of the period; 0 for annual estimates"""
|
|
27
|
+
year: NotRequired[int]
|
|
28
|
+
r"""Fiscal year of the period"""
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class EpsEstimatesResponseData(BaseModel):
|
|
32
|
+
eps_avg: Annotated[Optional[float], pydantic.Field(alias="epsAvg")] = None
|
|
33
|
+
r"""Average analyst EPS estimate for the period"""
|
|
34
|
+
|
|
35
|
+
eps_high: Annotated[Optional[float], pydantic.Field(alias="epsHigh")] = None
|
|
36
|
+
r"""Highest analyst EPS estimate for the period"""
|
|
37
|
+
|
|
38
|
+
eps_low: Annotated[Optional[float], pydantic.Field(alias="epsLow")] = None
|
|
39
|
+
r"""Lowest analyst EPS estimate for the period"""
|
|
40
|
+
|
|
41
|
+
number_analysts: Annotated[
|
|
42
|
+
Optional[int], pydantic.Field(alias="numberAnalysts")
|
|
43
|
+
] = None
|
|
44
|
+
r"""Number of analysts contributing to the estimate"""
|
|
45
|
+
|
|
46
|
+
period: Optional[str] = None
|
|
47
|
+
r"""End date of the reporting period the estimate applies to"""
|
|
48
|
+
|
|
49
|
+
quarter: Optional[int] = None
|
|
50
|
+
r"""Fiscal quarter of the period; 0 for annual estimates"""
|
|
51
|
+
|
|
52
|
+
year: Optional[int] = None
|
|
53
|
+
r"""Fiscal year of the period"""
|
|
54
|
+
|
|
55
|
+
@model_serializer(mode="wrap")
|
|
56
|
+
def serialize_model(self, handler):
|
|
57
|
+
optional_fields = set(
|
|
58
|
+
[
|
|
59
|
+
"epsAvg",
|
|
60
|
+
"epsHigh",
|
|
61
|
+
"epsLow",
|
|
62
|
+
"numberAnalysts",
|
|
63
|
+
"period",
|
|
64
|
+
"quarter",
|
|
65
|
+
"year",
|
|
66
|
+
]
|
|
67
|
+
)
|
|
68
|
+
serialized = handler(self)
|
|
69
|
+
m = {}
|
|
70
|
+
|
|
71
|
+
for n, f in type(self).model_fields.items():
|
|
72
|
+
k = f.alias or n
|
|
73
|
+
val = serialized.get(k, serialized.get(n))
|
|
74
|
+
|
|
75
|
+
if val != UNSET_SENTINEL:
|
|
76
|
+
if val is not None or k not in optional_fields:
|
|
77
|
+
m[k] = val
|
|
78
|
+
|
|
79
|
+
return m
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class EpsEstimatesTypedDict(TypedDict):
|
|
83
|
+
r"""EPS estimates container for the symbol"""
|
|
84
|
+
|
|
85
|
+
data: NotRequired[List[EpsEstimatesResponseDataTypedDict]]
|
|
86
|
+
r"""List of EPS estimates, one per reporting period"""
|
|
87
|
+
freq: NotRequired[ReportingFrequency]
|
|
88
|
+
r"""How often the underlying data is reported:
|
|
89
|
+
- `annual` — once per fiscal year (10-K, full-year statements).
|
|
90
|
+
- `quarterly` — once per fiscal quarter (10-Q, quarterly statements).
|
|
91
|
+
"""
|
|
92
|
+
symbol: NotRequired[str]
|
|
93
|
+
r"""Stock ticker symbol"""
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
class EpsEstimates(BaseModel):
|
|
97
|
+
r"""EPS estimates container for the symbol"""
|
|
98
|
+
|
|
99
|
+
data: Optional[List[EpsEstimatesResponseData]] = None
|
|
100
|
+
r"""List of EPS estimates, one per reporting period"""
|
|
101
|
+
|
|
102
|
+
freq: Optional[ReportingFrequency] = None
|
|
103
|
+
r"""How often the underlying data is reported:
|
|
104
|
+
- `annual` — once per fiscal year (10-K, full-year statements).
|
|
105
|
+
- `quarterly` — once per fiscal quarter (10-Q, quarterly statements).
|
|
106
|
+
"""
|
|
107
|
+
|
|
108
|
+
symbol: Optional[str] = None
|
|
109
|
+
r"""Stock ticker symbol"""
|
|
110
|
+
|
|
111
|
+
@field_serializer("freq")
|
|
112
|
+
def serialize_freq(self, value):
|
|
113
|
+
if isinstance(value, str):
|
|
114
|
+
try:
|
|
115
|
+
return models.ReportingFrequency(value)
|
|
116
|
+
except ValueError:
|
|
117
|
+
return value
|
|
118
|
+
return value
|
|
119
|
+
|
|
120
|
+
@model_serializer(mode="wrap")
|
|
121
|
+
def serialize_model(self, handler):
|
|
122
|
+
optional_fields = set(["data", "freq", "symbol"])
|
|
123
|
+
serialized = handler(self)
|
|
124
|
+
m = {}
|
|
125
|
+
|
|
126
|
+
for n, f in type(self).model_fields.items():
|
|
127
|
+
k = f.alias or n
|
|
128
|
+
val = serialized.get(k, serialized.get(n))
|
|
129
|
+
|
|
130
|
+
if val != UNSET_SENTINEL:
|
|
131
|
+
if val is not None or k not in optional_fields:
|
|
132
|
+
m[k] = val
|
|
133
|
+
|
|
134
|
+
return m
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
class EpsEstimatesResponseTypedDict(TypedDict):
|
|
138
|
+
r"""Analyst consensus EPS estimates for a stock by reporting period, sourced from Finnhub."""
|
|
139
|
+
|
|
140
|
+
eps_estimates: NotRequired[EpsEstimatesTypedDict]
|
|
141
|
+
r"""EPS estimates container for the symbol"""
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
class EpsEstimatesResponse(BaseModel):
|
|
145
|
+
r"""Analyst consensus EPS estimates for a stock by reporting period, sourced from Finnhub."""
|
|
146
|
+
|
|
147
|
+
eps_estimates: Annotated[
|
|
148
|
+
Optional[EpsEstimates], pydantic.Field(alias="epsEstimates")
|
|
149
|
+
] = None
|
|
150
|
+
r"""EPS estimates container for the symbol"""
|
|
151
|
+
|
|
152
|
+
@model_serializer(mode="wrap")
|
|
153
|
+
def serialize_model(self, handler):
|
|
154
|
+
optional_fields = set(["epsEstimates"])
|
|
155
|
+
serialized = handler(self)
|
|
156
|
+
m = {}
|
|
157
|
+
|
|
158
|
+
for n, f in type(self).model_fields.items():
|
|
159
|
+
k = f.alias or n
|
|
160
|
+
val = serialized.get(k, serialized.get(n))
|
|
161
|
+
|
|
162
|
+
if val != UNSET_SENTINEL:
|
|
163
|
+
if val is not None or k not in optional_fields:
|
|
164
|
+
m[k] = val
|
|
165
|
+
|
|
166
|
+
return m
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
try:
|
|
170
|
+
EpsEstimatesResponseData.model_rebuild()
|
|
171
|
+
except NameError:
|
|
172
|
+
pass
|
|
173
|
+
try:
|
|
174
|
+
EpsEstimatesResponse.model_rebuild()
|
|
175
|
+
except NameError:
|
|
176
|
+
pass
|