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,166 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 56b2c0f57a20
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
6
|
+
import pydantic
|
|
7
|
+
from pydantic import model_serializer
|
|
8
|
+
from typing import List, Optional
|
|
9
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class LobbyingResponseDataTypedDict(TypedDict):
|
|
13
|
+
client_id: NotRequired[str]
|
|
14
|
+
r"""Client identifier."""
|
|
15
|
+
country: NotRequired[str]
|
|
16
|
+
r"""Country."""
|
|
17
|
+
date_: NotRequired[str]
|
|
18
|
+
r"""Date of the filing, as returned by the provider."""
|
|
19
|
+
description: NotRequired[str]
|
|
20
|
+
r"""Description of the lobbying activity."""
|
|
21
|
+
document_url: NotRequired[str]
|
|
22
|
+
r"""URL of the source filing document."""
|
|
23
|
+
expenses: NotRequired[float]
|
|
24
|
+
r"""Expenses reported by the company."""
|
|
25
|
+
houseregistrant_id: NotRequired[str]
|
|
26
|
+
r"""House registrant identifier."""
|
|
27
|
+
income: NotRequired[float]
|
|
28
|
+
r"""Income reported by lobbying firms."""
|
|
29
|
+
name: NotRequired[str]
|
|
30
|
+
r"""Company name."""
|
|
31
|
+
period: NotRequired[str]
|
|
32
|
+
r"""Filing period."""
|
|
33
|
+
posted_name: NotRequired[str]
|
|
34
|
+
r"""Posted name on the filing."""
|
|
35
|
+
registrant_id: NotRequired[str]
|
|
36
|
+
r"""Registrant identifier."""
|
|
37
|
+
senate_id: NotRequired[str]
|
|
38
|
+
r"""Senate identifier."""
|
|
39
|
+
symbol: NotRequired[str]
|
|
40
|
+
r"""Company ticker symbol."""
|
|
41
|
+
year: NotRequired[int]
|
|
42
|
+
r"""Year of the filing."""
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class LobbyingResponseData(BaseModel):
|
|
46
|
+
client_id: Annotated[Optional[str], pydantic.Field(alias="clientId")] = None
|
|
47
|
+
r"""Client identifier."""
|
|
48
|
+
|
|
49
|
+
country: Optional[str] = None
|
|
50
|
+
r"""Country."""
|
|
51
|
+
|
|
52
|
+
date_: Annotated[Optional[str], pydantic.Field(alias="date")] = None
|
|
53
|
+
r"""Date of the filing, as returned by the provider."""
|
|
54
|
+
|
|
55
|
+
description: Optional[str] = None
|
|
56
|
+
r"""Description of the lobbying activity."""
|
|
57
|
+
|
|
58
|
+
document_url: Annotated[Optional[str], pydantic.Field(alias="documentUrl")] = None
|
|
59
|
+
r"""URL of the source filing document."""
|
|
60
|
+
|
|
61
|
+
expenses: Optional[float] = None
|
|
62
|
+
r"""Expenses reported by the company."""
|
|
63
|
+
|
|
64
|
+
houseregistrant_id: Annotated[
|
|
65
|
+
Optional[str], pydantic.Field(alias="houseregistrantId")
|
|
66
|
+
] = None
|
|
67
|
+
r"""House registrant identifier."""
|
|
68
|
+
|
|
69
|
+
income: Optional[float] = None
|
|
70
|
+
r"""Income reported by lobbying firms."""
|
|
71
|
+
|
|
72
|
+
name: Optional[str] = None
|
|
73
|
+
r"""Company name."""
|
|
74
|
+
|
|
75
|
+
period: Optional[str] = None
|
|
76
|
+
r"""Filing period."""
|
|
77
|
+
|
|
78
|
+
posted_name: Annotated[Optional[str], pydantic.Field(alias="postedName")] = None
|
|
79
|
+
r"""Posted name on the filing."""
|
|
80
|
+
|
|
81
|
+
registrant_id: Annotated[Optional[str], pydantic.Field(alias="registrantId")] = None
|
|
82
|
+
r"""Registrant identifier."""
|
|
83
|
+
|
|
84
|
+
senate_id: Annotated[Optional[str], pydantic.Field(alias="senateId")] = None
|
|
85
|
+
r"""Senate identifier."""
|
|
86
|
+
|
|
87
|
+
symbol: Optional[str] = None
|
|
88
|
+
r"""Company ticker symbol."""
|
|
89
|
+
|
|
90
|
+
year: Optional[int] = None
|
|
91
|
+
r"""Year of the filing."""
|
|
92
|
+
|
|
93
|
+
@model_serializer(mode="wrap")
|
|
94
|
+
def serialize_model(self, handler):
|
|
95
|
+
optional_fields = set(
|
|
96
|
+
[
|
|
97
|
+
"clientId",
|
|
98
|
+
"country",
|
|
99
|
+
"date",
|
|
100
|
+
"description",
|
|
101
|
+
"documentUrl",
|
|
102
|
+
"expenses",
|
|
103
|
+
"houseregistrantId",
|
|
104
|
+
"income",
|
|
105
|
+
"name",
|
|
106
|
+
"period",
|
|
107
|
+
"postedName",
|
|
108
|
+
"registrantId",
|
|
109
|
+
"senateId",
|
|
110
|
+
"symbol",
|
|
111
|
+
"year",
|
|
112
|
+
]
|
|
113
|
+
)
|
|
114
|
+
serialized = handler(self)
|
|
115
|
+
m = {}
|
|
116
|
+
|
|
117
|
+
for n, f in type(self).model_fields.items():
|
|
118
|
+
k = f.alias or n
|
|
119
|
+
val = serialized.get(k, serialized.get(n))
|
|
120
|
+
|
|
121
|
+
if val != UNSET_SENTINEL:
|
|
122
|
+
if val is not None or k not in optional_fields:
|
|
123
|
+
m[k] = val
|
|
124
|
+
|
|
125
|
+
return m
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
class LobbyingResponseTypedDict(TypedDict):
|
|
129
|
+
r"""US Senate and House lobbying activity reported for a company, as provided by Finnhub."""
|
|
130
|
+
|
|
131
|
+
data: NotRequired[List[LobbyingResponseDataTypedDict]]
|
|
132
|
+
r"""Lobbying records for the symbol."""
|
|
133
|
+
symbol: NotRequired[str]
|
|
134
|
+
r"""Company ticker symbol."""
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
class LobbyingResponse(BaseModel):
|
|
138
|
+
r"""US Senate and House lobbying activity reported for a company, as provided by Finnhub."""
|
|
139
|
+
|
|
140
|
+
data: Optional[List[LobbyingResponseData]] = None
|
|
141
|
+
r"""Lobbying records for the symbol."""
|
|
142
|
+
|
|
143
|
+
symbol: Optional[str] = None
|
|
144
|
+
r"""Company ticker symbol."""
|
|
145
|
+
|
|
146
|
+
@model_serializer(mode="wrap")
|
|
147
|
+
def serialize_model(self, handler):
|
|
148
|
+
optional_fields = set(["data", "symbol"])
|
|
149
|
+
serialized = handler(self)
|
|
150
|
+
m = {}
|
|
151
|
+
|
|
152
|
+
for n, f in type(self).model_fields.items():
|
|
153
|
+
k = f.alias or n
|
|
154
|
+
val = serialized.get(k, serialized.get(n))
|
|
155
|
+
|
|
156
|
+
if val != UNSET_SENTINEL:
|
|
157
|
+
if val is not None or k not in optional_fields:
|
|
158
|
+
m[k] = val
|
|
159
|
+
|
|
160
|
+
return m
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
try:
|
|
164
|
+
LobbyingResponseData.model_rebuild()
|
|
165
|
+
except NameError:
|
|
166
|
+
pass
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 2ffdfe50f2e6
|
|
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 Any, Dict, List, Optional
|
|
9
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class LogoSearchResponseFilesTypedDict(TypedDict):
|
|
13
|
+
r"""Available logo file variants"""
|
|
14
|
+
|
|
15
|
+
logo_dark: NotRequired[str]
|
|
16
|
+
r"""URL to full logo optimized for dark backgrounds (PNG)"""
|
|
17
|
+
logo_light: NotRequired[str]
|
|
18
|
+
r"""URL to full logo optimized for light backgrounds (PNG)"""
|
|
19
|
+
mark_dark: NotRequired[str]
|
|
20
|
+
r"""URL to logo mark/icon optimized for dark backgrounds (PNG)"""
|
|
21
|
+
mark_light: NotRequired[str]
|
|
22
|
+
r"""URL to logo mark/icon optimized for light backgrounds (PNG)"""
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class LogoSearchResponseFiles(BaseModel):
|
|
26
|
+
r"""Available logo file variants"""
|
|
27
|
+
|
|
28
|
+
logo_dark: Annotated[Optional[str], pydantic.Field(alias="logoDark")] = None
|
|
29
|
+
r"""URL to full logo optimized for dark backgrounds (PNG)"""
|
|
30
|
+
|
|
31
|
+
logo_light: Annotated[Optional[str], pydantic.Field(alias="logoLight")] = None
|
|
32
|
+
r"""URL to full logo optimized for light backgrounds (PNG)"""
|
|
33
|
+
|
|
34
|
+
mark_dark: Annotated[Optional[str], pydantic.Field(alias="markDark")] = None
|
|
35
|
+
r"""URL to logo mark/icon optimized for dark backgrounds (PNG)"""
|
|
36
|
+
|
|
37
|
+
mark_light: Annotated[Optional[str], pydantic.Field(alias="markLight")] = None
|
|
38
|
+
r"""URL to logo mark/icon optimized for light backgrounds (PNG)"""
|
|
39
|
+
|
|
40
|
+
@model_serializer(mode="wrap")
|
|
41
|
+
def serialize_model(self, handler):
|
|
42
|
+
optional_fields = set(["logoDark", "logoLight", "markDark", "markLight"])
|
|
43
|
+
serialized = handler(self)
|
|
44
|
+
m = {}
|
|
45
|
+
|
|
46
|
+
for n, f in type(self).model_fields.items():
|
|
47
|
+
k = f.alias or n
|
|
48
|
+
val = serialized.get(k, serialized.get(n))
|
|
49
|
+
|
|
50
|
+
if val != UNSET_SENTINEL:
|
|
51
|
+
if val is not None or k not in optional_fields:
|
|
52
|
+
m[k] = val
|
|
53
|
+
|
|
54
|
+
return m
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class LogoSearchResponseDataTypedDict(TypedDict):
|
|
58
|
+
colors: NotRequired[Dict[str, Any]]
|
|
59
|
+
r"""Brand color palette (if available)"""
|
|
60
|
+
created_at: NotRequired[str]
|
|
61
|
+
r"""Timestamp when the logo was first added (ISO 8601 format)"""
|
|
62
|
+
files: NotRequired[LogoSearchResponseFilesTypedDict]
|
|
63
|
+
r"""Available logo file variants"""
|
|
64
|
+
id: NotRequired[str]
|
|
65
|
+
r"""Unique identifier for the logo record"""
|
|
66
|
+
search_key: NotRequired[str]
|
|
67
|
+
r"""Search key used to identify the company (e.g., NASDAQ:TSLA)"""
|
|
68
|
+
updated_at: NotRequired[str]
|
|
69
|
+
r"""Timestamp when the logo was last updated (ISO 8601 format)"""
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class LogoSearchResponseData(BaseModel):
|
|
73
|
+
colors: Optional[Dict[str, Any]] = None
|
|
74
|
+
r"""Brand color palette (if available)"""
|
|
75
|
+
|
|
76
|
+
created_at: Annotated[Optional[str], pydantic.Field(alias="createdAt")] = None
|
|
77
|
+
r"""Timestamp when the logo was first added (ISO 8601 format)"""
|
|
78
|
+
|
|
79
|
+
files: Optional[LogoSearchResponseFiles] = None
|
|
80
|
+
r"""Available logo file variants"""
|
|
81
|
+
|
|
82
|
+
id: Optional[str] = None
|
|
83
|
+
r"""Unique identifier for the logo record"""
|
|
84
|
+
|
|
85
|
+
search_key: Annotated[Optional[str], pydantic.Field(alias="searchKey")] = None
|
|
86
|
+
r"""Search key used to identify the company (e.g., NASDAQ:TSLA)"""
|
|
87
|
+
|
|
88
|
+
updated_at: Annotated[Optional[str], pydantic.Field(alias="updatedAt")] = None
|
|
89
|
+
r"""Timestamp when the logo was last updated (ISO 8601 format)"""
|
|
90
|
+
|
|
91
|
+
@model_serializer(mode="wrap")
|
|
92
|
+
def serialize_model(self, handler):
|
|
93
|
+
optional_fields = set(
|
|
94
|
+
["colors", "createdAt", "files", "id", "searchKey", "updatedAt"]
|
|
95
|
+
)
|
|
96
|
+
serialized = handler(self)
|
|
97
|
+
m = {}
|
|
98
|
+
|
|
99
|
+
for n, f in type(self).model_fields.items():
|
|
100
|
+
k = f.alias or n
|
|
101
|
+
val = serialized.get(k, serialized.get(n))
|
|
102
|
+
|
|
103
|
+
if val != UNSET_SENTINEL:
|
|
104
|
+
if val is not None or k not in optional_fields:
|
|
105
|
+
m[k] = val
|
|
106
|
+
|
|
107
|
+
return m
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
class LogoSearchResponseTypedDict(TypedDict):
|
|
111
|
+
r"""Response containing logo records that match a search query."""
|
|
112
|
+
|
|
113
|
+
data: NotRequired[List[LogoSearchResponseDataTypedDict]]
|
|
114
|
+
r"""Array of logo data matching the search query"""
|
|
115
|
+
ok: NotRequired[bool]
|
|
116
|
+
r"""Request success status"""
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
class LogoSearchResponse(BaseModel):
|
|
120
|
+
r"""Response containing logo records that match a search query."""
|
|
121
|
+
|
|
122
|
+
data: Optional[List[LogoSearchResponseData]] = None
|
|
123
|
+
r"""Array of logo data matching the search query"""
|
|
124
|
+
|
|
125
|
+
ok: Optional[bool] = None
|
|
126
|
+
r"""Request success status"""
|
|
127
|
+
|
|
128
|
+
@model_serializer(mode="wrap")
|
|
129
|
+
def serialize_model(self, handler):
|
|
130
|
+
optional_fields = set(["data", "ok"])
|
|
131
|
+
serialized = handler(self)
|
|
132
|
+
m = {}
|
|
133
|
+
|
|
134
|
+
for n, f in type(self).model_fields.items():
|
|
135
|
+
k = f.alias or n
|
|
136
|
+
val = serialized.get(k, serialized.get(n))
|
|
137
|
+
|
|
138
|
+
if val != UNSET_SENTINEL:
|
|
139
|
+
if val is not None or k not in optional_fields:
|
|
140
|
+
m[k] = val
|
|
141
|
+
|
|
142
|
+
return m
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
try:
|
|
146
|
+
LogoSearchResponseFiles.model_rebuild()
|
|
147
|
+
except NameError:
|
|
148
|
+
pass
|
|
149
|
+
try:
|
|
150
|
+
LogoSearchResponseData.model_rebuild()
|
|
151
|
+
except NameError:
|
|
152
|
+
pass
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: e81d48f73654
|
|
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 Any, Dict, List, Optional
|
|
9
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class LogoSyncResponseFilesTypedDict(TypedDict):
|
|
13
|
+
r"""Available logo file variants"""
|
|
14
|
+
|
|
15
|
+
logo_dark: NotRequired[str]
|
|
16
|
+
r"""URL to the full logo for dark backgrounds"""
|
|
17
|
+
logo_light: NotRequired[str]
|
|
18
|
+
r"""URL to the full logo for light backgrounds"""
|
|
19
|
+
logo_vector_dark: NotRequired[str]
|
|
20
|
+
r"""URL to the vector full logo for dark backgrounds"""
|
|
21
|
+
logo_vector_light: NotRequired[str]
|
|
22
|
+
r"""URL to the vector full logo for light backgrounds"""
|
|
23
|
+
mark_composite_dark: NotRequired[str]
|
|
24
|
+
r"""URL to the composite logo mark for dark backgrounds"""
|
|
25
|
+
mark_composite_light: NotRequired[str]
|
|
26
|
+
r"""URL to the composite logo mark for light backgrounds"""
|
|
27
|
+
mark_dark: NotRequired[str]
|
|
28
|
+
r"""URL to the logo mark for dark backgrounds"""
|
|
29
|
+
mark_light: NotRequired[str]
|
|
30
|
+
r"""URL to the logo mark for light backgrounds"""
|
|
31
|
+
mark_vector_dark: NotRequired[str]
|
|
32
|
+
r"""URL to the vector logo mark for dark backgrounds"""
|
|
33
|
+
mark_vector_light: NotRequired[str]
|
|
34
|
+
r"""URL to the vector logo mark for light backgrounds"""
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class LogoSyncResponseFiles(BaseModel):
|
|
38
|
+
r"""Available logo file variants"""
|
|
39
|
+
|
|
40
|
+
logo_dark: Annotated[Optional[str], pydantic.Field(alias="logoDark")] = None
|
|
41
|
+
r"""URL to the full logo for dark backgrounds"""
|
|
42
|
+
|
|
43
|
+
logo_light: Annotated[Optional[str], pydantic.Field(alias="logoLight")] = None
|
|
44
|
+
r"""URL to the full logo for light backgrounds"""
|
|
45
|
+
|
|
46
|
+
logo_vector_dark: Annotated[
|
|
47
|
+
Optional[str], pydantic.Field(alias="logoVectorDark")
|
|
48
|
+
] = None
|
|
49
|
+
r"""URL to the vector full logo for dark backgrounds"""
|
|
50
|
+
|
|
51
|
+
logo_vector_light: Annotated[
|
|
52
|
+
Optional[str], pydantic.Field(alias="logoVectorLight")
|
|
53
|
+
] = None
|
|
54
|
+
r"""URL to the vector full logo for light backgrounds"""
|
|
55
|
+
|
|
56
|
+
mark_composite_dark: Annotated[
|
|
57
|
+
Optional[str], pydantic.Field(alias="markCompositeDark")
|
|
58
|
+
] = None
|
|
59
|
+
r"""URL to the composite logo mark for dark backgrounds"""
|
|
60
|
+
|
|
61
|
+
mark_composite_light: Annotated[
|
|
62
|
+
Optional[str], pydantic.Field(alias="markCompositeLight")
|
|
63
|
+
] = None
|
|
64
|
+
r"""URL to the composite logo mark for light backgrounds"""
|
|
65
|
+
|
|
66
|
+
mark_dark: Annotated[Optional[str], pydantic.Field(alias="markDark")] = None
|
|
67
|
+
r"""URL to the logo mark for dark backgrounds"""
|
|
68
|
+
|
|
69
|
+
mark_light: Annotated[Optional[str], pydantic.Field(alias="markLight")] = None
|
|
70
|
+
r"""URL to the logo mark for light backgrounds"""
|
|
71
|
+
|
|
72
|
+
mark_vector_dark: Annotated[
|
|
73
|
+
Optional[str], pydantic.Field(alias="markVectorDark")
|
|
74
|
+
] = None
|
|
75
|
+
r"""URL to the vector logo mark for dark backgrounds"""
|
|
76
|
+
|
|
77
|
+
mark_vector_light: Annotated[
|
|
78
|
+
Optional[str], pydantic.Field(alias="markVectorLight")
|
|
79
|
+
] = None
|
|
80
|
+
r"""URL to the vector logo mark for light backgrounds"""
|
|
81
|
+
|
|
82
|
+
@model_serializer(mode="wrap")
|
|
83
|
+
def serialize_model(self, handler):
|
|
84
|
+
optional_fields = set(
|
|
85
|
+
[
|
|
86
|
+
"logoDark",
|
|
87
|
+
"logoLight",
|
|
88
|
+
"logoVectorDark",
|
|
89
|
+
"logoVectorLight",
|
|
90
|
+
"markCompositeDark",
|
|
91
|
+
"markCompositeLight",
|
|
92
|
+
"markDark",
|
|
93
|
+
"markLight",
|
|
94
|
+
"markVectorDark",
|
|
95
|
+
"markVectorLight",
|
|
96
|
+
]
|
|
97
|
+
)
|
|
98
|
+
serialized = handler(self)
|
|
99
|
+
m = {}
|
|
100
|
+
|
|
101
|
+
for n, f in type(self).model_fields.items():
|
|
102
|
+
k = f.alias or n
|
|
103
|
+
val = serialized.get(k, serialized.get(n))
|
|
104
|
+
|
|
105
|
+
if val != UNSET_SENTINEL:
|
|
106
|
+
if val is not None or k not in optional_fields:
|
|
107
|
+
m[k] = val
|
|
108
|
+
|
|
109
|
+
return m
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
class LogoSyncResponseSecurityTypedDict(TypedDict):
|
|
113
|
+
cik: NotRequired[str]
|
|
114
|
+
r"""Central Index Key assigned by the SEC"""
|
|
115
|
+
cusip: NotRequired[str]
|
|
116
|
+
r"""CUSIP identifier of the security"""
|
|
117
|
+
exchange: NotRequired[str]
|
|
118
|
+
r"""Exchange code where the data originates. Format depends on the upstream data source and may use MIC, ISO 10383, or a vendor-specific code."""
|
|
119
|
+
isin: NotRequired[str]
|
|
120
|
+
r"""ISIN identifier of the security"""
|
|
121
|
+
name: NotRequired[str]
|
|
122
|
+
r"""Name of the security"""
|
|
123
|
+
symbol: NotRequired[str]
|
|
124
|
+
r"""Ticker symbol of the security"""
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
class LogoSyncResponseSecurity(BaseModel):
|
|
128
|
+
cik: Optional[str] = None
|
|
129
|
+
r"""Central Index Key assigned by the SEC"""
|
|
130
|
+
|
|
131
|
+
cusip: Optional[str] = None
|
|
132
|
+
r"""CUSIP identifier of the security"""
|
|
133
|
+
|
|
134
|
+
exchange: Optional[str] = None
|
|
135
|
+
r"""Exchange code where the data originates. Format depends on the upstream data source and may use MIC, ISO 10383, or a vendor-specific code."""
|
|
136
|
+
|
|
137
|
+
isin: Optional[str] = None
|
|
138
|
+
r"""ISIN identifier of the security"""
|
|
139
|
+
|
|
140
|
+
name: Optional[str] = None
|
|
141
|
+
r"""Name of the security"""
|
|
142
|
+
|
|
143
|
+
symbol: Optional[str] = None
|
|
144
|
+
r"""Ticker symbol of the security"""
|
|
145
|
+
|
|
146
|
+
@model_serializer(mode="wrap")
|
|
147
|
+
def serialize_model(self, handler):
|
|
148
|
+
optional_fields = set(["cik", "cusip", "exchange", "isin", "name", "symbol"])
|
|
149
|
+
serialized = handler(self)
|
|
150
|
+
m = {}
|
|
151
|
+
|
|
152
|
+
for n, f in type(self).model_fields.items():
|
|
153
|
+
k = f.alias or n
|
|
154
|
+
val = serialized.get(k, serialized.get(n))
|
|
155
|
+
|
|
156
|
+
if val != UNSET_SENTINEL:
|
|
157
|
+
if val is not None or k not in optional_fields:
|
|
158
|
+
m[k] = val
|
|
159
|
+
|
|
160
|
+
return m
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
class LogoSyncResponseDataTypedDict(TypedDict):
|
|
164
|
+
colors: NotRequired[Dict[str, Any]]
|
|
165
|
+
r"""Key-value map; may be empty. Keys vary by record."""
|
|
166
|
+
created_at: NotRequired[str]
|
|
167
|
+
r"""Timestamp when the logo record was created"""
|
|
168
|
+
files: NotRequired[LogoSyncResponseFilesTypedDict]
|
|
169
|
+
r"""Available logo file variants"""
|
|
170
|
+
id: NotRequired[str]
|
|
171
|
+
r"""Unique identifier for the logo record"""
|
|
172
|
+
securities: NotRequired[List[LogoSyncResponseSecurityTypedDict]]
|
|
173
|
+
r"""Securities associated with the logo record"""
|
|
174
|
+
updated_at: NotRequired[str]
|
|
175
|
+
r"""Timestamp when the logo record was last updated"""
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
class LogoSyncResponseData(BaseModel):
|
|
179
|
+
colors: Optional[Dict[str, Any]] = None
|
|
180
|
+
r"""Key-value map; may be empty. Keys vary by record."""
|
|
181
|
+
|
|
182
|
+
created_at: Annotated[Optional[str], pydantic.Field(alias="createdAt")] = None
|
|
183
|
+
r"""Timestamp when the logo record was created"""
|
|
184
|
+
|
|
185
|
+
files: Optional[LogoSyncResponseFiles] = None
|
|
186
|
+
r"""Available logo file variants"""
|
|
187
|
+
|
|
188
|
+
id: Optional[str] = None
|
|
189
|
+
r"""Unique identifier for the logo record"""
|
|
190
|
+
|
|
191
|
+
securities: Optional[List[LogoSyncResponseSecurity]] = None
|
|
192
|
+
r"""Securities associated with the logo record"""
|
|
193
|
+
|
|
194
|
+
updated_at: Annotated[Optional[str], pydantic.Field(alias="updatedAt")] = None
|
|
195
|
+
r"""Timestamp when the logo record was last updated"""
|
|
196
|
+
|
|
197
|
+
@model_serializer(mode="wrap")
|
|
198
|
+
def serialize_model(self, handler):
|
|
199
|
+
optional_fields = set(
|
|
200
|
+
["colors", "createdAt", "files", "id", "securities", "updatedAt"]
|
|
201
|
+
)
|
|
202
|
+
serialized = handler(self)
|
|
203
|
+
m = {}
|
|
204
|
+
|
|
205
|
+
for n, f in type(self).model_fields.items():
|
|
206
|
+
k = f.alias or n
|
|
207
|
+
val = serialized.get(k, serialized.get(n))
|
|
208
|
+
|
|
209
|
+
if val != UNSET_SENTINEL:
|
|
210
|
+
if val is not None or k not in optional_fields:
|
|
211
|
+
m[k] = val
|
|
212
|
+
|
|
213
|
+
return m
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
class LogoSyncResponseTypedDict(TypedDict):
|
|
217
|
+
r"""Paginated response containing logo records for bulk sync."""
|
|
218
|
+
|
|
219
|
+
data: NotRequired[List[LogoSyncResponseDataTypedDict]]
|
|
220
|
+
r"""Array of logo records"""
|
|
221
|
+
has_more: NotRequired[bool]
|
|
222
|
+
r"""Whether more pages are available"""
|
|
223
|
+
ok: NotRequired[bool]
|
|
224
|
+
r"""Request success status"""
|
|
225
|
+
page: NotRequired[int]
|
|
226
|
+
r"""Current page number"""
|
|
227
|
+
page_size: NotRequired[int]
|
|
228
|
+
r"""Number of records per page"""
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
class LogoSyncResponse(BaseModel):
|
|
232
|
+
r"""Paginated response containing logo records for bulk sync."""
|
|
233
|
+
|
|
234
|
+
data: Optional[List[LogoSyncResponseData]] = None
|
|
235
|
+
r"""Array of logo records"""
|
|
236
|
+
|
|
237
|
+
has_more: Annotated[Optional[bool], pydantic.Field(alias="hasMore")] = None
|
|
238
|
+
r"""Whether more pages are available"""
|
|
239
|
+
|
|
240
|
+
ok: Optional[bool] = None
|
|
241
|
+
r"""Request success status"""
|
|
242
|
+
|
|
243
|
+
page: Optional[int] = None
|
|
244
|
+
r"""Current page number"""
|
|
245
|
+
|
|
246
|
+
page_size: Annotated[Optional[int], pydantic.Field(alias="pageSize")] = None
|
|
247
|
+
r"""Number of records per page"""
|
|
248
|
+
|
|
249
|
+
@model_serializer(mode="wrap")
|
|
250
|
+
def serialize_model(self, handler):
|
|
251
|
+
optional_fields = set(["data", "hasMore", "ok", "page", "pageSize"])
|
|
252
|
+
serialized = handler(self)
|
|
253
|
+
m = {}
|
|
254
|
+
|
|
255
|
+
for n, f in type(self).model_fields.items():
|
|
256
|
+
k = f.alias or n
|
|
257
|
+
val = serialized.get(k, serialized.get(n))
|
|
258
|
+
|
|
259
|
+
if val != UNSET_SENTINEL:
|
|
260
|
+
if val is not None or k not in optional_fields:
|
|
261
|
+
m[k] = val
|
|
262
|
+
|
|
263
|
+
return m
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
try:
|
|
267
|
+
LogoSyncResponseFiles.model_rebuild()
|
|
268
|
+
except NameError:
|
|
269
|
+
pass
|
|
270
|
+
try:
|
|
271
|
+
LogoSyncResponseData.model_rebuild()
|
|
272
|
+
except NameError:
|
|
273
|
+
pass
|
|
274
|
+
try:
|
|
275
|
+
LogoSyncResponse.model_rebuild()
|
|
276
|
+
except NameError:
|
|
277
|
+
pass
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: f33ef86271fe
|
|
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 MarketBreadthTypedDict(TypedDict):
|
|
13
|
+
r"""Market breadth snapshot showing how many symbols are rising, falling, or unchanged. Use it to summarize overall market participation."""
|
|
14
|
+
|
|
15
|
+
advance_decline_ratio: NotRequired[float]
|
|
16
|
+
r"""Ratio of advancers to decliners"""
|
|
17
|
+
advancers: NotRequired[int]
|
|
18
|
+
r"""Number of advancing stocks"""
|
|
19
|
+
advancers_percent: NotRequired[float]
|
|
20
|
+
r"""Percentage of tracked symbols that are advancing. Use this to show how broad the market move is."""
|
|
21
|
+
decliners: NotRequired[int]
|
|
22
|
+
r"""Number of declining stocks"""
|
|
23
|
+
decliners_percent: NotRequired[float]
|
|
24
|
+
r"""Percentage of tracked symbols that are declining. Use this with advancers percent for market breadth displays."""
|
|
25
|
+
timestamp: NotRequired[str]
|
|
26
|
+
r"""Data timestamp in ISO 8601 format; fractional seconds may be present (for example microseconds)."""
|
|
27
|
+
total_symbols: NotRequired[int]
|
|
28
|
+
r"""Total number of symbols included in the breadth calculation."""
|
|
29
|
+
unchanged: NotRequired[int]
|
|
30
|
+
r"""Number of unchanged stocks"""
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class MarketBreadth(BaseModel):
|
|
34
|
+
r"""Market breadth snapshot showing how many symbols are rising, falling, or unchanged. Use it to summarize overall market participation."""
|
|
35
|
+
|
|
36
|
+
advance_decline_ratio: Annotated[
|
|
37
|
+
Optional[float], pydantic.Field(alias="advanceDeclineRatio")
|
|
38
|
+
] = None
|
|
39
|
+
r"""Ratio of advancers to decliners"""
|
|
40
|
+
|
|
41
|
+
advancers: Optional[int] = None
|
|
42
|
+
r"""Number of advancing stocks"""
|
|
43
|
+
|
|
44
|
+
advancers_percent: Annotated[
|
|
45
|
+
Optional[float], pydantic.Field(alias="advancersPercent")
|
|
46
|
+
] = None
|
|
47
|
+
r"""Percentage of tracked symbols that are advancing. Use this to show how broad the market move is."""
|
|
48
|
+
|
|
49
|
+
decliners: Optional[int] = None
|
|
50
|
+
r"""Number of declining stocks"""
|
|
51
|
+
|
|
52
|
+
decliners_percent: Annotated[
|
|
53
|
+
Optional[float], pydantic.Field(alias="declinersPercent")
|
|
54
|
+
] = None
|
|
55
|
+
r"""Percentage of tracked symbols that are declining. Use this with advancers percent for market breadth displays."""
|
|
56
|
+
|
|
57
|
+
timestamp: Optional[str] = None
|
|
58
|
+
r"""Data timestamp in ISO 8601 format; fractional seconds may be present (for example microseconds)."""
|
|
59
|
+
|
|
60
|
+
total_symbols: Annotated[Optional[int], pydantic.Field(alias="totalSymbols")] = None
|
|
61
|
+
r"""Total number of symbols included in the breadth calculation."""
|
|
62
|
+
|
|
63
|
+
unchanged: Optional[int] = None
|
|
64
|
+
r"""Number of unchanged stocks"""
|
|
65
|
+
|
|
66
|
+
@model_serializer(mode="wrap")
|
|
67
|
+
def serialize_model(self, handler):
|
|
68
|
+
optional_fields = set(
|
|
69
|
+
[
|
|
70
|
+
"advanceDeclineRatio",
|
|
71
|
+
"advancers",
|
|
72
|
+
"advancersPercent",
|
|
73
|
+
"decliners",
|
|
74
|
+
"declinersPercent",
|
|
75
|
+
"timestamp",
|
|
76
|
+
"totalSymbols",
|
|
77
|
+
"unchanged",
|
|
78
|
+
]
|
|
79
|
+
)
|
|
80
|
+
serialized = handler(self)
|
|
81
|
+
m = {}
|
|
82
|
+
|
|
83
|
+
for n, f in type(self).model_fields.items():
|
|
84
|
+
k = f.alias or n
|
|
85
|
+
val = serialized.get(k, serialized.get(n))
|
|
86
|
+
|
|
87
|
+
if val != UNSET_SENTINEL:
|
|
88
|
+
if val is not None or k not in optional_fields:
|
|
89
|
+
m[k] = val
|
|
90
|
+
|
|
91
|
+
return m
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
try:
|
|
95
|
+
MarketBreadth.model_rebuild()
|
|
96
|
+
except NameError:
|
|
97
|
+
pass
|