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,454 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 71a981035aca
|
|
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 List, Optional
|
|
9
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class DayTypedDict(TypedDict):
|
|
13
|
+
r"""Current day aggregate"""
|
|
14
|
+
|
|
15
|
+
close: NotRequired[float]
|
|
16
|
+
r"""Close price"""
|
|
17
|
+
high: NotRequired[float]
|
|
18
|
+
r"""High price"""
|
|
19
|
+
low: NotRequired[float]
|
|
20
|
+
r"""Low price"""
|
|
21
|
+
open: NotRequired[float]
|
|
22
|
+
r"""Open price"""
|
|
23
|
+
volume: NotRequired[float]
|
|
24
|
+
r"""Volume"""
|
|
25
|
+
vwap: NotRequired[float]
|
|
26
|
+
r"""VWAP"""
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class Day(BaseModel):
|
|
30
|
+
r"""Current day aggregate"""
|
|
31
|
+
|
|
32
|
+
close: Optional[float] = None
|
|
33
|
+
r"""Close price"""
|
|
34
|
+
|
|
35
|
+
high: Optional[float] = None
|
|
36
|
+
r"""High price"""
|
|
37
|
+
|
|
38
|
+
low: Optional[float] = None
|
|
39
|
+
r"""Low price"""
|
|
40
|
+
|
|
41
|
+
open: Optional[float] = None
|
|
42
|
+
r"""Open price"""
|
|
43
|
+
|
|
44
|
+
volume: Optional[float] = None
|
|
45
|
+
r"""Volume"""
|
|
46
|
+
|
|
47
|
+
vwap: Optional[float] = None
|
|
48
|
+
r"""VWAP"""
|
|
49
|
+
|
|
50
|
+
@model_serializer(mode="wrap")
|
|
51
|
+
def serialize_model(self, handler):
|
|
52
|
+
optional_fields = set(["close", "high", "low", "open", "volume", "vwap"])
|
|
53
|
+
serialized = handler(self)
|
|
54
|
+
m = {}
|
|
55
|
+
|
|
56
|
+
for n, f in type(self).model_fields.items():
|
|
57
|
+
k = f.alias or n
|
|
58
|
+
val = serialized.get(k, serialized.get(n))
|
|
59
|
+
|
|
60
|
+
if val != UNSET_SENTINEL:
|
|
61
|
+
if val is not None or k not in optional_fields:
|
|
62
|
+
m[k] = val
|
|
63
|
+
|
|
64
|
+
return m
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class LastQuoteTypedDict(TypedDict):
|
|
68
|
+
r"""Last quote information"""
|
|
69
|
+
|
|
70
|
+
ask_price: NotRequired[float]
|
|
71
|
+
r"""Ask price of the last quote."""
|
|
72
|
+
ask_size: NotRequired[int]
|
|
73
|
+
r"""Ask size of the last quote."""
|
|
74
|
+
bid_price: NotRequired[float]
|
|
75
|
+
r"""Bid price of the last quote."""
|
|
76
|
+
bid_size: NotRequired[int]
|
|
77
|
+
r"""Bid size of the last quote."""
|
|
78
|
+
timestamp: NotRequired[int]
|
|
79
|
+
r"""Timestamp of the last quote as an integer from the upstream provider."""
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class LastQuote(BaseModel):
|
|
83
|
+
r"""Last quote information"""
|
|
84
|
+
|
|
85
|
+
ask_price: Annotated[Optional[float], pydantic.Field(alias="askPrice")] = None
|
|
86
|
+
r"""Ask price of the last quote."""
|
|
87
|
+
|
|
88
|
+
ask_size: Annotated[Optional[int], pydantic.Field(alias="askSize")] = None
|
|
89
|
+
r"""Ask size of the last quote."""
|
|
90
|
+
|
|
91
|
+
bid_price: Annotated[Optional[float], pydantic.Field(alias="bidPrice")] = None
|
|
92
|
+
r"""Bid price of the last quote."""
|
|
93
|
+
|
|
94
|
+
bid_size: Annotated[Optional[int], pydantic.Field(alias="bidSize")] = None
|
|
95
|
+
r"""Bid size of the last quote."""
|
|
96
|
+
|
|
97
|
+
timestamp: Optional[int] = None
|
|
98
|
+
r"""Timestamp of the last quote as an integer from the upstream provider."""
|
|
99
|
+
|
|
100
|
+
@model_serializer(mode="wrap")
|
|
101
|
+
def serialize_model(self, handler):
|
|
102
|
+
optional_fields = set(
|
|
103
|
+
["askPrice", "askSize", "bidPrice", "bidSize", "timestamp"]
|
|
104
|
+
)
|
|
105
|
+
serialized = handler(self)
|
|
106
|
+
m = {}
|
|
107
|
+
|
|
108
|
+
for n, f in type(self).model_fields.items():
|
|
109
|
+
k = f.alias or n
|
|
110
|
+
val = serialized.get(k, serialized.get(n))
|
|
111
|
+
|
|
112
|
+
if val != UNSET_SENTINEL:
|
|
113
|
+
if val is not None or k not in optional_fields:
|
|
114
|
+
m[k] = val
|
|
115
|
+
|
|
116
|
+
return m
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
class LastTradeTypedDict(TypedDict):
|
|
120
|
+
r"""Last trade information"""
|
|
121
|
+
|
|
122
|
+
conditions: NotRequired[List[int]]
|
|
123
|
+
r"""Provider-defined numeric condition codes attached to the last trade."""
|
|
124
|
+
exchange_id: NotRequired[int]
|
|
125
|
+
r"""Numeric identifier of the exchange where the last trade occurred."""
|
|
126
|
+
price: NotRequired[float]
|
|
127
|
+
r"""Price of the last trade."""
|
|
128
|
+
size: NotRequired[int]
|
|
129
|
+
r"""Size of the last trade."""
|
|
130
|
+
timestamp: NotRequired[int]
|
|
131
|
+
r"""Timestamp of the last trade as an integer from the upstream provider."""
|
|
132
|
+
trade_id: NotRequired[str]
|
|
133
|
+
r"""Identifier of the last trade."""
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
class LastTrade(BaseModel):
|
|
137
|
+
r"""Last trade information"""
|
|
138
|
+
|
|
139
|
+
conditions: Optional[List[int]] = None
|
|
140
|
+
r"""Provider-defined numeric condition codes attached to the last trade."""
|
|
141
|
+
|
|
142
|
+
exchange_id: Annotated[Optional[int], pydantic.Field(alias="exchangeId")] = None
|
|
143
|
+
r"""Numeric identifier of the exchange where the last trade occurred."""
|
|
144
|
+
|
|
145
|
+
price: Optional[float] = None
|
|
146
|
+
r"""Price of the last trade."""
|
|
147
|
+
|
|
148
|
+
size: Optional[int] = None
|
|
149
|
+
r"""Size of the last trade."""
|
|
150
|
+
|
|
151
|
+
timestamp: Optional[int] = None
|
|
152
|
+
r"""Timestamp of the last trade as an integer from the upstream provider."""
|
|
153
|
+
|
|
154
|
+
trade_id: Annotated[Optional[str], pydantic.Field(alias="tradeId")] = None
|
|
155
|
+
r"""Identifier of the last trade."""
|
|
156
|
+
|
|
157
|
+
@model_serializer(mode="wrap")
|
|
158
|
+
def serialize_model(self, handler):
|
|
159
|
+
optional_fields = set(
|
|
160
|
+
["conditions", "exchangeId", "price", "size", "timestamp", "tradeId"]
|
|
161
|
+
)
|
|
162
|
+
serialized = handler(self)
|
|
163
|
+
m = {}
|
|
164
|
+
|
|
165
|
+
for n, f in type(self).model_fields.items():
|
|
166
|
+
k = f.alias or n
|
|
167
|
+
val = serialized.get(k, serialized.get(n))
|
|
168
|
+
|
|
169
|
+
if val != UNSET_SENTINEL:
|
|
170
|
+
if val is not None or k not in optional_fields:
|
|
171
|
+
m[k] = val
|
|
172
|
+
|
|
173
|
+
return m
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
class MinTypedDict(TypedDict):
|
|
177
|
+
r"""Latest minute aggregate"""
|
|
178
|
+
|
|
179
|
+
accumulated_volume: NotRequired[int]
|
|
180
|
+
r"""Accumulated volume for the trading day up to this minute bar."""
|
|
181
|
+
close: NotRequired[float]
|
|
182
|
+
r"""Close price of the latest minute bar."""
|
|
183
|
+
high: NotRequired[float]
|
|
184
|
+
r"""High price of the latest minute bar."""
|
|
185
|
+
low: NotRequired[float]
|
|
186
|
+
r"""Low price of the latest minute bar."""
|
|
187
|
+
number_of_trades: NotRequired[int]
|
|
188
|
+
r"""Number of trades in the latest minute bar."""
|
|
189
|
+
open: NotRequired[float]
|
|
190
|
+
r"""Open price of the latest minute bar."""
|
|
191
|
+
timestamp: NotRequired[int]
|
|
192
|
+
r"""Timestamp of the latest minute bar as an integer from the upstream provider."""
|
|
193
|
+
volume: NotRequired[int]
|
|
194
|
+
r"""Trading volume in the latest minute bar."""
|
|
195
|
+
vwap: NotRequired[float]
|
|
196
|
+
r"""Volume-weighted average price of the latest minute bar."""
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
class Min(BaseModel):
|
|
200
|
+
r"""Latest minute aggregate"""
|
|
201
|
+
|
|
202
|
+
accumulated_volume: Annotated[
|
|
203
|
+
Optional[int], pydantic.Field(alias="accumulatedVolume")
|
|
204
|
+
] = None
|
|
205
|
+
r"""Accumulated volume for the trading day up to this minute bar."""
|
|
206
|
+
|
|
207
|
+
close: Optional[float] = None
|
|
208
|
+
r"""Close price of the latest minute bar."""
|
|
209
|
+
|
|
210
|
+
high: Optional[float] = None
|
|
211
|
+
r"""High price of the latest minute bar."""
|
|
212
|
+
|
|
213
|
+
low: Optional[float] = None
|
|
214
|
+
r"""Low price of the latest minute bar."""
|
|
215
|
+
|
|
216
|
+
number_of_trades: Annotated[
|
|
217
|
+
Optional[int], pydantic.Field(alias="numberOfTrades")
|
|
218
|
+
] = None
|
|
219
|
+
r"""Number of trades in the latest minute bar."""
|
|
220
|
+
|
|
221
|
+
open: Optional[float] = None
|
|
222
|
+
r"""Open price of the latest minute bar."""
|
|
223
|
+
|
|
224
|
+
timestamp: Optional[int] = None
|
|
225
|
+
r"""Timestamp of the latest minute bar as an integer from the upstream provider."""
|
|
226
|
+
|
|
227
|
+
volume: Optional[int] = None
|
|
228
|
+
r"""Trading volume in the latest minute bar."""
|
|
229
|
+
|
|
230
|
+
vwap: Optional[float] = None
|
|
231
|
+
r"""Volume-weighted average price of the latest minute bar."""
|
|
232
|
+
|
|
233
|
+
@model_serializer(mode="wrap")
|
|
234
|
+
def serialize_model(self, handler):
|
|
235
|
+
optional_fields = set(
|
|
236
|
+
[
|
|
237
|
+
"accumulatedVolume",
|
|
238
|
+
"close",
|
|
239
|
+
"high",
|
|
240
|
+
"low",
|
|
241
|
+
"numberOfTrades",
|
|
242
|
+
"open",
|
|
243
|
+
"timestamp",
|
|
244
|
+
"volume",
|
|
245
|
+
"vwap",
|
|
246
|
+
]
|
|
247
|
+
)
|
|
248
|
+
serialized = handler(self)
|
|
249
|
+
m = {}
|
|
250
|
+
|
|
251
|
+
for n, f in type(self).model_fields.items():
|
|
252
|
+
k = f.alias or n
|
|
253
|
+
val = serialized.get(k, serialized.get(n))
|
|
254
|
+
|
|
255
|
+
if val != UNSET_SENTINEL:
|
|
256
|
+
if val is not None or k not in optional_fields:
|
|
257
|
+
m[k] = val
|
|
258
|
+
|
|
259
|
+
return m
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
class PrevDayTypedDict(TypedDict):
|
|
263
|
+
r"""Previous day aggregate"""
|
|
264
|
+
|
|
265
|
+
close: NotRequired[float]
|
|
266
|
+
r"""Close price of the previous trading day."""
|
|
267
|
+
high: NotRequired[float]
|
|
268
|
+
r"""High price of the previous trading day."""
|
|
269
|
+
low: NotRequired[float]
|
|
270
|
+
r"""Low price of the previous trading day."""
|
|
271
|
+
open: NotRequired[float]
|
|
272
|
+
r"""Open price of the previous trading day."""
|
|
273
|
+
volume: NotRequired[int]
|
|
274
|
+
r"""Trading volume of the previous trading day."""
|
|
275
|
+
vwap: NotRequired[float]
|
|
276
|
+
r"""Volume-weighted average price of the previous trading day."""
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
class PrevDay(BaseModel):
|
|
280
|
+
r"""Previous day aggregate"""
|
|
281
|
+
|
|
282
|
+
close: Optional[float] = None
|
|
283
|
+
r"""Close price of the previous trading day."""
|
|
284
|
+
|
|
285
|
+
high: Optional[float] = None
|
|
286
|
+
r"""High price of the previous trading day."""
|
|
287
|
+
|
|
288
|
+
low: Optional[float] = None
|
|
289
|
+
r"""Low price of the previous trading day."""
|
|
290
|
+
|
|
291
|
+
open: Optional[float] = None
|
|
292
|
+
r"""Open price of the previous trading day."""
|
|
293
|
+
|
|
294
|
+
volume: Optional[int] = None
|
|
295
|
+
r"""Trading volume of the previous trading day."""
|
|
296
|
+
|
|
297
|
+
vwap: Optional[float] = None
|
|
298
|
+
r"""Volume-weighted average price of the previous trading day."""
|
|
299
|
+
|
|
300
|
+
@model_serializer(mode="wrap")
|
|
301
|
+
def serialize_model(self, handler):
|
|
302
|
+
optional_fields = set(["close", "high", "low", "open", "volume", "vwap"])
|
|
303
|
+
serialized = handler(self)
|
|
304
|
+
m = {}
|
|
305
|
+
|
|
306
|
+
for n, f in type(self).model_fields.items():
|
|
307
|
+
k = f.alias or n
|
|
308
|
+
val = serialized.get(k, serialized.get(n))
|
|
309
|
+
|
|
310
|
+
if val != UNSET_SENTINEL:
|
|
311
|
+
if val is not None or k not in optional_fields:
|
|
312
|
+
m[k] = val
|
|
313
|
+
|
|
314
|
+
return m
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
class TickerTypedDict(TypedDict):
|
|
318
|
+
day: NotRequired[DayTypedDict]
|
|
319
|
+
r"""Current day aggregate"""
|
|
320
|
+
last_quote: NotRequired[LastQuoteTypedDict]
|
|
321
|
+
r"""Last quote information"""
|
|
322
|
+
last_trade: NotRequired[LastTradeTypedDict]
|
|
323
|
+
r"""Last trade information"""
|
|
324
|
+
min: NotRequired[MinTypedDict]
|
|
325
|
+
r"""Latest minute aggregate"""
|
|
326
|
+
prev_day: NotRequired[PrevDayTypedDict]
|
|
327
|
+
r"""Previous day aggregate"""
|
|
328
|
+
ticker: NotRequired[str]
|
|
329
|
+
r"""Ticker symbol"""
|
|
330
|
+
todays_change: NotRequired[float]
|
|
331
|
+
r"""Today's change"""
|
|
332
|
+
todays_change_perc: NotRequired[float]
|
|
333
|
+
r"""Today's change percent"""
|
|
334
|
+
updated: NotRequired[int]
|
|
335
|
+
r"""Last updated timestamp"""
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
class Ticker(BaseModel):
|
|
339
|
+
day: Optional[Day] = None
|
|
340
|
+
r"""Current day aggregate"""
|
|
341
|
+
|
|
342
|
+
last_quote: Annotated[Optional[LastQuote], pydantic.Field(alias="lastQuote")] = None
|
|
343
|
+
r"""Last quote information"""
|
|
344
|
+
|
|
345
|
+
last_trade: Annotated[Optional[LastTrade], pydantic.Field(alias="lastTrade")] = None
|
|
346
|
+
r"""Last trade information"""
|
|
347
|
+
|
|
348
|
+
min: Optional[Min] = None
|
|
349
|
+
r"""Latest minute aggregate"""
|
|
350
|
+
|
|
351
|
+
prev_day: Annotated[Optional[PrevDay], pydantic.Field(alias="prevDay")] = None
|
|
352
|
+
r"""Previous day aggregate"""
|
|
353
|
+
|
|
354
|
+
ticker: Optional[str] = None
|
|
355
|
+
r"""Ticker symbol"""
|
|
356
|
+
|
|
357
|
+
todays_change: Annotated[Optional[float], pydantic.Field(alias="todaysChange")] = (
|
|
358
|
+
None
|
|
359
|
+
)
|
|
360
|
+
r"""Today's change"""
|
|
361
|
+
|
|
362
|
+
todays_change_perc: Annotated[
|
|
363
|
+
Optional[float], pydantic.Field(alias="todaysChangePerc")
|
|
364
|
+
] = None
|
|
365
|
+
r"""Today's change percent"""
|
|
366
|
+
|
|
367
|
+
updated: Optional[int] = None
|
|
368
|
+
r"""Last updated timestamp"""
|
|
369
|
+
|
|
370
|
+
@model_serializer(mode="wrap")
|
|
371
|
+
def serialize_model(self, handler):
|
|
372
|
+
optional_fields = set(
|
|
373
|
+
[
|
|
374
|
+
"day",
|
|
375
|
+
"lastQuote",
|
|
376
|
+
"lastTrade",
|
|
377
|
+
"min",
|
|
378
|
+
"prevDay",
|
|
379
|
+
"ticker",
|
|
380
|
+
"todaysChange",
|
|
381
|
+
"todaysChangePerc",
|
|
382
|
+
"updated",
|
|
383
|
+
]
|
|
384
|
+
)
|
|
385
|
+
serialized = handler(self)
|
|
386
|
+
m = {}
|
|
387
|
+
|
|
388
|
+
for n, f in type(self).model_fields.items():
|
|
389
|
+
k = f.alias or n
|
|
390
|
+
val = serialized.get(k, serialized.get(n))
|
|
391
|
+
|
|
392
|
+
if val != UNSET_SENTINEL:
|
|
393
|
+
if val is not None or k not in optional_fields:
|
|
394
|
+
m[k] = val
|
|
395
|
+
|
|
396
|
+
return m
|
|
397
|
+
|
|
398
|
+
|
|
399
|
+
class StockSnapshotsResponseTypedDict(TypedDict):
|
|
400
|
+
r"""Market snapshots for a set of stock tickers, including the current day aggregate, last quote, last trade, latest minute aggregate and previous day aggregate."""
|
|
401
|
+
|
|
402
|
+
count: NotRequired[int]
|
|
403
|
+
r"""Number of tickers returned"""
|
|
404
|
+
status: NotRequired[str]
|
|
405
|
+
r"""Status string from the upstream data provider — typically `OK` for a successful response. Treat any other value as an error indicator alongside the HTTP status code."""
|
|
406
|
+
tickers: NotRequired[List[TickerTypedDict]]
|
|
407
|
+
r"""Array of ticker snapshots"""
|
|
408
|
+
|
|
409
|
+
|
|
410
|
+
class StockSnapshotsResponse(BaseModel):
|
|
411
|
+
r"""Market snapshots for a set of stock tickers, including the current day aggregate, last quote, last trade, latest minute aggregate and previous day aggregate."""
|
|
412
|
+
|
|
413
|
+
count: Optional[int] = None
|
|
414
|
+
r"""Number of tickers returned"""
|
|
415
|
+
|
|
416
|
+
status: Optional[str] = None
|
|
417
|
+
r"""Status string from the upstream data provider — typically `OK` for a successful response. Treat any other value as an error indicator alongside the HTTP status code."""
|
|
418
|
+
|
|
419
|
+
tickers: Optional[List[Ticker]] = None
|
|
420
|
+
r"""Array of ticker snapshots"""
|
|
421
|
+
|
|
422
|
+
@model_serializer(mode="wrap")
|
|
423
|
+
def serialize_model(self, handler):
|
|
424
|
+
optional_fields = set(["count", "status", "tickers"])
|
|
425
|
+
serialized = handler(self)
|
|
426
|
+
m = {}
|
|
427
|
+
|
|
428
|
+
for n, f in type(self).model_fields.items():
|
|
429
|
+
k = f.alias or n
|
|
430
|
+
val = serialized.get(k, serialized.get(n))
|
|
431
|
+
|
|
432
|
+
if val != UNSET_SENTINEL:
|
|
433
|
+
if val is not None or k not in optional_fields:
|
|
434
|
+
m[k] = val
|
|
435
|
+
|
|
436
|
+
return m
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
try:
|
|
440
|
+
LastQuote.model_rebuild()
|
|
441
|
+
except NameError:
|
|
442
|
+
pass
|
|
443
|
+
try:
|
|
444
|
+
LastTrade.model_rebuild()
|
|
445
|
+
except NameError:
|
|
446
|
+
pass
|
|
447
|
+
try:
|
|
448
|
+
Min.model_rebuild()
|
|
449
|
+
except NameError:
|
|
450
|
+
pass
|
|
451
|
+
try:
|
|
452
|
+
Ticker.model_rebuild()
|
|
453
|
+
except NameError:
|
|
454
|
+
pass
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 1ce8dc4aacb1
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from datetime import date
|
|
6
|
+
from enum import Enum
|
|
7
|
+
from finance_dev import models, utils
|
|
8
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
9
|
+
import pydantic
|
|
10
|
+
from pydantic import field_serializer, model_serializer
|
|
11
|
+
from typing import List, Optional
|
|
12
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class AdjustmentType(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
16
|
+
r"""Type of stock split adjustment"""
|
|
17
|
+
|
|
18
|
+
FORWARD_SPLIT = "forward_split"
|
|
19
|
+
REVERSE_SPLIT = "reverse_split"
|
|
20
|
+
STOCK_DIVIDEND = "stock_dividend"
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class StockSplitsResponseResultTypedDict(TypedDict):
|
|
24
|
+
execution_date: date
|
|
25
|
+
r"""Execution date of the split in YYYY-MM-DD format"""
|
|
26
|
+
split_from: float
|
|
27
|
+
r"""The pre-split factor in the split ratio"""
|
|
28
|
+
split_to: float
|
|
29
|
+
r"""The post-split factor in the split ratio"""
|
|
30
|
+
ticker: str
|
|
31
|
+
r"""Stock ticker symbol, such as AAPL. Use the exact ticker for the company you want to research."""
|
|
32
|
+
adjustment_type: NotRequired[AdjustmentType]
|
|
33
|
+
r"""Type of stock split adjustment"""
|
|
34
|
+
historical_adjustment_factor: NotRequired[float]
|
|
35
|
+
r"""Factor used to adjust historical prices"""
|
|
36
|
+
id: NotRequired[str]
|
|
37
|
+
r"""Stock split event identifier"""
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class StockSplitsResponseResult(BaseModel):
|
|
41
|
+
execution_date: Annotated[date, pydantic.Field(alias="executionDate")]
|
|
42
|
+
r"""Execution date of the split in YYYY-MM-DD format"""
|
|
43
|
+
|
|
44
|
+
split_from: Annotated[float, pydantic.Field(alias="splitFrom")]
|
|
45
|
+
r"""The pre-split factor in the split ratio"""
|
|
46
|
+
|
|
47
|
+
split_to: Annotated[float, pydantic.Field(alias="splitTo")]
|
|
48
|
+
r"""The post-split factor in the split ratio"""
|
|
49
|
+
|
|
50
|
+
ticker: str
|
|
51
|
+
r"""Stock ticker symbol, such as AAPL. Use the exact ticker for the company you want to research."""
|
|
52
|
+
|
|
53
|
+
adjustment_type: Annotated[
|
|
54
|
+
Optional[AdjustmentType], pydantic.Field(alias="adjustmentType")
|
|
55
|
+
] = None
|
|
56
|
+
r"""Type of stock split adjustment"""
|
|
57
|
+
|
|
58
|
+
historical_adjustment_factor: Annotated[
|
|
59
|
+
Optional[float], pydantic.Field(alias="historicalAdjustmentFactor")
|
|
60
|
+
] = None
|
|
61
|
+
r"""Factor used to adjust historical prices"""
|
|
62
|
+
|
|
63
|
+
id: Optional[str] = None
|
|
64
|
+
r"""Stock split event identifier"""
|
|
65
|
+
|
|
66
|
+
@field_serializer("adjustment_type")
|
|
67
|
+
def serialize_adjustment_type(self, value):
|
|
68
|
+
if isinstance(value, str):
|
|
69
|
+
try:
|
|
70
|
+
return models.AdjustmentType(value)
|
|
71
|
+
except ValueError:
|
|
72
|
+
return value
|
|
73
|
+
return value
|
|
74
|
+
|
|
75
|
+
@model_serializer(mode="wrap")
|
|
76
|
+
def serialize_model(self, handler):
|
|
77
|
+
optional_fields = set(["adjustmentType", "historicalAdjustmentFactor", "id"])
|
|
78
|
+
serialized = handler(self)
|
|
79
|
+
m = {}
|
|
80
|
+
|
|
81
|
+
for n, f in type(self).model_fields.items():
|
|
82
|
+
k = f.alias or n
|
|
83
|
+
val = serialized.get(k, serialized.get(n))
|
|
84
|
+
|
|
85
|
+
if val != UNSET_SENTINEL:
|
|
86
|
+
if val is not None or k not in optional_fields:
|
|
87
|
+
m[k] = val
|
|
88
|
+
|
|
89
|
+
return m
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
class StockSplitsResponseTypedDict(TypedDict):
|
|
93
|
+
r"""Stock split events with ratio and adjustment details, as returned by the upstream data provider."""
|
|
94
|
+
|
|
95
|
+
results: List[StockSplitsResponseResultTypedDict]
|
|
96
|
+
r"""Array of stock split events"""
|
|
97
|
+
status: str
|
|
98
|
+
r"""Status string from the upstream data provider — typically `OK` for a successful response. Treat any other value as an error indicator alongside the HTTP status code."""
|
|
99
|
+
next_url: NotRequired[str]
|
|
100
|
+
r"""Pagination URL for the next page, when available"""
|
|
101
|
+
request_id: NotRequired[str]
|
|
102
|
+
r"""Provider request identifier, when available"""
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
class StockSplitsResponse(BaseModel):
|
|
106
|
+
r"""Stock split events with ratio and adjustment details, as returned by the upstream data provider."""
|
|
107
|
+
|
|
108
|
+
results: List[StockSplitsResponseResult]
|
|
109
|
+
r"""Array of stock split events"""
|
|
110
|
+
|
|
111
|
+
status: str
|
|
112
|
+
r"""Status string from the upstream data provider — typically `OK` for a successful response. Treat any other value as an error indicator alongside the HTTP status code."""
|
|
113
|
+
|
|
114
|
+
next_url: Annotated[Optional[str], pydantic.Field(alias="nextUrl")] = None
|
|
115
|
+
r"""Pagination URL for the next page, when available"""
|
|
116
|
+
|
|
117
|
+
request_id: Annotated[Optional[str], pydantic.Field(alias="requestId")] = None
|
|
118
|
+
r"""Provider request identifier, when available"""
|
|
119
|
+
|
|
120
|
+
@model_serializer(mode="wrap")
|
|
121
|
+
def serialize_model(self, handler):
|
|
122
|
+
optional_fields = set(["nextUrl", "requestId"])
|
|
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
|
+
try:
|
|
138
|
+
StockSplitsResponseResult.model_rebuild()
|
|
139
|
+
except NameError:
|
|
140
|
+
pass
|
|
141
|
+
try:
|
|
142
|
+
StockSplitsResponse.model_rebuild()
|
|
143
|
+
except NameError:
|
|
144
|
+
pass
|