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,128 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 38b9b29bd578
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .newstypeenum import NewsTypeEnum
|
|
6
|
+
from datetime import datetime
|
|
7
|
+
from finance_dev import models
|
|
8
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
9
|
+
from pydantic import field_serializer, model_serializer
|
|
10
|
+
from typing import List, Optional
|
|
11
|
+
from typing_extensions import NotRequired, TypedDict
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class NewsTypedDict(TypedDict):
|
|
15
|
+
action: NotRequired[str]
|
|
16
|
+
r"""News action type (typically empty)"""
|
|
17
|
+
authors: NotRequired[List[str]]
|
|
18
|
+
r"""Authors of the news item"""
|
|
19
|
+
body: NotRequired[str]
|
|
20
|
+
r"""Full body of the news (typically empty with default display output)"""
|
|
21
|
+
id: NotRequired[int]
|
|
22
|
+
r"""Unique news item ID"""
|
|
23
|
+
news_type: NotRequired[NewsTypeEnum]
|
|
24
|
+
r"""Source category of the news item. Pick one:
|
|
25
|
+
- `news` — Editorial news articles from journalists and news services.
|
|
26
|
+
- `press_release` — Official press releases issued directly by companies.
|
|
27
|
+
"""
|
|
28
|
+
symbols: NotRequired[List[str]]
|
|
29
|
+
r"""Related stock symbols"""
|
|
30
|
+
timestamp: NotRequired[datetime]
|
|
31
|
+
r"""Publication timestamp in ISO 8601 format"""
|
|
32
|
+
title: NotRequired[str]
|
|
33
|
+
r"""News headline"""
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class News(BaseModel):
|
|
37
|
+
action: Optional[str] = None
|
|
38
|
+
r"""News action type (typically empty)"""
|
|
39
|
+
|
|
40
|
+
authors: Optional[List[str]] = None
|
|
41
|
+
r"""Authors of the news item"""
|
|
42
|
+
|
|
43
|
+
body: Optional[str] = None
|
|
44
|
+
r"""Full body of the news (typically empty with default display output)"""
|
|
45
|
+
|
|
46
|
+
id: Optional[int] = None
|
|
47
|
+
r"""Unique news item ID"""
|
|
48
|
+
|
|
49
|
+
news_type: Optional[NewsTypeEnum] = None
|
|
50
|
+
r"""Source category of the news item. Pick one:
|
|
51
|
+
- `news` — Editorial news articles from journalists and news services.
|
|
52
|
+
- `press_release` — Official press releases issued directly by companies.
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
symbols: Optional[List[str]] = None
|
|
56
|
+
r"""Related stock symbols"""
|
|
57
|
+
|
|
58
|
+
timestamp: Optional[datetime] = None
|
|
59
|
+
r"""Publication timestamp in ISO 8601 format"""
|
|
60
|
+
|
|
61
|
+
title: Optional[str] = None
|
|
62
|
+
r"""News headline"""
|
|
63
|
+
|
|
64
|
+
@field_serializer("news_type")
|
|
65
|
+
def serialize_news_type(self, value):
|
|
66
|
+
if isinstance(value, str):
|
|
67
|
+
try:
|
|
68
|
+
return models.NewsTypeEnum(value)
|
|
69
|
+
except ValueError:
|
|
70
|
+
return value
|
|
71
|
+
return value
|
|
72
|
+
|
|
73
|
+
@model_serializer(mode="wrap")
|
|
74
|
+
def serialize_model(self, handler):
|
|
75
|
+
optional_fields = set(
|
|
76
|
+
[
|
|
77
|
+
"action",
|
|
78
|
+
"authors",
|
|
79
|
+
"body",
|
|
80
|
+
"id",
|
|
81
|
+
"news_type",
|
|
82
|
+
"symbols",
|
|
83
|
+
"timestamp",
|
|
84
|
+
"title",
|
|
85
|
+
]
|
|
86
|
+
)
|
|
87
|
+
serialized = handler(self)
|
|
88
|
+
m = {}
|
|
89
|
+
|
|
90
|
+
for n, f in type(self).model_fields.items():
|
|
91
|
+
k = f.alias or n
|
|
92
|
+
val = serialized.get(k, serialized.get(n))
|
|
93
|
+
|
|
94
|
+
if val != UNSET_SENTINEL:
|
|
95
|
+
if val is not None or k not in optional_fields:
|
|
96
|
+
m[k] = val
|
|
97
|
+
|
|
98
|
+
return m
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
class NewsListResponseTypedDict(TypedDict):
|
|
102
|
+
r"""Response containing a list of news items."""
|
|
103
|
+
|
|
104
|
+
news: NotRequired[List[NewsTypedDict]]
|
|
105
|
+
r"""Array of news items and press releases, sorted by timestamp (newest first)"""
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
class NewsListResponse(BaseModel):
|
|
109
|
+
r"""Response containing a list of news items."""
|
|
110
|
+
|
|
111
|
+
news: Optional[List[News]] = None
|
|
112
|
+
r"""Array of news items and press releases, sorted by timestamp (newest first)"""
|
|
113
|
+
|
|
114
|
+
@model_serializer(mode="wrap")
|
|
115
|
+
def serialize_model(self, handler):
|
|
116
|
+
optional_fields = set(["news"])
|
|
117
|
+
serialized = handler(self)
|
|
118
|
+
m = {}
|
|
119
|
+
|
|
120
|
+
for n, f in type(self).model_fields.items():
|
|
121
|
+
k = f.alias or n
|
|
122
|
+
val = serialized.get(k, serialized.get(n))
|
|
123
|
+
|
|
124
|
+
if val != UNSET_SENTINEL:
|
|
125
|
+
if val is not None or k not in optional_fields:
|
|
126
|
+
m[k] = val
|
|
127
|
+
|
|
128
|
+
return m
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 703052ddd977
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
6
|
+
import pydantic
|
|
7
|
+
from pydantic import model_serializer
|
|
8
|
+
from typing import Optional
|
|
9
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class BuzzTypedDict(TypedDict):
|
|
13
|
+
r"""News buzz metrics for the company."""
|
|
14
|
+
|
|
15
|
+
articles_in_last_week: NotRequired[int]
|
|
16
|
+
r"""Number of news articles in the last week."""
|
|
17
|
+
buzz: NotRequired[float]
|
|
18
|
+
r"""Buzz score for the company."""
|
|
19
|
+
weekly_average: NotRequired[float]
|
|
20
|
+
r"""Weekly average number of news articles."""
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class Buzz(BaseModel):
|
|
24
|
+
r"""News buzz metrics for the company."""
|
|
25
|
+
|
|
26
|
+
articles_in_last_week: Annotated[
|
|
27
|
+
Optional[int], pydantic.Field(alias="articlesInLastWeek")
|
|
28
|
+
] = None
|
|
29
|
+
r"""Number of news articles in the last week."""
|
|
30
|
+
|
|
31
|
+
buzz: Optional[float] = None
|
|
32
|
+
r"""Buzz score for the company."""
|
|
33
|
+
|
|
34
|
+
weekly_average: Annotated[
|
|
35
|
+
Optional[float], pydantic.Field(alias="weeklyAverage")
|
|
36
|
+
] = None
|
|
37
|
+
r"""Weekly average number of news articles."""
|
|
38
|
+
|
|
39
|
+
@model_serializer(mode="wrap")
|
|
40
|
+
def serialize_model(self, handler):
|
|
41
|
+
optional_fields = set(["articlesInLastWeek", "buzz", "weeklyAverage"])
|
|
42
|
+
serialized = handler(self)
|
|
43
|
+
m = {}
|
|
44
|
+
|
|
45
|
+
for n, f in type(self).model_fields.items():
|
|
46
|
+
k = f.alias or n
|
|
47
|
+
val = serialized.get(k, serialized.get(n))
|
|
48
|
+
|
|
49
|
+
if val != UNSET_SENTINEL:
|
|
50
|
+
if val is not None or k not in optional_fields:
|
|
51
|
+
m[k] = val
|
|
52
|
+
|
|
53
|
+
return m
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class SentimentTypedDict(TypedDict):
|
|
57
|
+
r"""News sentiment breakdown."""
|
|
58
|
+
|
|
59
|
+
bearish_percent: NotRequired[int]
|
|
60
|
+
r"""Bearish sentiment percent as reported by the provider."""
|
|
61
|
+
bullish_percent: NotRequired[int]
|
|
62
|
+
r"""Bullish sentiment percent as reported by the provider."""
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class Sentiment(BaseModel):
|
|
66
|
+
r"""News sentiment breakdown."""
|
|
67
|
+
|
|
68
|
+
bearish_percent: Annotated[
|
|
69
|
+
Optional[int], pydantic.Field(alias="bearishPercent")
|
|
70
|
+
] = None
|
|
71
|
+
r"""Bearish sentiment percent as reported by the provider."""
|
|
72
|
+
|
|
73
|
+
bullish_percent: Annotated[
|
|
74
|
+
Optional[int], pydantic.Field(alias="bullishPercent")
|
|
75
|
+
] = None
|
|
76
|
+
r"""Bullish sentiment percent as reported by the provider."""
|
|
77
|
+
|
|
78
|
+
@model_serializer(mode="wrap")
|
|
79
|
+
def serialize_model(self, handler):
|
|
80
|
+
optional_fields = set(["bearishPercent", "bullishPercent"])
|
|
81
|
+
serialized = handler(self)
|
|
82
|
+
m = {}
|
|
83
|
+
|
|
84
|
+
for n, f in type(self).model_fields.items():
|
|
85
|
+
k = f.alias or n
|
|
86
|
+
val = serialized.get(k, serialized.get(n))
|
|
87
|
+
|
|
88
|
+
if val != UNSET_SENTINEL:
|
|
89
|
+
if val is not None or k not in optional_fields:
|
|
90
|
+
m[k] = val
|
|
91
|
+
|
|
92
|
+
return m
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
class NewsSentimentResponseTypedDict(TypedDict):
|
|
96
|
+
r"""News sentiment and buzz metrics for a company from Finnhub."""
|
|
97
|
+
|
|
98
|
+
buzz: NotRequired[BuzzTypedDict]
|
|
99
|
+
r"""News buzz metrics for the company."""
|
|
100
|
+
company_news_score: NotRequired[float]
|
|
101
|
+
r"""News score for the company."""
|
|
102
|
+
sector_average_bullish_percent: NotRequired[float]
|
|
103
|
+
r"""Average bullish percent across the company's sector."""
|
|
104
|
+
sector_average_news_score: NotRequired[float]
|
|
105
|
+
r"""Average news score across the company's sector."""
|
|
106
|
+
sentiment: NotRequired[SentimentTypedDict]
|
|
107
|
+
r"""News sentiment breakdown."""
|
|
108
|
+
symbol: NotRequired[str]
|
|
109
|
+
r"""Ticker symbol the sentiment applies to."""
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
class NewsSentimentResponse(BaseModel):
|
|
113
|
+
r"""News sentiment and buzz metrics for a company from Finnhub."""
|
|
114
|
+
|
|
115
|
+
buzz: Optional[Buzz] = None
|
|
116
|
+
r"""News buzz metrics for the company."""
|
|
117
|
+
|
|
118
|
+
company_news_score: Annotated[
|
|
119
|
+
Optional[float], pydantic.Field(alias="companyNewsScore")
|
|
120
|
+
] = None
|
|
121
|
+
r"""News score for the company."""
|
|
122
|
+
|
|
123
|
+
sector_average_bullish_percent: Annotated[
|
|
124
|
+
Optional[float], pydantic.Field(alias="sectorAverageBullishPercent")
|
|
125
|
+
] = None
|
|
126
|
+
r"""Average bullish percent across the company's sector."""
|
|
127
|
+
|
|
128
|
+
sector_average_news_score: Annotated[
|
|
129
|
+
Optional[float], pydantic.Field(alias="sectorAverageNewsScore")
|
|
130
|
+
] = None
|
|
131
|
+
r"""Average news score across the company's sector."""
|
|
132
|
+
|
|
133
|
+
sentiment: Optional[Sentiment] = None
|
|
134
|
+
r"""News sentiment breakdown."""
|
|
135
|
+
|
|
136
|
+
symbol: Optional[str] = None
|
|
137
|
+
r"""Ticker symbol the sentiment applies to."""
|
|
138
|
+
|
|
139
|
+
@model_serializer(mode="wrap")
|
|
140
|
+
def serialize_model(self, handler):
|
|
141
|
+
optional_fields = set(
|
|
142
|
+
[
|
|
143
|
+
"buzz",
|
|
144
|
+
"companyNewsScore",
|
|
145
|
+
"sectorAverageBullishPercent",
|
|
146
|
+
"sectorAverageNewsScore",
|
|
147
|
+
"sentiment",
|
|
148
|
+
"symbol",
|
|
149
|
+
]
|
|
150
|
+
)
|
|
151
|
+
serialized = handler(self)
|
|
152
|
+
m = {}
|
|
153
|
+
|
|
154
|
+
for n, f in type(self).model_fields.items():
|
|
155
|
+
k = f.alias or n
|
|
156
|
+
val = serialized.get(k, serialized.get(n))
|
|
157
|
+
|
|
158
|
+
if val != UNSET_SENTINEL:
|
|
159
|
+
if val is not None or k not in optional_fields:
|
|
160
|
+
m[k] = val
|
|
161
|
+
|
|
162
|
+
return m
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
try:
|
|
166
|
+
Buzz.model_rebuild()
|
|
167
|
+
except NameError:
|
|
168
|
+
pass
|
|
169
|
+
try:
|
|
170
|
+
Sentiment.model_rebuild()
|
|
171
|
+
except NameError:
|
|
172
|
+
pass
|
|
173
|
+
try:
|
|
174
|
+
NewsSentimentResponse.model_rebuild()
|
|
175
|
+
except NameError:
|
|
176
|
+
pass
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 731f9b736060
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from enum import Enum
|
|
6
|
+
from finance_dev import utils
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class NewsTypeEnum(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
10
|
+
r"""Source category of the news item. Pick one:
|
|
11
|
+
- `news` — Editorial news articles from journalists and news services.
|
|
12
|
+
- `press_release` — Official press releases issued directly by companies.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
NEWS = "news"
|
|
16
|
+
PRESS_RELEASE = "press_release"
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 07272340d95c
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .optioncontractsnapshotrow import (
|
|
6
|
+
OptionContractSnapshotRow,
|
|
7
|
+
OptionContractSnapshotRowTypedDict,
|
|
8
|
+
)
|
|
9
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
10
|
+
import pydantic
|
|
11
|
+
from pydantic import model_serializer
|
|
12
|
+
from typing import List, Optional
|
|
13
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class OptionChainSnapshotResponseTypedDict(TypedDict):
|
|
17
|
+
r"""Paginated option chain snapshot for an underlying (`OptionChainSnapshotResponse`)."""
|
|
18
|
+
|
|
19
|
+
next_url: NotRequired[str]
|
|
20
|
+
r"""URL for the next page of results (masked to this API); omitted when there is no next page."""
|
|
21
|
+
request_id: NotRequired[str]
|
|
22
|
+
r"""Request identifier from upstream data."""
|
|
23
|
+
results: NotRequired[List[OptionContractSnapshotRowTypedDict]]
|
|
24
|
+
r"""Option contract rows for the underlying, subject to filters and pagination."""
|
|
25
|
+
status: NotRequired[str]
|
|
26
|
+
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."""
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class OptionChainSnapshotResponse(BaseModel):
|
|
30
|
+
r"""Paginated option chain snapshot for an underlying (`OptionChainSnapshotResponse`)."""
|
|
31
|
+
|
|
32
|
+
next_url: Annotated[Optional[str], pydantic.Field(alias="nextUrl")] = None
|
|
33
|
+
r"""URL for the next page of results (masked to this API); omitted when there is no next page."""
|
|
34
|
+
|
|
35
|
+
request_id: Annotated[Optional[str], pydantic.Field(alias="requestId")] = None
|
|
36
|
+
r"""Request identifier from upstream data."""
|
|
37
|
+
|
|
38
|
+
results: Optional[List[OptionContractSnapshotRow]] = None
|
|
39
|
+
r"""Option contract rows for the underlying, subject to filters and pagination."""
|
|
40
|
+
|
|
41
|
+
status: Optional[str] = None
|
|
42
|
+
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."""
|
|
43
|
+
|
|
44
|
+
@model_serializer(mode="wrap")
|
|
45
|
+
def serialize_model(self, handler):
|
|
46
|
+
optional_fields = set(["nextUrl", "requestId", "results", "status"])
|
|
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
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
try:
|
|
62
|
+
OptionChainSnapshotResponse.model_rebuild()
|
|
63
|
+
except NameError:
|
|
64
|
+
pass
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 60e00dbfd057
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .optioncontractsnapshotrow import (
|
|
6
|
+
OptionContractSnapshotRow,
|
|
7
|
+
OptionContractSnapshotRowTypedDict,
|
|
8
|
+
)
|
|
9
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
10
|
+
import pydantic
|
|
11
|
+
from pydantic import model_serializer
|
|
12
|
+
from typing import Optional
|
|
13
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class OptionContractSnapshotResponseTypedDict(TypedDict):
|
|
17
|
+
r"""Single option contract snapshot (`OptionContractSnapshotResponse`). Responses may be cached for about five minutes."""
|
|
18
|
+
|
|
19
|
+
next_url: NotRequired[str]
|
|
20
|
+
r"""Pagination URL when applicable; omitted when not used."""
|
|
21
|
+
request_id: NotRequired[str]
|
|
22
|
+
r"""Request identifier from upstream data."""
|
|
23
|
+
results: NotRequired[OptionContractSnapshotRowTypedDict]
|
|
24
|
+
r"""One option contract row in a snapshot response (`OptionContractSnapshotDataDTO`). Optional fields are omitted when absent."""
|
|
25
|
+
status: NotRequired[str]
|
|
26
|
+
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."""
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class OptionContractSnapshotResponse(BaseModel):
|
|
30
|
+
r"""Single option contract snapshot (`OptionContractSnapshotResponse`). Responses may be cached for about five minutes."""
|
|
31
|
+
|
|
32
|
+
next_url: Annotated[Optional[str], pydantic.Field(alias="nextUrl")] = None
|
|
33
|
+
r"""Pagination URL when applicable; omitted when not used."""
|
|
34
|
+
|
|
35
|
+
request_id: Annotated[Optional[str], pydantic.Field(alias="requestId")] = None
|
|
36
|
+
r"""Request identifier from upstream data."""
|
|
37
|
+
|
|
38
|
+
results: Optional[OptionContractSnapshotRow] = None
|
|
39
|
+
r"""One option contract row in a snapshot response (`OptionContractSnapshotDataDTO`). Optional fields are omitted when absent."""
|
|
40
|
+
|
|
41
|
+
status: Optional[str] = None
|
|
42
|
+
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."""
|
|
43
|
+
|
|
44
|
+
@model_serializer(mode="wrap")
|
|
45
|
+
def serialize_model(self, handler):
|
|
46
|
+
optional_fields = set(["nextUrl", "requestId", "results", "status"])
|
|
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
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
try:
|
|
62
|
+
OptionContractSnapshotResponse.model_rebuild()
|
|
63
|
+
except NameError:
|
|
64
|
+
pass
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 3d2cb4bcc082
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .optionsnapshotcontractdetails import (
|
|
6
|
+
OptionSnapshotContractDetails,
|
|
7
|
+
OptionSnapshotContractDetailsTypedDict,
|
|
8
|
+
)
|
|
9
|
+
from .optionsnapshotdaybar import OptionSnapshotDayBar, OptionSnapshotDayBarTypedDict
|
|
10
|
+
from .optionsnapshotgreeks import OptionSnapshotGreeks, OptionSnapshotGreeksTypedDict
|
|
11
|
+
from .optionsnapshotlastquote import (
|
|
12
|
+
OptionSnapshotLastQuote,
|
|
13
|
+
OptionSnapshotLastQuoteTypedDict,
|
|
14
|
+
)
|
|
15
|
+
from .optionsnapshotlasttrade import (
|
|
16
|
+
OptionSnapshotLastTrade,
|
|
17
|
+
OptionSnapshotLastTradeTypedDict,
|
|
18
|
+
)
|
|
19
|
+
from .optionsnapshotunderlying import (
|
|
20
|
+
OptionSnapshotUnderlying,
|
|
21
|
+
OptionSnapshotUnderlyingTypedDict,
|
|
22
|
+
)
|
|
23
|
+
from finance_dev.types import (
|
|
24
|
+
BaseModel,
|
|
25
|
+
Nullable,
|
|
26
|
+
OptionalNullable,
|
|
27
|
+
UNSET,
|
|
28
|
+
UNSET_SENTINEL,
|
|
29
|
+
)
|
|
30
|
+
import pydantic
|
|
31
|
+
from pydantic import model_serializer
|
|
32
|
+
from typing import Optional
|
|
33
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class OptionContractSnapshotRowTypedDict(TypedDict):
|
|
37
|
+
r"""One option contract row in a snapshot response (`OptionContractSnapshotDataDTO`). Optional fields are omitted when absent."""
|
|
38
|
+
|
|
39
|
+
break_even_price: NotRequired[Nullable[float]]
|
|
40
|
+
r"""Underlying price at which the contract breaks even"""
|
|
41
|
+
day: NotRequired[OptionSnapshotDayBarTypedDict]
|
|
42
|
+
r"""Most recent daily OHLCV bar for the contract (`OptionSnapshotDayBarDTO`)."""
|
|
43
|
+
details: NotRequired[OptionSnapshotContractDetailsTypedDict]
|
|
44
|
+
r"""Static contract metadata (`OptionSnapshotDetailsDTO`)."""
|
|
45
|
+
fmv: NotRequired[Nullable[float]]
|
|
46
|
+
r"""Fair market value of the contract, when provided"""
|
|
47
|
+
fmv_last_updated: NotRequired[Nullable[int]]
|
|
48
|
+
r"""Timestamp of the last fair market value update, as supplied by the market data provider"""
|
|
49
|
+
greeks: NotRequired[OptionSnapshotGreeksTypedDict]
|
|
50
|
+
r"""Greeks when available (`OptionSnapshotGreeksDTO`)."""
|
|
51
|
+
implied_volatility: NotRequired[Nullable[float]]
|
|
52
|
+
r"""Implied volatility of the contract"""
|
|
53
|
+
last_quote: NotRequired[OptionSnapshotLastQuoteTypedDict]
|
|
54
|
+
r"""Latest NBBO quote when included (`OptionSnapshotLastQuoteDTO`)."""
|
|
55
|
+
last_trade: NotRequired[OptionSnapshotLastTradeTypedDict]
|
|
56
|
+
r"""Latest trade when included (`OptionSnapshotLastTradeDTO`)."""
|
|
57
|
+
open_interest: NotRequired[Nullable[float]]
|
|
58
|
+
r"""Open interest for the contract"""
|
|
59
|
+
underlying_asset: NotRequired[OptionSnapshotUnderlyingTypedDict]
|
|
60
|
+
r"""Underlying equity snapshot (`OptionSnapshotUnderlyingDTO`)."""
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
class OptionContractSnapshotRow(BaseModel):
|
|
64
|
+
r"""One option contract row in a snapshot response (`OptionContractSnapshotDataDTO`). Optional fields are omitted when absent."""
|
|
65
|
+
|
|
66
|
+
break_even_price: Annotated[
|
|
67
|
+
OptionalNullable[float], pydantic.Field(alias="breakEvenPrice")
|
|
68
|
+
] = UNSET
|
|
69
|
+
r"""Underlying price at which the contract breaks even"""
|
|
70
|
+
|
|
71
|
+
day: Optional[OptionSnapshotDayBar] = None
|
|
72
|
+
r"""Most recent daily OHLCV bar for the contract (`OptionSnapshotDayBarDTO`)."""
|
|
73
|
+
|
|
74
|
+
details: Optional[OptionSnapshotContractDetails] = None
|
|
75
|
+
r"""Static contract metadata (`OptionSnapshotDetailsDTO`)."""
|
|
76
|
+
|
|
77
|
+
fmv: OptionalNullable[float] = UNSET
|
|
78
|
+
r"""Fair market value of the contract, when provided"""
|
|
79
|
+
|
|
80
|
+
fmv_last_updated: Annotated[
|
|
81
|
+
OptionalNullable[int], pydantic.Field(alias="fmvLastUpdated")
|
|
82
|
+
] = UNSET
|
|
83
|
+
r"""Timestamp of the last fair market value update, as supplied by the market data provider"""
|
|
84
|
+
|
|
85
|
+
greeks: Optional[OptionSnapshotGreeks] = None
|
|
86
|
+
r"""Greeks when available (`OptionSnapshotGreeksDTO`)."""
|
|
87
|
+
|
|
88
|
+
implied_volatility: Annotated[
|
|
89
|
+
OptionalNullable[float], pydantic.Field(alias="impliedVolatility")
|
|
90
|
+
] = UNSET
|
|
91
|
+
r"""Implied volatility of the contract"""
|
|
92
|
+
|
|
93
|
+
last_quote: Annotated[
|
|
94
|
+
Optional[OptionSnapshotLastQuote], pydantic.Field(alias="lastQuote")
|
|
95
|
+
] = None
|
|
96
|
+
r"""Latest NBBO quote when included (`OptionSnapshotLastQuoteDTO`)."""
|
|
97
|
+
|
|
98
|
+
last_trade: Annotated[
|
|
99
|
+
Optional[OptionSnapshotLastTrade], pydantic.Field(alias="lastTrade")
|
|
100
|
+
] = None
|
|
101
|
+
r"""Latest trade when included (`OptionSnapshotLastTradeDTO`)."""
|
|
102
|
+
|
|
103
|
+
open_interest: Annotated[
|
|
104
|
+
OptionalNullable[float], pydantic.Field(alias="openInterest")
|
|
105
|
+
] = UNSET
|
|
106
|
+
r"""Open interest for the contract"""
|
|
107
|
+
|
|
108
|
+
underlying_asset: Annotated[
|
|
109
|
+
Optional[OptionSnapshotUnderlying], pydantic.Field(alias="underlyingAsset")
|
|
110
|
+
] = None
|
|
111
|
+
r"""Underlying equity snapshot (`OptionSnapshotUnderlyingDTO`)."""
|
|
112
|
+
|
|
113
|
+
@model_serializer(mode="wrap")
|
|
114
|
+
def serialize_model(self, handler):
|
|
115
|
+
optional_fields = set(
|
|
116
|
+
[
|
|
117
|
+
"breakEvenPrice",
|
|
118
|
+
"day",
|
|
119
|
+
"details",
|
|
120
|
+
"fmv",
|
|
121
|
+
"fmvLastUpdated",
|
|
122
|
+
"greeks",
|
|
123
|
+
"impliedVolatility",
|
|
124
|
+
"lastQuote",
|
|
125
|
+
"lastTrade",
|
|
126
|
+
"openInterest",
|
|
127
|
+
"underlyingAsset",
|
|
128
|
+
]
|
|
129
|
+
)
|
|
130
|
+
nullable_fields = set(
|
|
131
|
+
[
|
|
132
|
+
"breakEvenPrice",
|
|
133
|
+
"fmv",
|
|
134
|
+
"fmvLastUpdated",
|
|
135
|
+
"impliedVolatility",
|
|
136
|
+
"openInterest",
|
|
137
|
+
]
|
|
138
|
+
)
|
|
139
|
+
serialized = handler(self)
|
|
140
|
+
m = {}
|
|
141
|
+
|
|
142
|
+
for n, f in type(self).model_fields.items():
|
|
143
|
+
k = f.alias or n
|
|
144
|
+
val = serialized.get(k, serialized.get(n))
|
|
145
|
+
is_nullable_and_explicitly_set = (
|
|
146
|
+
k in nullable_fields
|
|
147
|
+
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
if val != UNSET_SENTINEL:
|
|
151
|
+
if (
|
|
152
|
+
val is not None
|
|
153
|
+
or k not in optional_fields
|
|
154
|
+
or is_nullable_and_explicitly_set
|
|
155
|
+
):
|
|
156
|
+
m[k] = val
|
|
157
|
+
|
|
158
|
+
return m
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
try:
|
|
162
|
+
OptionContractSnapshotRow.model_rebuild()
|
|
163
|
+
except NameError:
|
|
164
|
+
pass
|