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,43 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 69fc27baa900
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
6
|
+
from pydantic import model_serializer
|
|
7
|
+
from typing import List, Optional
|
|
8
|
+
from typing_extensions import NotRequired, TypedDict
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class CreateWatchlistRequestTypedDict(TypedDict):
|
|
12
|
+
r"""Request body for creating a new watchlist."""
|
|
13
|
+
|
|
14
|
+
name: str
|
|
15
|
+
r"""User-facing name for the new watchlist, such as Tech Stocks or Dividend Ideas. Must not match the name of another watchlist the user already has (case-sensitive)."""
|
|
16
|
+
symbols: NotRequired[List[str]]
|
|
17
|
+
r"""Symbols to save in the new watchlist. Use exact uppercase ticker symbols; symbols that can't be resolved are dropped from the saved list and returned in the response's `invalid_symbols` field."""
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class CreateWatchlistRequest(BaseModel):
|
|
21
|
+
r"""Request body for creating a new watchlist."""
|
|
22
|
+
|
|
23
|
+
name: str
|
|
24
|
+
r"""User-facing name for the new watchlist, such as Tech Stocks or Dividend Ideas. Must not match the name of another watchlist the user already has (case-sensitive)."""
|
|
25
|
+
|
|
26
|
+
symbols: Optional[List[str]] = None
|
|
27
|
+
r"""Symbols to save in the new watchlist. Use exact uppercase ticker symbols; symbols that can't be resolved are dropped from the saved list and returned in the response's `invalid_symbols` field."""
|
|
28
|
+
|
|
29
|
+
@model_serializer(mode="wrap")
|
|
30
|
+
def serialize_model(self, handler):
|
|
31
|
+
optional_fields = set(["symbols"])
|
|
32
|
+
serialized = handler(self)
|
|
33
|
+
m = {}
|
|
34
|
+
|
|
35
|
+
for n, f in type(self).model_fields.items():
|
|
36
|
+
k = f.alias or n
|
|
37
|
+
val = serialized.get(k, serialized.get(n))
|
|
38
|
+
|
|
39
|
+
if val != UNSET_SENTINEL:
|
|
40
|
+
if val is not None or k not in optional_fields:
|
|
41
|
+
m[k] = val
|
|
42
|
+
|
|
43
|
+
return m
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 915df4ff8b4f
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .stockohlcbar import StockOhlcBar, StockOhlcBarTypedDict
|
|
6
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
7
|
+
import pydantic
|
|
8
|
+
from pydantic import model_serializer
|
|
9
|
+
from typing import List, Optional
|
|
10
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class DailyMarketSummaryResponseTypedDict(TypedDict):
|
|
14
|
+
r"""Daily OHLC bars for all stocks on a given trading date, as returned by the upstream data provider."""
|
|
15
|
+
|
|
16
|
+
adjusted: NotRequired[bool]
|
|
17
|
+
r"""Whether or not the results are adjusted for splits"""
|
|
18
|
+
query_count: NotRequired[int]
|
|
19
|
+
r"""Number of results returned"""
|
|
20
|
+
request_id: NotRequired[str]
|
|
21
|
+
r"""Unique request ID"""
|
|
22
|
+
results: NotRequired[List[StockOhlcBarTypedDict]]
|
|
23
|
+
r"""Array of grouped daily bars"""
|
|
24
|
+
results_count: NotRequired[int]
|
|
25
|
+
r"""Total number of results"""
|
|
26
|
+
status: NotRequired[str]
|
|
27
|
+
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."""
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class DailyMarketSummaryResponse(BaseModel):
|
|
31
|
+
r"""Daily OHLC bars for all stocks on a given trading date, as returned by the upstream data provider."""
|
|
32
|
+
|
|
33
|
+
adjusted: Optional[bool] = None
|
|
34
|
+
r"""Whether or not the results are adjusted for splits"""
|
|
35
|
+
|
|
36
|
+
query_count: Annotated[Optional[int], pydantic.Field(alias="queryCount")] = None
|
|
37
|
+
r"""Number of results returned"""
|
|
38
|
+
|
|
39
|
+
request_id: Annotated[Optional[str], pydantic.Field(alias="requestId")] = None
|
|
40
|
+
r"""Unique request ID"""
|
|
41
|
+
|
|
42
|
+
results: Optional[List[StockOhlcBar]] = None
|
|
43
|
+
r"""Array of grouped daily bars"""
|
|
44
|
+
|
|
45
|
+
results_count: Annotated[Optional[int], pydantic.Field(alias="resultsCount")] = None
|
|
46
|
+
r"""Total number of results"""
|
|
47
|
+
|
|
48
|
+
status: Optional[str] = None
|
|
49
|
+
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."""
|
|
50
|
+
|
|
51
|
+
@model_serializer(mode="wrap")
|
|
52
|
+
def serialize_model(self, handler):
|
|
53
|
+
optional_fields = set(
|
|
54
|
+
["adjusted", "queryCount", "requestId", "results", "resultsCount", "status"]
|
|
55
|
+
)
|
|
56
|
+
serialized = handler(self)
|
|
57
|
+
m = {}
|
|
58
|
+
|
|
59
|
+
for n, f in type(self).model_fields.items():
|
|
60
|
+
k = f.alias or n
|
|
61
|
+
val = serialized.get(k, serialized.get(n))
|
|
62
|
+
|
|
63
|
+
if val != UNSET_SENTINEL:
|
|
64
|
+
if val is not None or k not in optional_fields:
|
|
65
|
+
m[k] = val
|
|
66
|
+
|
|
67
|
+
return m
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
try:
|
|
71
|
+
DailyMarketSummaryResponse.model_rebuild()
|
|
72
|
+
except NameError:
|
|
73
|
+
pass
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 5a30a5f5c252
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
|
|
6
|
+
from .watchlist import Watchlist, WatchlistTypedDict
|
|
7
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
8
|
+
from finance_dev.utils import FieldMetadata, PathParamMetadata
|
|
9
|
+
import pydantic
|
|
10
|
+
from pydantic import model_serializer
|
|
11
|
+
from typing import Optional
|
|
12
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class DeleteConfigWatchlistByIDRequestTypedDict(TypedDict):
|
|
16
|
+
watchlist_id: int
|
|
17
|
+
r"""The numeric ID of the watchlist to delete. You can get this from a previous list/create/update response (the `id` field in the returned watchlist)."""
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class DeleteConfigWatchlistByIDRequest(BaseModel):
|
|
21
|
+
watchlist_id: Annotated[
|
|
22
|
+
int, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
|
|
23
|
+
]
|
|
24
|
+
r"""The numeric ID of the watchlist to delete. You can get this from a previous list/create/update response (the `id` field in the returned watchlist)."""
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class DeleteConfigWatchlistByIDResponseTypedDict(TypedDict):
|
|
28
|
+
http_meta: HTTPMetadataTypedDict
|
|
29
|
+
watchlist: NotRequired[WatchlistTypedDict]
|
|
30
|
+
r"""Watchlist deleted, or reset to default when it was the user's only remaining watchlist. The response body contains the affected watchlist."""
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class DeleteConfigWatchlistByIDResponse(BaseModel):
|
|
34
|
+
http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
|
|
35
|
+
|
|
36
|
+
watchlist: Optional[Watchlist] = None
|
|
37
|
+
r"""Watchlist deleted, or reset to default when it was the user's only remaining watchlist. The response body contains the affected watchlist."""
|
|
38
|
+
|
|
39
|
+
@model_serializer(mode="wrap")
|
|
40
|
+
def serialize_model(self, handler):
|
|
41
|
+
optional_fields = set(["Watchlist"])
|
|
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
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 311c61390943
|
|
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 DividendItemTypedDict(TypedDict):
|
|
13
|
+
r"""A single dividend event for a ticker."""
|
|
14
|
+
|
|
15
|
+
cash_amount: NotRequired[float]
|
|
16
|
+
r"""Original cash dividend amount per share."""
|
|
17
|
+
currency: NotRequired[str]
|
|
18
|
+
r"""Currency code for the cash amount, such as USD."""
|
|
19
|
+
declaration_date: NotRequired[str]
|
|
20
|
+
r"""Date when the dividend was announced."""
|
|
21
|
+
distribution_type: NotRequired[str]
|
|
22
|
+
r"""Distribution classification such as recurring, special, supplemental, irregular, or unknown."""
|
|
23
|
+
ex_dividend_date: NotRequired[str]
|
|
24
|
+
r"""Date when the stock begins trading without the dividend."""
|
|
25
|
+
frequency: NotRequired[int]
|
|
26
|
+
r"""Times per year the dividend is paid, such as 0, 1, 4, or 12."""
|
|
27
|
+
historical_adjustment_factor: NotRequired[float]
|
|
28
|
+
r"""Adjustment factor used for historical-price normalization."""
|
|
29
|
+
id: NotRequired[str]
|
|
30
|
+
r"""Unique identifier for the dividend event."""
|
|
31
|
+
pay_date: NotRequired[str]
|
|
32
|
+
r"""Date when the dividend payment is distributed."""
|
|
33
|
+
record_date: NotRequired[str]
|
|
34
|
+
r"""Record date used to determine shareholder eligibility."""
|
|
35
|
+
split_adjusted_cash_amount: NotRequired[float]
|
|
36
|
+
r"""Dividend cash amount adjusted for stock splits."""
|
|
37
|
+
ticker: NotRequired[str]
|
|
38
|
+
r"""Stock ticker symbol"""
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class DividendItem(BaseModel):
|
|
42
|
+
r"""A single dividend event for a ticker."""
|
|
43
|
+
|
|
44
|
+
cash_amount: Annotated[Optional[float], pydantic.Field(alias="cashAmount")] = None
|
|
45
|
+
r"""Original cash dividend amount per share."""
|
|
46
|
+
|
|
47
|
+
currency: Optional[str] = None
|
|
48
|
+
r"""Currency code for the cash amount, such as USD."""
|
|
49
|
+
|
|
50
|
+
declaration_date: Annotated[
|
|
51
|
+
Optional[str], pydantic.Field(alias="declarationDate")
|
|
52
|
+
] = None
|
|
53
|
+
r"""Date when the dividend was announced."""
|
|
54
|
+
|
|
55
|
+
distribution_type: Annotated[
|
|
56
|
+
Optional[str], pydantic.Field(alias="distributionType")
|
|
57
|
+
] = None
|
|
58
|
+
r"""Distribution classification such as recurring, special, supplemental, irregular, or unknown."""
|
|
59
|
+
|
|
60
|
+
ex_dividend_date: Annotated[
|
|
61
|
+
Optional[str], pydantic.Field(alias="exDividendDate")
|
|
62
|
+
] = None
|
|
63
|
+
r"""Date when the stock begins trading without the dividend."""
|
|
64
|
+
|
|
65
|
+
frequency: Optional[int] = None
|
|
66
|
+
r"""Times per year the dividend is paid, such as 0, 1, 4, or 12."""
|
|
67
|
+
|
|
68
|
+
historical_adjustment_factor: Annotated[
|
|
69
|
+
Optional[float], pydantic.Field(alias="historicalAdjustmentFactor")
|
|
70
|
+
] = None
|
|
71
|
+
r"""Adjustment factor used for historical-price normalization."""
|
|
72
|
+
|
|
73
|
+
id: Optional[str] = None
|
|
74
|
+
r"""Unique identifier for the dividend event."""
|
|
75
|
+
|
|
76
|
+
pay_date: Annotated[Optional[str], pydantic.Field(alias="payDate")] = None
|
|
77
|
+
r"""Date when the dividend payment is distributed."""
|
|
78
|
+
|
|
79
|
+
record_date: Annotated[Optional[str], pydantic.Field(alias="recordDate")] = None
|
|
80
|
+
r"""Record date used to determine shareholder eligibility."""
|
|
81
|
+
|
|
82
|
+
split_adjusted_cash_amount: Annotated[
|
|
83
|
+
Optional[float], pydantic.Field(alias="splitAdjustedCashAmount")
|
|
84
|
+
] = None
|
|
85
|
+
r"""Dividend cash amount adjusted for stock splits."""
|
|
86
|
+
|
|
87
|
+
ticker: Optional[str] = None
|
|
88
|
+
r"""Stock ticker symbol"""
|
|
89
|
+
|
|
90
|
+
@model_serializer(mode="wrap")
|
|
91
|
+
def serialize_model(self, handler):
|
|
92
|
+
optional_fields = set(
|
|
93
|
+
[
|
|
94
|
+
"cashAmount",
|
|
95
|
+
"currency",
|
|
96
|
+
"declarationDate",
|
|
97
|
+
"distributionType",
|
|
98
|
+
"exDividendDate",
|
|
99
|
+
"frequency",
|
|
100
|
+
"historicalAdjustmentFactor",
|
|
101
|
+
"id",
|
|
102
|
+
"payDate",
|
|
103
|
+
"recordDate",
|
|
104
|
+
"splitAdjustedCashAmount",
|
|
105
|
+
"ticker",
|
|
106
|
+
]
|
|
107
|
+
)
|
|
108
|
+
serialized = handler(self)
|
|
109
|
+
m = {}
|
|
110
|
+
|
|
111
|
+
for n, f in type(self).model_fields.items():
|
|
112
|
+
k = f.alias or n
|
|
113
|
+
val = serialized.get(k, serialized.get(n))
|
|
114
|
+
|
|
115
|
+
if val != UNSET_SENTINEL:
|
|
116
|
+
if val is not None or k not in optional_fields:
|
|
117
|
+
m[k] = val
|
|
118
|
+
|
|
119
|
+
return m
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
try:
|
|
123
|
+
DividendItem.model_rebuild()
|
|
124
|
+
except NameError:
|
|
125
|
+
pass
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 61bbd2d2cfe5
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .dividenditem import DividendItem, DividendItemTypedDict
|
|
6
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
7
|
+
import pydantic
|
|
8
|
+
from pydantic import model_serializer
|
|
9
|
+
from typing import List, Optional
|
|
10
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class DividendsResponseTypedDict(TypedDict):
|
|
14
|
+
r"""Paginated response containing dividend events."""
|
|
15
|
+
|
|
16
|
+
next_url: NotRequired[str]
|
|
17
|
+
r"""Opaque pagination URL for the next page of results when more data is available."""
|
|
18
|
+
request_id: NotRequired[str]
|
|
19
|
+
r"""Provider request identifier for tracing and support."""
|
|
20
|
+
results: NotRequired[List[DividendItemTypedDict]]
|
|
21
|
+
r"""Array of dividend payment events."""
|
|
22
|
+
status: NotRequired[str]
|
|
23
|
+
r"""Provider response status."""
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class DividendsResponse(BaseModel):
|
|
27
|
+
r"""Paginated response containing dividend events."""
|
|
28
|
+
|
|
29
|
+
next_url: Annotated[Optional[str], pydantic.Field(alias="nextUrl")] = None
|
|
30
|
+
r"""Opaque pagination URL for the next page of results when more data is available."""
|
|
31
|
+
|
|
32
|
+
request_id: Annotated[Optional[str], pydantic.Field(alias="requestId")] = None
|
|
33
|
+
r"""Provider request identifier for tracing and support."""
|
|
34
|
+
|
|
35
|
+
results: Optional[List[DividendItem]] = None
|
|
36
|
+
r"""Array of dividend payment events."""
|
|
37
|
+
|
|
38
|
+
status: Optional[str] = None
|
|
39
|
+
r"""Provider response status."""
|
|
40
|
+
|
|
41
|
+
@model_serializer(mode="wrap")
|
|
42
|
+
def serialize_model(self, handler):
|
|
43
|
+
optional_fields = set(["nextUrl", "requestId", "results", "status"])
|
|
44
|
+
serialized = handler(self)
|
|
45
|
+
m = {}
|
|
46
|
+
|
|
47
|
+
for n, f in type(self).model_fields.items():
|
|
48
|
+
k = f.alias or n
|
|
49
|
+
val = serialized.get(k, serialized.get(n))
|
|
50
|
+
|
|
51
|
+
if val != UNSET_SENTINEL:
|
|
52
|
+
if val is not None or k not in optional_fields:
|
|
53
|
+
m[k] = val
|
|
54
|
+
|
|
55
|
+
return m
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
try:
|
|
59
|
+
DividendsResponse.model_rebuild()
|
|
60
|
+
except NameError:
|
|
61
|
+
pass
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 1d7af08fb01d
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from finance_dev.types import (
|
|
6
|
+
BaseModel,
|
|
7
|
+
Nullable,
|
|
8
|
+
OptionalNullable,
|
|
9
|
+
UNSET,
|
|
10
|
+
UNSET_SENTINEL,
|
|
11
|
+
)
|
|
12
|
+
import pydantic
|
|
13
|
+
from pydantic import model_serializer
|
|
14
|
+
from typing import Optional
|
|
15
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class AnalystRatingTypedDict(TypedDict):
|
|
19
|
+
r"""Analyst ratings summary"""
|
|
20
|
+
|
|
21
|
+
average_return: NotRequired[str]
|
|
22
|
+
r"""Average return based on analyst recommendations"""
|
|
23
|
+
current_rating: NotRequired[str]
|
|
24
|
+
r"""Current analyst rating (e.g., Buy, Sell, Hold)"""
|
|
25
|
+
price_target: NotRequired[float]
|
|
26
|
+
r"""Average price target"""
|
|
27
|
+
success_rate: NotRequired[str]
|
|
28
|
+
r"""Historical success rate of analysts"""
|
|
29
|
+
total_ratings: NotRequired[int]
|
|
30
|
+
r"""Total number of analyst ratings"""
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class AnalystRating(BaseModel):
|
|
34
|
+
r"""Analyst ratings summary"""
|
|
35
|
+
|
|
36
|
+
average_return: Annotated[Optional[str], pydantic.Field(alias="averageReturn")] = (
|
|
37
|
+
None
|
|
38
|
+
)
|
|
39
|
+
r"""Average return based on analyst recommendations"""
|
|
40
|
+
|
|
41
|
+
current_rating: Annotated[Optional[str], pydantic.Field(alias="currentRating")] = (
|
|
42
|
+
None
|
|
43
|
+
)
|
|
44
|
+
r"""Current analyst rating (e.g., Buy, Sell, Hold)"""
|
|
45
|
+
|
|
46
|
+
price_target: Annotated[Optional[float], pydantic.Field(alias="priceTarget")] = None
|
|
47
|
+
r"""Average price target"""
|
|
48
|
+
|
|
49
|
+
success_rate: Annotated[Optional[str], pydantic.Field(alias="successRate")] = None
|
|
50
|
+
r"""Historical success rate of analysts"""
|
|
51
|
+
|
|
52
|
+
total_ratings: Annotated[Optional[int], pydantic.Field(alias="totalRatings")] = None
|
|
53
|
+
r"""Total number of analyst ratings"""
|
|
54
|
+
|
|
55
|
+
@model_serializer(mode="wrap")
|
|
56
|
+
def serialize_model(self, handler):
|
|
57
|
+
optional_fields = set(
|
|
58
|
+
[
|
|
59
|
+
"averageReturn",
|
|
60
|
+
"currentRating",
|
|
61
|
+
"priceTarget",
|
|
62
|
+
"successRate",
|
|
63
|
+
"totalRatings",
|
|
64
|
+
]
|
|
65
|
+
)
|
|
66
|
+
serialized = handler(self)
|
|
67
|
+
m = {}
|
|
68
|
+
|
|
69
|
+
for n, f in type(self).model_fields.items():
|
|
70
|
+
k = f.alias or n
|
|
71
|
+
val = serialized.get(k, serialized.get(n))
|
|
72
|
+
|
|
73
|
+
if val != UNSET_SENTINEL:
|
|
74
|
+
if val is not None or k not in optional_fields:
|
|
75
|
+
m[k] = val
|
|
76
|
+
|
|
77
|
+
return m
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
class LogoTypedDict(TypedDict):
|
|
81
|
+
r"""Company logos for UI display"""
|
|
82
|
+
|
|
83
|
+
logo_dark: NotRequired[str]
|
|
84
|
+
r"""Logo URL for dark theme"""
|
|
85
|
+
logo_light: NotRequired[str]
|
|
86
|
+
r"""Logo URL for light theme"""
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
class Logo(BaseModel):
|
|
90
|
+
r"""Company logos for UI display"""
|
|
91
|
+
|
|
92
|
+
logo_dark: Annotated[Optional[str], pydantic.Field(alias="logoDark")] = None
|
|
93
|
+
r"""Logo URL for dark theme"""
|
|
94
|
+
|
|
95
|
+
logo_light: Annotated[Optional[str], pydantic.Field(alias="logoLight")] = None
|
|
96
|
+
r"""Logo URL for light theme"""
|
|
97
|
+
|
|
98
|
+
@model_serializer(mode="wrap")
|
|
99
|
+
def serialize_model(self, handler):
|
|
100
|
+
optional_fields = set(["logoDark", "logoLight"])
|
|
101
|
+
serialized = handler(self)
|
|
102
|
+
m = {}
|
|
103
|
+
|
|
104
|
+
for n, f in type(self).model_fields.items():
|
|
105
|
+
k = f.alias or n
|
|
106
|
+
val = serialized.get(k, serialized.get(n))
|
|
107
|
+
|
|
108
|
+
if val != UNSET_SENTINEL:
|
|
109
|
+
if val is not None or k not in optional_fields:
|
|
110
|
+
m[k] = val
|
|
111
|
+
|
|
112
|
+
return m
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
class EarningReleaseTypedDict(TypedDict):
|
|
116
|
+
r"""Earnings calendar entry for a company's earnings release, with actual and estimated figures."""
|
|
117
|
+
|
|
118
|
+
analyst_rating: NotRequired[AnalystRatingTypedDict]
|
|
119
|
+
r"""Analyst ratings summary"""
|
|
120
|
+
date_: NotRequired[str]
|
|
121
|
+
r"""Earnings release date"""
|
|
122
|
+
eps_actual: NotRequired[Nullable[float]]
|
|
123
|
+
r"""Actual earnings per share"""
|
|
124
|
+
eps_estimate: NotRequired[Nullable[float]]
|
|
125
|
+
r"""Estimated earnings per share"""
|
|
126
|
+
eps_surprise: NotRequired[Nullable[float]]
|
|
127
|
+
r"""Difference between actual and estimated EPS"""
|
|
128
|
+
hour: NotRequired[str]
|
|
129
|
+
r"""Time of day for earnings release: 'bmo' (before market open), 'amc' (after market close), 'dmh' (during market hours)"""
|
|
130
|
+
importance: NotRequired[int]
|
|
131
|
+
r"""Earnings event importance level (1-3, where 3 is most important). Use this to filter and prioritize high-impact earnings releases."""
|
|
132
|
+
logo: NotRequired[LogoTypedDict]
|
|
133
|
+
r"""Company logos for UI display"""
|
|
134
|
+
market_cap: NotRequired[Nullable[float]]
|
|
135
|
+
r"""Market capitalization in millions. Calculated as: (1) cached value if available and > 0, or (2) lastPrice × sharesOutstanding. Only present if both inputs are available."""
|
|
136
|
+
name: NotRequired[str]
|
|
137
|
+
r"""Company name"""
|
|
138
|
+
quarter: NotRequired[int]
|
|
139
|
+
r"""Quarter number (1-4)"""
|
|
140
|
+
revenue_actual: NotRequired[Nullable[float]]
|
|
141
|
+
r"""Actual revenue"""
|
|
142
|
+
revenue_estimate: NotRequired[Nullable[float]]
|
|
143
|
+
r"""Estimated revenue"""
|
|
144
|
+
revenue_surprise: NotRequired[Nullable[float]]
|
|
145
|
+
r"""Difference between actual and estimated revenue"""
|
|
146
|
+
symbol: NotRequired[str]
|
|
147
|
+
r"""Stock ticker symbol, such as AAPL. Use the exact ticker for the company you want to research."""
|
|
148
|
+
time: NotRequired[str]
|
|
149
|
+
r"""Time of day for earnings release: '16:39:00' 24 hours format"""
|
|
150
|
+
year: NotRequired[int]
|
|
151
|
+
r"""Year of the earnings"""
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
class EarningRelease(BaseModel):
|
|
155
|
+
r"""Earnings calendar entry for a company's earnings release, with actual and estimated figures."""
|
|
156
|
+
|
|
157
|
+
analyst_rating: Annotated[
|
|
158
|
+
Optional[AnalystRating], pydantic.Field(alias="analystRating")
|
|
159
|
+
] = None
|
|
160
|
+
r"""Analyst ratings summary"""
|
|
161
|
+
|
|
162
|
+
date_: Annotated[Optional[str], pydantic.Field(alias="date")] = None
|
|
163
|
+
r"""Earnings release date"""
|
|
164
|
+
|
|
165
|
+
eps_actual: Annotated[
|
|
166
|
+
OptionalNullable[float], pydantic.Field(alias="epsActual")
|
|
167
|
+
] = UNSET
|
|
168
|
+
r"""Actual earnings per share"""
|
|
169
|
+
|
|
170
|
+
eps_estimate: Annotated[
|
|
171
|
+
OptionalNullable[float], pydantic.Field(alias="epsEstimate")
|
|
172
|
+
] = UNSET
|
|
173
|
+
r"""Estimated earnings per share"""
|
|
174
|
+
|
|
175
|
+
eps_surprise: Annotated[
|
|
176
|
+
OptionalNullable[float], pydantic.Field(alias="epsSurprise")
|
|
177
|
+
] = UNSET
|
|
178
|
+
r"""Difference between actual and estimated EPS"""
|
|
179
|
+
|
|
180
|
+
hour: Optional[str] = None
|
|
181
|
+
r"""Time of day for earnings release: 'bmo' (before market open), 'amc' (after market close), 'dmh' (during market hours)"""
|
|
182
|
+
|
|
183
|
+
importance: Optional[int] = None
|
|
184
|
+
r"""Earnings event importance level (1-3, where 3 is most important). Use this to filter and prioritize high-impact earnings releases."""
|
|
185
|
+
|
|
186
|
+
logo: Optional[Logo] = None
|
|
187
|
+
r"""Company logos for UI display"""
|
|
188
|
+
|
|
189
|
+
market_cap: Annotated[
|
|
190
|
+
OptionalNullable[float], pydantic.Field(alias="marketCap")
|
|
191
|
+
] = UNSET
|
|
192
|
+
r"""Market capitalization in millions. Calculated as: (1) cached value if available and > 0, or (2) lastPrice × sharesOutstanding. Only present if both inputs are available."""
|
|
193
|
+
|
|
194
|
+
name: Optional[str] = None
|
|
195
|
+
r"""Company name"""
|
|
196
|
+
|
|
197
|
+
quarter: Optional[int] = None
|
|
198
|
+
r"""Quarter number (1-4)"""
|
|
199
|
+
|
|
200
|
+
revenue_actual: Annotated[
|
|
201
|
+
OptionalNullable[float], pydantic.Field(alias="revenueActual")
|
|
202
|
+
] = UNSET
|
|
203
|
+
r"""Actual revenue"""
|
|
204
|
+
|
|
205
|
+
revenue_estimate: Annotated[
|
|
206
|
+
OptionalNullable[float], pydantic.Field(alias="revenueEstimate")
|
|
207
|
+
] = UNSET
|
|
208
|
+
r"""Estimated revenue"""
|
|
209
|
+
|
|
210
|
+
revenue_surprise: Annotated[
|
|
211
|
+
OptionalNullable[float], pydantic.Field(alias="revenueSurprise")
|
|
212
|
+
] = UNSET
|
|
213
|
+
r"""Difference between actual and estimated revenue"""
|
|
214
|
+
|
|
215
|
+
symbol: Optional[str] = None
|
|
216
|
+
r"""Stock ticker symbol, such as AAPL. Use the exact ticker for the company you want to research."""
|
|
217
|
+
|
|
218
|
+
time: Optional[str] = None
|
|
219
|
+
r"""Time of day for earnings release: '16:39:00' 24 hours format"""
|
|
220
|
+
|
|
221
|
+
year: Optional[int] = None
|
|
222
|
+
r"""Year of the earnings"""
|
|
223
|
+
|
|
224
|
+
@model_serializer(mode="wrap")
|
|
225
|
+
def serialize_model(self, handler):
|
|
226
|
+
optional_fields = set(
|
|
227
|
+
[
|
|
228
|
+
"analystRating",
|
|
229
|
+
"date",
|
|
230
|
+
"epsActual",
|
|
231
|
+
"epsEstimate",
|
|
232
|
+
"epsSurprise",
|
|
233
|
+
"hour",
|
|
234
|
+
"importance",
|
|
235
|
+
"logo",
|
|
236
|
+
"marketCap",
|
|
237
|
+
"name",
|
|
238
|
+
"quarter",
|
|
239
|
+
"revenueActual",
|
|
240
|
+
"revenueEstimate",
|
|
241
|
+
"revenueSurprise",
|
|
242
|
+
"symbol",
|
|
243
|
+
"time",
|
|
244
|
+
"year",
|
|
245
|
+
]
|
|
246
|
+
)
|
|
247
|
+
nullable_fields = set(
|
|
248
|
+
[
|
|
249
|
+
"epsActual",
|
|
250
|
+
"epsEstimate",
|
|
251
|
+
"epsSurprise",
|
|
252
|
+
"marketCap",
|
|
253
|
+
"revenueActual",
|
|
254
|
+
"revenueEstimate",
|
|
255
|
+
"revenueSurprise",
|
|
256
|
+
]
|
|
257
|
+
)
|
|
258
|
+
serialized = handler(self)
|
|
259
|
+
m = {}
|
|
260
|
+
|
|
261
|
+
for n, f in type(self).model_fields.items():
|
|
262
|
+
k = f.alias or n
|
|
263
|
+
val = serialized.get(k, serialized.get(n))
|
|
264
|
+
is_nullable_and_explicitly_set = (
|
|
265
|
+
k in nullable_fields
|
|
266
|
+
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
|
|
267
|
+
)
|
|
268
|
+
|
|
269
|
+
if val != UNSET_SENTINEL:
|
|
270
|
+
if (
|
|
271
|
+
val is not None
|
|
272
|
+
or k not in optional_fields
|
|
273
|
+
or is_nullable_and_explicitly_set
|
|
274
|
+
):
|
|
275
|
+
m[k] = val
|
|
276
|
+
|
|
277
|
+
return m
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
try:
|
|
281
|
+
AnalystRating.model_rebuild()
|
|
282
|
+
except NameError:
|
|
283
|
+
pass
|
|
284
|
+
try:
|
|
285
|
+
Logo.model_rebuild()
|
|
286
|
+
except NameError:
|
|
287
|
+
pass
|
|
288
|
+
try:
|
|
289
|
+
EarningRelease.model_rebuild()
|
|
290
|
+
except NameError:
|
|
291
|
+
pass
|