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.
Files changed (486) hide show
  1. finance_dev/__init__.py +18 -0
  2. finance_dev/_hooks/__init__.py +7 -0
  3. finance_dev/_hooks/clientcredentials.py +319 -0
  4. finance_dev/_hooks/oauth2scopes.py +50 -0
  5. finance_dev/_hooks/registration.py +13 -0
  6. finance_dev/_hooks/sdkhooks.py +82 -0
  7. finance_dev/_hooks/types.py +125 -0
  8. finance_dev/_version.py +16 -0
  9. finance_dev/accounts.py +797 -0
  10. finance_dev/alternativedata.py +4830 -0
  11. finance_dev/analytics.py +3757 -0
  12. finance_dev/basesdk.py +393 -0
  13. finance_dev/calendar.py +1523 -0
  14. finance_dev/chart.py +1881 -0
  15. finance_dev/company.py +1105 -0
  16. finance_dev/corporateactions.py +1795 -0
  17. finance_dev/economy.py +1153 -0
  18. finance_dev/errors/__init__.py +94 -0
  19. finance_dev/errors/apierror.py +41 -0
  20. finance_dev/errors/authenticationerrorenvelope.py +43 -0
  21. finance_dev/errors/badrequest.py +34 -0
  22. finance_dev/errors/errorenvelope.py +42 -0
  23. finance_dev/errors/errorresponse.py +45 -0
  24. finance_dev/errors/financedevapierror.py +31 -0
  25. finance_dev/errors/forbidden.py +34 -0
  26. finance_dev/errors/internalservererror.py +35 -0
  27. finance_dev/errors/no_response_error.py +18 -0
  28. finance_dev/errors/notfound.py +34 -0
  29. finance_dev/errors/orderhistorybadrequest.py +35 -0
  30. finance_dev/errors/predorderserrorenvelope.py +42 -0
  31. finance_dev/errors/responsevalidationerror.py +28 -0
  32. finance_dev/errors/unauthorized.py +34 -0
  33. finance_dev/estimates.py +1906 -0
  34. finance_dev/etf.py +1108 -0
  35. finance_dev/filings.py +586 -0
  36. finance_dev/financials.py +4079 -0
  37. finance_dev/history.py +477 -0
  38. finance_dev/httpclient.py +126 -0
  39. finance_dev/indices.py +2308 -0
  40. finance_dev/logos.py +692 -0
  41. finance_dev/market.py +1825 -0
  42. finance_dev/markets.py +952 -0
  43. finance_dev/models/__init__.py +4568 -0
  44. finance_dev/models/accountbalancev2.py +340 -0
  45. finance_dev/models/accountitem.py +78 -0
  46. finance_dev/models/accountposition.py +147 -0
  47. finance_dev/models/aggregatetechnicalindicatorsresponse.py +192 -0
  48. finance_dev/models/analystinsightitem.py +161 -0
  49. finance_dev/models/analystinsightsresponse.py +39 -0
  50. finance_dev/models/apperror.py +123 -0
  51. finance_dev/models/authenticationerrordetail.py +58 -0
  52. finance_dev/models/bankbranchesresponse.py +96 -0
  53. finance_dev/models/basicfinancials.py +243 -0
  54. finance_dev/models/bullbearanalysisresponse.py +150 -0
  55. finance_dev/models/cancelorderop.py +40 -0
  56. finance_dev/models/cancelordrequest_union.py +287 -0
  57. finance_dev/models/cancelordresponse.py +115 -0
  58. finance_dev/models/cashflowstatement.py +290 -0
  59. finance_dev/models/cashflowstatementsresponse.py +61 -0
  60. finance_dev/models/chartbars.py +111 -0
  61. finance_dev/models/chartconfig.py +81 -0
  62. finance_dev/models/chartresolution.py +46 -0
  63. finance_dev/models/companyesgresponse.py +408 -0
  64. finance_dev/models/companyexecutive.py +70 -0
  65. finance_dev/models/companyexecutiveresponse.py +39 -0
  66. finance_dev/models/companypeersresponse.py +38 -0
  67. finance_dev/models/companypresentationresponse.py +96 -0
  68. finance_dev/models/companyprofile.py +255 -0
  69. finance_dev/models/conferencecallsresponse.py +169 -0
  70. finance_dev/models/congressionaltradingresponse.py +138 -0
  71. finance_dev/models/covid19uscasesresponse.py +79 -0
  72. finance_dev/models/createconfigwatchlistop.py +40 -0
  73. finance_dev/models/createwatchlistrequest.py +43 -0
  74. finance_dev/models/dailymarketsummaryresponse.py +73 -0
  75. finance_dev/models/deleteconfigwatchlistbyidop.py +53 -0
  76. finance_dev/models/dividenditem.py +125 -0
  77. finance_dev/models/dividendsresponse.py +61 -0
  78. finance_dev/models/earningrelease.py +291 -0
  79. finance_dev/models/earningscallliveresponse.py +103 -0
  80. finance_dev/models/earningsqualityscoreresponse.py +140 -0
  81. finance_dev/models/earningssurprisesresponse.py +125 -0
  82. finance_dev/models/ebitdaestimatesresponse.py +176 -0
  83. finance_dev/models/ebitestimatesresponse.py +176 -0
  84. finance_dev/models/economicscalendarevent.py +160 -0
  85. finance_dev/models/economicsindicator.py +87 -0
  86. finance_dev/models/epsestimatesresponse.py +176 -0
  87. finance_dev/models/equitydetailsdto.py +569 -0
  88. finance_dev/models/errorcode.py +48 -0
  89. finance_dev/models/etblistresponse.py +43 -0
  90. finance_dev/models/etbsearchrequest.py +21 -0
  91. finance_dev/models/etbsearchresponse.py +43 -0
  92. finance_dev/models/etfcountryallocationresponse.py +113 -0
  93. finance_dev/models/etfholdingsresponse.py +163 -0
  94. finance_dev/models/etfprofileresponse.py +234 -0
  95. finance_dev/models/etfsectorallocationresponse.py +113 -0
  96. finance_dev/models/exchangecode.py +90 -0
  97. finance_dev/models/fdaadvisorycommitteecalendarresponse.py +88 -0
  98. finance_dev/models/filingsimilarityrecord.py +115 -0
  99. finance_dev/models/filingssimilarityindexdatawrapper.py +52 -0
  100. finance_dev/models/filingssimilarityindexresponse.py +42 -0
  101. finance_dev/models/financialratiosresponse.py +252 -0
  102. finance_dev/models/financialsreporteddatawrapper.py +49 -0
  103. finance_dev/models/financialsreportedresponse.py +42 -0
  104. finance_dev/models/financialsrevenuebreakdowndatawrapper.py +49 -0
  105. finance_dev/models/financialsrevenuebreakdownresponse.py +42 -0
  106. finance_dev/models/financialsstatementsdatawrapper.py +44 -0
  107. finance_dev/models/financialsstatementsresponse.py +42 -0
  108. finance_dev/models/financialstatement.py +171 -0
  109. finance_dev/models/financialstatementtype.py +14 -0
  110. finance_dev/models/getaccountbalanceop.py +53 -0
  111. finance_dev/models/getaccountpositionsop.py +53 -0
  112. finance_dev/models/getaccountsresponse.py +22 -0
  113. finance_dev/models/getaggregatetechnicalindicatorsop.py +94 -0
  114. finance_dev/models/getanalystinsightsop.py +164 -0
  115. finance_dev/models/getbankbranchesop.py +53 -0
  116. finance_dev/models/getbaseeventop.py +87 -0
  117. finance_dev/models/getbullbearanalysisop.py +91 -0
  118. finance_dev/models/getcashflowstatementsop.py +564 -0
  119. finance_dev/models/getchartconfigop.py +40 -0
  120. finance_dev/models/getcharthistoryop.py +122 -0
  121. finance_dev/models/getcharttimeop.py +39 -0
  122. finance_dev/models/getcompanyesgop.py +53 -0
  123. finance_dev/models/getcompanyexecutivesop.py +56 -0
  124. finance_dev/models/getcompanymetricsop.py +68 -0
  125. finance_dev/models/getcompanypeersop.py +53 -0
  126. finance_dev/models/getcompanypresentationop.py +56 -0
  127. finance_dev/models/getcompanyprofileop.py +86 -0
  128. finance_dev/models/getconferencecallsop.py +111 -0
  129. finance_dev/models/getconfigwatchlistbyidop.py +53 -0
  130. finance_dev/models/getconfigwatchlistsop.py +40 -0
  131. finance_dev/models/getcongressionaltradingop.py +73 -0
  132. finance_dev/models/getcovid19uscasesop.py +43 -0
  133. finance_dev/models/getdailymarketsummaryop.py +92 -0
  134. finance_dev/models/getdividendsop.py +294 -0
  135. finance_dev/models/getearningscalendarop.py +87 -0
  136. finance_dev/models/getearningscallliveop.py +91 -0
  137. finance_dev/models/getearningsqualityscoreop.py +81 -0
  138. finance_dev/models/getearningssurprisesop.py +80 -0
  139. finance_dev/models/getebitdaestimatesop.py +91 -0
  140. finance_dev/models/getebitestimatesop.py +88 -0
  141. finance_dev/models/geteconomicscalendarop.py +92 -0
  142. finance_dev/models/geteconomicscalendarresponse.py +56 -0
  143. finance_dev/models/getepsestimatesop.py +88 -0
  144. finance_dev/models/getequitydetailsop.py +56 -0
  145. finance_dev/models/getequitydetailsresponse.py +45 -0
  146. finance_dev/models/getetblistop.py +40 -0
  147. finance_dev/models/getetfcountryallocationop.py +80 -0
  148. finance_dev/models/getetfholdingsop.py +96 -0
  149. finance_dev/models/getetfprofileop.py +77 -0
  150. finance_dev/models/getetfsectorallocationop.py +80 -0
  151. finance_dev/models/geteventcontractsop.py +87 -0
  152. finance_dev/models/getfdaadvisorycommitteecalendarop.py +47 -0
  153. finance_dev/models/getfilingssimilarityindexop.py +102 -0
  154. finance_dev/models/getfinancialratiosop.py +612 -0
  155. finance_dev/models/getfinancialstatementsop.py +117 -0
  156. finance_dev/models/getfundownershipop.py +77 -0
  157. finance_dev/models/gethistoricaldataop.py +61 -0
  158. finance_dev/models/gethistoricalesgop.py +53 -0
  159. finance_dev/models/gethistorybatchop.py +74 -0
  160. finance_dev/models/gethistoryop.py +123 -0
  161. finance_dev/models/getincomestatementsop.py +564 -0
  162. finance_dev/models/getindexbarop.py +140 -0
  163. finance_dev/models/getindexbarsop.py +149 -0
  164. finance_dev/models/getindexchartbarsop.py +178 -0
  165. finance_dev/models/getindexrealtimevaluesop.py +94 -0
  166. finance_dev/models/getinflationexpectationsop.py +157 -0
  167. finance_dev/models/getinflationop.py +154 -0
  168. finance_dev/models/getinsidertransactionsop.py +90 -0
  169. finance_dev/models/getinstitutionalownershipop.py +99 -0
  170. finance_dev/models/getinstitutionalportfolioop.py +75 -0
  171. finance_dev/models/getinvestmentthemeop.py +68 -0
  172. finance_dev/models/getipocalendarop.py +63 -0
  173. finance_dev/models/getlobbyingop.py +70 -0
  174. finance_dev/models/getmarketbreadthop.py +40 -0
  175. finance_dev/models/getmarketholidaysop.py +65 -0
  176. finance_dev/models/getmarketstatusop.py +65 -0
  177. finance_dev/models/getmergersandacquisitionsop.py +113 -0
  178. finance_dev/models/getnetinflowop.py +40 -0
  179. finance_dev/models/getnewsbyidop.py +73 -0
  180. finance_dev/models/getnewsop.py +98 -0
  181. finance_dev/models/getnewssentimentop.py +53 -0
  182. finance_dev/models/getoptionchainsnapshotop.py +244 -0
  183. finance_dev/models/getoptioncontractsnapshotop.py +69 -0
  184. finance_dev/models/getoptiondetailsop.py +56 -0
  185. finance_dev/models/getoptiondetailsresponse.py +45 -0
  186. finance_dev/models/getoptionlasttradeop.py +56 -0
  187. finance_dev/models/getoptionopencloseop.py +66 -0
  188. finance_dev/models/getoptionpreviousdayop.py +56 -0
  189. finance_dev/models/getoptionquotesop.py +177 -0
  190. finance_dev/models/getoptionsactivityop.py +111 -0
  191. finance_dev/models/getoptionsetfstopvolumeop.py +70 -0
  192. finance_dev/models/getoptionsstockstopgainersop.py +70 -0
  193. finance_dev/models/getoptionsstockstopvolumeop.py +70 -0
  194. finance_dev/models/getoptionsunusualactivityop.py +100 -0
  195. finance_dev/models/getoptiontradesop.py +177 -0
  196. finance_dev/models/getordersv2response.py +66 -0
  197. finance_dev/models/getownershipdataop.py +77 -0
  198. finance_dev/models/getpositionsresponse.py +39 -0
  199. finance_dev/models/getpredictionorderop.py +88 -0
  200. finance_dev/models/getpricetargetop.py +53 -0
  201. finance_dev/models/getquotesop.py +53 -0
  202. finance_dev/models/getratingsop.py +164 -0
  203. finance_dev/models/getratingsresponse.py +39 -0
  204. finance_dev/models/getreportedfinancialsop.py +127 -0
  205. finance_dev/models/getrevenuebreakdownop.py +85 -0
  206. finance_dev/models/getrevenueestimatesop.py +91 -0
  207. finance_dev/models/getsecfilingsop.py +113 -0
  208. finance_dev/models/getsectortickersop.py +124 -0
  209. finance_dev/models/getsectorwisechangeop.py +84 -0
  210. finance_dev/models/getshortinterestop.py +334 -0
  211. finance_dev/models/getshortvolumeop.py +333 -0
  212. finance_dev/models/getsocialsentimentop.py +90 -0
  213. finance_dev/models/getspinoffsop.py +112 -0
  214. finance_dev/models/getstockaggregatesop.py +174 -0
  215. finance_dev/models/getstocklastquoteop.py +56 -0
  216. finance_dev/models/getstocklasttradeop.py +56 -0
  217. finance_dev/models/getstockopencloseop.py +90 -0
  218. finance_dev/models/getstockpreviousdayop.py +80 -0
  219. finance_dev/models/getstockquotesop.py +177 -0
  220. finance_dev/models/getstocksnapshotsop.py +82 -0
  221. finance_dev/models/getstocksplitsop.py +243 -0
  222. finance_dev/models/getstocktradesop.py +177 -0
  223. finance_dev/models/getsupplychainop.py +53 -0
  224. finance_dev/models/getsupportresistancelevelsop.py +90 -0
  225. finance_dev/models/getsymbolinfoop.py +53 -0
  226. finance_dev/models/gettechnicalindicatorop.py +172 -0
  227. finance_dev/models/gettechnicalpatternsop.py +88 -0
  228. finance_dev/models/gettenderoffersop.py +112 -0
  229. finance_dev/models/gettickhistoryop.py +104 -0
  230. finance_dev/models/gettopgainersop.py +78 -0
  231. finance_dev/models/gettoplosersop.py +78 -0
  232. finance_dev/models/gettopmostactiveop.py +78 -0
  233. finance_dev/models/gettranscriptop.py +53 -0
  234. finance_dev/models/gettreasuryyieldsop.py +157 -0
  235. finance_dev/models/getunifiedsnapshotop.py +223 -0
  236. finance_dev/models/getupgradesdowngradesop.py +91 -0
  237. finance_dev/models/getusaspendingop.py +70 -0
  238. finance_dev/models/getuseraccountsop.py +40 -0
  239. finance_dev/models/getusptopatentsop.py +70 -0
  240. finance_dev/models/getvisaapplicationsop.py +73 -0
  241. finance_dev/models/historicalesgresponse.py +439 -0
  242. finance_dev/models/httpmetadata.py +24 -0
  243. finance_dev/models/incomestatement.py +296 -0
  244. finance_dev/models/incomestatementsresponse.py +61 -0
  245. finance_dev/models/indexbarresponse.py +194 -0
  246. finance_dev/models/indexbarsresponse.py +123 -0
  247. finance_dev/models/indexchartbarsresponse.py +213 -0
  248. finance_dev/models/indexgroupsresponse.py +78 -0
  249. finance_dev/models/indexlistresponse.py +95 -0
  250. finance_dev/models/indexsearchresponse.py +93 -0
  251. finance_dev/models/indicesbygroupresponse.py +93 -0
  252. finance_dev/models/indicesidentifiertype.py +28 -0
  253. finance_dev/models/indicesrealtimeindexinfo.py +67 -0
  254. finance_dev/models/indicesrealtimeindexvalue.py +157 -0
  255. finance_dev/models/indicesrealtimevaluesitem.py +80 -0
  256. finance_dev/models/indicesrealtimevaluesresponse.py +42 -0
  257. finance_dev/models/inflationexpectationsresponse.py +140 -0
  258. finance_dev/models/inflationresponse.py +132 -0
  259. finance_dev/models/insidertransaction.py +97 -0
  260. finance_dev/models/insidertransactionsresponse.py +39 -0
  261. finance_dev/models/institutionalholding.py +77 -0
  262. finance_dev/models/institutionalownershipresponse.py +39 -0
  263. finance_dev/models/institutionalportfolioresponse.py +39 -0
  264. finance_dev/models/investmentthemeid.py +35 -0
  265. finance_dev/models/investmentthemeresponse.py +80 -0
  266. finance_dev/models/ipocalendarresponse.py +39 -0
  267. finance_dev/models/ipoitem.py +93 -0
  268. finance_dev/models/listactiveordersop.py +87 -0
  269. finance_dev/models/listcategoriesop.py +79 -0
  270. finance_dev/models/listindexgroupsop.py +40 -0
  271. finance_dev/models/listindicesbygroupop.py +58 -0
  272. finance_dev/models/listindicesop.py +91 -0
  273. finance_dev/models/listoptioncontractsop.py +66 -0
  274. finance_dev/models/listoptionexpirydatesop.py +56 -0
  275. finance_dev/models/listorderhistoryop.py +139 -0
  276. finance_dev/models/listpredictionordersop.py +134 -0
  277. finance_dev/models/listtranscriptsop.py +53 -0
  278. finance_dev/models/lobbyingresponse.py +166 -0
  279. finance_dev/models/logosearchresponse.py +152 -0
  280. finance_dev/models/logosyncresponse.py +277 -0
  281. finance_dev/models/marketbreadth.py +97 -0
  282. finance_dev/models/marketbreadthresponse.py +44 -0
  283. finance_dev/models/marketholiday.py +56 -0
  284. finance_dev/models/marketholidayresponse.py +39 -0
  285. finance_dev/models/marketstatus.py +67 -0
  286. finance_dev/models/mergersandacquisitionsresponse.py +186 -0
  287. finance_dev/models/metricseriespoint.py +43 -0
  288. finance_dev/models/netinflow.py +81 -0
  289. finance_dev/models/netinflowresponse.py +44 -0
  290. finance_dev/models/newsitem.py +102 -0
  291. finance_dev/models/newslistresponse.py +128 -0
  292. finance_dev/models/newssentimentresponse.py +176 -0
  293. finance_dev/models/newstypeenum.py +16 -0
  294. finance_dev/models/optionchainsnapshotresponse.py +64 -0
  295. finance_dev/models/optioncontractsnapshotresponse.py +64 -0
  296. finance_dev/models/optioncontractsnapshotrow.py +164 -0
  297. finance_dev/models/optioncontractsresponse.py +131 -0
  298. finance_dev/models/optiondetailsdto.py +72 -0
  299. finance_dev/models/optionexpirydatesresponse.py +53 -0
  300. finance_dev/models/optionlasttraderesponse.py +169 -0
  301. finance_dev/models/optionopencloseresponse.py +97 -0
  302. finance_dev/models/optionpreviousdayresponse.py +89 -0
  303. finance_dev/models/optionquotesresponse.py +138 -0
  304. finance_dev/models/optionsactivityresponse.py +265 -0
  305. finance_dev/models/optionsnapshotcontractdetails.py +85 -0
  306. finance_dev/models/optionsnapshotdaybar.py +107 -0
  307. finance_dev/models/optionsnapshotgreeks.py +67 -0
  308. finance_dev/models/optionsnapshotlastquote.py +116 -0
  309. finance_dev/models/optionsnapshotlasttrade.py +102 -0
  310. finance_dev/models/optionsnapshotunderlying.py +86 -0
  311. finance_dev/models/optionsscreeneritem.py +151 -0
  312. finance_dev/models/optionsunusualactivityresponse.py +62 -0
  313. finance_dev/models/optionsunusualactivitytrade.py +103 -0
  314. finance_dev/models/optiontradesresponse.py +132 -0
  315. finance_dev/models/orderrequesttimeinforceenum.py +29 -0
  316. finance_dev/models/ordersideenum.py +20 -0
  317. finance_dev/models/ordertypeenum.py +20 -0
  318. finance_dev/models/ordleg.py +162 -0
  319. finance_dev/models/ordresponse.py +202 -0
  320. finance_dev/models/ownershipdataresponse.py +39 -0
  321. finance_dev/models/ownershiprecord.py +74 -0
  322. finance_dev/models/placeorderop.py +40 -0
  323. finance_dev/models/placeordrequest_union.py +335 -0
  324. finance_dev/models/placepredictionorderop.py +114 -0
  325. finance_dev/models/predmdbaseevent.py +62 -0
  326. finance_dev/models/predmdbaseeventhit.py +53 -0
  327. finance_dev/models/predmdbaseeventsearchresult.py +46 -0
  328. finance_dev/models/predmdbaseeventwithevents.py +32 -0
  329. finance_dev/models/predmdbatchhistoryrequest.py +16 -0
  330. finance_dev/models/predmdbatchhistoryresponse.py +16 -0
  331. finance_dev/models/predmdcategory.py +48 -0
  332. finance_dev/models/predmdcontract.py +177 -0
  333. finance_dev/models/predmdcontracthit.py +157 -0
  334. finance_dev/models/predmdcontractsearchresult.py +46 -0
  335. finance_dev/models/predmdevent.py +136 -0
  336. finance_dev/models/predmdeventhit.py +73 -0
  337. finance_dev/models/predmdeventsearchresult.py +46 -0
  338. finance_dev/models/predmdeventwithcontracts.py +22 -0
  339. finance_dev/models/predmdhistoryrequest.py +59 -0
  340. finance_dev/models/predmdhistoryresponse.py +53 -0
  341. finance_dev/models/predmdtick.py +53 -0
  342. finance_dev/models/predordersapperror.py +78 -0
  343. finance_dev/models/predordersorder.py +267 -0
  344. finance_dev/models/predordersorderdetail.py +26 -0
  345. finance_dev/models/predordersorderpage.py +45 -0
  346. finance_dev/models/predordersorderreport.py +88 -0
  347. finance_dev/models/predordersplaceorderrequest.py +159 -0
  348. finance_dev/models/previeworderop.py +40 -0
  349. finance_dev/models/previeworderresponse.py +127 -0
  350. finance_dev/models/pricetargetresponse.py +89 -0
  351. finance_dev/models/quotedata.py +49 -0
  352. finance_dev/models/quotesresponse.py +62 -0
  353. finance_dev/models/quotevalues.py +114 -0
  354. finance_dev/models/rating.py +193 -0
  355. finance_dev/models/ratingsaccuracy.py +242 -0
  356. finance_dev/models/replaceconfigwatchlistsop.py +40 -0
  357. finance_dev/models/replaceorderop.py +40 -0
  358. finance_dev/models/replaceordrequest_union.py +367 -0
  359. finance_dev/models/replaceordresponse.py +144 -0
  360. finance_dev/models/reportedbsitem.py +53 -0
  361. finance_dev/models/reportedfiling.py +110 -0
  362. finance_dev/models/reportedreport.py +39 -0
  363. finance_dev/models/reportingfrequency.py +16 -0
  364. finance_dev/models/revenuebreakdownaxis.py +52 -0
  365. finance_dev/models/revenuebreakdowndatapoint.py +58 -0
  366. finance_dev/models/revenuebreakdownentry.py +51 -0
  367. finance_dev/models/revenuebreakdowninner.py +75 -0
  368. finance_dev/models/revenueestimatesresponse.py +176 -0
  369. finance_dev/models/screenclause.py +70 -0
  370. finance_dev/models/screengroup.py +75 -0
  371. finance_dev/models/searchetbsymbolsop.py +40 -0
  372. finance_dev/models/searchindicesop.py +55 -0
  373. finance_dev/models/searchlogosop.py +158 -0
  374. finance_dev/models/searchmarketsymbolsop.py +80 -0
  375. finance_dev/models/searchop.py +232 -0
  376. finance_dev/models/searchsymbolitem.py +76 -0
  377. finance_dev/models/searchsymbolresponseitem.py +71 -0
  378. finance_dev/models/searchsymbolsop.py +77 -0
  379. finance_dev/models/secfiling.py +91 -0
  380. finance_dev/models/secfilingsresponse.py +39 -0
  381. finance_dev/models/sectoravgchange.py +50 -0
  382. finance_dev/models/security.py +59 -0
  383. finance_dev/models/securitytypeenum.py +16 -0
  384. finance_dev/models/shortinterestresponse.py +126 -0
  385. finance_dev/models/shortvolumeresponse.py +198 -0
  386. finance_dev/models/socialsentimentresponse.py +124 -0
  387. finance_dev/models/sortorderenum.py +13 -0
  388. finance_dev/models/spinoffsresponse.py +136 -0
  389. finance_dev/models/stockaggregatesresponse.py +92 -0
  390. finance_dev/models/stocklastquoteresponse.py +175 -0
  391. finance_dev/models/stocklasttraderesponse.py +169 -0
  392. finance_dev/models/stockohlcbar.py +85 -0
  393. finance_dev/models/stockopencloseresponse.py +109 -0
  394. finance_dev/models/stockpreviousdayresponse.py +86 -0
  395. finance_dev/models/stockquotesresponse.py +170 -0
  396. finance_dev/models/stockscreenerop.py +144 -0
  397. finance_dev/models/stockscreenerrequest.py +131 -0
  398. finance_dev/models/stockscreenerresponse.py +197 -0
  399. finance_dev/models/stocksnapshotsresponse.py +454 -0
  400. finance_dev/models/stocksplitsresponse.py +144 -0
  401. finance_dev/models/stocktradesresponse.py +164 -0
  402. finance_dev/models/supplychainresponse.py +158 -0
  403. finance_dev/models/supportresistancelevelsresponse.py +68 -0
  404. finance_dev/models/symboldetails.py +119 -0
  405. finance_dev/models/symbolerror.py +43 -0
  406. finance_dev/models/symbolinfo.py +183 -0
  407. finance_dev/models/synclogosop.py +146 -0
  408. finance_dev/models/technicalindicatorresponse.py +43 -0
  409. finance_dev/models/technicalindicatortype.py +21 -0
  410. finance_dev/models/technicalpatternsresponse.py +249 -0
  411. finance_dev/models/tenderofferidentifiertype.py +26 -0
  412. finance_dev/models/tenderoffersresponse.py +548 -0
  413. finance_dev/models/tickchartbars.py +104 -0
  414. finance_dev/models/tickresolution.py +20 -0
  415. finance_dev/models/timeinforceenum.py +26 -0
  416. finance_dev/models/tradeorderlegv2.py +164 -0
  417. finance_dev/models/tradeorderv2.py +434 -0
  418. finance_dev/models/transcriptresponse.py +162 -0
  419. finance_dev/models/transcriptsresponse.py +89 -0
  420. finance_dev/models/treasuryyieldsresponse.py +160 -0
  421. finance_dev/models/unifiedsnapshotresponse.py +308 -0
  422. finance_dev/models/updateconfigwatchlistbyidop.py +65 -0
  423. finance_dev/models/updatewatchlistrequest_union.py +134 -0
  424. finance_dev/models/upgradesdowngradesresponse.py +98 -0
  425. finance_dev/models/usaspendingresponse.py +222 -0
  426. finance_dev/models/usptopatentsresponse.py +134 -0
  427. finance_dev/models/visaapplicationsresponse.py +228 -0
  428. finance_dev/models/watchlist.py +68 -0
  429. finance_dev/models/watchlistrequest.py +43 -0
  430. finance_dev/models/watchlistresponse.py +44 -0
  431. finance_dev/news_sdk.py +829 -0
  432. finance_dev/options.py +3443 -0
  433. finance_dev/orders.py +1907 -0
  434. finance_dev/ownership.py +1386 -0
  435. finance_dev/predictions.py +29 -0
  436. finance_dev/predictions_orders.py +852 -0
  437. finance_dev/py.typed +1 -0
  438. finance_dev/sdk.py +347 -0
  439. finance_dev/sdkconfiguration.py +50 -0
  440. finance_dev/signals.py +338 -0
  441. finance_dev/stocks.py +3131 -0
  442. finance_dev/technicalanalysis_sdk.py +1137 -0
  443. finance_dev/types/__init__.py +25 -0
  444. finance_dev/types/base64fileinput.py +44 -0
  445. finance_dev/types/basemodel.py +78 -0
  446. finance_dev/utils/__init__.py +181 -0
  447. finance_dev/utils/annotations.py +80 -0
  448. finance_dev/utils/datetimes.py +42 -0
  449. finance_dev/utils/dynamic_imports.py +55 -0
  450. finance_dev/utils/enums.py +135 -0
  451. finance_dev/utils/eventstreaming.py +327 -0
  452. finance_dev/utils/forms.py +240 -0
  453. finance_dev/utils/headers.py +137 -0
  454. finance_dev/utils/logger.py +23 -0
  455. finance_dev/utils/metadata.py +120 -0
  456. finance_dev/utils/queryparams.py +218 -0
  457. finance_dev/utils/requestbodies.py +68 -0
  458. finance_dev/utils/retries.py +373 -0
  459. finance_dev/utils/security.py +199 -0
  460. finance_dev/utils/serializers.py +327 -0
  461. finance_dev/utils/unmarshal_json_response.py +39 -0
  462. finance_dev/utils/url.py +155 -0
  463. finance_dev/utils/values.py +143 -0
  464. finance_dev/watchlist_sdk.py +1583 -0
  465. finance_dev/websocket/__init__.py +57 -0
  466. finance_dev/websocket/account.py +5 -0
  467. finance_dev/websocket/auth.py +124 -0
  468. finance_dev/websocket/chart.py +5 -0
  469. finance_dev/websocket/codec.py +66 -0
  470. finance_dev/websocket/config.py +52 -0
  471. finance_dev/websocket/errors.py +54 -0
  472. finance_dev/websocket/market.py +5 -0
  473. finance_dev/websocket/models/__init__.py +52 -0
  474. finance_dev/websocket/models/account.py +60 -0
  475. finance_dev/websocket/models/chart.py +44 -0
  476. finance_dev/websocket/models/common.py +85 -0
  477. finance_dev/websocket/models/market.py +113 -0
  478. finance_dev/websocket/resources.py +327 -0
  479. finance_dev/websocket/sdk.py +13 -0
  480. finance_dev/websocket/transport/async_connection.py +493 -0
  481. finance_dev/websocket/transport/base.py +78 -0
  482. finance_dev/websocket/transport/sync_connection.py +470 -0
  483. finance_dev-0.9.0.dist-info/METADATA +913 -0
  484. finance_dev-0.9.0.dist-info/RECORD +486 -0
  485. finance_dev-0.9.0.dist-info/WHEEL +5 -0
  486. finance_dev-0.9.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,113 @@
1
+ """Forward-compatible market subscription and event models."""
2
+
3
+ from typing import Any
4
+ from pydantic import Field
5
+ from .common import WireModel
6
+
7
+
8
+ class MarketSubscription(WireModel):
9
+ """Use '*' for all fields. Time & Sales alone does not enable quotes/trades."""
10
+
11
+ symbol: str
12
+ symbol_type: str | None = Field(default=None, alias="symbolType")
13
+ quote_fields: list[str] | str | None = Field(default=None, alias="quoteFields")
14
+ trade_fields: list[str] | str | None = Field(default=None, alias="tradeFields")
15
+ level2: bool | None = None
16
+ time_and_sales: bool | None = Field(default=None, alias="timeAndSales")
17
+ time_and_sales_fields: list[str] | str | None = Field(
18
+ default=None, alias="timeAndSalesFields"
19
+ )
20
+ greeks_fields: list[str] | str | None = Field(default=None, alias="greeksFields")
21
+
22
+
23
+ class MarketUnsubscribe(WireModel):
24
+ symbol: str
25
+ quote: bool | None = None
26
+ trade: bool | None = None
27
+ level2: bool | None = None
28
+ time_and_sales: bool | None = Field(default=None, alias="timeAndSales")
29
+ greeks: bool | None = None
30
+ quote_fields: list[str] | None = Field(default=None, alias="quoteFields")
31
+ trade_fields: list[str] | None = Field(default=None, alias="tradeFields")
32
+ greeks_fields: list[str] | None = Field(default=None, alias="greeksFields")
33
+
34
+
35
+ class MarketEvent(WireModel):
36
+ type: str | None = None
37
+ action: str | None = None
38
+ symbol: str | None = None
39
+ data: Any = None
40
+
41
+
42
+ class QuoteData(WireModel):
43
+ """Bid/ask data; fields may be absent in partial updates.
44
+
45
+ Timestamps are Unix milliseconds. Unknown fields are preserved.
46
+ """
47
+
48
+ bid_price: float | None = Field(default=None, alias="bidPrice")
49
+ bid_change: float | None = Field(default=None, alias="bidChange")
50
+ bid_size: int | None = Field(default=None, alias="bidSize")
51
+ bid_size_change: int | None = Field(default=None, alias="bidSizeChange")
52
+ bid_timestamp: int | None = Field(default=None, alias="bidTimestamp")
53
+ bid_exchange: str | None = Field(default=None, alias="bidExchange")
54
+ ask_price: float | None = Field(default=None, alias="askPrice")
55
+ ask_change: float | None = Field(default=None, alias="askChange")
56
+ ask_size: int | None = Field(default=None, alias="askSize")
57
+ ask_size_change: int | None = Field(default=None, alias="askSizeChange")
58
+ ask_timestamp: int | None = Field(default=None, alias="askTimestamp")
59
+ ask_exchange: str | None = Field(default=None, alias="askExchange")
60
+ quote_timestamp: int | None = Field(default=None, alias="quoteTimestamp")
61
+ mid_price: float | None = Field(default=None, alias="midPrice")
62
+ spread: float | None = None
63
+
64
+
65
+ class TradeData(WireModel):
66
+ """Last sale, volume, and OHLC data; fields may be absent in updates.
67
+
68
+ Timestamps are Unix milliseconds. Unknown fields are preserved.
69
+ """
70
+
71
+ price: float | None = None
72
+ size: int | None = None
73
+ total_volume: int | None = Field(default=None, alias="totalVolume")
74
+ tick_volume: int | None = Field(default=None, alias="tickVolume")
75
+ open_price: float | None = Field(default=None, alias="openPrice")
76
+ high_price: float | None = Field(default=None, alias="highPrice")
77
+ low_price: float | None = Field(default=None, alias="lowPrice")
78
+ last_price: float | None = Field(default=None, alias="lastPrice")
79
+ net_change: float | None = Field(default=None, alias="netChange")
80
+ tick: str | None = None
81
+ trade_seq: int | None = Field(default=None, alias="tradeSeq")
82
+ trade_timestamp: int | None = Field(default=None, alias="tradeTimestamp")
83
+ close_price: float | None = Field(default=None, alias="closePrice")
84
+ previous_close_price: float | None = Field(default=None, alias="previousClosePrice")
85
+
86
+
87
+ class Level2Data(WireModel):
88
+ order_book: Any = Field(default=None, alias="orderBook")
89
+ quotes: Any = None
90
+
91
+ @staticmethod
92
+ def parse_row(row: str, *, separator: str = ",") -> list[str]:
93
+ """Safely split compact server rows without imposing a numeric schema."""
94
+ return row.split(separator)
95
+
96
+
97
+ class TimeAndSalesData(WireModel):
98
+ """A single execution, with string prices, sizes, and Unix millisecond times.
99
+
100
+ Fields may be absent when selected individually. Unknown fields are preserved.
101
+ """
102
+
103
+ symbol: str | None = None
104
+ price: str | None = None
105
+ size: str | None = None
106
+ tick: str | None = None
107
+ trade_seq: str | None = Field(default=None, alias="tradeSeq")
108
+ trade_exchange: str | None = Field(default=None, alias="tradeExchange")
109
+ trade_timestamp: str | None = Field(default=None, alias="tradeTimestamp")
110
+
111
+
112
+ class GreeksData(WireModel):
113
+ pass
@@ -0,0 +1,327 @@
1
+ """Endpoint-specific connection factories and topic helpers."""
2
+
3
+ # Resources share request IDs and subscription state with their connections.
4
+ # pylint: disable=protected-access
5
+
6
+ from datetime import datetime
7
+ from typing import Sequence
8
+ from .auth import (
9
+ AsyncClientCredentialsTokenProvider,
10
+ ClientCredentialsTokenProvider,
11
+ StaticTokenProvider,
12
+ )
13
+ from .config import ACCOUNT_URL, CHART_URL, MARKET_URL
14
+ from .errors import WebSocketAuthenticationError
15
+ from .models import MarketSubscription, MarketUnsubscribe, PnlSubscription
16
+ from .transport.async_connection import AsyncConnection
17
+ from .transport.sync_connection import SyncConnection
18
+
19
+
20
+ class Resource:
21
+ endpoint = ""
22
+
23
+ def __init__(self, sdk_configuration):
24
+ self.sdk_configuration = sdk_configuration
25
+
26
+ def _provider(self, access_token, token_provider, asynchronous=False):
27
+ if access_token is not None and token_provider is not None:
28
+ raise WebSocketAuthenticationError(
29
+ "Supply either access_token or token_provider, not both"
30
+ )
31
+ if access_token is not None:
32
+ if not isinstance(access_token, str) or not access_token:
33
+ raise WebSocketAuthenticationError(
34
+ "access_token must be a non-empty string"
35
+ )
36
+ return StaticTokenProvider(access_token)
37
+ if token_provider is not None:
38
+ return token_provider
39
+ security = self.sdk_configuration.security
40
+ if callable(security):
41
+ security = security()
42
+ cid = getattr(security, "client_id", None) if security else None
43
+ secret = getattr(security, "client_secret", None) if security else None
44
+ if not cid or not secret:
45
+ raise WebSocketAuthenticationError(
46
+ "Supply an access_token or token_provider, or configure client_id and client_secret"
47
+ )
48
+ token_url = (
49
+ getattr(security, "token_url", None)
50
+ or "https://api.aries.com/v1/oauth2/token"
51
+ )
52
+ return (
53
+ AsyncClientCredentialsTokenProvider(token_url, cid, secret)
54
+ if asynchronous
55
+ else ClientCredentialsTokenProvider(token_url, cid, secret)
56
+ )
57
+
58
+ def connect(self, *, access_token=None, token_provider=None, url=None, config=None):
59
+ stream = SyncConnection(
60
+ url or self.endpoint, self._provider(access_token, token_provider), config
61
+ )
62
+ stream.resource = self
63
+ return stream
64
+
65
+ def connect_async(
66
+ self, *, access_token=None, token_provider=None, url=None, config=None
67
+ ):
68
+ stream = AsyncConnection(
69
+ url or self.endpoint,
70
+ self._provider(access_token, token_provider, True),
71
+ config,
72
+ )
73
+ stream.resource = self
74
+ return stream
75
+
76
+
77
+ class MarketResource(Resource):
78
+ protocol = "market"
79
+ endpoint = MARKET_URL
80
+
81
+ def subscribe(self, stream, items: Sequence[MarketSubscription]):
82
+ body = [
83
+ (
84
+ i.model_dump(exclude_none=True, by_alias=True)
85
+ if isinstance(i, MarketSubscription)
86
+ else i
87
+ )
88
+ for i in items
89
+ ]
90
+ ident = stream._id("subscribe")
91
+ stream.send_message({"type": "subscribe", "id": ident, "payload": body})
92
+ return ident
93
+
94
+ async def subscribe_async(self, stream, items):
95
+ body = [
96
+ (
97
+ i.model_dump(exclude_none=True, by_alias=True)
98
+ if isinstance(i, MarketSubscription)
99
+ else i
100
+ )
101
+ for i in items
102
+ ]
103
+ ident = stream._id("subscribe")
104
+ await stream.send_message({"type": "subscribe", "id": ident, "payload": body})
105
+ return ident
106
+
107
+ def unsubscribe(self, stream, items: Sequence[str | MarketUnsubscribe]):
108
+ body = [
109
+ i if isinstance(i, str) else i.model_dump(exclude_none=True, by_alias=True)
110
+ for i in items
111
+ ]
112
+ ident = stream._id("unsubscribe")
113
+ stream.send_message({"type": "unsubscribe", "id": ident, "payload": body})
114
+ return ident
115
+
116
+ async def unsubscribe_async(self, stream, items):
117
+ body = [
118
+ i if isinstance(i, str) else i.model_dump(exclude_none=True, by_alias=True)
119
+ for i in items
120
+ ]
121
+ ident = stream._id("unsubscribe")
122
+ await stream.send_message({"type": "unsubscribe", "id": ident, "payload": body})
123
+ return ident
124
+
125
+ def request(self, stream, method, path, *, query=None, body=None):
126
+ return stream.request(method, path, query=query, body=body)
127
+
128
+ async def request_async(self, stream, method, path, *, query=None, body=None):
129
+ return await stream.request(method, path, query=query, body=body)
130
+
131
+ def get_option_expiry_dates(self, stream, symbol):
132
+ return stream.request("GET", f"/options/{symbol}/expiry-dates")
133
+
134
+ async def get_option_expiry_dates_async(self, stream, symbol):
135
+ return await stream.request("GET", f"/options/{symbol}/expiry-dates")
136
+
137
+ def get_option_contract_symbols(self, stream, symbol, expiration):
138
+ return stream.request("GET", f"/options/{symbol}/contracts/{expiration}")
139
+
140
+ async def get_option_contract_symbols_async(self, stream, symbol, expiration):
141
+ return await stream.request("GET", f"/options/{symbol}/contracts/{expiration}")
142
+
143
+
144
+ class ChartResource(Resource):
145
+ protocol = "chart"
146
+ endpoint = CHART_URL
147
+
148
+ def subscribe(self, stream, symbol, *, data_type="quotes", symbol_type=None):
149
+ ident = stream._id("subscribe")
150
+ payload = {"type": data_type, "symbol": symbol}
151
+ if symbol_type:
152
+ payload["symbolType"] = symbol_type
153
+ stream.send_message({"type": "subscribe", "id": ident, "payload": payload})
154
+ return ident
155
+
156
+ async def subscribe_async(
157
+ self, stream, symbol, *, data_type="quotes", symbol_type=None
158
+ ):
159
+ ident = stream._id("subscribe")
160
+ payload = {"type": data_type, "symbol": symbol}
161
+ if symbol_type:
162
+ payload["symbolType"] = symbol_type
163
+ await stream.send_message(
164
+ {"type": "subscribe", "id": ident, "payload": payload}
165
+ )
166
+ return ident
167
+
168
+ def unsubscribe(self, stream, symbol):
169
+ ident = stream._id("unsubscribe")
170
+ stream.send_message(
171
+ {
172
+ "type": "unsubscribe",
173
+ "id": ident,
174
+ "payload": {"type": "quotes", "symbol": symbol},
175
+ }
176
+ )
177
+ return ident
178
+
179
+ async def unsubscribe_async(self, stream, symbol):
180
+ ident = stream._id("unsubscribe")
181
+ await stream.send_message(
182
+ {
183
+ "type": "unsubscribe",
184
+ "id": ident,
185
+ "payload": {"type": "quotes", "symbol": symbol},
186
+ }
187
+ )
188
+ return ident
189
+
190
+
191
+ class AccountResource(Resource):
192
+ protocol = "account"
193
+ endpoint = ACCOUNT_URL
194
+
195
+ def _sub(self, stream, topic, params=None):
196
+ payload = {"topic": topic}
197
+ if params:
198
+ payload["params"] = {k: v for k, v in params.items() if v is not None}
199
+ message = {
200
+ "type": "subscribe",
201
+ "id": stream._id("subscribe"),
202
+ "payload": payload,
203
+ }
204
+ result = stream.exchange(message)
205
+ stream._active[topic + ":" + str(payload.get("params", {}))] = message
206
+ return result
207
+
208
+ async def _suba(self, stream, topic, params=None):
209
+ payload = {"topic": topic}
210
+ if params:
211
+ payload["params"] = {k: v for k, v in params.items() if v is not None}
212
+ message = {
213
+ "type": "subscribe",
214
+ "id": stream._id("subscribe"),
215
+ "payload": payload,
216
+ }
217
+ result = await stream.exchange(message)
218
+ stream._active[topic + ":" + str(payload.get("params", {}))] = message
219
+ return result
220
+
221
+ def subscribe_account(self, stream, account_id):
222
+ return self._sub(stream, "account", {"accountId": account_id})
223
+
224
+ async def subscribe_account_async(self, stream, account_id):
225
+ return await self._suba(stream, "account", {"accountId": account_id})
226
+
227
+ def subscribe_pnl(self, stream, account_id, start_time, *, interval="1m"):
228
+ item = PnlSubscription.model_validate(
229
+ {"account_id": account_id, "start_time": start_time, "interval": interval}
230
+ )
231
+ if interval not in {"15s", "1m", "5m", "15m", "1h", "1d", "1mo"}:
232
+ raise ValueError("unsupported P&L interval")
233
+ return self._sub(
234
+ stream,
235
+ "pnl",
236
+ {
237
+ "accountId": account_id,
238
+ "startTime": (
239
+ item.start_time.isoformat()
240
+ if isinstance(item.start_time, datetime)
241
+ else item.start_time
242
+ ),
243
+ "interval": interval,
244
+ },
245
+ )
246
+
247
+ async def subscribe_pnl_async(
248
+ self, stream, account_id, start_time, *, interval="1m"
249
+ ):
250
+ item = PnlSubscription.model_validate(
251
+ {"account_id": account_id, "start_time": start_time, "interval": interval}
252
+ )
253
+ if interval not in {"15s", "1m", "5m", "15m", "1h", "1d", "1mo"}:
254
+ raise ValueError("unsupported P&L interval")
255
+ return await self._suba(
256
+ stream,
257
+ "pnl",
258
+ {
259
+ "accountId": account_id,
260
+ "startTime": (
261
+ item.start_time.isoformat()
262
+ if isinstance(item.start_time, datetime)
263
+ else item.start_time
264
+ ),
265
+ "interval": interval,
266
+ },
267
+ )
268
+
269
+ def subscribe_watchlist(self, stream):
270
+ return self._sub(stream, "watchlist")
271
+
272
+ async def subscribe_watchlist_async(self, stream):
273
+ return await self._suba(stream, "watchlist")
274
+
275
+ def subscribe_news(self, stream, *, symbols=None, topics=None):
276
+ return self._sub(stream, "news", {"symbols": symbols, "topics": topics})
277
+
278
+ async def subscribe_news_async(self, stream, *, symbols=None, topics=None):
279
+ return await self._suba(stream, "news", {"symbols": symbols, "topics": topics})
280
+
281
+ def _unsub(self, stream, topic, params=None):
282
+ payload = {"topic": topic}
283
+ if params:
284
+ payload["params"] = params
285
+ result = stream.exchange(
286
+ {"type": "unsubscribe", "id": stream._id("unsubscribe"), "payload": payload}
287
+ )
288
+ for key in list(stream._active):
289
+ if key.startswith(topic + ":"):
290
+ stream._active.pop(key, None)
291
+ return result
292
+
293
+ async def _unsuba(self, stream, topic, params=None):
294
+ payload = {"topic": topic}
295
+ if params:
296
+ payload["params"] = params
297
+ result = await stream.exchange(
298
+ {"type": "unsubscribe", "id": stream._id("unsubscribe"), "payload": payload}
299
+ )
300
+ for key in list(stream._active):
301
+ if key.startswith(topic + ":"):
302
+ stream._active.pop(key, None)
303
+ return result
304
+
305
+ def unsubscribe_account(self, stream, account_id):
306
+ return self._unsub(stream, "account", {"accountId": account_id})
307
+
308
+ async def unsubscribe_account_async(self, stream, account_id):
309
+ return await self._unsuba(stream, "account", {"accountId": account_id})
310
+
311
+ def unsubscribe_pnl(self, stream, account_id):
312
+ return self._unsub(stream, "pnl", {"accountId": account_id})
313
+
314
+ async def unsubscribe_pnl_async(self, stream, account_id):
315
+ return await self._unsuba(stream, "pnl", {"accountId": account_id})
316
+
317
+ def unsubscribe_watchlist(self, stream):
318
+ return self._unsub(stream, "watchlist")
319
+
320
+ async def unsubscribe_watchlist_async(self, stream):
321
+ return await self._unsuba(stream, "watchlist")
322
+
323
+ def unsubscribe_news(self, stream):
324
+ return self._unsub(stream, "news")
325
+
326
+ async def unsubscribe_news_async(self, stream):
327
+ return await self._unsuba(stream, "news")
@@ -0,0 +1,13 @@
1
+ """WebSocket namespace attached to the generated Aries SDK."""
2
+
3
+ from .market import MarketWebSocket
4
+ from .chart import ChartWebSocket
5
+ from .account import AccountWebSocket
6
+
7
+
8
+ class WebSocketSDK:
9
+ def __init__(self, sdk_configuration, parent_ref=None):
10
+ self.market = MarketWebSocket(sdk_configuration)
11
+ self.chart = ChartWebSocket(sdk_configuration)
12
+ self.account = AccountWebSocket(sdk_configuration)
13
+ self.parent_ref = parent_ref