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
finance_dev/py.typed
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# Marker file for PEP 561. The package enables type hints.
|
finance_dev/sdk.py
ADDED
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 5fb27a93df8c
|
|
3
|
+
|
|
4
|
+
from .basesdk import BaseSDK
|
|
5
|
+
from .httpclient import AsyncHttpClient, ClientOwner, HttpClient, close_clients
|
|
6
|
+
from .sdkconfiguration import SDKConfiguration
|
|
7
|
+
from .utils.logger import Logger, get_default_logger
|
|
8
|
+
from .utils.retries import RetryConfig
|
|
9
|
+
from finance_dev import models, utils
|
|
10
|
+
from finance_dev._hooks import SDKHooks
|
|
11
|
+
from finance_dev.types import OptionalNullable, UNSET
|
|
12
|
+
import httpx
|
|
13
|
+
import importlib
|
|
14
|
+
import sys
|
|
15
|
+
from typing import Callable, Dict, Optional, TYPE_CHECKING, Union, cast
|
|
16
|
+
import weakref
|
|
17
|
+
|
|
18
|
+
if TYPE_CHECKING:
|
|
19
|
+
from finance_dev.accounts import Accounts
|
|
20
|
+
from finance_dev.alternativedata import AlternativeData
|
|
21
|
+
from finance_dev.analytics import Analytics
|
|
22
|
+
from finance_dev.calendar import Calendar
|
|
23
|
+
from finance_dev.chart import Chart
|
|
24
|
+
from finance_dev.company import Company
|
|
25
|
+
from finance_dev.corporateactions import CorporateActions
|
|
26
|
+
from finance_dev.economy import Economy
|
|
27
|
+
from finance_dev.estimates import Estimates
|
|
28
|
+
from finance_dev.etf import Etf
|
|
29
|
+
from finance_dev.filings import Filings
|
|
30
|
+
from finance_dev.financials import Financials
|
|
31
|
+
from finance_dev.indices import Indices
|
|
32
|
+
from finance_dev.logos import Logos
|
|
33
|
+
from finance_dev.market import Market
|
|
34
|
+
from finance_dev.news_sdk import NewsSDK
|
|
35
|
+
from finance_dev.options import Options
|
|
36
|
+
from finance_dev.orders import Orders
|
|
37
|
+
from finance_dev.ownership import Ownership
|
|
38
|
+
from finance_dev.predictions import Predictions
|
|
39
|
+
from finance_dev.signals import Signals
|
|
40
|
+
from finance_dev.stocks import Stocks
|
|
41
|
+
from finance_dev.technicalanalysis_sdk import TechnicalAnalysisSDK
|
|
42
|
+
from finance_dev.watchlist_sdk import WatchlistSDK
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class FinanceDev(BaseSDK):
|
|
46
|
+
r"""Aries API — OpenAPI Specification: OpenAPI Specification for the Aries trading platform API.
|
|
47
|
+
|
|
48
|
+
# Authentication
|
|
49
|
+
|
|
50
|
+
Learn how to authenticate with the Aries API using OAuth2 and manage access tokens in your SDK.
|
|
51
|
+
|
|
52
|
+
## Overview
|
|
53
|
+
|
|
54
|
+
The Aries API uses **OAuth2 with Bearer tokens** (JWT format) for authentication. All API requests require a valid access token in the `Authorization` header:
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
Authorization: Bearer <access_token>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Providing Client ID and Client Secret (SDK)
|
|
61
|
+
|
|
62
|
+
When using the generated SDK, provide your **Client ID** and **Client Secret** when you create the API client (e.g. in the constructor or security options). The SDK will use these to obtain and refresh the access token internally; you do not need to manage tokens yourself.
|
|
63
|
+
|
|
64
|
+
Obtain your OAuth2 credentials from the Aries platform (e.g. Client Center / Manage Account at https://app.aries.com):
|
|
65
|
+
|
|
66
|
+
- **Client ID** – Your application identifier (pass to SDK client)
|
|
67
|
+
- **Client Secret** – Your application secret key (pass to SDK client; use PKCE for public clients where secret cannot be stored)
|
|
68
|
+
|
|
69
|
+
## Authentication Flow
|
|
70
|
+
|
|
71
|
+
### 1. Authorization Code Flow
|
|
72
|
+
|
|
73
|
+
For server-side or confidential clients:
|
|
74
|
+
|
|
75
|
+
1. **Redirect the user** to the authorization URL to sign in and consent:
|
|
76
|
+
- **URL:** `https://app.aries.com/oauth2/authorize`
|
|
77
|
+
- **Query params:** `response_type=code`, `client_id`, `redirect_uri`, `scope`, `state`
|
|
78
|
+
|
|
79
|
+
2. **Exchange the code for tokens** (after user is redirected back with `?code=.`):
|
|
80
|
+
- **POST** `https://api.aries.com/v1/oauth2/token`
|
|
81
|
+
- **Body:** `grant_type=authorization_code`, `code`, `redirect_uri`, `client_id`, `client_secret`
|
|
82
|
+
- Response includes `access_token` and `refresh_token`
|
|
83
|
+
|
|
84
|
+
3. **Call the API** with the access token: `Authorization: Bearer <access_token>`
|
|
85
|
+
|
|
86
|
+
### 2. PKCE Flow
|
|
87
|
+
|
|
88
|
+
For SPAs and mobile apps (public clients that cannot store `client_secret`):
|
|
89
|
+
|
|
90
|
+
1. Generate a **code_verifier** (random string) and **code_challenge** = BASE64URL(SHA256(code_verifier)).
|
|
91
|
+
2. **Redirect the user** to `https://app.aries.com/oauth2/authorize` with `code_challenge`, `code_challenge_method=S256`, plus `client_id`, `redirect_uri`, `scope`, `state`.
|
|
92
|
+
3. **Exchange the code** at POST `https://api.aries.com/v1/oauth2/token` with `grant_type=authorization_code`, `code`, `redirect_uri`, `client_id`, `code_verifier` (no client_secret).
|
|
93
|
+
4. Use the returned `access_token` as Bearer.
|
|
94
|
+
|
|
95
|
+
### 3. MFA Verification
|
|
96
|
+
|
|
97
|
+
If the user has MFA enabled, the authorize step may return `is_mfa: true` and a `next_step_auth_id`. Call **POST** `https://api.aries.com/v1/oauth2/authorize/mfa` with `next_step_auth_id` and `verification_code` (6-digit code). Then continue with **POST** `/v1/oauth2/authorize/confirm` to get the authorization code, and exchange it at `/v1/oauth2/token`.
|
|
98
|
+
|
|
99
|
+
## Token Management
|
|
100
|
+
|
|
101
|
+
- **Refresh when expired:** POST `https://api.aries.com/v1/oauth2/token` with `grant_type=refresh_token`, `client_id`, `client_secret`, `refresh_token`.
|
|
102
|
+
- **Using a Bearer token directly:** If you already have an access token, set the header `Authorization: Bearer <access_token>` on every request. The SDK can accept a pre-obtained token and use it until it expires.
|
|
103
|
+
|
|
104
|
+
## OAuth2 Scopes
|
|
105
|
+
|
|
106
|
+
Request only the scopes your application needs. Available scopes:
|
|
107
|
+
|
|
108
|
+
| Scope | Description |
|
|
109
|
+
|-------|-------------|
|
|
110
|
+
| `user:information` | View user profile and personal details |
|
|
111
|
+
| `watchlist:information` | View your watchlists and their symbols |
|
|
112
|
+
| `watchlist:management` | Create, update, replace, and delete your watchlists |
|
|
113
|
+
| `account:information` | View account balances, positions, and transaction history |
|
|
114
|
+
| `order:execution` | Place, modify, and cancel orders |
|
|
115
|
+
| `order:information` | View order history and status |
|
|
116
|
+
| `position:information` | View current positions and holdings |
|
|
117
|
+
| `market:information` | Access live and historical market data |
|
|
118
|
+
| `calendar:information` | Access earnings, economic, and market schedule data |
|
|
119
|
+
| `options:information` | Access options chains and expiration data |
|
|
120
|
+
| `analytics:information` | View analytics, ratings, and market insights |
|
|
121
|
+
| `market:supplemental` | News, company profiles, financials, filings, ETF data, technical analysis |
|
|
122
|
+
|
|
123
|
+
Specify multiple scopes as a space-separated string, e.g. `account:information order:execution market:information`.
|
|
124
|
+
|
|
125
|
+
## Security Best Practices
|
|
126
|
+
|
|
127
|
+
- **Store credentials securely** – Use environment variables or a secrets manager for `client_id` and `client_secret`. Never hardcode them.
|
|
128
|
+
- **Handle token expiration** – Check for 401 responses and refresh the token using the refresh_token, then retry the request.
|
|
129
|
+
- **Use HTTPS** – All authorization and token endpoints must be called over HTTPS.
|
|
130
|
+
- **Validate state** – When using the authorization code flow, validate the `state` parameter on the callback to prevent CSRF.
|
|
131
|
+
|
|
132
|
+
## Error Handling
|
|
133
|
+
|
|
134
|
+
- **400 Bad Request** – Invalid or missing parameters, validation failures, or malformed JSON. Response bodies follow the same patterns as other errors (flat `error` string, optional `codes`, nested `error` object, or rarely no body).
|
|
135
|
+
|
|
136
|
+
- **401 Unauthorized** – Invalid or expired access token; refresh the token or re-authenticate. JSON bodies are not identical on every route: you may see a flat `error` string (sometimes with `codes`), a nested `error` object (`type`, `code`, `message`), or rarely an empty body
|
|
137
|
+
|
|
138
|
+
- **403 Forbidden** – Insufficient scope or permissions for the requested resource. Error JSON may be flat or nested, like 400/401.
|
|
139
|
+
|
|
140
|
+
- **404 Not Found** – Resource does not exist or is not visible. Error JSON may be flat or nested.
|
|
141
|
+
|
|
142
|
+
- **500 / 5xx** – Server or upstream failure; retry with backoff. Do not depend on a single error JSON shape; some responses may have no body.
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
Endpoints in this spec: health, OAuth2 (authorize, confirm, mfa, token), users, accounts, orders, market data, watchlist, chart, analytics, calendars, company, economy, financials, indices, options, news, and supplemental data.
|
|
148
|
+
"""
|
|
149
|
+
|
|
150
|
+
accounts: "Accounts"
|
|
151
|
+
analytics: "Analytics"
|
|
152
|
+
calendar: "Calendar"
|
|
153
|
+
chart: "Chart"
|
|
154
|
+
company: "Company"
|
|
155
|
+
watchlist: "WatchlistSDK"
|
|
156
|
+
corporate_actions: "CorporateActions"
|
|
157
|
+
economy: "Economy"
|
|
158
|
+
market: "Market"
|
|
159
|
+
etf: "Etf"
|
|
160
|
+
filings: "Filings"
|
|
161
|
+
financials: "Financials"
|
|
162
|
+
technical_analysis: "TechnicalAnalysisSDK"
|
|
163
|
+
indices: "Indices"
|
|
164
|
+
ownership: "Ownership"
|
|
165
|
+
logos: "Logos"
|
|
166
|
+
news: "NewsSDK"
|
|
167
|
+
options: "Options"
|
|
168
|
+
orders: "Orders"
|
|
169
|
+
predictions: "Predictions"
|
|
170
|
+
signals: "Signals"
|
|
171
|
+
alternative_data: "AlternativeData"
|
|
172
|
+
estimates: "Estimates"
|
|
173
|
+
stocks: "Stocks"
|
|
174
|
+
_sub_sdk_map = {
|
|
175
|
+
"websocket": ("finance_dev.websocket.sdk", "WebSocketSDK"),
|
|
176
|
+
"accounts": ("finance_dev.accounts", "Accounts"),
|
|
177
|
+
"analytics": ("finance_dev.analytics", "Analytics"),
|
|
178
|
+
"calendar": ("finance_dev.calendar", "Calendar"),
|
|
179
|
+
"chart": ("finance_dev.chart", "Chart"),
|
|
180
|
+
"company": ("finance_dev.company", "Company"),
|
|
181
|
+
"watchlist": ("finance_dev.watchlist_sdk", "WatchlistSDK"),
|
|
182
|
+
"corporate_actions": ("finance_dev.corporateactions", "CorporateActions"),
|
|
183
|
+
"economy": ("finance_dev.economy", "Economy"),
|
|
184
|
+
"market": ("finance_dev.market", "Market"),
|
|
185
|
+
"etf": ("finance_dev.etf", "Etf"),
|
|
186
|
+
"filings": ("finance_dev.filings", "Filings"),
|
|
187
|
+
"financials": ("finance_dev.financials", "Financials"),
|
|
188
|
+
"technical_analysis": (
|
|
189
|
+
"finance_dev.technicalanalysis_sdk",
|
|
190
|
+
"TechnicalAnalysisSDK",
|
|
191
|
+
),
|
|
192
|
+
"indices": ("finance_dev.indices", "Indices"),
|
|
193
|
+
"ownership": ("finance_dev.ownership", "Ownership"),
|
|
194
|
+
"logos": ("finance_dev.logos", "Logos"),
|
|
195
|
+
"news": ("finance_dev.news_sdk", "NewsSDK"),
|
|
196
|
+
"options": ("finance_dev.options", "Options"),
|
|
197
|
+
"orders": ("finance_dev.orders", "Orders"),
|
|
198
|
+
"predictions": ("finance_dev.predictions", "Predictions"),
|
|
199
|
+
"signals": ("finance_dev.signals", "Signals"),
|
|
200
|
+
"alternative_data": ("finance_dev.alternativedata", "AlternativeData"),
|
|
201
|
+
"estimates": ("finance_dev.estimates", "Estimates"),
|
|
202
|
+
"stocks": ("finance_dev.stocks", "Stocks"),
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
def __init__(
|
|
206
|
+
self,
|
|
207
|
+
security: Optional[
|
|
208
|
+
Union[models.Security, Callable[[], models.Security]]
|
|
209
|
+
] = None,
|
|
210
|
+
server_idx: Optional[int] = None,
|
|
211
|
+
url_params: Optional[Dict[str, str]] = None,
|
|
212
|
+
server_url: Optional[str] = None,
|
|
213
|
+
client: Optional[HttpClient] = None,
|
|
214
|
+
async_client: Optional[AsyncHttpClient] = None,
|
|
215
|
+
retry_config: OptionalNullable[RetryConfig] = UNSET,
|
|
216
|
+
timeout_ms: Optional[int] = None,
|
|
217
|
+
debug_logger: Optional[Logger] = None,
|
|
218
|
+
) -> None:
|
|
219
|
+
r"""Instantiates the SDK configuring it with the provided parameters.
|
|
220
|
+
|
|
221
|
+
:param security: The security details required for authentication
|
|
222
|
+
:param server_idx: The index of the server to use for all methods
|
|
223
|
+
:param server_url: The server URL to use for all methods
|
|
224
|
+
:param url_params: Parameters to optionally template the server URL with
|
|
225
|
+
:param client: The HTTP client to use for all synchronous methods
|
|
226
|
+
:param async_client: The Async HTTP client to use for all asynchronous methods
|
|
227
|
+
:param retry_config: The retry configuration to use for all supported methods
|
|
228
|
+
:param timeout_ms: Optional request timeout applied to each operation in milliseconds
|
|
229
|
+
"""
|
|
230
|
+
client_supplied = True
|
|
231
|
+
if client is None:
|
|
232
|
+
client = httpx.Client(follow_redirects=True)
|
|
233
|
+
client_supplied = False
|
|
234
|
+
|
|
235
|
+
assert issubclass(
|
|
236
|
+
type(client), HttpClient
|
|
237
|
+
), "The provided client must implement the HttpClient protocol."
|
|
238
|
+
|
|
239
|
+
async_client_supplied = True
|
|
240
|
+
if async_client is None:
|
|
241
|
+
async_client = httpx.AsyncClient(follow_redirects=True)
|
|
242
|
+
async_client_supplied = False
|
|
243
|
+
|
|
244
|
+
if debug_logger is None:
|
|
245
|
+
debug_logger = get_default_logger()
|
|
246
|
+
|
|
247
|
+
assert issubclass(
|
|
248
|
+
type(async_client), AsyncHttpClient
|
|
249
|
+
), "The provided async_client must implement the AsyncHttpClient protocol."
|
|
250
|
+
|
|
251
|
+
if server_url is not None:
|
|
252
|
+
if url_params is not None:
|
|
253
|
+
server_url = utils.template_url(server_url, url_params)
|
|
254
|
+
|
|
255
|
+
BaseSDK.__init__(
|
|
256
|
+
self,
|
|
257
|
+
SDKConfiguration(
|
|
258
|
+
client=client,
|
|
259
|
+
client_supplied=client_supplied,
|
|
260
|
+
async_client=async_client,
|
|
261
|
+
async_client_supplied=async_client_supplied,
|
|
262
|
+
security=security,
|
|
263
|
+
server_url=server_url,
|
|
264
|
+
server_idx=server_idx,
|
|
265
|
+
retry_config=retry_config,
|
|
266
|
+
timeout_ms=timeout_ms,
|
|
267
|
+
debug_logger=debug_logger,
|
|
268
|
+
),
|
|
269
|
+
parent_ref=self,
|
|
270
|
+
)
|
|
271
|
+
|
|
272
|
+
hooks = SDKHooks()
|
|
273
|
+
|
|
274
|
+
# pylint: disable=protected-access
|
|
275
|
+
self.sdk_configuration.__dict__["_hooks"] = hooks
|
|
276
|
+
|
|
277
|
+
self.sdk_configuration = hooks.sdk_init(self.sdk_configuration)
|
|
278
|
+
|
|
279
|
+
weakref.finalize(
|
|
280
|
+
self,
|
|
281
|
+
close_clients,
|
|
282
|
+
cast(ClientOwner, self.sdk_configuration),
|
|
283
|
+
self.sdk_configuration.client,
|
|
284
|
+
self.sdk_configuration.client_supplied,
|
|
285
|
+
self.sdk_configuration.async_client,
|
|
286
|
+
self.sdk_configuration.async_client_supplied,
|
|
287
|
+
)
|
|
288
|
+
|
|
289
|
+
def dynamic_import(self, modname, retries=3):
|
|
290
|
+
for attempt in range(retries):
|
|
291
|
+
try:
|
|
292
|
+
return importlib.import_module(modname)
|
|
293
|
+
except KeyError:
|
|
294
|
+
# Clear any half-initialized module and retry
|
|
295
|
+
sys.modules.pop(modname, None)
|
|
296
|
+
if attempt == retries - 1:
|
|
297
|
+
break
|
|
298
|
+
raise KeyError(f"Failed to import module '{modname}' after {retries} attempts")
|
|
299
|
+
|
|
300
|
+
def __getattr__(self, name: str):
|
|
301
|
+
if name in self._sub_sdk_map:
|
|
302
|
+
module_path, class_name = self._sub_sdk_map[name]
|
|
303
|
+
try:
|
|
304
|
+
module = self.dynamic_import(module_path)
|
|
305
|
+
klass = getattr(module, class_name)
|
|
306
|
+
instance = klass(self.sdk_configuration, parent_ref=self)
|
|
307
|
+
setattr(self, name, instance)
|
|
308
|
+
return instance
|
|
309
|
+
except ImportError as e:
|
|
310
|
+
raise AttributeError(
|
|
311
|
+
f"Failed to import module {module_path} for attribute {name}: {e}"
|
|
312
|
+
) from e
|
|
313
|
+
except AttributeError as e:
|
|
314
|
+
raise AttributeError(
|
|
315
|
+
f"Failed to find class {class_name} in module {module_path} for attribute {name}: {e}"
|
|
316
|
+
) from e
|
|
317
|
+
|
|
318
|
+
raise AttributeError(
|
|
319
|
+
f"'{type(self).__name__}' object has no attribute '{name}'"
|
|
320
|
+
)
|
|
321
|
+
|
|
322
|
+
def __dir__(self):
|
|
323
|
+
default_attrs = list(super().__dir__())
|
|
324
|
+
lazy_attrs = list(self._sub_sdk_map.keys())
|
|
325
|
+
return sorted(list(set(default_attrs + lazy_attrs)))
|
|
326
|
+
|
|
327
|
+
def __enter__(self):
|
|
328
|
+
return self
|
|
329
|
+
|
|
330
|
+
async def __aenter__(self):
|
|
331
|
+
return self
|
|
332
|
+
|
|
333
|
+
def __exit__(self, exc_type, exc_val, exc_tb):
|
|
334
|
+
if (
|
|
335
|
+
self.sdk_configuration.client is not None
|
|
336
|
+
and not self.sdk_configuration.client_supplied
|
|
337
|
+
):
|
|
338
|
+
self.sdk_configuration.client.close()
|
|
339
|
+
self.sdk_configuration.client = None
|
|
340
|
+
|
|
341
|
+
async def __aexit__(self, exc_type, exc_val, exc_tb):
|
|
342
|
+
if (
|
|
343
|
+
self.sdk_configuration.async_client is not None
|
|
344
|
+
and not self.sdk_configuration.async_client_supplied
|
|
345
|
+
):
|
|
346
|
+
await self.sdk_configuration.async_client.aclose()
|
|
347
|
+
self.sdk_configuration.async_client = None
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 6dab16bc4f60
|
|
3
|
+
|
|
4
|
+
from ._version import (
|
|
5
|
+
__gen_version__,
|
|
6
|
+
__openapi_doc_version__,
|
|
7
|
+
__user_agent__,
|
|
8
|
+
__version__,
|
|
9
|
+
)
|
|
10
|
+
from .httpclient import AsyncHttpClient, HttpClient
|
|
11
|
+
from .utils import Logger, RetryConfig, remove_suffix
|
|
12
|
+
from dataclasses import dataclass
|
|
13
|
+
from finance_dev import models
|
|
14
|
+
from finance_dev.types import OptionalNullable, UNSET
|
|
15
|
+
from pydantic import Field
|
|
16
|
+
from typing import Callable, Dict, Optional, Tuple, Union
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
SERVERS = [
|
|
20
|
+
"https://api.aries.com",
|
|
21
|
+
# Production server
|
|
22
|
+
]
|
|
23
|
+
"""Contains the list of servers available to the SDK"""
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@dataclass
|
|
27
|
+
class SDKConfiguration:
|
|
28
|
+
client: Union[HttpClient, None]
|
|
29
|
+
client_supplied: bool
|
|
30
|
+
async_client: Union[AsyncHttpClient, None]
|
|
31
|
+
async_client_supplied: bool
|
|
32
|
+
debug_logger: Logger
|
|
33
|
+
security: Optional[Union[models.Security, Callable[[], models.Security]]] = None
|
|
34
|
+
server_url: Optional[str] = ""
|
|
35
|
+
server_idx: Optional[int] = 0
|
|
36
|
+
language: str = "python"
|
|
37
|
+
openapi_doc_version: str = __openapi_doc_version__
|
|
38
|
+
sdk_version: str = __version__
|
|
39
|
+
gen_version: str = __gen_version__
|
|
40
|
+
user_agent: str = __user_agent__
|
|
41
|
+
retry_config: OptionalNullable[RetryConfig] = Field(default_factory=lambda: UNSET)
|
|
42
|
+
timeout_ms: Optional[int] = None
|
|
43
|
+
|
|
44
|
+
def get_server_details(self) -> Tuple[str, Dict[str, str]]:
|
|
45
|
+
if self.server_url is not None and self.server_url:
|
|
46
|
+
return remove_suffix(self.server_url, "/"), {}
|
|
47
|
+
if self.server_idx is None:
|
|
48
|
+
self.server_idx = 0
|
|
49
|
+
|
|
50
|
+
return SERVERS[self.server_idx], {}
|