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,127 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 4ac05f0eb27b
|
|
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 PreviewOrderResponseTypedDict(TypedDict):
|
|
13
|
+
r"""Response schema for order preview (PreviewOrdResponse)"""
|
|
14
|
+
|
|
15
|
+
buying_power_impact: NotRequired[str]
|
|
16
|
+
r"""Estimated reduction in available buying power if the order is submitted. Present in both equity and option previews. Use this before Place Order to confirm the account can support the trade."""
|
|
17
|
+
commission: NotRequired[str]
|
|
18
|
+
r"""Estimated commission for the order. Present in both equity and option previews. Show this as part of the total trading cost."""
|
|
19
|
+
errors: NotRequired[List[str]]
|
|
20
|
+
r"""Blocking validation or risk errors returned by preview. Can appear for either equity or option previews. Do not call Place Order until these are resolved."""
|
|
21
|
+
estimated_cost: NotRequired[str]
|
|
22
|
+
r"""Estimated cash cost of the order before it is placed. Present in both equity and option previews. Use this to show the user the expected trade cost during review."""
|
|
23
|
+
estimated_margin: NotRequired[str]
|
|
24
|
+
r"""Estimated margin requirement for the order. Present in both equity and option previews. Use this to explain how much margin capacity the order may consume."""
|
|
25
|
+
fees: NotRequired[str]
|
|
26
|
+
r"""Estimated regulatory and exchange fees. Present in both equity and option previews. Add this to commissions and order cost when showing total estimated cost."""
|
|
27
|
+
num_day_trades: NotRequired[int]
|
|
28
|
+
r"""Estimated number of day trades this order would count toward. Present in both equity and option previews. Use this to warn pattern-day-trader-sensitive users."""
|
|
29
|
+
option_fees: NotRequired[str]
|
|
30
|
+
r"""Estimated option-specific fees. Present only in the option preview. For equity previews this is typically omitted or zero."""
|
|
31
|
+
option_premium: NotRequired[str]
|
|
32
|
+
r"""Estimated premium paid or received for an option order. Present only in the option preview. For equity previews this is typically omitted or zero."""
|
|
33
|
+
option_requirement: NotRequired[str]
|
|
34
|
+
r"""Estimated option requirement or margin requirement for the option strategy. Present only in the option preview. For equity previews this is typically omitted or zero."""
|
|
35
|
+
warn_rule_id: NotRequired[str]
|
|
36
|
+
r"""Identifier for a warning rule triggered by the preview. Present in both equity and option previews when applicable. Use with `warnings` when present."""
|
|
37
|
+
warnings: NotRequired[List[str]]
|
|
38
|
+
r"""Non-blocking warnings returned by preview. Can appear for either equity or option previews. Show these to the user before they submit the live order."""
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class PreviewOrderResponse(BaseModel):
|
|
42
|
+
r"""Response schema for order preview (PreviewOrdResponse)"""
|
|
43
|
+
|
|
44
|
+
buying_power_impact: Annotated[
|
|
45
|
+
Optional[str], pydantic.Field(alias="buyingPowerImpact")
|
|
46
|
+
] = None
|
|
47
|
+
r"""Estimated reduction in available buying power if the order is submitted. Present in both equity and option previews. Use this before Place Order to confirm the account can support the trade."""
|
|
48
|
+
|
|
49
|
+
commission: Optional[str] = None
|
|
50
|
+
r"""Estimated commission for the order. Present in both equity and option previews. Show this as part of the total trading cost."""
|
|
51
|
+
|
|
52
|
+
errors: Optional[List[str]] = None
|
|
53
|
+
r"""Blocking validation or risk errors returned by preview. Can appear for either equity or option previews. Do not call Place Order until these are resolved."""
|
|
54
|
+
|
|
55
|
+
estimated_cost: Annotated[Optional[str], pydantic.Field(alias="estimatedCost")] = (
|
|
56
|
+
None
|
|
57
|
+
)
|
|
58
|
+
r"""Estimated cash cost of the order before it is placed. Present in both equity and option previews. Use this to show the user the expected trade cost during review."""
|
|
59
|
+
|
|
60
|
+
estimated_margin: Annotated[
|
|
61
|
+
Optional[str], pydantic.Field(alias="estimatedMargin")
|
|
62
|
+
] = None
|
|
63
|
+
r"""Estimated margin requirement for the order. Present in both equity and option previews. Use this to explain how much margin capacity the order may consume."""
|
|
64
|
+
|
|
65
|
+
fees: Optional[str] = None
|
|
66
|
+
r"""Estimated regulatory and exchange fees. Present in both equity and option previews. Add this to commissions and order cost when showing total estimated cost."""
|
|
67
|
+
|
|
68
|
+
num_day_trades: Annotated[Optional[int], pydantic.Field(alias="numDayTrades")] = (
|
|
69
|
+
None
|
|
70
|
+
)
|
|
71
|
+
r"""Estimated number of day trades this order would count toward. Present in both equity and option previews. Use this to warn pattern-day-trader-sensitive users."""
|
|
72
|
+
|
|
73
|
+
option_fees: Annotated[Optional[str], pydantic.Field(alias="optionFees")] = None
|
|
74
|
+
r"""Estimated option-specific fees. Present only in the option preview. For equity previews this is typically omitted or zero."""
|
|
75
|
+
|
|
76
|
+
option_premium: Annotated[Optional[str], pydantic.Field(alias="optionPremium")] = (
|
|
77
|
+
None
|
|
78
|
+
)
|
|
79
|
+
r"""Estimated premium paid or received for an option order. Present only in the option preview. For equity previews this is typically omitted or zero."""
|
|
80
|
+
|
|
81
|
+
option_requirement: Annotated[
|
|
82
|
+
Optional[str], pydantic.Field(alias="optionRequirement")
|
|
83
|
+
] = None
|
|
84
|
+
r"""Estimated option requirement or margin requirement for the option strategy. Present only in the option preview. For equity previews this is typically omitted or zero."""
|
|
85
|
+
|
|
86
|
+
warn_rule_id: Annotated[Optional[str], pydantic.Field(alias="warnRuleId")] = None
|
|
87
|
+
r"""Identifier for a warning rule triggered by the preview. Present in both equity and option previews when applicable. Use with `warnings` when present."""
|
|
88
|
+
|
|
89
|
+
warnings: Optional[List[str]] = None
|
|
90
|
+
r"""Non-blocking warnings returned by preview. Can appear for either equity or option previews. Show these to the user before they submit the live order."""
|
|
91
|
+
|
|
92
|
+
@model_serializer(mode="wrap")
|
|
93
|
+
def serialize_model(self, handler):
|
|
94
|
+
optional_fields = set(
|
|
95
|
+
[
|
|
96
|
+
"buyingPowerImpact",
|
|
97
|
+
"commission",
|
|
98
|
+
"errors",
|
|
99
|
+
"estimatedCost",
|
|
100
|
+
"estimatedMargin",
|
|
101
|
+
"fees",
|
|
102
|
+
"numDayTrades",
|
|
103
|
+
"optionFees",
|
|
104
|
+
"optionPremium",
|
|
105
|
+
"optionRequirement",
|
|
106
|
+
"warnRuleId",
|
|
107
|
+
"warnings",
|
|
108
|
+
]
|
|
109
|
+
)
|
|
110
|
+
serialized = handler(self)
|
|
111
|
+
m = {}
|
|
112
|
+
|
|
113
|
+
for n, f in type(self).model_fields.items():
|
|
114
|
+
k = f.alias or n
|
|
115
|
+
val = serialized.get(k, serialized.get(n))
|
|
116
|
+
|
|
117
|
+
if val != UNSET_SENTINEL:
|
|
118
|
+
if val is not None or k not in optional_fields:
|
|
119
|
+
m[k] = val
|
|
120
|
+
|
|
121
|
+
return m
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
try:
|
|
125
|
+
PreviewOrderResponse.model_rebuild()
|
|
126
|
+
except NameError:
|
|
127
|
+
pass
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 90bf72753d81
|
|
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 PriceTargetResponseTypedDict(TypedDict):
|
|
13
|
+
r"""Analyst price target consensus for a stock (high, low, mean, median and analyst count), sourced from Finnhub."""
|
|
14
|
+
|
|
15
|
+
last_updated: NotRequired[str]
|
|
16
|
+
r"""Time the consensus was last updated, as reported by Finnhub"""
|
|
17
|
+
number_analysts: NotRequired[int]
|
|
18
|
+
r"""Number of analysts contributing to the consensus"""
|
|
19
|
+
symbol: NotRequired[str]
|
|
20
|
+
r"""Stock ticker symbol"""
|
|
21
|
+
target_high: NotRequired[float]
|
|
22
|
+
r"""Highest analyst price target"""
|
|
23
|
+
target_low: NotRequired[float]
|
|
24
|
+
r"""Lowest analyst price target"""
|
|
25
|
+
target_mean: NotRequired[float]
|
|
26
|
+
r"""Mean analyst price target"""
|
|
27
|
+
target_median: NotRequired[float]
|
|
28
|
+
r"""Median analyst price target"""
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class PriceTargetResponse(BaseModel):
|
|
32
|
+
r"""Analyst price target consensus for a stock (high, low, mean, median and analyst count), sourced from Finnhub."""
|
|
33
|
+
|
|
34
|
+
last_updated: Annotated[Optional[str], pydantic.Field(alias="lastUpdated")] = None
|
|
35
|
+
r"""Time the consensus was last updated, as reported by Finnhub"""
|
|
36
|
+
|
|
37
|
+
number_analysts: Annotated[
|
|
38
|
+
Optional[int], pydantic.Field(alias="numberAnalysts")
|
|
39
|
+
] = None
|
|
40
|
+
r"""Number of analysts contributing to the consensus"""
|
|
41
|
+
|
|
42
|
+
symbol: Optional[str] = None
|
|
43
|
+
r"""Stock ticker symbol"""
|
|
44
|
+
|
|
45
|
+
target_high: Annotated[Optional[float], pydantic.Field(alias="targetHigh")] = None
|
|
46
|
+
r"""Highest analyst price target"""
|
|
47
|
+
|
|
48
|
+
target_low: Annotated[Optional[float], pydantic.Field(alias="targetLow")] = None
|
|
49
|
+
r"""Lowest analyst price target"""
|
|
50
|
+
|
|
51
|
+
target_mean: Annotated[Optional[float], pydantic.Field(alias="targetMean")] = None
|
|
52
|
+
r"""Mean analyst price target"""
|
|
53
|
+
|
|
54
|
+
target_median: Annotated[Optional[float], pydantic.Field(alias="targetMedian")] = (
|
|
55
|
+
None
|
|
56
|
+
)
|
|
57
|
+
r"""Median analyst price target"""
|
|
58
|
+
|
|
59
|
+
@model_serializer(mode="wrap")
|
|
60
|
+
def serialize_model(self, handler):
|
|
61
|
+
optional_fields = set(
|
|
62
|
+
[
|
|
63
|
+
"lastUpdated",
|
|
64
|
+
"numberAnalysts",
|
|
65
|
+
"symbol",
|
|
66
|
+
"targetHigh",
|
|
67
|
+
"targetLow",
|
|
68
|
+
"targetMean",
|
|
69
|
+
"targetMedian",
|
|
70
|
+
]
|
|
71
|
+
)
|
|
72
|
+
serialized = handler(self)
|
|
73
|
+
m = {}
|
|
74
|
+
|
|
75
|
+
for n, f in type(self).model_fields.items():
|
|
76
|
+
k = f.alias or n
|
|
77
|
+
val = serialized.get(k, serialized.get(n))
|
|
78
|
+
|
|
79
|
+
if val != UNSET_SENTINEL:
|
|
80
|
+
if val is not None or k not in optional_fields:
|
|
81
|
+
m[k] = val
|
|
82
|
+
|
|
83
|
+
return m
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
try:
|
|
87
|
+
PriceTargetResponse.model_rebuild()
|
|
88
|
+
except NameError:
|
|
89
|
+
pass
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: c2ee2e3f7432
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .quotevalues import QuoteValues, QuoteValuesTypedDict
|
|
6
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
7
|
+
from pydantic import model_serializer
|
|
8
|
+
from typing import Optional
|
|
9
|
+
from typing_extensions import NotRequired, TypedDict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class QuoteDataTypedDict(TypedDict):
|
|
13
|
+
r"""One quote record in a quote response. Use `s` to match each record back to the requested symbol."""
|
|
14
|
+
|
|
15
|
+
n: NotRequired[str]
|
|
16
|
+
r"""Display name returned for the quoted instrument or venue."""
|
|
17
|
+
s: NotRequired[str]
|
|
18
|
+
r"""Symbol this quote record belongs to. Match this against the symbol requested in the `symbols` query."""
|
|
19
|
+
v: NotRequired[QuoteValuesTypedDict]
|
|
20
|
+
r"""Market quote values for a symbol. Use bid/ask for trading decisions and last price for display context."""
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class QuoteData(BaseModel):
|
|
24
|
+
r"""One quote record in a quote response. Use `s` to match each record back to the requested symbol."""
|
|
25
|
+
|
|
26
|
+
n: Optional[str] = None
|
|
27
|
+
r"""Display name returned for the quoted instrument or venue."""
|
|
28
|
+
|
|
29
|
+
s: Optional[str] = None
|
|
30
|
+
r"""Symbol this quote record belongs to. Match this against the symbol requested in the `symbols` query."""
|
|
31
|
+
|
|
32
|
+
v: Optional[QuoteValues] = None
|
|
33
|
+
r"""Market quote values for a symbol. Use bid/ask for trading decisions and last price for display context."""
|
|
34
|
+
|
|
35
|
+
@model_serializer(mode="wrap")
|
|
36
|
+
def serialize_model(self, handler):
|
|
37
|
+
optional_fields = set(["n", "s", "v"])
|
|
38
|
+
serialized = handler(self)
|
|
39
|
+
m = {}
|
|
40
|
+
|
|
41
|
+
for n, f in type(self).model_fields.items():
|
|
42
|
+
k = f.alias or n
|
|
43
|
+
val = serialized.get(k, serialized.get(n))
|
|
44
|
+
|
|
45
|
+
if val != UNSET_SENTINEL:
|
|
46
|
+
if val is not None or k not in optional_fields:
|
|
47
|
+
m[k] = val
|
|
48
|
+
|
|
49
|
+
return m
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 7e2ee553b77e
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .quotedata import QuoteData, QuoteDataTypedDict
|
|
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 QuotesResponseS(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
15
|
+
r"""Overall quote response status. `ok` means quote data was returned; `error` means the request could not be fulfilled."""
|
|
16
|
+
|
|
17
|
+
OK = "ok"
|
|
18
|
+
ERROR = "error"
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class QuotesResponseTypedDict(TypedDict):
|
|
22
|
+
r"""Response body for quote requests. Use it to render current market prices for one or more symbols."""
|
|
23
|
+
|
|
24
|
+
d: NotRequired[List[QuoteDataTypedDict]]
|
|
25
|
+
r"""Quote records for the requested symbols. Iterate this array and use each record's `s` value to match the symbol."""
|
|
26
|
+
s: NotRequired[QuotesResponseS]
|
|
27
|
+
r"""Overall quote response status. `ok` means quote data was returned; `error` means the request could not be fulfilled."""
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class QuotesResponse(BaseModel):
|
|
31
|
+
r"""Response body for quote requests. Use it to render current market prices for one or more symbols."""
|
|
32
|
+
|
|
33
|
+
d: Optional[List[QuoteData]] = None
|
|
34
|
+
r"""Quote records for the requested symbols. Iterate this array and use each record's `s` value to match the symbol."""
|
|
35
|
+
|
|
36
|
+
s: Optional[QuotesResponseS] = None
|
|
37
|
+
r"""Overall quote response status. `ok` means quote data was returned; `error` means the request could not be fulfilled."""
|
|
38
|
+
|
|
39
|
+
@field_serializer("s")
|
|
40
|
+
def serialize_s(self, value):
|
|
41
|
+
if isinstance(value, str):
|
|
42
|
+
try:
|
|
43
|
+
return models.QuotesResponseS(value)
|
|
44
|
+
except ValueError:
|
|
45
|
+
return value
|
|
46
|
+
return value
|
|
47
|
+
|
|
48
|
+
@model_serializer(mode="wrap")
|
|
49
|
+
def serialize_model(self, handler):
|
|
50
|
+
optional_fields = set(["d", "s"])
|
|
51
|
+
serialized = handler(self)
|
|
52
|
+
m = {}
|
|
53
|
+
|
|
54
|
+
for n, f in type(self).model_fields.items():
|
|
55
|
+
k = f.alias or n
|
|
56
|
+
val = serialized.get(k, serialized.get(n))
|
|
57
|
+
|
|
58
|
+
if val != UNSET_SENTINEL:
|
|
59
|
+
if val is not None or k not in optional_fields:
|
|
60
|
+
m[k] = val
|
|
61
|
+
|
|
62
|
+
return m
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 2f709e6c1f49
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
6
|
+
from pydantic import model_serializer
|
|
7
|
+
from typing import Optional
|
|
8
|
+
from typing_extensions import NotRequired, TypedDict
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class QuoteValuesTypedDict(TypedDict):
|
|
12
|
+
r"""Market quote values for a symbol. Use bid/ask for trading decisions and last price for display context."""
|
|
13
|
+
|
|
14
|
+
ask: NotRequired[float]
|
|
15
|
+
r"""Lowest price sellers are currently willing to accept. Buyers usually compare their limit price to the ask."""
|
|
16
|
+
bid: NotRequired[float]
|
|
17
|
+
r"""Highest price buyers are currently offering. Sellers usually compare their limit price to the bid."""
|
|
18
|
+
ch: NotRequired[float]
|
|
19
|
+
r"""Dollar price change from the previous close. Use this for quote tiles and daily move displays."""
|
|
20
|
+
chp: NotRequired[float]
|
|
21
|
+
r"""Percent change from the previous close. Use this to show the daily move as a percentage."""
|
|
22
|
+
description: NotRequired[str]
|
|
23
|
+
r"""Full company or instrument description. Show it when users need to confirm the symbol they are viewing."""
|
|
24
|
+
exchange: NotRequired[str]
|
|
25
|
+
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."""
|
|
26
|
+
high_price: NotRequired[float]
|
|
27
|
+
r"""Highest price for the day"""
|
|
28
|
+
low_price: NotRequired[float]
|
|
29
|
+
r"""Lowest traded price during the current session. Use it for daily range displays."""
|
|
30
|
+
lp: NotRequired[float]
|
|
31
|
+
r"""Last traded price. Use this as the current reference price, but use bid and ask when estimating immediate buy or sell cost."""
|
|
32
|
+
open_price: NotRequired[float]
|
|
33
|
+
r"""Opening price for the day"""
|
|
34
|
+
prev_close_price: NotRequired[float]
|
|
35
|
+
r"""Previous day's closing price"""
|
|
36
|
+
short_name: NotRequired[str]
|
|
37
|
+
r"""Short name of the company"""
|
|
38
|
+
volume: NotRequired[float]
|
|
39
|
+
r"""Number of shares or contracts traded during the current session, when available."""
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
class QuoteValues(BaseModel):
|
|
43
|
+
r"""Market quote values for a symbol. Use bid/ask for trading decisions and last price for display context."""
|
|
44
|
+
|
|
45
|
+
ask: Optional[float] = None
|
|
46
|
+
r"""Lowest price sellers are currently willing to accept. Buyers usually compare their limit price to the ask."""
|
|
47
|
+
|
|
48
|
+
bid: Optional[float] = None
|
|
49
|
+
r"""Highest price buyers are currently offering. Sellers usually compare their limit price to the bid."""
|
|
50
|
+
|
|
51
|
+
ch: Optional[float] = None
|
|
52
|
+
r"""Dollar price change from the previous close. Use this for quote tiles and daily move displays."""
|
|
53
|
+
|
|
54
|
+
chp: Optional[float] = None
|
|
55
|
+
r"""Percent change from the previous close. Use this to show the daily move as a percentage."""
|
|
56
|
+
|
|
57
|
+
description: Optional[str] = None
|
|
58
|
+
r"""Full company or instrument description. Show it when users need to confirm the symbol they are viewing."""
|
|
59
|
+
|
|
60
|
+
exchange: Optional[str] = None
|
|
61
|
+
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."""
|
|
62
|
+
|
|
63
|
+
high_price: Optional[float] = None
|
|
64
|
+
r"""Highest price for the day"""
|
|
65
|
+
|
|
66
|
+
low_price: Optional[float] = None
|
|
67
|
+
r"""Lowest traded price during the current session. Use it for daily range displays."""
|
|
68
|
+
|
|
69
|
+
lp: Optional[float] = None
|
|
70
|
+
r"""Last traded price. Use this as the current reference price, but use bid and ask when estimating immediate buy or sell cost."""
|
|
71
|
+
|
|
72
|
+
open_price: Optional[float] = None
|
|
73
|
+
r"""Opening price for the day"""
|
|
74
|
+
|
|
75
|
+
prev_close_price: Optional[float] = None
|
|
76
|
+
r"""Previous day's closing price"""
|
|
77
|
+
|
|
78
|
+
short_name: Optional[str] = None
|
|
79
|
+
r"""Short name of the company"""
|
|
80
|
+
|
|
81
|
+
volume: Optional[float] = None
|
|
82
|
+
r"""Number of shares or contracts traded during the current session, when available."""
|
|
83
|
+
|
|
84
|
+
@model_serializer(mode="wrap")
|
|
85
|
+
def serialize_model(self, handler):
|
|
86
|
+
optional_fields = set(
|
|
87
|
+
[
|
|
88
|
+
"ask",
|
|
89
|
+
"bid",
|
|
90
|
+
"ch",
|
|
91
|
+
"chp",
|
|
92
|
+
"description",
|
|
93
|
+
"exchange",
|
|
94
|
+
"high_price",
|
|
95
|
+
"low_price",
|
|
96
|
+
"lp",
|
|
97
|
+
"open_price",
|
|
98
|
+
"prev_close_price",
|
|
99
|
+
"short_name",
|
|
100
|
+
"volume",
|
|
101
|
+
]
|
|
102
|
+
)
|
|
103
|
+
serialized = handler(self)
|
|
104
|
+
m = {}
|
|
105
|
+
|
|
106
|
+
for n, f in type(self).model_fields.items():
|
|
107
|
+
k = f.alias or n
|
|
108
|
+
val = serialized.get(k, serialized.get(n))
|
|
109
|
+
|
|
110
|
+
if val != UNSET_SENTINEL:
|
|
111
|
+
if val is not None or k not in optional_fields:
|
|
112
|
+
m[k] = val
|
|
113
|
+
|
|
114
|
+
return m
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 62972285ea89
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .ratingsaccuracy import RatingsAccuracy, RatingsAccuracyTypedDict
|
|
6
|
+
from finance_dev.types import (
|
|
7
|
+
BaseModel,
|
|
8
|
+
Nullable,
|
|
9
|
+
OptionalNullable,
|
|
10
|
+
UNSET,
|
|
11
|
+
UNSET_SENTINEL,
|
|
12
|
+
)
|
|
13
|
+
import pydantic
|
|
14
|
+
from pydantic import model_serializer
|
|
15
|
+
from typing import Optional
|
|
16
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class RatingTypedDict(TypedDict):
|
|
20
|
+
r"""Single analyst rating. Fields use snake_case; some fields may be absent when empty."""
|
|
21
|
+
|
|
22
|
+
action_company: NotRequired[str]
|
|
23
|
+
r"""Rating action taken by the analyst firm, such as upgrades, downgrades, initiates or reiterates."""
|
|
24
|
+
action_pt: NotRequired[str]
|
|
25
|
+
r"""Action taken on the price target, such as raised, lowered, maintained or announced."""
|
|
26
|
+
analyst: NotRequired[str]
|
|
27
|
+
r"""Name of the analyst firm that issued the rating."""
|
|
28
|
+
analyst_id: NotRequired[str]
|
|
29
|
+
r"""Provider identifier of the analyst firm."""
|
|
30
|
+
analyst_name: NotRequired[str]
|
|
31
|
+
r"""Name of the individual analyst who issued the rating."""
|
|
32
|
+
currency: NotRequired[str]
|
|
33
|
+
r"""Currency code the price target values are denominated in."""
|
|
34
|
+
date_: NotRequired[str]
|
|
35
|
+
r"""Date the rating was issued, as supplied by Benzinga."""
|
|
36
|
+
exchange: NotRequired[str]
|
|
37
|
+
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."""
|
|
38
|
+
id: NotRequired[str]
|
|
39
|
+
r"""Provider identifier of the analyst rating record."""
|
|
40
|
+
importance: NotRequired[int]
|
|
41
|
+
r"""Provider-assigned importance level of the rating event."""
|
|
42
|
+
name: NotRequired[str]
|
|
43
|
+
r"""Name of the rated company."""
|
|
44
|
+
notes: NotRequired[str]
|
|
45
|
+
r"""Free-text notes accompanying the rating."""
|
|
46
|
+
pt_current: NotRequired[Nullable[float]]
|
|
47
|
+
r"""Price target after this action."""
|
|
48
|
+
pt_current_adjusted: NotRequired[Nullable[float]]
|
|
49
|
+
r"""Price target after this action, adjusted for corporate actions such as splits."""
|
|
50
|
+
pt_prior: NotRequired[Nullable[float]]
|
|
51
|
+
r"""Price target before this action."""
|
|
52
|
+
pt_prior_adjusted: NotRequired[Nullable[float]]
|
|
53
|
+
r"""Price target before this action, adjusted for corporate actions such as splits."""
|
|
54
|
+
rating_current: NotRequired[str]
|
|
55
|
+
r"""Analyst rating after this action."""
|
|
56
|
+
rating_prior: NotRequired[str]
|
|
57
|
+
r"""Analyst rating before this action."""
|
|
58
|
+
ratings_accuracy: NotRequired[RatingsAccuracyTypedDict]
|
|
59
|
+
r"""Analyst accuracy metrics. Fields use snake_case; some fields may be absent when empty."""
|
|
60
|
+
ticker: NotRequired[str]
|
|
61
|
+
r"""Ticker symbol of the rated security."""
|
|
62
|
+
time: NotRequired[str]
|
|
63
|
+
r"""Time of day the rating was issued, as supplied by Benzinga."""
|
|
64
|
+
updated: NotRequired[str]
|
|
65
|
+
r"""Last updated timestamp of the rating record from the data provider."""
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
class Rating(BaseModel):
|
|
69
|
+
r"""Single analyst rating. Fields use snake_case; some fields may be absent when empty."""
|
|
70
|
+
|
|
71
|
+
action_company: Optional[str] = None
|
|
72
|
+
r"""Rating action taken by the analyst firm, such as upgrades, downgrades, initiates or reiterates."""
|
|
73
|
+
|
|
74
|
+
action_pt: Optional[str] = None
|
|
75
|
+
r"""Action taken on the price target, such as raised, lowered, maintained or announced."""
|
|
76
|
+
|
|
77
|
+
analyst: Optional[str] = None
|
|
78
|
+
r"""Name of the analyst firm that issued the rating."""
|
|
79
|
+
|
|
80
|
+
analyst_id: Optional[str] = None
|
|
81
|
+
r"""Provider identifier of the analyst firm."""
|
|
82
|
+
|
|
83
|
+
analyst_name: Optional[str] = None
|
|
84
|
+
r"""Name of the individual analyst who issued the rating."""
|
|
85
|
+
|
|
86
|
+
currency: Optional[str] = None
|
|
87
|
+
r"""Currency code the price target values are denominated in."""
|
|
88
|
+
|
|
89
|
+
date_: Annotated[Optional[str], pydantic.Field(alias="date")] = None
|
|
90
|
+
r"""Date the rating was issued, as supplied by Benzinga."""
|
|
91
|
+
|
|
92
|
+
exchange: Optional[str] = None
|
|
93
|
+
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."""
|
|
94
|
+
|
|
95
|
+
id: Optional[str] = None
|
|
96
|
+
r"""Provider identifier of the analyst rating record."""
|
|
97
|
+
|
|
98
|
+
importance: Optional[int] = None
|
|
99
|
+
r"""Provider-assigned importance level of the rating event."""
|
|
100
|
+
|
|
101
|
+
name: Optional[str] = None
|
|
102
|
+
r"""Name of the rated company."""
|
|
103
|
+
|
|
104
|
+
notes: Optional[str] = None
|
|
105
|
+
r"""Free-text notes accompanying the rating."""
|
|
106
|
+
|
|
107
|
+
pt_current: OptionalNullable[float] = UNSET
|
|
108
|
+
r"""Price target after this action."""
|
|
109
|
+
|
|
110
|
+
pt_current_adjusted: OptionalNullable[float] = UNSET
|
|
111
|
+
r"""Price target after this action, adjusted for corporate actions such as splits."""
|
|
112
|
+
|
|
113
|
+
pt_prior: OptionalNullable[float] = UNSET
|
|
114
|
+
r"""Price target before this action."""
|
|
115
|
+
|
|
116
|
+
pt_prior_adjusted: OptionalNullable[float] = UNSET
|
|
117
|
+
r"""Price target before this action, adjusted for corporate actions such as splits."""
|
|
118
|
+
|
|
119
|
+
rating_current: Optional[str] = None
|
|
120
|
+
r"""Analyst rating after this action."""
|
|
121
|
+
|
|
122
|
+
rating_prior: Optional[str] = None
|
|
123
|
+
r"""Analyst rating before this action."""
|
|
124
|
+
|
|
125
|
+
ratings_accuracy: Optional[RatingsAccuracy] = None
|
|
126
|
+
r"""Analyst accuracy metrics. Fields use snake_case; some fields may be absent when empty."""
|
|
127
|
+
|
|
128
|
+
ticker: Optional[str] = None
|
|
129
|
+
r"""Ticker symbol of the rated security."""
|
|
130
|
+
|
|
131
|
+
time: Optional[str] = None
|
|
132
|
+
r"""Time of day the rating was issued, as supplied by Benzinga."""
|
|
133
|
+
|
|
134
|
+
updated: Optional[str] = None
|
|
135
|
+
r"""Last updated timestamp of the rating record from the data provider."""
|
|
136
|
+
|
|
137
|
+
@model_serializer(mode="wrap")
|
|
138
|
+
def serialize_model(self, handler):
|
|
139
|
+
optional_fields = set(
|
|
140
|
+
[
|
|
141
|
+
"action_company",
|
|
142
|
+
"action_pt",
|
|
143
|
+
"analyst",
|
|
144
|
+
"analyst_id",
|
|
145
|
+
"analyst_name",
|
|
146
|
+
"currency",
|
|
147
|
+
"date",
|
|
148
|
+
"exchange",
|
|
149
|
+
"id",
|
|
150
|
+
"importance",
|
|
151
|
+
"name",
|
|
152
|
+
"notes",
|
|
153
|
+
"pt_current",
|
|
154
|
+
"pt_current_adjusted",
|
|
155
|
+
"pt_prior",
|
|
156
|
+
"pt_prior_adjusted",
|
|
157
|
+
"rating_current",
|
|
158
|
+
"rating_prior",
|
|
159
|
+
"ratings_accuracy",
|
|
160
|
+
"ticker",
|
|
161
|
+
"time",
|
|
162
|
+
"updated",
|
|
163
|
+
]
|
|
164
|
+
)
|
|
165
|
+
nullable_fields = set(
|
|
166
|
+
["pt_current", "pt_current_adjusted", "pt_prior", "pt_prior_adjusted"]
|
|
167
|
+
)
|
|
168
|
+
serialized = handler(self)
|
|
169
|
+
m = {}
|
|
170
|
+
|
|
171
|
+
for n, f in type(self).model_fields.items():
|
|
172
|
+
k = f.alias or n
|
|
173
|
+
val = serialized.get(k, serialized.get(n))
|
|
174
|
+
is_nullable_and_explicitly_set = (
|
|
175
|
+
k in nullable_fields
|
|
176
|
+
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
|
|
177
|
+
)
|
|
178
|
+
|
|
179
|
+
if val != UNSET_SENTINEL:
|
|
180
|
+
if (
|
|
181
|
+
val is not None
|
|
182
|
+
or k not in optional_fields
|
|
183
|
+
or is_nullable_and_explicitly_set
|
|
184
|
+
):
|
|
185
|
+
m[k] = val
|
|
186
|
+
|
|
187
|
+
return m
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
try:
|
|
191
|
+
Rating.model_rebuild()
|
|
192
|
+
except NameError:
|
|
193
|
+
pass
|