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,128 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 38b9b29bd578
3
+
4
+ from __future__ import annotations
5
+ from .newstypeenum import NewsTypeEnum
6
+ from datetime import datetime
7
+ from finance_dev import models
8
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
9
+ from pydantic import field_serializer, model_serializer
10
+ from typing import List, Optional
11
+ from typing_extensions import NotRequired, TypedDict
12
+
13
+
14
+ class NewsTypedDict(TypedDict):
15
+ action: NotRequired[str]
16
+ r"""News action type (typically empty)"""
17
+ authors: NotRequired[List[str]]
18
+ r"""Authors of the news item"""
19
+ body: NotRequired[str]
20
+ r"""Full body of the news (typically empty with default display output)"""
21
+ id: NotRequired[int]
22
+ r"""Unique news item ID"""
23
+ news_type: NotRequired[NewsTypeEnum]
24
+ r"""Source category of the news item. Pick one:
25
+ - `news` — Editorial news articles from journalists and news services.
26
+ - `press_release` — Official press releases issued directly by companies.
27
+ """
28
+ symbols: NotRequired[List[str]]
29
+ r"""Related stock symbols"""
30
+ timestamp: NotRequired[datetime]
31
+ r"""Publication timestamp in ISO 8601 format"""
32
+ title: NotRequired[str]
33
+ r"""News headline"""
34
+
35
+
36
+ class News(BaseModel):
37
+ action: Optional[str] = None
38
+ r"""News action type (typically empty)"""
39
+
40
+ authors: Optional[List[str]] = None
41
+ r"""Authors of the news item"""
42
+
43
+ body: Optional[str] = None
44
+ r"""Full body of the news (typically empty with default display output)"""
45
+
46
+ id: Optional[int] = None
47
+ r"""Unique news item ID"""
48
+
49
+ news_type: Optional[NewsTypeEnum] = None
50
+ r"""Source category of the news item. Pick one:
51
+ - `news` — Editorial news articles from journalists and news services.
52
+ - `press_release` — Official press releases issued directly by companies.
53
+ """
54
+
55
+ symbols: Optional[List[str]] = None
56
+ r"""Related stock symbols"""
57
+
58
+ timestamp: Optional[datetime] = None
59
+ r"""Publication timestamp in ISO 8601 format"""
60
+
61
+ title: Optional[str] = None
62
+ r"""News headline"""
63
+
64
+ @field_serializer("news_type")
65
+ def serialize_news_type(self, value):
66
+ if isinstance(value, str):
67
+ try:
68
+ return models.NewsTypeEnum(value)
69
+ except ValueError:
70
+ return value
71
+ return value
72
+
73
+ @model_serializer(mode="wrap")
74
+ def serialize_model(self, handler):
75
+ optional_fields = set(
76
+ [
77
+ "action",
78
+ "authors",
79
+ "body",
80
+ "id",
81
+ "news_type",
82
+ "symbols",
83
+ "timestamp",
84
+ "title",
85
+ ]
86
+ )
87
+ serialized = handler(self)
88
+ m = {}
89
+
90
+ for n, f in type(self).model_fields.items():
91
+ k = f.alias or n
92
+ val = serialized.get(k, serialized.get(n))
93
+
94
+ if val != UNSET_SENTINEL:
95
+ if val is not None or k not in optional_fields:
96
+ m[k] = val
97
+
98
+ return m
99
+
100
+
101
+ class NewsListResponseTypedDict(TypedDict):
102
+ r"""Response containing a list of news items."""
103
+
104
+ news: NotRequired[List[NewsTypedDict]]
105
+ r"""Array of news items and press releases, sorted by timestamp (newest first)"""
106
+
107
+
108
+ class NewsListResponse(BaseModel):
109
+ r"""Response containing a list of news items."""
110
+
111
+ news: Optional[List[News]] = None
112
+ r"""Array of news items and press releases, sorted by timestamp (newest first)"""
113
+
114
+ @model_serializer(mode="wrap")
115
+ def serialize_model(self, handler):
116
+ optional_fields = set(["news"])
117
+ serialized = handler(self)
118
+ m = {}
119
+
120
+ for n, f in type(self).model_fields.items():
121
+ k = f.alias or n
122
+ val = serialized.get(k, serialized.get(n))
123
+
124
+ if val != UNSET_SENTINEL:
125
+ if val is not None or k not in optional_fields:
126
+ m[k] = val
127
+
128
+ return m
@@ -0,0 +1,176 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 703052ddd977
3
+
4
+ from __future__ import annotations
5
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
6
+ import pydantic
7
+ from pydantic import model_serializer
8
+ from typing import Optional
9
+ from typing_extensions import Annotated, NotRequired, TypedDict
10
+
11
+
12
+ class BuzzTypedDict(TypedDict):
13
+ r"""News buzz metrics for the company."""
14
+
15
+ articles_in_last_week: NotRequired[int]
16
+ r"""Number of news articles in the last week."""
17
+ buzz: NotRequired[float]
18
+ r"""Buzz score for the company."""
19
+ weekly_average: NotRequired[float]
20
+ r"""Weekly average number of news articles."""
21
+
22
+
23
+ class Buzz(BaseModel):
24
+ r"""News buzz metrics for the company."""
25
+
26
+ articles_in_last_week: Annotated[
27
+ Optional[int], pydantic.Field(alias="articlesInLastWeek")
28
+ ] = None
29
+ r"""Number of news articles in the last week."""
30
+
31
+ buzz: Optional[float] = None
32
+ r"""Buzz score for the company."""
33
+
34
+ weekly_average: Annotated[
35
+ Optional[float], pydantic.Field(alias="weeklyAverage")
36
+ ] = None
37
+ r"""Weekly average number of news articles."""
38
+
39
+ @model_serializer(mode="wrap")
40
+ def serialize_model(self, handler):
41
+ optional_fields = set(["articlesInLastWeek", "buzz", "weeklyAverage"])
42
+ serialized = handler(self)
43
+ m = {}
44
+
45
+ for n, f in type(self).model_fields.items():
46
+ k = f.alias or n
47
+ val = serialized.get(k, serialized.get(n))
48
+
49
+ if val != UNSET_SENTINEL:
50
+ if val is not None or k not in optional_fields:
51
+ m[k] = val
52
+
53
+ return m
54
+
55
+
56
+ class SentimentTypedDict(TypedDict):
57
+ r"""News sentiment breakdown."""
58
+
59
+ bearish_percent: NotRequired[int]
60
+ r"""Bearish sentiment percent as reported by the provider."""
61
+ bullish_percent: NotRequired[int]
62
+ r"""Bullish sentiment percent as reported by the provider."""
63
+
64
+
65
+ class Sentiment(BaseModel):
66
+ r"""News sentiment breakdown."""
67
+
68
+ bearish_percent: Annotated[
69
+ Optional[int], pydantic.Field(alias="bearishPercent")
70
+ ] = None
71
+ r"""Bearish sentiment percent as reported by the provider."""
72
+
73
+ bullish_percent: Annotated[
74
+ Optional[int], pydantic.Field(alias="bullishPercent")
75
+ ] = None
76
+ r"""Bullish sentiment percent as reported by the provider."""
77
+
78
+ @model_serializer(mode="wrap")
79
+ def serialize_model(self, handler):
80
+ optional_fields = set(["bearishPercent", "bullishPercent"])
81
+ serialized = handler(self)
82
+ m = {}
83
+
84
+ for n, f in type(self).model_fields.items():
85
+ k = f.alias or n
86
+ val = serialized.get(k, serialized.get(n))
87
+
88
+ if val != UNSET_SENTINEL:
89
+ if val is not None or k not in optional_fields:
90
+ m[k] = val
91
+
92
+ return m
93
+
94
+
95
+ class NewsSentimentResponseTypedDict(TypedDict):
96
+ r"""News sentiment and buzz metrics for a company from Finnhub."""
97
+
98
+ buzz: NotRequired[BuzzTypedDict]
99
+ r"""News buzz metrics for the company."""
100
+ company_news_score: NotRequired[float]
101
+ r"""News score for the company."""
102
+ sector_average_bullish_percent: NotRequired[float]
103
+ r"""Average bullish percent across the company's sector."""
104
+ sector_average_news_score: NotRequired[float]
105
+ r"""Average news score across the company's sector."""
106
+ sentiment: NotRequired[SentimentTypedDict]
107
+ r"""News sentiment breakdown."""
108
+ symbol: NotRequired[str]
109
+ r"""Ticker symbol the sentiment applies to."""
110
+
111
+
112
+ class NewsSentimentResponse(BaseModel):
113
+ r"""News sentiment and buzz metrics for a company from Finnhub."""
114
+
115
+ buzz: Optional[Buzz] = None
116
+ r"""News buzz metrics for the company."""
117
+
118
+ company_news_score: Annotated[
119
+ Optional[float], pydantic.Field(alias="companyNewsScore")
120
+ ] = None
121
+ r"""News score for the company."""
122
+
123
+ sector_average_bullish_percent: Annotated[
124
+ Optional[float], pydantic.Field(alias="sectorAverageBullishPercent")
125
+ ] = None
126
+ r"""Average bullish percent across the company's sector."""
127
+
128
+ sector_average_news_score: Annotated[
129
+ Optional[float], pydantic.Field(alias="sectorAverageNewsScore")
130
+ ] = None
131
+ r"""Average news score across the company's sector."""
132
+
133
+ sentiment: Optional[Sentiment] = None
134
+ r"""News sentiment breakdown."""
135
+
136
+ symbol: Optional[str] = None
137
+ r"""Ticker symbol the sentiment applies to."""
138
+
139
+ @model_serializer(mode="wrap")
140
+ def serialize_model(self, handler):
141
+ optional_fields = set(
142
+ [
143
+ "buzz",
144
+ "companyNewsScore",
145
+ "sectorAverageBullishPercent",
146
+ "sectorAverageNewsScore",
147
+ "sentiment",
148
+ "symbol",
149
+ ]
150
+ )
151
+ serialized = handler(self)
152
+ m = {}
153
+
154
+ for n, f in type(self).model_fields.items():
155
+ k = f.alias or n
156
+ val = serialized.get(k, serialized.get(n))
157
+
158
+ if val != UNSET_SENTINEL:
159
+ if val is not None or k not in optional_fields:
160
+ m[k] = val
161
+
162
+ return m
163
+
164
+
165
+ try:
166
+ Buzz.model_rebuild()
167
+ except NameError:
168
+ pass
169
+ try:
170
+ Sentiment.model_rebuild()
171
+ except NameError:
172
+ pass
173
+ try:
174
+ NewsSentimentResponse.model_rebuild()
175
+ except NameError:
176
+ pass
@@ -0,0 +1,16 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 731f9b736060
3
+
4
+ from __future__ import annotations
5
+ from enum import Enum
6
+ from finance_dev import utils
7
+
8
+
9
+ class NewsTypeEnum(str, Enum, metaclass=utils.OpenEnumMeta):
10
+ r"""Source category of the news item. Pick one:
11
+ - `news` — Editorial news articles from journalists and news services.
12
+ - `press_release` — Official press releases issued directly by companies.
13
+ """
14
+
15
+ NEWS = "news"
16
+ PRESS_RELEASE = "press_release"
@@ -0,0 +1,64 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 07272340d95c
3
+
4
+ from __future__ import annotations
5
+ from .optioncontractsnapshotrow import (
6
+ OptionContractSnapshotRow,
7
+ OptionContractSnapshotRowTypedDict,
8
+ )
9
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
10
+ import pydantic
11
+ from pydantic import model_serializer
12
+ from typing import List, Optional
13
+ from typing_extensions import Annotated, NotRequired, TypedDict
14
+
15
+
16
+ class OptionChainSnapshotResponseTypedDict(TypedDict):
17
+ r"""Paginated option chain snapshot for an underlying (`OptionChainSnapshotResponse`)."""
18
+
19
+ next_url: NotRequired[str]
20
+ r"""URL for the next page of results (masked to this API); omitted when there is no next page."""
21
+ request_id: NotRequired[str]
22
+ r"""Request identifier from upstream data."""
23
+ results: NotRequired[List[OptionContractSnapshotRowTypedDict]]
24
+ r"""Option contract rows for the underlying, subject to filters and pagination."""
25
+ status: NotRequired[str]
26
+ 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."""
27
+
28
+
29
+ class OptionChainSnapshotResponse(BaseModel):
30
+ r"""Paginated option chain snapshot for an underlying (`OptionChainSnapshotResponse`)."""
31
+
32
+ next_url: Annotated[Optional[str], pydantic.Field(alias="nextUrl")] = None
33
+ r"""URL for the next page of results (masked to this API); omitted when there is no next page."""
34
+
35
+ request_id: Annotated[Optional[str], pydantic.Field(alias="requestId")] = None
36
+ r"""Request identifier from upstream data."""
37
+
38
+ results: Optional[List[OptionContractSnapshotRow]] = None
39
+ r"""Option contract rows for the underlying, subject to filters and pagination."""
40
+
41
+ status: Optional[str] = None
42
+ 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."""
43
+
44
+ @model_serializer(mode="wrap")
45
+ def serialize_model(self, handler):
46
+ optional_fields = set(["nextUrl", "requestId", "results", "status"])
47
+ serialized = handler(self)
48
+ m = {}
49
+
50
+ for n, f in type(self).model_fields.items():
51
+ k = f.alias or n
52
+ val = serialized.get(k, serialized.get(n))
53
+
54
+ if val != UNSET_SENTINEL:
55
+ if val is not None or k not in optional_fields:
56
+ m[k] = val
57
+
58
+ return m
59
+
60
+
61
+ try:
62
+ OptionChainSnapshotResponse.model_rebuild()
63
+ except NameError:
64
+ pass
@@ -0,0 +1,64 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 60e00dbfd057
3
+
4
+ from __future__ import annotations
5
+ from .optioncontractsnapshotrow import (
6
+ OptionContractSnapshotRow,
7
+ OptionContractSnapshotRowTypedDict,
8
+ )
9
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
10
+ import pydantic
11
+ from pydantic import model_serializer
12
+ from typing import Optional
13
+ from typing_extensions import Annotated, NotRequired, TypedDict
14
+
15
+
16
+ class OptionContractSnapshotResponseTypedDict(TypedDict):
17
+ r"""Single option contract snapshot (`OptionContractSnapshotResponse`). Responses may be cached for about five minutes."""
18
+
19
+ next_url: NotRequired[str]
20
+ r"""Pagination URL when applicable; omitted when not used."""
21
+ request_id: NotRequired[str]
22
+ r"""Request identifier from upstream data."""
23
+ results: NotRequired[OptionContractSnapshotRowTypedDict]
24
+ r"""One option contract row in a snapshot response (`OptionContractSnapshotDataDTO`). Optional fields are omitted when absent."""
25
+ status: NotRequired[str]
26
+ 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."""
27
+
28
+
29
+ class OptionContractSnapshotResponse(BaseModel):
30
+ r"""Single option contract snapshot (`OptionContractSnapshotResponse`). Responses may be cached for about five minutes."""
31
+
32
+ next_url: Annotated[Optional[str], pydantic.Field(alias="nextUrl")] = None
33
+ r"""Pagination URL when applicable; omitted when not used."""
34
+
35
+ request_id: Annotated[Optional[str], pydantic.Field(alias="requestId")] = None
36
+ r"""Request identifier from upstream data."""
37
+
38
+ results: Optional[OptionContractSnapshotRow] = None
39
+ r"""One option contract row in a snapshot response (`OptionContractSnapshotDataDTO`). Optional fields are omitted when absent."""
40
+
41
+ status: Optional[str] = None
42
+ 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."""
43
+
44
+ @model_serializer(mode="wrap")
45
+ def serialize_model(self, handler):
46
+ optional_fields = set(["nextUrl", "requestId", "results", "status"])
47
+ serialized = handler(self)
48
+ m = {}
49
+
50
+ for n, f in type(self).model_fields.items():
51
+ k = f.alias or n
52
+ val = serialized.get(k, serialized.get(n))
53
+
54
+ if val != UNSET_SENTINEL:
55
+ if val is not None or k not in optional_fields:
56
+ m[k] = val
57
+
58
+ return m
59
+
60
+
61
+ try:
62
+ OptionContractSnapshotResponse.model_rebuild()
63
+ except NameError:
64
+ pass
@@ -0,0 +1,164 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 3d2cb4bcc082
3
+
4
+ from __future__ import annotations
5
+ from .optionsnapshotcontractdetails import (
6
+ OptionSnapshotContractDetails,
7
+ OptionSnapshotContractDetailsTypedDict,
8
+ )
9
+ from .optionsnapshotdaybar import OptionSnapshotDayBar, OptionSnapshotDayBarTypedDict
10
+ from .optionsnapshotgreeks import OptionSnapshotGreeks, OptionSnapshotGreeksTypedDict
11
+ from .optionsnapshotlastquote import (
12
+ OptionSnapshotLastQuote,
13
+ OptionSnapshotLastQuoteTypedDict,
14
+ )
15
+ from .optionsnapshotlasttrade import (
16
+ OptionSnapshotLastTrade,
17
+ OptionSnapshotLastTradeTypedDict,
18
+ )
19
+ from .optionsnapshotunderlying import (
20
+ OptionSnapshotUnderlying,
21
+ OptionSnapshotUnderlyingTypedDict,
22
+ )
23
+ from finance_dev.types import (
24
+ BaseModel,
25
+ Nullable,
26
+ OptionalNullable,
27
+ UNSET,
28
+ UNSET_SENTINEL,
29
+ )
30
+ import pydantic
31
+ from pydantic import model_serializer
32
+ from typing import Optional
33
+ from typing_extensions import Annotated, NotRequired, TypedDict
34
+
35
+
36
+ class OptionContractSnapshotRowTypedDict(TypedDict):
37
+ r"""One option contract row in a snapshot response (`OptionContractSnapshotDataDTO`). Optional fields are omitted when absent."""
38
+
39
+ break_even_price: NotRequired[Nullable[float]]
40
+ r"""Underlying price at which the contract breaks even"""
41
+ day: NotRequired[OptionSnapshotDayBarTypedDict]
42
+ r"""Most recent daily OHLCV bar for the contract (`OptionSnapshotDayBarDTO`)."""
43
+ details: NotRequired[OptionSnapshotContractDetailsTypedDict]
44
+ r"""Static contract metadata (`OptionSnapshotDetailsDTO`)."""
45
+ fmv: NotRequired[Nullable[float]]
46
+ r"""Fair market value of the contract, when provided"""
47
+ fmv_last_updated: NotRequired[Nullable[int]]
48
+ r"""Timestamp of the last fair market value update, as supplied by the market data provider"""
49
+ greeks: NotRequired[OptionSnapshotGreeksTypedDict]
50
+ r"""Greeks when available (`OptionSnapshotGreeksDTO`)."""
51
+ implied_volatility: NotRequired[Nullable[float]]
52
+ r"""Implied volatility of the contract"""
53
+ last_quote: NotRequired[OptionSnapshotLastQuoteTypedDict]
54
+ r"""Latest NBBO quote when included (`OptionSnapshotLastQuoteDTO`)."""
55
+ last_trade: NotRequired[OptionSnapshotLastTradeTypedDict]
56
+ r"""Latest trade when included (`OptionSnapshotLastTradeDTO`)."""
57
+ open_interest: NotRequired[Nullable[float]]
58
+ r"""Open interest for the contract"""
59
+ underlying_asset: NotRequired[OptionSnapshotUnderlyingTypedDict]
60
+ r"""Underlying equity snapshot (`OptionSnapshotUnderlyingDTO`)."""
61
+
62
+
63
+ class OptionContractSnapshotRow(BaseModel):
64
+ r"""One option contract row in a snapshot response (`OptionContractSnapshotDataDTO`). Optional fields are omitted when absent."""
65
+
66
+ break_even_price: Annotated[
67
+ OptionalNullable[float], pydantic.Field(alias="breakEvenPrice")
68
+ ] = UNSET
69
+ r"""Underlying price at which the contract breaks even"""
70
+
71
+ day: Optional[OptionSnapshotDayBar] = None
72
+ r"""Most recent daily OHLCV bar for the contract (`OptionSnapshotDayBarDTO`)."""
73
+
74
+ details: Optional[OptionSnapshotContractDetails] = None
75
+ r"""Static contract metadata (`OptionSnapshotDetailsDTO`)."""
76
+
77
+ fmv: OptionalNullable[float] = UNSET
78
+ r"""Fair market value of the contract, when provided"""
79
+
80
+ fmv_last_updated: Annotated[
81
+ OptionalNullable[int], pydantic.Field(alias="fmvLastUpdated")
82
+ ] = UNSET
83
+ r"""Timestamp of the last fair market value update, as supplied by the market data provider"""
84
+
85
+ greeks: Optional[OptionSnapshotGreeks] = None
86
+ r"""Greeks when available (`OptionSnapshotGreeksDTO`)."""
87
+
88
+ implied_volatility: Annotated[
89
+ OptionalNullable[float], pydantic.Field(alias="impliedVolatility")
90
+ ] = UNSET
91
+ r"""Implied volatility of the contract"""
92
+
93
+ last_quote: Annotated[
94
+ Optional[OptionSnapshotLastQuote], pydantic.Field(alias="lastQuote")
95
+ ] = None
96
+ r"""Latest NBBO quote when included (`OptionSnapshotLastQuoteDTO`)."""
97
+
98
+ last_trade: Annotated[
99
+ Optional[OptionSnapshotLastTrade], pydantic.Field(alias="lastTrade")
100
+ ] = None
101
+ r"""Latest trade when included (`OptionSnapshotLastTradeDTO`)."""
102
+
103
+ open_interest: Annotated[
104
+ OptionalNullable[float], pydantic.Field(alias="openInterest")
105
+ ] = UNSET
106
+ r"""Open interest for the contract"""
107
+
108
+ underlying_asset: Annotated[
109
+ Optional[OptionSnapshotUnderlying], pydantic.Field(alias="underlyingAsset")
110
+ ] = None
111
+ r"""Underlying equity snapshot (`OptionSnapshotUnderlyingDTO`)."""
112
+
113
+ @model_serializer(mode="wrap")
114
+ def serialize_model(self, handler):
115
+ optional_fields = set(
116
+ [
117
+ "breakEvenPrice",
118
+ "day",
119
+ "details",
120
+ "fmv",
121
+ "fmvLastUpdated",
122
+ "greeks",
123
+ "impliedVolatility",
124
+ "lastQuote",
125
+ "lastTrade",
126
+ "openInterest",
127
+ "underlyingAsset",
128
+ ]
129
+ )
130
+ nullable_fields = set(
131
+ [
132
+ "breakEvenPrice",
133
+ "fmv",
134
+ "fmvLastUpdated",
135
+ "impliedVolatility",
136
+ "openInterest",
137
+ ]
138
+ )
139
+ serialized = handler(self)
140
+ m = {}
141
+
142
+ for n, f in type(self).model_fields.items():
143
+ k = f.alias or n
144
+ val = serialized.get(k, serialized.get(n))
145
+ is_nullable_and_explicitly_set = (
146
+ k in nullable_fields
147
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
148
+ )
149
+
150
+ if val != UNSET_SENTINEL:
151
+ if (
152
+ val is not None
153
+ or k not in optional_fields
154
+ or is_nullable_and_explicitly_set
155
+ ):
156
+ m[k] = val
157
+
158
+ return m
159
+
160
+
161
+ try:
162
+ OptionContractSnapshotRow.model_rebuild()
163
+ except NameError:
164
+ pass