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,176 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 5aa0aea91bf4
3
+
4
+ from __future__ import annotations
5
+ from .reportingfrequency import ReportingFrequency
6
+ from finance_dev import models
7
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
8
+ import pydantic
9
+ from pydantic import field_serializer, model_serializer
10
+ from typing import List, Optional
11
+ from typing_extensions import Annotated, NotRequired, TypedDict
12
+
13
+
14
+ class EbitEstimatesResponseDataTypedDict(TypedDict):
15
+ ebit_avg: NotRequired[int]
16
+ r"""Average analyst EBIT estimate for the period"""
17
+ ebit_high: NotRequired[int]
18
+ r"""Highest analyst EBIT estimate for the period"""
19
+ ebit_low: NotRequired[int]
20
+ r"""Lowest analyst EBIT estimate for the period"""
21
+ number_analysts: NotRequired[int]
22
+ r"""Number of analysts contributing to the estimate"""
23
+ period: NotRequired[str]
24
+ r"""End date of the reporting period the estimate applies to"""
25
+ quarter: NotRequired[int]
26
+ r"""Fiscal quarter of the period; 0 for annual estimates"""
27
+ year: NotRequired[int]
28
+ r"""Fiscal year of the period"""
29
+
30
+
31
+ class EbitEstimatesResponseData(BaseModel):
32
+ ebit_avg: Annotated[Optional[int], pydantic.Field(alias="ebitAvg")] = None
33
+ r"""Average analyst EBIT estimate for the period"""
34
+
35
+ ebit_high: Annotated[Optional[int], pydantic.Field(alias="ebitHigh")] = None
36
+ r"""Highest analyst EBIT estimate for the period"""
37
+
38
+ ebit_low: Annotated[Optional[int], pydantic.Field(alias="ebitLow")] = None
39
+ r"""Lowest analyst EBIT estimate for the period"""
40
+
41
+ number_analysts: Annotated[
42
+ Optional[int], pydantic.Field(alias="numberAnalysts")
43
+ ] = None
44
+ r"""Number of analysts contributing to the estimate"""
45
+
46
+ period: Optional[str] = None
47
+ r"""End date of the reporting period the estimate applies to"""
48
+
49
+ quarter: Optional[int] = None
50
+ r"""Fiscal quarter of the period; 0 for annual estimates"""
51
+
52
+ year: Optional[int] = None
53
+ r"""Fiscal year of the period"""
54
+
55
+ @model_serializer(mode="wrap")
56
+ def serialize_model(self, handler):
57
+ optional_fields = set(
58
+ [
59
+ "ebitAvg",
60
+ "ebitHigh",
61
+ "ebitLow",
62
+ "numberAnalysts",
63
+ "period",
64
+ "quarter",
65
+ "year",
66
+ ]
67
+ )
68
+ serialized = handler(self)
69
+ m = {}
70
+
71
+ for n, f in type(self).model_fields.items():
72
+ k = f.alias or n
73
+ val = serialized.get(k, serialized.get(n))
74
+
75
+ if val != UNSET_SENTINEL:
76
+ if val is not None or k not in optional_fields:
77
+ m[k] = val
78
+
79
+ return m
80
+
81
+
82
+ class EbitEstimatesTypedDict(TypedDict):
83
+ r"""EBIT estimates container for the symbol"""
84
+
85
+ data: NotRequired[List[EbitEstimatesResponseDataTypedDict]]
86
+ r"""List of EBIT estimates, one per reporting period"""
87
+ freq: NotRequired[ReportingFrequency]
88
+ r"""How often the underlying data is reported:
89
+ - `annual` — once per fiscal year (10-K, full-year statements).
90
+ - `quarterly` — once per fiscal quarter (10-Q, quarterly statements).
91
+ """
92
+ symbol: NotRequired[str]
93
+ r"""Stock ticker symbol"""
94
+
95
+
96
+ class EbitEstimates(BaseModel):
97
+ r"""EBIT estimates container for the symbol"""
98
+
99
+ data: Optional[List[EbitEstimatesResponseData]] = None
100
+ r"""List of EBIT estimates, one per reporting period"""
101
+
102
+ freq: Optional[ReportingFrequency] = None
103
+ r"""How often the underlying data is reported:
104
+ - `annual` — once per fiscal year (10-K, full-year statements).
105
+ - `quarterly` — once per fiscal quarter (10-Q, quarterly statements).
106
+ """
107
+
108
+ symbol: Optional[str] = None
109
+ r"""Stock ticker symbol"""
110
+
111
+ @field_serializer("freq")
112
+ def serialize_freq(self, value):
113
+ if isinstance(value, str):
114
+ try:
115
+ return models.ReportingFrequency(value)
116
+ except ValueError:
117
+ return value
118
+ return value
119
+
120
+ @model_serializer(mode="wrap")
121
+ def serialize_model(self, handler):
122
+ optional_fields = set(["data", "freq", "symbol"])
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
+ class EbitEstimatesResponseTypedDict(TypedDict):
138
+ r"""Analyst consensus EBIT estimates for a stock by reporting period, sourced from Finnhub."""
139
+
140
+ ebit_estimates: NotRequired[EbitEstimatesTypedDict]
141
+ r"""EBIT estimates container for the symbol"""
142
+
143
+
144
+ class EbitEstimatesResponse(BaseModel):
145
+ r"""Analyst consensus EBIT estimates for a stock by reporting period, sourced from Finnhub."""
146
+
147
+ ebit_estimates: Annotated[
148
+ Optional[EbitEstimates], pydantic.Field(alias="ebitEstimates")
149
+ ] = None
150
+ r"""EBIT estimates container for the symbol"""
151
+
152
+ @model_serializer(mode="wrap")
153
+ def serialize_model(self, handler):
154
+ optional_fields = set(["ebitEstimates"])
155
+ serialized = handler(self)
156
+ m = {}
157
+
158
+ for n, f in type(self).model_fields.items():
159
+ k = f.alias or n
160
+ val = serialized.get(k, serialized.get(n))
161
+
162
+ if val != UNSET_SENTINEL:
163
+ if val is not None or k not in optional_fields:
164
+ m[k] = val
165
+
166
+ return m
167
+
168
+
169
+ try:
170
+ EbitEstimatesResponseData.model_rebuild()
171
+ except NameError:
172
+ pass
173
+ try:
174
+ EbitEstimatesResponse.model_rebuild()
175
+ except NameError:
176
+ pass
@@ -0,0 +1,160 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: cc90ede7b35c
3
+
4
+ from __future__ import annotations
5
+ from datetime import date, datetime
6
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
7
+ import pydantic
8
+ from pydantic import model_serializer
9
+ from typing import Optional
10
+ from typing_extensions import Annotated, NotRequired, TypedDict
11
+
12
+
13
+ class EconomicsCalendarEventTypedDict(TypedDict):
14
+ r"""Economic calendar event with its schedule, reported and forecast values."""
15
+
16
+ actual: NotRequired[str]
17
+ r"""Actual reported value (present after release)"""
18
+ calendar_id: NotRequired[str]
19
+ r"""Unique identifier for the calendar event"""
20
+ category: NotRequired[str]
21
+ r"""Category label for the economic event/indicator (e.g. `GDP`, `Inflation`, `Employment`). Format depends on the upstream data source."""
22
+ country: NotRequired[str]
23
+ r"""Country name"""
24
+ date_: NotRequired[date]
25
+ r"""Event date (YYYY-MM-DD)"""
26
+ event: NotRequired[str]
27
+ r"""Event name"""
28
+ forecast: NotRequired[str]
29
+ r"""Market forecast value"""
30
+ importance: NotRequired[int]
31
+ r"""Event importance level"""
32
+ last_update: NotRequired[str]
33
+ r"""Last update timestamp supplied by the provider; timezone information may be absent."""
34
+ previous: NotRequired[str]
35
+ r"""Previous period value"""
36
+ reference: NotRequired[str]
37
+ r"""Reference period (e.g. Feb/21)"""
38
+ reference_date: NotRequired[datetime]
39
+ r"""Reference period date (ISO 8601)"""
40
+ source: NotRequired[str]
41
+ r"""Organization or agency that published the economic event."""
42
+ source_url: NotRequired[str]
43
+ r"""URL to the data source"""
44
+ symbol: NotRequired[str]
45
+ r"""Economic indicator symbol"""
46
+ te_forecast: NotRequired[str]
47
+ r"""Trading Economics forecast value"""
48
+ ticker: NotRequired[str]
49
+ r"""Economic indicator ticker symbol"""
50
+ time: NotRequired[str]
51
+ r"""Event time (HH:MM:SS)"""
52
+ unit: NotRequired[str]
53
+ r"""Unit of measure for the indicator"""
54
+
55
+
56
+ class EconomicsCalendarEvent(BaseModel):
57
+ r"""Economic calendar event with its schedule, reported and forecast values."""
58
+
59
+ actual: Optional[str] = None
60
+ r"""Actual reported value (present after release)"""
61
+
62
+ calendar_id: Annotated[Optional[str], pydantic.Field(alias="calendarID")] = None
63
+ r"""Unique identifier for the calendar event"""
64
+
65
+ category: Optional[str] = None
66
+ r"""Category label for the economic event/indicator (e.g. `GDP`, `Inflation`, `Employment`). Format depends on the upstream data source."""
67
+
68
+ country: Optional[str] = None
69
+ r"""Country name"""
70
+
71
+ date_: Annotated[Optional[date], pydantic.Field(alias="date")] = None
72
+ r"""Event date (YYYY-MM-DD)"""
73
+
74
+ event: Optional[str] = None
75
+ r"""Event name"""
76
+
77
+ forecast: Optional[str] = None
78
+ r"""Market forecast value"""
79
+
80
+ importance: Optional[int] = None
81
+ r"""Event importance level"""
82
+
83
+ last_update: Annotated[Optional[str], pydantic.Field(alias="lastUpdate")] = None
84
+ r"""Last update timestamp supplied by the provider; timezone information may be absent."""
85
+
86
+ previous: Optional[str] = None
87
+ r"""Previous period value"""
88
+
89
+ reference: Optional[str] = None
90
+ r"""Reference period (e.g. Feb/21)"""
91
+
92
+ reference_date: Annotated[
93
+ Optional[datetime], pydantic.Field(alias="referenceDate")
94
+ ] = None
95
+ r"""Reference period date (ISO 8601)"""
96
+
97
+ source: Optional[str] = None
98
+ r"""Organization or agency that published the economic event."""
99
+
100
+ source_url: Annotated[Optional[str], pydantic.Field(alias="sourceUrl")] = None
101
+ r"""URL to the data source"""
102
+
103
+ symbol: Optional[str] = None
104
+ r"""Economic indicator symbol"""
105
+
106
+ te_forecast: Annotated[Optional[str], pydantic.Field(alias="teForecast")] = None
107
+ r"""Trading Economics forecast value"""
108
+
109
+ ticker: Optional[str] = None
110
+ r"""Economic indicator ticker symbol"""
111
+
112
+ time: Optional[str] = None
113
+ r"""Event time (HH:MM:SS)"""
114
+
115
+ unit: Optional[str] = None
116
+ r"""Unit of measure for the indicator"""
117
+
118
+ @model_serializer(mode="wrap")
119
+ def serialize_model(self, handler):
120
+ optional_fields = set(
121
+ [
122
+ "actual",
123
+ "calendarID",
124
+ "category",
125
+ "country",
126
+ "date",
127
+ "event",
128
+ "forecast",
129
+ "importance",
130
+ "lastUpdate",
131
+ "previous",
132
+ "reference",
133
+ "referenceDate",
134
+ "source",
135
+ "sourceUrl",
136
+ "symbol",
137
+ "teForecast",
138
+ "ticker",
139
+ "time",
140
+ "unit",
141
+ ]
142
+ )
143
+ serialized = handler(self)
144
+ m = {}
145
+
146
+ for n, f in type(self).model_fields.items():
147
+ k = f.alias or n
148
+ val = serialized.get(k, serialized.get(n))
149
+
150
+ if val != UNSET_SENTINEL:
151
+ if val is not None or k not in optional_fields:
152
+ m[k] = val
153
+
154
+ return m
155
+
156
+
157
+ try:
158
+ EconomicsCalendarEvent.model_rebuild()
159
+ except NameError:
160
+ pass
@@ -0,0 +1,87 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 9886cc670853
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 EconomicsIndicatorTypedDict(TypedDict):
13
+ r"""Single historical data point for an economic indicator."""
14
+
15
+ category: NotRequired[str]
16
+ r"""Category label for the economic event/indicator (e.g. `GDP`, `Inflation`, `Employment`). Format depends on the upstream data source."""
17
+ country: NotRequired[str]
18
+ r"""Country code or name"""
19
+ date_time: NotRequired[str]
20
+ r"""Date and time of the data point"""
21
+ frequency: NotRequired[str]
22
+ r"""Data frequency (e.g., monthly, quarterly, yearly)"""
23
+ historical_data_symbol: NotRequired[str]
24
+ r"""Symbol identifier for the historical data"""
25
+ last_update: NotRequired[str]
26
+ r"""Last update timestamp"""
27
+ value: NotRequired[float]
28
+ r"""Indicator value"""
29
+
30
+
31
+ class EconomicsIndicator(BaseModel):
32
+ r"""Single historical data point for an economic indicator."""
33
+
34
+ category: Optional[str] = None
35
+ r"""Category label for the economic event/indicator (e.g. `GDP`, `Inflation`, `Employment`). Format depends on the upstream data source."""
36
+
37
+ country: Optional[str] = None
38
+ r"""Country code or name"""
39
+
40
+ date_time: Annotated[Optional[str], pydantic.Field(alias="dateTime")] = None
41
+ r"""Date and time of the data point"""
42
+
43
+ frequency: Optional[str] = None
44
+ r"""Data frequency (e.g., monthly, quarterly, yearly)"""
45
+
46
+ historical_data_symbol: Annotated[
47
+ Optional[str], pydantic.Field(alias="historicalDataSymbol")
48
+ ] = None
49
+ r"""Symbol identifier for the historical data"""
50
+
51
+ last_update: Annotated[Optional[str], pydantic.Field(alias="lastUpdate")] = None
52
+ r"""Last update timestamp"""
53
+
54
+ value: Optional[float] = None
55
+ r"""Indicator value"""
56
+
57
+ @model_serializer(mode="wrap")
58
+ def serialize_model(self, handler):
59
+ optional_fields = set(
60
+ [
61
+ "category",
62
+ "country",
63
+ "dateTime",
64
+ "frequency",
65
+ "historicalDataSymbol",
66
+ "lastUpdate",
67
+ "value",
68
+ ]
69
+ )
70
+ serialized = handler(self)
71
+ m = {}
72
+
73
+ for n, f in type(self).model_fields.items():
74
+ k = f.alias or n
75
+ val = serialized.get(k, serialized.get(n))
76
+
77
+ if val != UNSET_SENTINEL:
78
+ if val is not None or k not in optional_fields:
79
+ m[k] = val
80
+
81
+ return m
82
+
83
+
84
+ try:
85
+ EconomicsIndicator.model_rebuild()
86
+ except NameError:
87
+ pass
@@ -0,0 +1,176 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 9445723d127f
3
+
4
+ from __future__ import annotations
5
+ from .reportingfrequency import ReportingFrequency
6
+ from finance_dev import models
7
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
8
+ import pydantic
9
+ from pydantic import field_serializer, model_serializer
10
+ from typing import List, Optional
11
+ from typing_extensions import Annotated, NotRequired, TypedDict
12
+
13
+
14
+ class EpsEstimatesResponseDataTypedDict(TypedDict):
15
+ eps_avg: NotRequired[float]
16
+ r"""Average analyst EPS estimate for the period"""
17
+ eps_high: NotRequired[float]
18
+ r"""Highest analyst EPS estimate for the period"""
19
+ eps_low: NotRequired[float]
20
+ r"""Lowest analyst EPS estimate for the period"""
21
+ number_analysts: NotRequired[int]
22
+ r"""Number of analysts contributing to the estimate"""
23
+ period: NotRequired[str]
24
+ r"""End date of the reporting period the estimate applies to"""
25
+ quarter: NotRequired[int]
26
+ r"""Fiscal quarter of the period; 0 for annual estimates"""
27
+ year: NotRequired[int]
28
+ r"""Fiscal year of the period"""
29
+
30
+
31
+ class EpsEstimatesResponseData(BaseModel):
32
+ eps_avg: Annotated[Optional[float], pydantic.Field(alias="epsAvg")] = None
33
+ r"""Average analyst EPS estimate for the period"""
34
+
35
+ eps_high: Annotated[Optional[float], pydantic.Field(alias="epsHigh")] = None
36
+ r"""Highest analyst EPS estimate for the period"""
37
+
38
+ eps_low: Annotated[Optional[float], pydantic.Field(alias="epsLow")] = None
39
+ r"""Lowest analyst EPS estimate for the period"""
40
+
41
+ number_analysts: Annotated[
42
+ Optional[int], pydantic.Field(alias="numberAnalysts")
43
+ ] = None
44
+ r"""Number of analysts contributing to the estimate"""
45
+
46
+ period: Optional[str] = None
47
+ r"""End date of the reporting period the estimate applies to"""
48
+
49
+ quarter: Optional[int] = None
50
+ r"""Fiscal quarter of the period; 0 for annual estimates"""
51
+
52
+ year: Optional[int] = None
53
+ r"""Fiscal year of the period"""
54
+
55
+ @model_serializer(mode="wrap")
56
+ def serialize_model(self, handler):
57
+ optional_fields = set(
58
+ [
59
+ "epsAvg",
60
+ "epsHigh",
61
+ "epsLow",
62
+ "numberAnalysts",
63
+ "period",
64
+ "quarter",
65
+ "year",
66
+ ]
67
+ )
68
+ serialized = handler(self)
69
+ m = {}
70
+
71
+ for n, f in type(self).model_fields.items():
72
+ k = f.alias or n
73
+ val = serialized.get(k, serialized.get(n))
74
+
75
+ if val != UNSET_SENTINEL:
76
+ if val is not None or k not in optional_fields:
77
+ m[k] = val
78
+
79
+ return m
80
+
81
+
82
+ class EpsEstimatesTypedDict(TypedDict):
83
+ r"""EPS estimates container for the symbol"""
84
+
85
+ data: NotRequired[List[EpsEstimatesResponseDataTypedDict]]
86
+ r"""List of EPS estimates, one per reporting period"""
87
+ freq: NotRequired[ReportingFrequency]
88
+ r"""How often the underlying data is reported:
89
+ - `annual` — once per fiscal year (10-K, full-year statements).
90
+ - `quarterly` — once per fiscal quarter (10-Q, quarterly statements).
91
+ """
92
+ symbol: NotRequired[str]
93
+ r"""Stock ticker symbol"""
94
+
95
+
96
+ class EpsEstimates(BaseModel):
97
+ r"""EPS estimates container for the symbol"""
98
+
99
+ data: Optional[List[EpsEstimatesResponseData]] = None
100
+ r"""List of EPS estimates, one per reporting period"""
101
+
102
+ freq: Optional[ReportingFrequency] = None
103
+ r"""How often the underlying data is reported:
104
+ - `annual` — once per fiscal year (10-K, full-year statements).
105
+ - `quarterly` — once per fiscal quarter (10-Q, quarterly statements).
106
+ """
107
+
108
+ symbol: Optional[str] = None
109
+ r"""Stock ticker symbol"""
110
+
111
+ @field_serializer("freq")
112
+ def serialize_freq(self, value):
113
+ if isinstance(value, str):
114
+ try:
115
+ return models.ReportingFrequency(value)
116
+ except ValueError:
117
+ return value
118
+ return value
119
+
120
+ @model_serializer(mode="wrap")
121
+ def serialize_model(self, handler):
122
+ optional_fields = set(["data", "freq", "symbol"])
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
+ class EpsEstimatesResponseTypedDict(TypedDict):
138
+ r"""Analyst consensus EPS estimates for a stock by reporting period, sourced from Finnhub."""
139
+
140
+ eps_estimates: NotRequired[EpsEstimatesTypedDict]
141
+ r"""EPS estimates container for the symbol"""
142
+
143
+
144
+ class EpsEstimatesResponse(BaseModel):
145
+ r"""Analyst consensus EPS estimates for a stock by reporting period, sourced from Finnhub."""
146
+
147
+ eps_estimates: Annotated[
148
+ Optional[EpsEstimates], pydantic.Field(alias="epsEstimates")
149
+ ] = None
150
+ r"""EPS estimates container for the symbol"""
151
+
152
+ @model_serializer(mode="wrap")
153
+ def serialize_model(self, handler):
154
+ optional_fields = set(["epsEstimates"])
155
+ serialized = handler(self)
156
+ m = {}
157
+
158
+ for n, f in type(self).model_fields.items():
159
+ k = f.alias or n
160
+ val = serialized.get(k, serialized.get(n))
161
+
162
+ if val != UNSET_SENTINEL:
163
+ if val is not None or k not in optional_fields:
164
+ m[k] = val
165
+
166
+ return m
167
+
168
+
169
+ try:
170
+ EpsEstimatesResponseData.model_rebuild()
171
+ except NameError:
172
+ pass
173
+ try:
174
+ EpsEstimatesResponse.model_rebuild()
175
+ except NameError:
176
+ pass