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,454 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 71a981035aca
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 DayTypedDict(TypedDict):
13
+ r"""Current day aggregate"""
14
+
15
+ close: NotRequired[float]
16
+ r"""Close price"""
17
+ high: NotRequired[float]
18
+ r"""High price"""
19
+ low: NotRequired[float]
20
+ r"""Low price"""
21
+ open: NotRequired[float]
22
+ r"""Open price"""
23
+ volume: NotRequired[float]
24
+ r"""Volume"""
25
+ vwap: NotRequired[float]
26
+ r"""VWAP"""
27
+
28
+
29
+ class Day(BaseModel):
30
+ r"""Current day aggregate"""
31
+
32
+ close: Optional[float] = None
33
+ r"""Close price"""
34
+
35
+ high: Optional[float] = None
36
+ r"""High price"""
37
+
38
+ low: Optional[float] = None
39
+ r"""Low price"""
40
+
41
+ open: Optional[float] = None
42
+ r"""Open price"""
43
+
44
+ volume: Optional[float] = None
45
+ r"""Volume"""
46
+
47
+ vwap: Optional[float] = None
48
+ r"""VWAP"""
49
+
50
+ @model_serializer(mode="wrap")
51
+ def serialize_model(self, handler):
52
+ optional_fields = set(["close", "high", "low", "open", "volume", "vwap"])
53
+ serialized = handler(self)
54
+ m = {}
55
+
56
+ for n, f in type(self).model_fields.items():
57
+ k = f.alias or n
58
+ val = serialized.get(k, serialized.get(n))
59
+
60
+ if val != UNSET_SENTINEL:
61
+ if val is not None or k not in optional_fields:
62
+ m[k] = val
63
+
64
+ return m
65
+
66
+
67
+ class LastQuoteTypedDict(TypedDict):
68
+ r"""Last quote information"""
69
+
70
+ ask_price: NotRequired[float]
71
+ r"""Ask price of the last quote."""
72
+ ask_size: NotRequired[int]
73
+ r"""Ask size of the last quote."""
74
+ bid_price: NotRequired[float]
75
+ r"""Bid price of the last quote."""
76
+ bid_size: NotRequired[int]
77
+ r"""Bid size of the last quote."""
78
+ timestamp: NotRequired[int]
79
+ r"""Timestamp of the last quote as an integer from the upstream provider."""
80
+
81
+
82
+ class LastQuote(BaseModel):
83
+ r"""Last quote information"""
84
+
85
+ ask_price: Annotated[Optional[float], pydantic.Field(alias="askPrice")] = None
86
+ r"""Ask price of the last quote."""
87
+
88
+ ask_size: Annotated[Optional[int], pydantic.Field(alias="askSize")] = None
89
+ r"""Ask size of the last quote."""
90
+
91
+ bid_price: Annotated[Optional[float], pydantic.Field(alias="bidPrice")] = None
92
+ r"""Bid price of the last quote."""
93
+
94
+ bid_size: Annotated[Optional[int], pydantic.Field(alias="bidSize")] = None
95
+ r"""Bid size of the last quote."""
96
+
97
+ timestamp: Optional[int] = None
98
+ r"""Timestamp of the last quote as an integer from the upstream provider."""
99
+
100
+ @model_serializer(mode="wrap")
101
+ def serialize_model(self, handler):
102
+ optional_fields = set(
103
+ ["askPrice", "askSize", "bidPrice", "bidSize", "timestamp"]
104
+ )
105
+ serialized = handler(self)
106
+ m = {}
107
+
108
+ for n, f in type(self).model_fields.items():
109
+ k = f.alias or n
110
+ val = serialized.get(k, serialized.get(n))
111
+
112
+ if val != UNSET_SENTINEL:
113
+ if val is not None or k not in optional_fields:
114
+ m[k] = val
115
+
116
+ return m
117
+
118
+
119
+ class LastTradeTypedDict(TypedDict):
120
+ r"""Last trade information"""
121
+
122
+ conditions: NotRequired[List[int]]
123
+ r"""Provider-defined numeric condition codes attached to the last trade."""
124
+ exchange_id: NotRequired[int]
125
+ r"""Numeric identifier of the exchange where the last trade occurred."""
126
+ price: NotRequired[float]
127
+ r"""Price of the last trade."""
128
+ size: NotRequired[int]
129
+ r"""Size of the last trade."""
130
+ timestamp: NotRequired[int]
131
+ r"""Timestamp of the last trade as an integer from the upstream provider."""
132
+ trade_id: NotRequired[str]
133
+ r"""Identifier of the last trade."""
134
+
135
+
136
+ class LastTrade(BaseModel):
137
+ r"""Last trade information"""
138
+
139
+ conditions: Optional[List[int]] = None
140
+ r"""Provider-defined numeric condition codes attached to the last trade."""
141
+
142
+ exchange_id: Annotated[Optional[int], pydantic.Field(alias="exchangeId")] = None
143
+ r"""Numeric identifier of the exchange where the last trade occurred."""
144
+
145
+ price: Optional[float] = None
146
+ r"""Price of the last trade."""
147
+
148
+ size: Optional[int] = None
149
+ r"""Size of the last trade."""
150
+
151
+ timestamp: Optional[int] = None
152
+ r"""Timestamp of the last trade as an integer from the upstream provider."""
153
+
154
+ trade_id: Annotated[Optional[str], pydantic.Field(alias="tradeId")] = None
155
+ r"""Identifier of the last trade."""
156
+
157
+ @model_serializer(mode="wrap")
158
+ def serialize_model(self, handler):
159
+ optional_fields = set(
160
+ ["conditions", "exchangeId", "price", "size", "timestamp", "tradeId"]
161
+ )
162
+ serialized = handler(self)
163
+ m = {}
164
+
165
+ for n, f in type(self).model_fields.items():
166
+ k = f.alias or n
167
+ val = serialized.get(k, serialized.get(n))
168
+
169
+ if val != UNSET_SENTINEL:
170
+ if val is not None or k not in optional_fields:
171
+ m[k] = val
172
+
173
+ return m
174
+
175
+
176
+ class MinTypedDict(TypedDict):
177
+ r"""Latest minute aggregate"""
178
+
179
+ accumulated_volume: NotRequired[int]
180
+ r"""Accumulated volume for the trading day up to this minute bar."""
181
+ close: NotRequired[float]
182
+ r"""Close price of the latest minute bar."""
183
+ high: NotRequired[float]
184
+ r"""High price of the latest minute bar."""
185
+ low: NotRequired[float]
186
+ r"""Low price of the latest minute bar."""
187
+ number_of_trades: NotRequired[int]
188
+ r"""Number of trades in the latest minute bar."""
189
+ open: NotRequired[float]
190
+ r"""Open price of the latest minute bar."""
191
+ timestamp: NotRequired[int]
192
+ r"""Timestamp of the latest minute bar as an integer from the upstream provider."""
193
+ volume: NotRequired[int]
194
+ r"""Trading volume in the latest minute bar."""
195
+ vwap: NotRequired[float]
196
+ r"""Volume-weighted average price of the latest minute bar."""
197
+
198
+
199
+ class Min(BaseModel):
200
+ r"""Latest minute aggregate"""
201
+
202
+ accumulated_volume: Annotated[
203
+ Optional[int], pydantic.Field(alias="accumulatedVolume")
204
+ ] = None
205
+ r"""Accumulated volume for the trading day up to this minute bar."""
206
+
207
+ close: Optional[float] = None
208
+ r"""Close price of the latest minute bar."""
209
+
210
+ high: Optional[float] = None
211
+ r"""High price of the latest minute bar."""
212
+
213
+ low: Optional[float] = None
214
+ r"""Low price of the latest minute bar."""
215
+
216
+ number_of_trades: Annotated[
217
+ Optional[int], pydantic.Field(alias="numberOfTrades")
218
+ ] = None
219
+ r"""Number of trades in the latest minute bar."""
220
+
221
+ open: Optional[float] = None
222
+ r"""Open price of the latest minute bar."""
223
+
224
+ timestamp: Optional[int] = None
225
+ r"""Timestamp of the latest minute bar as an integer from the upstream provider."""
226
+
227
+ volume: Optional[int] = None
228
+ r"""Trading volume in the latest minute bar."""
229
+
230
+ vwap: Optional[float] = None
231
+ r"""Volume-weighted average price of the latest minute bar."""
232
+
233
+ @model_serializer(mode="wrap")
234
+ def serialize_model(self, handler):
235
+ optional_fields = set(
236
+ [
237
+ "accumulatedVolume",
238
+ "close",
239
+ "high",
240
+ "low",
241
+ "numberOfTrades",
242
+ "open",
243
+ "timestamp",
244
+ "volume",
245
+ "vwap",
246
+ ]
247
+ )
248
+ serialized = handler(self)
249
+ m = {}
250
+
251
+ for n, f in type(self).model_fields.items():
252
+ k = f.alias or n
253
+ val = serialized.get(k, serialized.get(n))
254
+
255
+ if val != UNSET_SENTINEL:
256
+ if val is not None or k not in optional_fields:
257
+ m[k] = val
258
+
259
+ return m
260
+
261
+
262
+ class PrevDayTypedDict(TypedDict):
263
+ r"""Previous day aggregate"""
264
+
265
+ close: NotRequired[float]
266
+ r"""Close price of the previous trading day."""
267
+ high: NotRequired[float]
268
+ r"""High price of the previous trading day."""
269
+ low: NotRequired[float]
270
+ r"""Low price of the previous trading day."""
271
+ open: NotRequired[float]
272
+ r"""Open price of the previous trading day."""
273
+ volume: NotRequired[int]
274
+ r"""Trading volume of the previous trading day."""
275
+ vwap: NotRequired[float]
276
+ r"""Volume-weighted average price of the previous trading day."""
277
+
278
+
279
+ class PrevDay(BaseModel):
280
+ r"""Previous day aggregate"""
281
+
282
+ close: Optional[float] = None
283
+ r"""Close price of the previous trading day."""
284
+
285
+ high: Optional[float] = None
286
+ r"""High price of the previous trading day."""
287
+
288
+ low: Optional[float] = None
289
+ r"""Low price of the previous trading day."""
290
+
291
+ open: Optional[float] = None
292
+ r"""Open price of the previous trading day."""
293
+
294
+ volume: Optional[int] = None
295
+ r"""Trading volume of the previous trading day."""
296
+
297
+ vwap: Optional[float] = None
298
+ r"""Volume-weighted average price of the previous trading day."""
299
+
300
+ @model_serializer(mode="wrap")
301
+ def serialize_model(self, handler):
302
+ optional_fields = set(["close", "high", "low", "open", "volume", "vwap"])
303
+ serialized = handler(self)
304
+ m = {}
305
+
306
+ for n, f in type(self).model_fields.items():
307
+ k = f.alias or n
308
+ val = serialized.get(k, serialized.get(n))
309
+
310
+ if val != UNSET_SENTINEL:
311
+ if val is not None or k not in optional_fields:
312
+ m[k] = val
313
+
314
+ return m
315
+
316
+
317
+ class TickerTypedDict(TypedDict):
318
+ day: NotRequired[DayTypedDict]
319
+ r"""Current day aggregate"""
320
+ last_quote: NotRequired[LastQuoteTypedDict]
321
+ r"""Last quote information"""
322
+ last_trade: NotRequired[LastTradeTypedDict]
323
+ r"""Last trade information"""
324
+ min: NotRequired[MinTypedDict]
325
+ r"""Latest minute aggregate"""
326
+ prev_day: NotRequired[PrevDayTypedDict]
327
+ r"""Previous day aggregate"""
328
+ ticker: NotRequired[str]
329
+ r"""Ticker symbol"""
330
+ todays_change: NotRequired[float]
331
+ r"""Today's change"""
332
+ todays_change_perc: NotRequired[float]
333
+ r"""Today's change percent"""
334
+ updated: NotRequired[int]
335
+ r"""Last updated timestamp"""
336
+
337
+
338
+ class Ticker(BaseModel):
339
+ day: Optional[Day] = None
340
+ r"""Current day aggregate"""
341
+
342
+ last_quote: Annotated[Optional[LastQuote], pydantic.Field(alias="lastQuote")] = None
343
+ r"""Last quote information"""
344
+
345
+ last_trade: Annotated[Optional[LastTrade], pydantic.Field(alias="lastTrade")] = None
346
+ r"""Last trade information"""
347
+
348
+ min: Optional[Min] = None
349
+ r"""Latest minute aggregate"""
350
+
351
+ prev_day: Annotated[Optional[PrevDay], pydantic.Field(alias="prevDay")] = None
352
+ r"""Previous day aggregate"""
353
+
354
+ ticker: Optional[str] = None
355
+ r"""Ticker symbol"""
356
+
357
+ todays_change: Annotated[Optional[float], pydantic.Field(alias="todaysChange")] = (
358
+ None
359
+ )
360
+ r"""Today's change"""
361
+
362
+ todays_change_perc: Annotated[
363
+ Optional[float], pydantic.Field(alias="todaysChangePerc")
364
+ ] = None
365
+ r"""Today's change percent"""
366
+
367
+ updated: Optional[int] = None
368
+ r"""Last updated timestamp"""
369
+
370
+ @model_serializer(mode="wrap")
371
+ def serialize_model(self, handler):
372
+ optional_fields = set(
373
+ [
374
+ "day",
375
+ "lastQuote",
376
+ "lastTrade",
377
+ "min",
378
+ "prevDay",
379
+ "ticker",
380
+ "todaysChange",
381
+ "todaysChangePerc",
382
+ "updated",
383
+ ]
384
+ )
385
+ serialized = handler(self)
386
+ m = {}
387
+
388
+ for n, f in type(self).model_fields.items():
389
+ k = f.alias or n
390
+ val = serialized.get(k, serialized.get(n))
391
+
392
+ if val != UNSET_SENTINEL:
393
+ if val is not None or k not in optional_fields:
394
+ m[k] = val
395
+
396
+ return m
397
+
398
+
399
+ class StockSnapshotsResponseTypedDict(TypedDict):
400
+ r"""Market snapshots for a set of stock tickers, including the current day aggregate, last quote, last trade, latest minute aggregate and previous day aggregate."""
401
+
402
+ count: NotRequired[int]
403
+ r"""Number of tickers returned"""
404
+ status: NotRequired[str]
405
+ r"""Status string from the upstream data provider — typically `OK` for a successful response. Treat any other value as an error indicator alongside the HTTP status code."""
406
+ tickers: NotRequired[List[TickerTypedDict]]
407
+ r"""Array of ticker snapshots"""
408
+
409
+
410
+ class StockSnapshotsResponse(BaseModel):
411
+ r"""Market snapshots for a set of stock tickers, including the current day aggregate, last quote, last trade, latest minute aggregate and previous day aggregate."""
412
+
413
+ count: Optional[int] = None
414
+ r"""Number of tickers returned"""
415
+
416
+ status: Optional[str] = None
417
+ r"""Status string from the upstream data provider — typically `OK` for a successful response. Treat any other value as an error indicator alongside the HTTP status code."""
418
+
419
+ tickers: Optional[List[Ticker]] = None
420
+ r"""Array of ticker snapshots"""
421
+
422
+ @model_serializer(mode="wrap")
423
+ def serialize_model(self, handler):
424
+ optional_fields = set(["count", "status", "tickers"])
425
+ serialized = handler(self)
426
+ m = {}
427
+
428
+ for n, f in type(self).model_fields.items():
429
+ k = f.alias or n
430
+ val = serialized.get(k, serialized.get(n))
431
+
432
+ if val != UNSET_SENTINEL:
433
+ if val is not None or k not in optional_fields:
434
+ m[k] = val
435
+
436
+ return m
437
+
438
+
439
+ try:
440
+ LastQuote.model_rebuild()
441
+ except NameError:
442
+ pass
443
+ try:
444
+ LastTrade.model_rebuild()
445
+ except NameError:
446
+ pass
447
+ try:
448
+ Min.model_rebuild()
449
+ except NameError:
450
+ pass
451
+ try:
452
+ Ticker.model_rebuild()
453
+ except NameError:
454
+ pass
@@ -0,0 +1,144 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 1ce8dc4aacb1
3
+
4
+ from __future__ import annotations
5
+ from datetime import date
6
+ from enum import Enum
7
+ from finance_dev import models, utils
8
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
9
+ import pydantic
10
+ from pydantic import field_serializer, model_serializer
11
+ from typing import List, Optional
12
+ from typing_extensions import Annotated, NotRequired, TypedDict
13
+
14
+
15
+ class AdjustmentType(str, Enum, metaclass=utils.OpenEnumMeta):
16
+ r"""Type of stock split adjustment"""
17
+
18
+ FORWARD_SPLIT = "forward_split"
19
+ REVERSE_SPLIT = "reverse_split"
20
+ STOCK_DIVIDEND = "stock_dividend"
21
+
22
+
23
+ class StockSplitsResponseResultTypedDict(TypedDict):
24
+ execution_date: date
25
+ r"""Execution date of the split in YYYY-MM-DD format"""
26
+ split_from: float
27
+ r"""The pre-split factor in the split ratio"""
28
+ split_to: float
29
+ r"""The post-split factor in the split ratio"""
30
+ ticker: str
31
+ r"""Stock ticker symbol, such as AAPL. Use the exact ticker for the company you want to research."""
32
+ adjustment_type: NotRequired[AdjustmentType]
33
+ r"""Type of stock split adjustment"""
34
+ historical_adjustment_factor: NotRequired[float]
35
+ r"""Factor used to adjust historical prices"""
36
+ id: NotRequired[str]
37
+ r"""Stock split event identifier"""
38
+
39
+
40
+ class StockSplitsResponseResult(BaseModel):
41
+ execution_date: Annotated[date, pydantic.Field(alias="executionDate")]
42
+ r"""Execution date of the split in YYYY-MM-DD format"""
43
+
44
+ split_from: Annotated[float, pydantic.Field(alias="splitFrom")]
45
+ r"""The pre-split factor in the split ratio"""
46
+
47
+ split_to: Annotated[float, pydantic.Field(alias="splitTo")]
48
+ r"""The post-split factor in the split ratio"""
49
+
50
+ ticker: str
51
+ r"""Stock ticker symbol, such as AAPL. Use the exact ticker for the company you want to research."""
52
+
53
+ adjustment_type: Annotated[
54
+ Optional[AdjustmentType], pydantic.Field(alias="adjustmentType")
55
+ ] = None
56
+ r"""Type of stock split adjustment"""
57
+
58
+ historical_adjustment_factor: Annotated[
59
+ Optional[float], pydantic.Field(alias="historicalAdjustmentFactor")
60
+ ] = None
61
+ r"""Factor used to adjust historical prices"""
62
+
63
+ id: Optional[str] = None
64
+ r"""Stock split event identifier"""
65
+
66
+ @field_serializer("adjustment_type")
67
+ def serialize_adjustment_type(self, value):
68
+ if isinstance(value, str):
69
+ try:
70
+ return models.AdjustmentType(value)
71
+ except ValueError:
72
+ return value
73
+ return value
74
+
75
+ @model_serializer(mode="wrap")
76
+ def serialize_model(self, handler):
77
+ optional_fields = set(["adjustmentType", "historicalAdjustmentFactor", "id"])
78
+ serialized = handler(self)
79
+ m = {}
80
+
81
+ for n, f in type(self).model_fields.items():
82
+ k = f.alias or n
83
+ val = serialized.get(k, serialized.get(n))
84
+
85
+ if val != UNSET_SENTINEL:
86
+ if val is not None or k not in optional_fields:
87
+ m[k] = val
88
+
89
+ return m
90
+
91
+
92
+ class StockSplitsResponseTypedDict(TypedDict):
93
+ r"""Stock split events with ratio and adjustment details, as returned by the upstream data provider."""
94
+
95
+ results: List[StockSplitsResponseResultTypedDict]
96
+ r"""Array of stock split events"""
97
+ status: str
98
+ r"""Status string from the upstream data provider — typically `OK` for a successful response. Treat any other value as an error indicator alongside the HTTP status code."""
99
+ next_url: NotRequired[str]
100
+ r"""Pagination URL for the next page, when available"""
101
+ request_id: NotRequired[str]
102
+ r"""Provider request identifier, when available"""
103
+
104
+
105
+ class StockSplitsResponse(BaseModel):
106
+ r"""Stock split events with ratio and adjustment details, as returned by the upstream data provider."""
107
+
108
+ results: List[StockSplitsResponseResult]
109
+ r"""Array of stock split events"""
110
+
111
+ status: str
112
+ r"""Status string from the upstream data provider — typically `OK` for a successful response. Treat any other value as an error indicator alongside the HTTP status code."""
113
+
114
+ next_url: Annotated[Optional[str], pydantic.Field(alias="nextUrl")] = None
115
+ r"""Pagination URL for the next page, when available"""
116
+
117
+ request_id: Annotated[Optional[str], pydantic.Field(alias="requestId")] = None
118
+ r"""Provider request identifier, when available"""
119
+
120
+ @model_serializer(mode="wrap")
121
+ def serialize_model(self, handler):
122
+ optional_fields = set(["nextUrl", "requestId"])
123
+ serialized = handler(self)
124
+ m = {}
125
+
126
+ for n, f in type(self).model_fields.items():
127
+ k = f.alias or n
128
+ val = serialized.get(k, serialized.get(n))
129
+
130
+ if val != UNSET_SENTINEL:
131
+ if val is not None or k not in optional_fields:
132
+ m[k] = val
133
+
134
+ return m
135
+
136
+
137
+ try:
138
+ StockSplitsResponseResult.model_rebuild()
139
+ except NameError:
140
+ pass
141
+ try:
142
+ StockSplitsResponse.model_rebuild()
143
+ except NameError:
144
+ pass