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,75 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 7946a4a7b84e
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .screenclause import ScreenClause, ScreenClauseTypedDict
|
|
6
|
+
from enum import Enum
|
|
7
|
+
from finance_dev import models, utils
|
|
8
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
9
|
+
from pydantic import field_serializer, model_serializer
|
|
10
|
+
from typing import List, Optional
|
|
11
|
+
from typing_extensions import NotRequired, TypedDict
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class ScreenGroupOperator(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
15
|
+
r"""How the clauses inside this group are combined:
|
|
16
|
+
- `AND` — every clause in the group must match (logical AND).
|
|
17
|
+
- `OR` — at least one clause in the group must match (logical OR).
|
|
18
|
+
- `NOT` — negate the clause inside the group (logical NOT).
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
AND = "AND"
|
|
22
|
+
OR = "OR"
|
|
23
|
+
NOT = "NOT"
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
class ScreenGroupTypedDict(TypedDict):
|
|
27
|
+
r"""Nested group of clauses with its own operator (AND, OR, NOT)."""
|
|
28
|
+
|
|
29
|
+
clauses: NotRequired[List[ScreenClauseTypedDict]]
|
|
30
|
+
r"""Clauses combined by this group's operator."""
|
|
31
|
+
operator: NotRequired[ScreenGroupOperator]
|
|
32
|
+
r"""How the clauses inside this group are combined:
|
|
33
|
+
- `AND` — every clause in the group must match (logical AND).
|
|
34
|
+
- `OR` — at least one clause in the group must match (logical OR).
|
|
35
|
+
- `NOT` — negate the clause inside the group (logical NOT).
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class ScreenGroup(BaseModel):
|
|
40
|
+
r"""Nested group of clauses with its own operator (AND, OR, NOT)."""
|
|
41
|
+
|
|
42
|
+
clauses: Optional[List[ScreenClause]] = None
|
|
43
|
+
r"""Clauses combined by this group's operator."""
|
|
44
|
+
|
|
45
|
+
operator: Optional[ScreenGroupOperator] = None
|
|
46
|
+
r"""How the clauses inside this group are combined:
|
|
47
|
+
- `AND` — every clause in the group must match (logical AND).
|
|
48
|
+
- `OR` — at least one clause in the group must match (logical OR).
|
|
49
|
+
- `NOT` — negate the clause inside the group (logical NOT).
|
|
50
|
+
"""
|
|
51
|
+
|
|
52
|
+
@field_serializer("operator")
|
|
53
|
+
def serialize_operator(self, value):
|
|
54
|
+
if isinstance(value, str):
|
|
55
|
+
try:
|
|
56
|
+
return models.ScreenGroupOperator(value)
|
|
57
|
+
except ValueError:
|
|
58
|
+
return value
|
|
59
|
+
return value
|
|
60
|
+
|
|
61
|
+
@model_serializer(mode="wrap")
|
|
62
|
+
def serialize_model(self, handler):
|
|
63
|
+
optional_fields = set(["clauses", "operator"])
|
|
64
|
+
serialized = handler(self)
|
|
65
|
+
m = {}
|
|
66
|
+
|
|
67
|
+
for n, f in type(self).model_fields.items():
|
|
68
|
+
k = f.alias or n
|
|
69
|
+
val = serialized.get(k, serialized.get(n))
|
|
70
|
+
|
|
71
|
+
if val != UNSET_SENTINEL:
|
|
72
|
+
if val is not None or k not in optional_fields:
|
|
73
|
+
m[k] = val
|
|
74
|
+
|
|
75
|
+
return m
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: a3b2095d32ba
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .etbsearchresponse import EtbSearchResponse, EtbSearchResponseTypedDict
|
|
6
|
+
from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
|
|
7
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
8
|
+
import pydantic
|
|
9
|
+
from pydantic import model_serializer
|
|
10
|
+
from typing import Optional
|
|
11
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class SearchEtbSymbolsResponseTypedDict(TypedDict):
|
|
15
|
+
http_meta: HTTPMetadataTypedDict
|
|
16
|
+
etb_search_response: NotRequired[EtbSearchResponseTypedDict]
|
|
17
|
+
r"""Borrowability answers keyed by normalized (uppercase) symbol. There is no 404: a symbol that is not on the list is a valid `false` answer, not a missing resource."""
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class SearchEtbSymbolsResponse(BaseModel):
|
|
21
|
+
http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
|
|
22
|
+
|
|
23
|
+
etb_search_response: Optional[EtbSearchResponse] = None
|
|
24
|
+
r"""Borrowability answers keyed by normalized (uppercase) symbol. There is no 404: a symbol that is not on the list is a valid `false` answer, not a missing resource."""
|
|
25
|
+
|
|
26
|
+
@model_serializer(mode="wrap")
|
|
27
|
+
def serialize_model(self, handler):
|
|
28
|
+
optional_fields = set(["EtbSearchResponse"])
|
|
29
|
+
serialized = handler(self)
|
|
30
|
+
m = {}
|
|
31
|
+
|
|
32
|
+
for n, f in type(self).model_fields.items():
|
|
33
|
+
k = f.alias or n
|
|
34
|
+
val = serialized.get(k, serialized.get(n))
|
|
35
|
+
|
|
36
|
+
if val != UNSET_SENTINEL:
|
|
37
|
+
if val is not None or k not in optional_fields:
|
|
38
|
+
m[k] = val
|
|
39
|
+
|
|
40
|
+
return m
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: d3a556e6644a
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
|
|
6
|
+
from .indexsearchresponse import IndexSearchResponse, IndexSearchResponseTypedDict
|
|
7
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
8
|
+
from finance_dev.utils import FieldMetadata, QueryParamMetadata
|
|
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 SearchIndicesRequestTypedDict(TypedDict):
|
|
16
|
+
index_name: str
|
|
17
|
+
r"""Full or partial index name to search for. Case-insensitive substring match against the index display name (e.g. `S&P 500`, `Dow`, `NASDAQ`). Returns matching indices with their `symbol`, `indexGroup`, and `currency`."""
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class SearchIndicesRequest(BaseModel):
|
|
21
|
+
index_name: Annotated[
|
|
22
|
+
str,
|
|
23
|
+
pydantic.Field(alias="indexName"),
|
|
24
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
25
|
+
]
|
|
26
|
+
r"""Full or partial index name to search for. Case-insensitive substring match against the index display name (e.g. `S&P 500`, `Dow`, `NASDAQ`). Returns matching indices with their `symbol`, `indexGroup`, and `currency`."""
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class SearchIndicesResponseTypedDict(TypedDict):
|
|
30
|
+
http_meta: HTTPMetadataTypedDict
|
|
31
|
+
index_search_response: NotRequired[IndexSearchResponseTypedDict]
|
|
32
|
+
r"""Successful response"""
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class SearchIndicesResponse(BaseModel):
|
|
36
|
+
http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
|
|
37
|
+
|
|
38
|
+
index_search_response: Optional[IndexSearchResponse] = None
|
|
39
|
+
r"""Successful response"""
|
|
40
|
+
|
|
41
|
+
@model_serializer(mode="wrap")
|
|
42
|
+
def serialize_model(self, handler):
|
|
43
|
+
optional_fields = set(["IndexSearchResponse"])
|
|
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
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: a58135d5b066
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
|
|
6
|
+
from .logosearchresponse import LogoSearchResponse, LogoSearchResponseTypedDict
|
|
7
|
+
from enum import Enum
|
|
8
|
+
from finance_dev import models, utils
|
|
9
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
10
|
+
from finance_dev.utils import FieldMetadata, QueryParamMetadata
|
|
11
|
+
import pydantic
|
|
12
|
+
from pydantic import field_serializer, model_serializer
|
|
13
|
+
from typing import Optional
|
|
14
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class SearchLogosSearchKeysType(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
18
|
+
r"""Tells the API how to interpret the value you send in `searchKeys`. Allowed values:
|
|
19
|
+
- `firm_id` — the value is a firm/company internal ID.
|
|
20
|
+
- `firm` — the value is the firm/company name.
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
SYMBOL = "symbol"
|
|
24
|
+
CIK = "cik"
|
|
25
|
+
CUSIP = "cusip"
|
|
26
|
+
ISIN = "isin"
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class SearchLogosRequestTypedDict(TypedDict):
|
|
30
|
+
search_keys: str
|
|
31
|
+
r"""One or more values to look up, comma-separated. The format depends on `searchKeysType`. For example, with `searchKeysType=symbol` send `AAPL,MSFT`; with `searchKeysType=cik` send `0000320193,0000789019`."""
|
|
32
|
+
fields: str
|
|
33
|
+
r"""Comma-separated list of logo asset fields to return. Common values:
|
|
34
|
+
- `logo_light` — full logo for light backgrounds.
|
|
35
|
+
- `logo_dark` — full logo for dark backgrounds.
|
|
36
|
+
- `mark_light` — square/icon mark for light backgrounds.
|
|
37
|
+
- `mark_dark` — square/icon mark for dark backgrounds.
|
|
38
|
+
|
|
39
|
+
Other provider-defined fields may also be supported — pass any field name the upstream image catalog exposes.
|
|
40
|
+
"""
|
|
41
|
+
search_keys_type: NotRequired[SearchLogosSearchKeysType]
|
|
42
|
+
r"""Tells the API how to interpret the value you send in `searchKeys`. Allowed values:
|
|
43
|
+
- `firm_id` — the value is a firm/company internal ID.
|
|
44
|
+
- `firm` — the value is the firm/company name.
|
|
45
|
+
"""
|
|
46
|
+
composite_auto: NotRequired[bool]
|
|
47
|
+
r"""Whether to auto-generate composite logo marks. Use true when you need fallback visuals for symbols without a standard logo."""
|
|
48
|
+
composite_radius: NotRequired[int]
|
|
49
|
+
r"""Corner radius for generated composite logos. Enter a value from 0 to 50 to match your UI style."""
|
|
50
|
+
scale: NotRequired[str]
|
|
51
|
+
r"""Image scale for returned logo URLs. Use higher scale values for high-density displays."""
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class SearchLogosRequest(BaseModel):
|
|
55
|
+
search_keys: Annotated[
|
|
56
|
+
str,
|
|
57
|
+
pydantic.Field(alias="searchKeys"),
|
|
58
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
59
|
+
]
|
|
60
|
+
r"""One or more values to look up, comma-separated. The format depends on `searchKeysType`. For example, with `searchKeysType=symbol` send `AAPL,MSFT`; with `searchKeysType=cik` send `0000320193,0000789019`."""
|
|
61
|
+
|
|
62
|
+
fields: Annotated[
|
|
63
|
+
str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
|
|
64
|
+
]
|
|
65
|
+
r"""Comma-separated list of logo asset fields to return. Common values:
|
|
66
|
+
- `logo_light` — full logo for light backgrounds.
|
|
67
|
+
- `logo_dark` — full logo for dark backgrounds.
|
|
68
|
+
- `mark_light` — square/icon mark for light backgrounds.
|
|
69
|
+
- `mark_dark` — square/icon mark for dark backgrounds.
|
|
70
|
+
|
|
71
|
+
Other provider-defined fields may also be supported — pass any field name the upstream image catalog exposes.
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
search_keys_type: Annotated[
|
|
75
|
+
Optional[SearchLogosSearchKeysType],
|
|
76
|
+
pydantic.Field(alias="searchKeysType"),
|
|
77
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
78
|
+
] = None
|
|
79
|
+
r"""Tells the API how to interpret the value you send in `searchKeys`. Allowed values:
|
|
80
|
+
- `firm_id` — the value is a firm/company internal ID.
|
|
81
|
+
- `firm` — the value is the firm/company name.
|
|
82
|
+
"""
|
|
83
|
+
|
|
84
|
+
composite_auto: Annotated[
|
|
85
|
+
Optional[bool],
|
|
86
|
+
pydantic.Field(alias="compositeAuto"),
|
|
87
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
88
|
+
] = False
|
|
89
|
+
r"""Whether to auto-generate composite logo marks. Use true when you need fallback visuals for symbols without a standard logo."""
|
|
90
|
+
|
|
91
|
+
composite_radius: Annotated[
|
|
92
|
+
Optional[int],
|
|
93
|
+
pydantic.Field(alias="compositeRadius"),
|
|
94
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
95
|
+
] = None
|
|
96
|
+
r"""Corner radius for generated composite logos. Enter a value from 0 to 50 to match your UI style."""
|
|
97
|
+
|
|
98
|
+
scale: Annotated[
|
|
99
|
+
Optional[str],
|
|
100
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
101
|
+
] = None
|
|
102
|
+
r"""Image scale for returned logo URLs. Use higher scale values for high-density displays."""
|
|
103
|
+
|
|
104
|
+
@field_serializer("search_keys_type")
|
|
105
|
+
def serialize_search_keys_type(self, value):
|
|
106
|
+
if isinstance(value, str):
|
|
107
|
+
try:
|
|
108
|
+
return models.SearchLogosSearchKeysType(value)
|
|
109
|
+
except ValueError:
|
|
110
|
+
return value
|
|
111
|
+
return value
|
|
112
|
+
|
|
113
|
+
@model_serializer(mode="wrap")
|
|
114
|
+
def serialize_model(self, handler):
|
|
115
|
+
optional_fields = set(
|
|
116
|
+
["searchKeysType", "compositeAuto", "compositeRadius", "scale"]
|
|
117
|
+
)
|
|
118
|
+
serialized = handler(self)
|
|
119
|
+
m = {}
|
|
120
|
+
|
|
121
|
+
for n, f in type(self).model_fields.items():
|
|
122
|
+
k = f.alias or n
|
|
123
|
+
val = serialized.get(k, serialized.get(n))
|
|
124
|
+
|
|
125
|
+
if val != UNSET_SENTINEL:
|
|
126
|
+
if val is not None or k not in optional_fields:
|
|
127
|
+
m[k] = val
|
|
128
|
+
|
|
129
|
+
return m
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
class SearchLogosResponseTypedDict(TypedDict):
|
|
133
|
+
http_meta: HTTPMetadataTypedDict
|
|
134
|
+
logo_search_response: NotRequired[LogoSearchResponseTypedDict]
|
|
135
|
+
r"""Successful response"""
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
class SearchLogosResponse(BaseModel):
|
|
139
|
+
http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
|
|
140
|
+
|
|
141
|
+
logo_search_response: Optional[LogoSearchResponse] = None
|
|
142
|
+
r"""Successful response"""
|
|
143
|
+
|
|
144
|
+
@model_serializer(mode="wrap")
|
|
145
|
+
def serialize_model(self, handler):
|
|
146
|
+
optional_fields = set(["LogoSearchResponse"])
|
|
147
|
+
serialized = handler(self)
|
|
148
|
+
m = {}
|
|
149
|
+
|
|
150
|
+
for n, f in type(self).model_fields.items():
|
|
151
|
+
k = f.alias or n
|
|
152
|
+
val = serialized.get(k, serialized.get(n))
|
|
153
|
+
|
|
154
|
+
if val != UNSET_SENTINEL:
|
|
155
|
+
if val is not None or k not in optional_fields:
|
|
156
|
+
m[k] = val
|
|
157
|
+
|
|
158
|
+
return m
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 91ef950abcee
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
|
|
6
|
+
from .searchsymbolresponseitem import (
|
|
7
|
+
SearchSymbolResponseItem,
|
|
8
|
+
SearchSymbolResponseItemTypedDict,
|
|
9
|
+
)
|
|
10
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
11
|
+
from finance_dev.utils import FieldMetadata, QueryParamMetadata
|
|
12
|
+
import pydantic
|
|
13
|
+
from pydantic import model_serializer
|
|
14
|
+
from typing import List, Optional
|
|
15
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class SearchMarketSymbolsRequestTypedDict(TypedDict):
|
|
19
|
+
query: str
|
|
20
|
+
r"""Text the user entered in symbol search. Use `AAPL` for stocks and indices, `.AAPL` for option-chain style searches, and `/ES` for futures. Do not use `!` as a special prefix; it is treated as literal text."""
|
|
21
|
+
limit: NotRequired[int]
|
|
22
|
+
r"""Maximum number of matches to return. Use a small number for autocomplete and a larger number for full search pages. Default is 20; minimum is 1; maximum is 100."""
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class SearchMarketSymbolsRequest(BaseModel):
|
|
26
|
+
query: Annotated[
|
|
27
|
+
str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
|
|
28
|
+
]
|
|
29
|
+
r"""Text the user entered in symbol search. Use `AAPL` for stocks and indices, `.AAPL` for option-chain style searches, and `/ES` for futures. Do not use `!` as a special prefix; it is treated as literal text."""
|
|
30
|
+
|
|
31
|
+
limit: Annotated[
|
|
32
|
+
Optional[int],
|
|
33
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
34
|
+
] = 20
|
|
35
|
+
r"""Maximum number of matches to return. Use a small number for autocomplete and a larger number for full search pages. Default is 20; minimum is 1; maximum is 100."""
|
|
36
|
+
|
|
37
|
+
@model_serializer(mode="wrap")
|
|
38
|
+
def serialize_model(self, handler):
|
|
39
|
+
optional_fields = set(["limit"])
|
|
40
|
+
serialized = handler(self)
|
|
41
|
+
m = {}
|
|
42
|
+
|
|
43
|
+
for n, f in type(self).model_fields.items():
|
|
44
|
+
k = f.alias or n
|
|
45
|
+
val = serialized.get(k, serialized.get(n))
|
|
46
|
+
|
|
47
|
+
if val != UNSET_SENTINEL:
|
|
48
|
+
if val is not None or k not in optional_fields:
|
|
49
|
+
m[k] = val
|
|
50
|
+
|
|
51
|
+
return m
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class SearchMarketSymbolsResponseTypedDict(TypedDict):
|
|
55
|
+
http_meta: HTTPMetadataTypedDict
|
|
56
|
+
search_symbol_response: NotRequired[List[SearchSymbolResponseItemTypedDict]]
|
|
57
|
+
r"""Search results retrieved successfully"""
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class SearchMarketSymbolsResponse(BaseModel):
|
|
61
|
+
http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
|
|
62
|
+
|
|
63
|
+
search_symbol_response: Optional[List[SearchSymbolResponseItem]] = None
|
|
64
|
+
r"""Search results retrieved successfully"""
|
|
65
|
+
|
|
66
|
+
@model_serializer(mode="wrap")
|
|
67
|
+
def serialize_model(self, handler):
|
|
68
|
+
optional_fields = set(["SearchSymbolResponse"])
|
|
69
|
+
serialized = handler(self)
|
|
70
|
+
m = {}
|
|
71
|
+
|
|
72
|
+
for n, f in type(self).model_fields.items():
|
|
73
|
+
k = f.alias or n
|
|
74
|
+
val = serialized.get(k, serialized.get(n))
|
|
75
|
+
|
|
76
|
+
if val != UNSET_SENTINEL:
|
|
77
|
+
if val is not None or k not in optional_fields:
|
|
78
|
+
m[k] = val
|
|
79
|
+
|
|
80
|
+
return m
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 4189fcac8df5
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
|
|
6
|
+
from .predmdbaseeventsearchresult import (
|
|
7
|
+
PredMdBaseEventSearchResult,
|
|
8
|
+
PredMdBaseEventSearchResultTypedDict,
|
|
9
|
+
)
|
|
10
|
+
from .predmdcontractsearchresult import (
|
|
11
|
+
PredMdContractSearchResult,
|
|
12
|
+
PredMdContractSearchResultTypedDict,
|
|
13
|
+
)
|
|
14
|
+
from .predmdeventsearchresult import (
|
|
15
|
+
PredMdEventSearchResult,
|
|
16
|
+
PredMdEventSearchResultTypedDict,
|
|
17
|
+
)
|
|
18
|
+
from enum import Enum
|
|
19
|
+
from finance_dev import models, utils
|
|
20
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
21
|
+
from finance_dev.utils import FieldMetadata, QueryParamMetadata, get_discriminator
|
|
22
|
+
import pydantic
|
|
23
|
+
from pydantic import Discriminator, Tag, field_serializer, model_serializer
|
|
24
|
+
from typing import Callable, Optional, Union
|
|
25
|
+
from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class SearchType(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
29
|
+
r"""Level hits come back at. `contracts` (default) returns matching contracts; `events` returns one hit per event and `base-events` one per base event, each ranked by its best-matching contract and carrying only its own fields and a count of matching contracts. Echoed in the response."""
|
|
30
|
+
|
|
31
|
+
CONTRACTS = "contracts"
|
|
32
|
+
EVENTS = "events"
|
|
33
|
+
BASE_EVENTS = "base-events"
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class SearchRequestTypedDict(TypedDict):
|
|
37
|
+
type: NotRequired[SearchType]
|
|
38
|
+
r"""Level hits come back at. `contracts` (default) returns matching contracts; `events` returns one hit per event and `base-events` one per base event, each ranked by its best-matching contract and carrying only its own fields and a count of matching contracts. Echoed in the response."""
|
|
39
|
+
q: NotRequired[str]
|
|
40
|
+
r"""Full-text query over symbols, questions, event names and base-event specifications. Symbols split on _, - and . so `BPM 0822` finds `BPM_0822_1750`. Omit to browse, soonest last-trade date first."""
|
|
41
|
+
state: NotRequired[str]
|
|
42
|
+
r"""Contract state. Omitted means ACTIVE; `*` matches every state, including DELETED."""
|
|
43
|
+
base_event_id: NotRequired[str]
|
|
44
|
+
r"""Only contracts under this base event."""
|
|
45
|
+
event_id: NotRequired[str]
|
|
46
|
+
r"""Only contracts under this event."""
|
|
47
|
+
category: NotRequired[str]
|
|
48
|
+
r"""Only contracts in this category or any category under it. Takes a `path` from List Categories, URL-encoded. A bare level name such as `United States` matches nothing, because level names repeat under different parents."""
|
|
49
|
+
tradable: NotRequired[bool]
|
|
50
|
+
r"""Only tradable (true) or non-tradable (false) contracts."""
|
|
51
|
+
page: NotRequired[int]
|
|
52
|
+
r"""1-based page number; 0 or omitted means 1."""
|
|
53
|
+
per_page: NotRequired[int]
|
|
54
|
+
r"""Hits per page, counting whatever type returns; 0 or omitted means 20, values above 100 are clamped to 100."""
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
class SearchRequest(BaseModel):
|
|
58
|
+
type: Annotated[
|
|
59
|
+
Optional[SearchType],
|
|
60
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
61
|
+
] = SearchType.CONTRACTS
|
|
62
|
+
r"""Level hits come back at. `contracts` (default) returns matching contracts; `events` returns one hit per event and `base-events` one per base event, each ranked by its best-matching contract and carrying only its own fields and a count of matching contracts. Echoed in the response."""
|
|
63
|
+
|
|
64
|
+
q: Annotated[
|
|
65
|
+
Optional[str],
|
|
66
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
67
|
+
] = None
|
|
68
|
+
r"""Full-text query over symbols, questions, event names and base-event specifications. Symbols split on _, - and . so `BPM 0822` finds `BPM_0822_1750`. Omit to browse, soonest last-trade date first."""
|
|
69
|
+
|
|
70
|
+
state: Annotated[
|
|
71
|
+
Optional[str],
|
|
72
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
73
|
+
] = None
|
|
74
|
+
r"""Contract state. Omitted means ACTIVE; `*` matches every state, including DELETED."""
|
|
75
|
+
|
|
76
|
+
base_event_id: Annotated[
|
|
77
|
+
Optional[str],
|
|
78
|
+
pydantic.Field(alias="baseEventId"),
|
|
79
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
80
|
+
] = None
|
|
81
|
+
r"""Only contracts under this base event."""
|
|
82
|
+
|
|
83
|
+
event_id: Annotated[
|
|
84
|
+
Optional[str],
|
|
85
|
+
pydantic.Field(alias="eventId"),
|
|
86
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
87
|
+
] = None
|
|
88
|
+
r"""Only contracts under this event."""
|
|
89
|
+
|
|
90
|
+
category: Annotated[
|
|
91
|
+
Optional[str],
|
|
92
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
93
|
+
] = None
|
|
94
|
+
r"""Only contracts in this category or any category under it. Takes a `path` from List Categories, URL-encoded. A bare level name such as `United States` matches nothing, because level names repeat under different parents."""
|
|
95
|
+
|
|
96
|
+
tradable: Annotated[
|
|
97
|
+
Optional[bool],
|
|
98
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
99
|
+
] = None
|
|
100
|
+
r"""Only tradable (true) or non-tradable (false) contracts."""
|
|
101
|
+
|
|
102
|
+
page: Annotated[
|
|
103
|
+
Optional[int],
|
|
104
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
105
|
+
] = None
|
|
106
|
+
r"""1-based page number; 0 or omitted means 1."""
|
|
107
|
+
|
|
108
|
+
per_page: Annotated[
|
|
109
|
+
Optional[int],
|
|
110
|
+
pydantic.Field(alias="perPage"),
|
|
111
|
+
FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
|
|
112
|
+
] = None
|
|
113
|
+
r"""Hits per page, counting whatever type returns; 0 or omitted means 20, values above 100 are clamped to 100."""
|
|
114
|
+
|
|
115
|
+
@field_serializer("type")
|
|
116
|
+
def serialize_type(self, value):
|
|
117
|
+
if isinstance(value, str):
|
|
118
|
+
try:
|
|
119
|
+
return models.SearchType(value)
|
|
120
|
+
except ValueError:
|
|
121
|
+
return value
|
|
122
|
+
return value
|
|
123
|
+
|
|
124
|
+
@model_serializer(mode="wrap")
|
|
125
|
+
def serialize_model(self, handler):
|
|
126
|
+
optional_fields = set(
|
|
127
|
+
[
|
|
128
|
+
"type",
|
|
129
|
+
"q",
|
|
130
|
+
"state",
|
|
131
|
+
"baseEventId",
|
|
132
|
+
"eventId",
|
|
133
|
+
"category",
|
|
134
|
+
"tradable",
|
|
135
|
+
"page",
|
|
136
|
+
"perPage",
|
|
137
|
+
]
|
|
138
|
+
)
|
|
139
|
+
serialized = handler(self)
|
|
140
|
+
m = {}
|
|
141
|
+
|
|
142
|
+
for n, f in type(self).model_fields.items():
|
|
143
|
+
k = f.alias or n
|
|
144
|
+
val = serialized.get(k, serialized.get(n))
|
|
145
|
+
|
|
146
|
+
if val != UNSET_SENTINEL:
|
|
147
|
+
if val is not None or k not in optional_fields:
|
|
148
|
+
m[k] = val
|
|
149
|
+
|
|
150
|
+
return m
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
SearchDataTypedDict = TypeAliasType(
|
|
154
|
+
"SearchDataTypedDict",
|
|
155
|
+
Union[
|
|
156
|
+
PredMdContractSearchResultTypedDict,
|
|
157
|
+
PredMdEventSearchResultTypedDict,
|
|
158
|
+
PredMdBaseEventSearchResultTypedDict,
|
|
159
|
+
],
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
SearchData = Annotated[
|
|
164
|
+
Union[
|
|
165
|
+
Annotated[PredMdBaseEventSearchResult, Tag("base-events")],
|
|
166
|
+
Annotated[PredMdContractSearchResult, Tag("contracts")],
|
|
167
|
+
Annotated[PredMdEventSearchResult, Tag("events")],
|
|
168
|
+
],
|
|
169
|
+
Discriminator(lambda m: get_discriminator(m, "type", "type")),
|
|
170
|
+
]
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
class SearchResponseBodyTypedDict(TypedDict):
|
|
174
|
+
r"""Standard success envelope used by all success responses. `data` is endpoint-specific."""
|
|
175
|
+
|
|
176
|
+
success: bool
|
|
177
|
+
data: NotRequired[SearchDataTypedDict]
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
class SearchResponseBody(BaseModel):
|
|
181
|
+
r"""Standard success envelope used by all success responses. `data` is endpoint-specific."""
|
|
182
|
+
|
|
183
|
+
success: bool
|
|
184
|
+
|
|
185
|
+
data: Optional[SearchData] = None
|
|
186
|
+
|
|
187
|
+
@model_serializer(mode="wrap")
|
|
188
|
+
def serialize_model(self, handler):
|
|
189
|
+
optional_fields = set(["data"])
|
|
190
|
+
serialized = handler(self)
|
|
191
|
+
m = {}
|
|
192
|
+
|
|
193
|
+
for n, f in type(self).model_fields.items():
|
|
194
|
+
k = f.alias or n
|
|
195
|
+
val = serialized.get(k, serialized.get(n))
|
|
196
|
+
|
|
197
|
+
if val != UNSET_SENTINEL:
|
|
198
|
+
if val is not None or k not in optional_fields:
|
|
199
|
+
m[k] = val
|
|
200
|
+
|
|
201
|
+
return m
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
class SearchResponseTypedDict(TypedDict):
|
|
205
|
+
http_meta: HTTPMetadataTypedDict
|
|
206
|
+
object: NotRequired[SearchResponseBodyTypedDict]
|
|
207
|
+
r"""One page of hits; data.type says which shape they are"""
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
class SearchResponse(BaseModel):
|
|
211
|
+
next: Callable[[], Optional[SearchResponse]]
|
|
212
|
+
|
|
213
|
+
http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
|
|
214
|
+
|
|
215
|
+
object: Optional[SearchResponseBody] = None
|
|
216
|
+
r"""One page of hits; data.type says which shape they are"""
|
|
217
|
+
|
|
218
|
+
@model_serializer(mode="wrap")
|
|
219
|
+
def serialize_model(self, handler):
|
|
220
|
+
optional_fields = set(["object"])
|
|
221
|
+
serialized = handler(self)
|
|
222
|
+
m = {}
|
|
223
|
+
|
|
224
|
+
for n, f in type(self).model_fields.items():
|
|
225
|
+
k = f.alias or n
|
|
226
|
+
val = serialized.get(k, serialized.get(n))
|
|
227
|
+
|
|
228
|
+
if val != UNSET_SENTINEL:
|
|
229
|
+
if val is not None or k not in optional_fields:
|
|
230
|
+
m[k] = val
|
|
231
|
+
|
|
232
|
+
return m
|