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,110 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: d249172a8488
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .reportedreport import ReportedReport, ReportedReportTypedDict
|
|
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 ReportedFilingTypedDict(TypedDict):
|
|
14
|
+
r"""SEC filing with its reporting period and reported financial data."""
|
|
15
|
+
|
|
16
|
+
accepted_date: NotRequired[str]
|
|
17
|
+
r"""Date and time when the SEC accepted the filing"""
|
|
18
|
+
access_number: NotRequired[str]
|
|
19
|
+
r"""SEC accession number uniquely identifying the filing"""
|
|
20
|
+
cik: NotRequired[str]
|
|
21
|
+
r"""Central Index Key assigned by the SEC to the company"""
|
|
22
|
+
end_date: NotRequired[str]
|
|
23
|
+
r"""End date of the reporting period in YYYY-MM-DD format"""
|
|
24
|
+
filed_date: NotRequired[str]
|
|
25
|
+
r"""Date when the filing was submitted to the SEC"""
|
|
26
|
+
form: NotRequired[str]
|
|
27
|
+
r"""Type of SEC form (e.g., 10-K, 10-Q, 8-K)"""
|
|
28
|
+
quarter: NotRequired[int]
|
|
29
|
+
r"""Fiscal quarter number (1-4)"""
|
|
30
|
+
report: NotRequired[ReportedReportTypedDict]
|
|
31
|
+
r"""Financial statements reported within a filing."""
|
|
32
|
+
start_date: NotRequired[str]
|
|
33
|
+
r"""Start date of the reporting period in YYYY-MM-DD format"""
|
|
34
|
+
symbol: NotRequired[str]
|
|
35
|
+
r"""Stock ticker symbol"""
|
|
36
|
+
year: NotRequired[int]
|
|
37
|
+
r"""Fiscal year of the report"""
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class ReportedFiling(BaseModel):
|
|
41
|
+
r"""SEC filing with its reporting period and reported financial data."""
|
|
42
|
+
|
|
43
|
+
accepted_date: Annotated[Optional[str], pydantic.Field(alias="acceptedDate")] = None
|
|
44
|
+
r"""Date and time when the SEC accepted the filing"""
|
|
45
|
+
|
|
46
|
+
access_number: Annotated[Optional[str], pydantic.Field(alias="accessNumber")] = None
|
|
47
|
+
r"""SEC accession number uniquely identifying the filing"""
|
|
48
|
+
|
|
49
|
+
cik: Optional[str] = None
|
|
50
|
+
r"""Central Index Key assigned by the SEC to the company"""
|
|
51
|
+
|
|
52
|
+
end_date: Annotated[Optional[str], pydantic.Field(alias="endDate")] = None
|
|
53
|
+
r"""End date of the reporting period in YYYY-MM-DD format"""
|
|
54
|
+
|
|
55
|
+
filed_date: Annotated[Optional[str], pydantic.Field(alias="filedDate")] = None
|
|
56
|
+
r"""Date when the filing was submitted to the SEC"""
|
|
57
|
+
|
|
58
|
+
form: Optional[str] = None
|
|
59
|
+
r"""Type of SEC form (e.g., 10-K, 10-Q, 8-K)"""
|
|
60
|
+
|
|
61
|
+
quarter: Optional[int] = None
|
|
62
|
+
r"""Fiscal quarter number (1-4)"""
|
|
63
|
+
|
|
64
|
+
report: Optional[ReportedReport] = None
|
|
65
|
+
r"""Financial statements reported within a filing."""
|
|
66
|
+
|
|
67
|
+
start_date: Annotated[Optional[str], pydantic.Field(alias="startDate")] = None
|
|
68
|
+
r"""Start date of the reporting period in YYYY-MM-DD format"""
|
|
69
|
+
|
|
70
|
+
symbol: Optional[str] = None
|
|
71
|
+
r"""Stock ticker symbol"""
|
|
72
|
+
|
|
73
|
+
year: Optional[int] = None
|
|
74
|
+
r"""Fiscal year of the report"""
|
|
75
|
+
|
|
76
|
+
@model_serializer(mode="wrap")
|
|
77
|
+
def serialize_model(self, handler):
|
|
78
|
+
optional_fields = set(
|
|
79
|
+
[
|
|
80
|
+
"acceptedDate",
|
|
81
|
+
"accessNumber",
|
|
82
|
+
"cik",
|
|
83
|
+
"endDate",
|
|
84
|
+
"filedDate",
|
|
85
|
+
"form",
|
|
86
|
+
"quarter",
|
|
87
|
+
"report",
|
|
88
|
+
"startDate",
|
|
89
|
+
"symbol",
|
|
90
|
+
"year",
|
|
91
|
+
]
|
|
92
|
+
)
|
|
93
|
+
serialized = handler(self)
|
|
94
|
+
m = {}
|
|
95
|
+
|
|
96
|
+
for n, f in type(self).model_fields.items():
|
|
97
|
+
k = f.alias or n
|
|
98
|
+
val = serialized.get(k, serialized.get(n))
|
|
99
|
+
|
|
100
|
+
if val != UNSET_SENTINEL:
|
|
101
|
+
if val is not None or k not in optional_fields:
|
|
102
|
+
m[k] = val
|
|
103
|
+
|
|
104
|
+
return m
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
try:
|
|
108
|
+
ReportedFiling.model_rebuild()
|
|
109
|
+
except NameError:
|
|
110
|
+
pass
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: ba11fb9e361e
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .reportedbsitem import ReportedBSItem, ReportedBSItemTypedDict
|
|
6
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
7
|
+
from pydantic import model_serializer
|
|
8
|
+
from typing import List, Optional
|
|
9
|
+
from typing_extensions import NotRequired, TypedDict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class ReportedReportTypedDict(TypedDict):
|
|
13
|
+
r"""Financial statements reported within a filing."""
|
|
14
|
+
|
|
15
|
+
bs: NotRequired[List[ReportedBSItemTypedDict]]
|
|
16
|
+
r"""Balance sheet line items from the reported financial statements"""
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class ReportedReport(BaseModel):
|
|
20
|
+
r"""Financial statements reported within a filing."""
|
|
21
|
+
|
|
22
|
+
bs: Optional[List[ReportedBSItem]] = None
|
|
23
|
+
r"""Balance sheet line items from the reported financial statements"""
|
|
24
|
+
|
|
25
|
+
@model_serializer(mode="wrap")
|
|
26
|
+
def serialize_model(self, handler):
|
|
27
|
+
optional_fields = set(["bs"])
|
|
28
|
+
serialized = handler(self)
|
|
29
|
+
m = {}
|
|
30
|
+
|
|
31
|
+
for n, f in type(self).model_fields.items():
|
|
32
|
+
k = f.alias or n
|
|
33
|
+
val = serialized.get(k, serialized.get(n))
|
|
34
|
+
|
|
35
|
+
if val != UNSET_SENTINEL:
|
|
36
|
+
if val is not None or k not in optional_fields:
|
|
37
|
+
m[k] = val
|
|
38
|
+
|
|
39
|
+
return m
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 1b7e145c88bb
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from enum import Enum
|
|
6
|
+
from finance_dev import utils
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ReportingFrequency(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
10
|
+
r"""How often the underlying data is reported:
|
|
11
|
+
- `annual` — once per fiscal year (10-K, full-year statements).
|
|
12
|
+
- `quarterly` — once per fiscal quarter (10-Q, quarterly statements).
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
ANNUAL = "annual"
|
|
16
|
+
QUARTERLY = "quarterly"
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 9d558be82e79
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .revenuebreakdowndatapoint import (
|
|
6
|
+
RevenueBreakdownDataPoint,
|
|
7
|
+
RevenueBreakdownDataPointTypedDict,
|
|
8
|
+
)
|
|
9
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
10
|
+
from pydantic import model_serializer
|
|
11
|
+
from typing import List, Optional
|
|
12
|
+
from typing_extensions import NotRequired, TypedDict
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class RevenueBreakdownAxisTypedDict(TypedDict):
|
|
16
|
+
r"""Revenue breakdown along a single dimension such as product or geography."""
|
|
17
|
+
|
|
18
|
+
axis: NotRequired[str]
|
|
19
|
+
r"""XBRL axis identifier (e.g., product line, geography)"""
|
|
20
|
+
data: NotRequired[List[RevenueBreakdownDataPointTypedDict]]
|
|
21
|
+
r"""Array of revenue data points for this axis"""
|
|
22
|
+
label: NotRequired[str]
|
|
23
|
+
r"""Human-readable label for the axis"""
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class RevenueBreakdownAxis(BaseModel):
|
|
27
|
+
r"""Revenue breakdown along a single dimension such as product or geography."""
|
|
28
|
+
|
|
29
|
+
axis: Optional[str] = None
|
|
30
|
+
r"""XBRL axis identifier (e.g., product line, geography)"""
|
|
31
|
+
|
|
32
|
+
data: Optional[List[RevenueBreakdownDataPoint]] = None
|
|
33
|
+
r"""Array of revenue data points for this axis"""
|
|
34
|
+
|
|
35
|
+
label: Optional[str] = None
|
|
36
|
+
r"""Human-readable label for the axis"""
|
|
37
|
+
|
|
38
|
+
@model_serializer(mode="wrap")
|
|
39
|
+
def serialize_model(self, handler):
|
|
40
|
+
optional_fields = set(["axis", "data", "label"])
|
|
41
|
+
serialized = handler(self)
|
|
42
|
+
m = {}
|
|
43
|
+
|
|
44
|
+
for n, f in type(self).model_fields.items():
|
|
45
|
+
k = f.alias or n
|
|
46
|
+
val = serialized.get(k, serialized.get(n))
|
|
47
|
+
|
|
48
|
+
if val != UNSET_SENTINEL:
|
|
49
|
+
if val is not None or k not in optional_fields:
|
|
50
|
+
m[k] = val
|
|
51
|
+
|
|
52
|
+
return m
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 3f95ebfff4ce
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
6
|
+
from pydantic import model_serializer
|
|
7
|
+
from typing import Optional
|
|
8
|
+
from typing_extensions import NotRequired, TypedDict
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class RevenueBreakdownDataPointTypedDict(TypedDict):
|
|
12
|
+
r"""Revenue for a single segment along a breakdown axis."""
|
|
13
|
+
|
|
14
|
+
label: NotRequired[str]
|
|
15
|
+
r"""Label for the revenue segment"""
|
|
16
|
+
member: NotRequired[str]
|
|
17
|
+
r"""XBRL member identifier for the segment"""
|
|
18
|
+
percentage: NotRequired[float]
|
|
19
|
+
r"""Percentage of total revenue from this segment"""
|
|
20
|
+
unit: NotRequired[str]
|
|
21
|
+
r"""Unit of measurement (e.g., USD)"""
|
|
22
|
+
value: NotRequired[float]
|
|
23
|
+
r"""Revenue value for this segment"""
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class RevenueBreakdownDataPoint(BaseModel):
|
|
27
|
+
r"""Revenue for a single segment along a breakdown axis."""
|
|
28
|
+
|
|
29
|
+
label: Optional[str] = None
|
|
30
|
+
r"""Label for the revenue segment"""
|
|
31
|
+
|
|
32
|
+
member: Optional[str] = None
|
|
33
|
+
r"""XBRL member identifier for the segment"""
|
|
34
|
+
|
|
35
|
+
percentage: Optional[float] = None
|
|
36
|
+
r"""Percentage of total revenue from this segment"""
|
|
37
|
+
|
|
38
|
+
unit: Optional[str] = None
|
|
39
|
+
r"""Unit of measurement (e.g., USD)"""
|
|
40
|
+
|
|
41
|
+
value: Optional[float] = None
|
|
42
|
+
r"""Revenue value for this segment"""
|
|
43
|
+
|
|
44
|
+
@model_serializer(mode="wrap")
|
|
45
|
+
def serialize_model(self, handler):
|
|
46
|
+
optional_fields = set(["label", "member", "percentage", "unit", "value"])
|
|
47
|
+
serialized = handler(self)
|
|
48
|
+
m = {}
|
|
49
|
+
|
|
50
|
+
for n, f in type(self).model_fields.items():
|
|
51
|
+
k = f.alias or n
|
|
52
|
+
val = serialized.get(k, serialized.get(n))
|
|
53
|
+
|
|
54
|
+
if val != UNSET_SENTINEL:
|
|
55
|
+
if val is not None or k not in optional_fields:
|
|
56
|
+
m[k] = val
|
|
57
|
+
|
|
58
|
+
return m
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 402e9e7f78a7
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .revenuebreakdowninner import RevenueBreakdownInner, RevenueBreakdownInnerTypedDict
|
|
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 RevenueBreakdownEntryTypedDict(TypedDict):
|
|
14
|
+
r"""Revenue breakdown for a single SEC filing."""
|
|
15
|
+
|
|
16
|
+
access_number: NotRequired[str]
|
|
17
|
+
r"""SEC accession number for the filing"""
|
|
18
|
+
breakdown: NotRequired[RevenueBreakdownInnerTypedDict]
|
|
19
|
+
r"""Total revenue for a reporting period with its breakdown by axis."""
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class RevenueBreakdownEntry(BaseModel):
|
|
23
|
+
r"""Revenue breakdown for a single SEC filing."""
|
|
24
|
+
|
|
25
|
+
access_number: Annotated[Optional[str], pydantic.Field(alias="accessNumber")] = None
|
|
26
|
+
r"""SEC accession number for the filing"""
|
|
27
|
+
|
|
28
|
+
breakdown: Optional[RevenueBreakdownInner] = None
|
|
29
|
+
r"""Total revenue for a reporting period with its breakdown by axis."""
|
|
30
|
+
|
|
31
|
+
@model_serializer(mode="wrap")
|
|
32
|
+
def serialize_model(self, handler):
|
|
33
|
+
optional_fields = set(["accessNumber", "breakdown"])
|
|
34
|
+
serialized = handler(self)
|
|
35
|
+
m = {}
|
|
36
|
+
|
|
37
|
+
for n, f in type(self).model_fields.items():
|
|
38
|
+
k = f.alias or n
|
|
39
|
+
val = serialized.get(k, serialized.get(n))
|
|
40
|
+
|
|
41
|
+
if val != UNSET_SENTINEL:
|
|
42
|
+
if val is not None or k not in optional_fields:
|
|
43
|
+
m[k] = val
|
|
44
|
+
|
|
45
|
+
return m
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
try:
|
|
49
|
+
RevenueBreakdownEntry.model_rebuild()
|
|
50
|
+
except NameError:
|
|
51
|
+
pass
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 70924930526b
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .revenuebreakdownaxis import RevenueBreakdownAxis, RevenueBreakdownAxisTypedDict
|
|
6
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
7
|
+
import pydantic
|
|
8
|
+
from pydantic import model_serializer
|
|
9
|
+
from typing import List, Optional
|
|
10
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class RevenueBreakdownInnerTypedDict(TypedDict):
|
|
14
|
+
r"""Total revenue for a reporting period with its breakdown by axis."""
|
|
15
|
+
|
|
16
|
+
concept: NotRequired[str]
|
|
17
|
+
r"""XBRL concept tag for revenue"""
|
|
18
|
+
end_date: NotRequired[str]
|
|
19
|
+
r"""End date of the reporting period in YYYY-MM-DD format"""
|
|
20
|
+
revenue_breakdown: NotRequired[List[RevenueBreakdownAxisTypedDict]]
|
|
21
|
+
r"""Array of revenue breakdown axes (by product, geography, etc.)"""
|
|
22
|
+
start_date: NotRequired[str]
|
|
23
|
+
r"""Start date of the reporting period in YYYY-MM-DD format"""
|
|
24
|
+
unit: NotRequired[str]
|
|
25
|
+
r"""Unit of measurement (e.g., USD)"""
|
|
26
|
+
value: NotRequired[float]
|
|
27
|
+
r"""Total revenue value"""
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class RevenueBreakdownInner(BaseModel):
|
|
31
|
+
r"""Total revenue for a reporting period with its breakdown by axis."""
|
|
32
|
+
|
|
33
|
+
concept: Optional[str] = None
|
|
34
|
+
r"""XBRL concept tag for revenue"""
|
|
35
|
+
|
|
36
|
+
end_date: Annotated[Optional[str], pydantic.Field(alias="endDate")] = None
|
|
37
|
+
r"""End date of the reporting period in YYYY-MM-DD format"""
|
|
38
|
+
|
|
39
|
+
revenue_breakdown: Annotated[
|
|
40
|
+
Optional[List[RevenueBreakdownAxis]], pydantic.Field(alias="revenueBreakdown")
|
|
41
|
+
] = None
|
|
42
|
+
r"""Array of revenue breakdown axes (by product, geography, etc.)"""
|
|
43
|
+
|
|
44
|
+
start_date: Annotated[Optional[str], pydantic.Field(alias="startDate")] = None
|
|
45
|
+
r"""Start date of the reporting period in YYYY-MM-DD format"""
|
|
46
|
+
|
|
47
|
+
unit: Optional[str] = None
|
|
48
|
+
r"""Unit of measurement (e.g., USD)"""
|
|
49
|
+
|
|
50
|
+
value: Optional[float] = None
|
|
51
|
+
r"""Total revenue value"""
|
|
52
|
+
|
|
53
|
+
@model_serializer(mode="wrap")
|
|
54
|
+
def serialize_model(self, handler):
|
|
55
|
+
optional_fields = set(
|
|
56
|
+
["concept", "endDate", "revenueBreakdown", "startDate", "unit", "value"]
|
|
57
|
+
)
|
|
58
|
+
serialized = handler(self)
|
|
59
|
+
m = {}
|
|
60
|
+
|
|
61
|
+
for n, f in type(self).model_fields.items():
|
|
62
|
+
k = f.alias or n
|
|
63
|
+
val = serialized.get(k, serialized.get(n))
|
|
64
|
+
|
|
65
|
+
if val != UNSET_SENTINEL:
|
|
66
|
+
if val is not None or k not in optional_fields:
|
|
67
|
+
m[k] = val
|
|
68
|
+
|
|
69
|
+
return m
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
try:
|
|
73
|
+
RevenueBreakdownInner.model_rebuild()
|
|
74
|
+
except NameError:
|
|
75
|
+
pass
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: b2bb53e9cf51
|
|
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 RevenueEstimatesResponseDataTypedDict(TypedDict):
|
|
15
|
+
number_analysts: NotRequired[int]
|
|
16
|
+
r"""Number of analysts contributing to the estimate"""
|
|
17
|
+
period: NotRequired[str]
|
|
18
|
+
r"""End date of the reporting period the estimate applies to"""
|
|
19
|
+
quarter: NotRequired[int]
|
|
20
|
+
r"""Fiscal quarter of the period; 0 for annual estimates"""
|
|
21
|
+
revenue_avg: NotRequired[int]
|
|
22
|
+
r"""Average analyst revenue estimate for the period"""
|
|
23
|
+
revenue_high: NotRequired[int]
|
|
24
|
+
r"""Highest analyst revenue estimate for the period"""
|
|
25
|
+
revenue_low: NotRequired[int]
|
|
26
|
+
r"""Lowest analyst revenue estimate for the period"""
|
|
27
|
+
year: NotRequired[int]
|
|
28
|
+
r"""Fiscal year of the period"""
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class RevenueEstimatesResponseData(BaseModel):
|
|
32
|
+
number_analysts: Annotated[
|
|
33
|
+
Optional[int], pydantic.Field(alias="numberAnalysts")
|
|
34
|
+
] = None
|
|
35
|
+
r"""Number of analysts contributing to the estimate"""
|
|
36
|
+
|
|
37
|
+
period: Optional[str] = None
|
|
38
|
+
r"""End date of the reporting period the estimate applies to"""
|
|
39
|
+
|
|
40
|
+
quarter: Optional[int] = None
|
|
41
|
+
r"""Fiscal quarter of the period; 0 for annual estimates"""
|
|
42
|
+
|
|
43
|
+
revenue_avg: Annotated[Optional[int], pydantic.Field(alias="revenueAvg")] = None
|
|
44
|
+
r"""Average analyst revenue estimate for the period"""
|
|
45
|
+
|
|
46
|
+
revenue_high: Annotated[Optional[int], pydantic.Field(alias="revenueHigh")] = None
|
|
47
|
+
r"""Highest analyst revenue estimate for the period"""
|
|
48
|
+
|
|
49
|
+
revenue_low: Annotated[Optional[int], pydantic.Field(alias="revenueLow")] = None
|
|
50
|
+
r"""Lowest analyst revenue estimate for the period"""
|
|
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
|
+
"numberAnalysts",
|
|
60
|
+
"period",
|
|
61
|
+
"quarter",
|
|
62
|
+
"revenueAvg",
|
|
63
|
+
"revenueHigh",
|
|
64
|
+
"revenueLow",
|
|
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 RevenueEstimatesTypedDict(TypedDict):
|
|
83
|
+
r"""revenue estimates container for the symbol"""
|
|
84
|
+
|
|
85
|
+
data: NotRequired[List[RevenueEstimatesResponseDataTypedDict]]
|
|
86
|
+
r"""List of revenue 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 RevenueEstimates(BaseModel):
|
|
97
|
+
r"""revenue estimates container for the symbol"""
|
|
98
|
+
|
|
99
|
+
data: Optional[List[RevenueEstimatesResponseData]] = None
|
|
100
|
+
r"""List of revenue 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 RevenueEstimatesResponseTypedDict(TypedDict):
|
|
138
|
+
r"""Analyst consensus revenue estimates for a stock by reporting period, sourced from Finnhub."""
|
|
139
|
+
|
|
140
|
+
revenue_estimates: NotRequired[RevenueEstimatesTypedDict]
|
|
141
|
+
r"""revenue estimates container for the symbol"""
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
class RevenueEstimatesResponse(BaseModel):
|
|
145
|
+
r"""Analyst consensus revenue estimates for a stock by reporting period, sourced from Finnhub."""
|
|
146
|
+
|
|
147
|
+
revenue_estimates: Annotated[
|
|
148
|
+
Optional[RevenueEstimates], pydantic.Field(alias="revenueEstimates")
|
|
149
|
+
] = None
|
|
150
|
+
r"""revenue estimates container for the symbol"""
|
|
151
|
+
|
|
152
|
+
@model_serializer(mode="wrap")
|
|
153
|
+
def serialize_model(self, handler):
|
|
154
|
+
optional_fields = set(["revenueEstimates"])
|
|
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
|
+
RevenueEstimatesResponseData.model_rebuild()
|
|
171
|
+
except NameError:
|
|
172
|
+
pass
|
|
173
|
+
try:
|
|
174
|
+
RevenueEstimatesResponse.model_rebuild()
|
|
175
|
+
except NameError:
|
|
176
|
+
pass
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 900ed6dcc198
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from enum import Enum
|
|
6
|
+
from finance_dev import models, utils
|
|
7
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
8
|
+
from pydantic import field_serializer, model_serializer
|
|
9
|
+
from typing import Optional
|
|
10
|
+
from typing_extensions import NotRequired, TypedDict
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ScreenClauseOperator(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
14
|
+
r"""Comparison: eq, gt, gte, lt, lte, contains"""
|
|
15
|
+
|
|
16
|
+
EQ = "eq"
|
|
17
|
+
GT = "gt"
|
|
18
|
+
GTE = "gte"
|
|
19
|
+
LT = "lt"
|
|
20
|
+
LTE = "lte"
|
|
21
|
+
CONTAINS = "contains"
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class ScreenClauseTypedDict(TypedDict):
|
|
25
|
+
r"""One filter condition: field name, comparison operator, and value (string)."""
|
|
26
|
+
|
|
27
|
+
field: NotRequired[str]
|
|
28
|
+
r"""Screener field name (e.g. marketcap, pricetoearnings, roe, volume, open_price, dilutedeps, cashandequivalents)"""
|
|
29
|
+
operator: NotRequired[ScreenClauseOperator]
|
|
30
|
+
r"""Comparison: eq, gt, gte, lt, lte, contains"""
|
|
31
|
+
value: NotRequired[str]
|
|
32
|
+
r"""Value to compare against (e.g. 1000000000, 0.15)"""
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class ScreenClause(BaseModel):
|
|
36
|
+
r"""One filter condition: field name, comparison operator, and value (string)."""
|
|
37
|
+
|
|
38
|
+
field: Optional[str] = None
|
|
39
|
+
r"""Screener field name (e.g. marketcap, pricetoearnings, roe, volume, open_price, dilutedeps, cashandequivalents)"""
|
|
40
|
+
|
|
41
|
+
operator: Optional[ScreenClauseOperator] = None
|
|
42
|
+
r"""Comparison: eq, gt, gte, lt, lte, contains"""
|
|
43
|
+
|
|
44
|
+
value: Optional[str] = None
|
|
45
|
+
r"""Value to compare against (e.g. 1000000000, 0.15)"""
|
|
46
|
+
|
|
47
|
+
@field_serializer("operator")
|
|
48
|
+
def serialize_operator(self, value):
|
|
49
|
+
if isinstance(value, str):
|
|
50
|
+
try:
|
|
51
|
+
return models.ScreenClauseOperator(value)
|
|
52
|
+
except ValueError:
|
|
53
|
+
return value
|
|
54
|
+
return value
|
|
55
|
+
|
|
56
|
+
@model_serializer(mode="wrap")
|
|
57
|
+
def serialize_model(self, handler):
|
|
58
|
+
optional_fields = set(["field", "operator", "value"])
|
|
59
|
+
serialized = handler(self)
|
|
60
|
+
m = {}
|
|
61
|
+
|
|
62
|
+
for n, f in type(self).model_fields.items():
|
|
63
|
+
k = f.alias or n
|
|
64
|
+
val = serialized.get(k, serialized.get(n))
|
|
65
|
+
|
|
66
|
+
if val != UNSET_SENTINEL:
|
|
67
|
+
if val is not None or k not in optional_fields:
|
|
68
|
+
m[k] = val
|
|
69
|
+
|
|
70
|
+
return m
|