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,127 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 4ac05f0eb27b
3
+
4
+ from __future__ import annotations
5
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
6
+ import pydantic
7
+ from pydantic import model_serializer
8
+ from typing import List, Optional
9
+ from typing_extensions import Annotated, NotRequired, TypedDict
10
+
11
+
12
+ class PreviewOrderResponseTypedDict(TypedDict):
13
+ r"""Response schema for order preview (PreviewOrdResponse)"""
14
+
15
+ buying_power_impact: NotRequired[str]
16
+ r"""Estimated reduction in available buying power if the order is submitted. Present in both equity and option previews. Use this before Place Order to confirm the account can support the trade."""
17
+ commission: NotRequired[str]
18
+ r"""Estimated commission for the order. Present in both equity and option previews. Show this as part of the total trading cost."""
19
+ errors: NotRequired[List[str]]
20
+ r"""Blocking validation or risk errors returned by preview. Can appear for either equity or option previews. Do not call Place Order until these are resolved."""
21
+ estimated_cost: NotRequired[str]
22
+ r"""Estimated cash cost of the order before it is placed. Present in both equity and option previews. Use this to show the user the expected trade cost during review."""
23
+ estimated_margin: NotRequired[str]
24
+ r"""Estimated margin requirement for the order. Present in both equity and option previews. Use this to explain how much margin capacity the order may consume."""
25
+ fees: NotRequired[str]
26
+ r"""Estimated regulatory and exchange fees. Present in both equity and option previews. Add this to commissions and order cost when showing total estimated cost."""
27
+ num_day_trades: NotRequired[int]
28
+ r"""Estimated number of day trades this order would count toward. Present in both equity and option previews. Use this to warn pattern-day-trader-sensitive users."""
29
+ option_fees: NotRequired[str]
30
+ r"""Estimated option-specific fees. Present only in the option preview. For equity previews this is typically omitted or zero."""
31
+ option_premium: NotRequired[str]
32
+ r"""Estimated premium paid or received for an option order. Present only in the option preview. For equity previews this is typically omitted or zero."""
33
+ option_requirement: NotRequired[str]
34
+ r"""Estimated option requirement or margin requirement for the option strategy. Present only in the option preview. For equity previews this is typically omitted or zero."""
35
+ warn_rule_id: NotRequired[str]
36
+ r"""Identifier for a warning rule triggered by the preview. Present in both equity and option previews when applicable. Use with `warnings` when present."""
37
+ warnings: NotRequired[List[str]]
38
+ r"""Non-blocking warnings returned by preview. Can appear for either equity or option previews. Show these to the user before they submit the live order."""
39
+
40
+
41
+ class PreviewOrderResponse(BaseModel):
42
+ r"""Response schema for order preview (PreviewOrdResponse)"""
43
+
44
+ buying_power_impact: Annotated[
45
+ Optional[str], pydantic.Field(alias="buyingPowerImpact")
46
+ ] = None
47
+ r"""Estimated reduction in available buying power if the order is submitted. Present in both equity and option previews. Use this before Place Order to confirm the account can support the trade."""
48
+
49
+ commission: Optional[str] = None
50
+ r"""Estimated commission for the order. Present in both equity and option previews. Show this as part of the total trading cost."""
51
+
52
+ errors: Optional[List[str]] = None
53
+ r"""Blocking validation or risk errors returned by preview. Can appear for either equity or option previews. Do not call Place Order until these are resolved."""
54
+
55
+ estimated_cost: Annotated[Optional[str], pydantic.Field(alias="estimatedCost")] = (
56
+ None
57
+ )
58
+ r"""Estimated cash cost of the order before it is placed. Present in both equity and option previews. Use this to show the user the expected trade cost during review."""
59
+
60
+ estimated_margin: Annotated[
61
+ Optional[str], pydantic.Field(alias="estimatedMargin")
62
+ ] = None
63
+ r"""Estimated margin requirement for the order. Present in both equity and option previews. Use this to explain how much margin capacity the order may consume."""
64
+
65
+ fees: Optional[str] = None
66
+ r"""Estimated regulatory and exchange fees. Present in both equity and option previews. Add this to commissions and order cost when showing total estimated cost."""
67
+
68
+ num_day_trades: Annotated[Optional[int], pydantic.Field(alias="numDayTrades")] = (
69
+ None
70
+ )
71
+ r"""Estimated number of day trades this order would count toward. Present in both equity and option previews. Use this to warn pattern-day-trader-sensitive users."""
72
+
73
+ option_fees: Annotated[Optional[str], pydantic.Field(alias="optionFees")] = None
74
+ r"""Estimated option-specific fees. Present only in the option preview. For equity previews this is typically omitted or zero."""
75
+
76
+ option_premium: Annotated[Optional[str], pydantic.Field(alias="optionPremium")] = (
77
+ None
78
+ )
79
+ r"""Estimated premium paid or received for an option order. Present only in the option preview. For equity previews this is typically omitted or zero."""
80
+
81
+ option_requirement: Annotated[
82
+ Optional[str], pydantic.Field(alias="optionRequirement")
83
+ ] = None
84
+ r"""Estimated option requirement or margin requirement for the option strategy. Present only in the option preview. For equity previews this is typically omitted or zero."""
85
+
86
+ warn_rule_id: Annotated[Optional[str], pydantic.Field(alias="warnRuleId")] = None
87
+ r"""Identifier for a warning rule triggered by the preview. Present in both equity and option previews when applicable. Use with `warnings` when present."""
88
+
89
+ warnings: Optional[List[str]] = None
90
+ r"""Non-blocking warnings returned by preview. Can appear for either equity or option previews. Show these to the user before they submit the live order."""
91
+
92
+ @model_serializer(mode="wrap")
93
+ def serialize_model(self, handler):
94
+ optional_fields = set(
95
+ [
96
+ "buyingPowerImpact",
97
+ "commission",
98
+ "errors",
99
+ "estimatedCost",
100
+ "estimatedMargin",
101
+ "fees",
102
+ "numDayTrades",
103
+ "optionFees",
104
+ "optionPremium",
105
+ "optionRequirement",
106
+ "warnRuleId",
107
+ "warnings",
108
+ ]
109
+ )
110
+ serialized = handler(self)
111
+ m = {}
112
+
113
+ for n, f in type(self).model_fields.items():
114
+ k = f.alias or n
115
+ val = serialized.get(k, serialized.get(n))
116
+
117
+ if val != UNSET_SENTINEL:
118
+ if val is not None or k not in optional_fields:
119
+ m[k] = val
120
+
121
+ return m
122
+
123
+
124
+ try:
125
+ PreviewOrderResponse.model_rebuild()
126
+ except NameError:
127
+ pass
@@ -0,0 +1,89 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 90bf72753d81
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 PriceTargetResponseTypedDict(TypedDict):
13
+ r"""Analyst price target consensus for a stock (high, low, mean, median and analyst count), sourced from Finnhub."""
14
+
15
+ last_updated: NotRequired[str]
16
+ r"""Time the consensus was last updated, as reported by Finnhub"""
17
+ number_analysts: NotRequired[int]
18
+ r"""Number of analysts contributing to the consensus"""
19
+ symbol: NotRequired[str]
20
+ r"""Stock ticker symbol"""
21
+ target_high: NotRequired[float]
22
+ r"""Highest analyst price target"""
23
+ target_low: NotRequired[float]
24
+ r"""Lowest analyst price target"""
25
+ target_mean: NotRequired[float]
26
+ r"""Mean analyst price target"""
27
+ target_median: NotRequired[float]
28
+ r"""Median analyst price target"""
29
+
30
+
31
+ class PriceTargetResponse(BaseModel):
32
+ r"""Analyst price target consensus for a stock (high, low, mean, median and analyst count), sourced from Finnhub."""
33
+
34
+ last_updated: Annotated[Optional[str], pydantic.Field(alias="lastUpdated")] = None
35
+ r"""Time the consensus was last updated, as reported by Finnhub"""
36
+
37
+ number_analysts: Annotated[
38
+ Optional[int], pydantic.Field(alias="numberAnalysts")
39
+ ] = None
40
+ r"""Number of analysts contributing to the consensus"""
41
+
42
+ symbol: Optional[str] = None
43
+ r"""Stock ticker symbol"""
44
+
45
+ target_high: Annotated[Optional[float], pydantic.Field(alias="targetHigh")] = None
46
+ r"""Highest analyst price target"""
47
+
48
+ target_low: Annotated[Optional[float], pydantic.Field(alias="targetLow")] = None
49
+ r"""Lowest analyst price target"""
50
+
51
+ target_mean: Annotated[Optional[float], pydantic.Field(alias="targetMean")] = None
52
+ r"""Mean analyst price target"""
53
+
54
+ target_median: Annotated[Optional[float], pydantic.Field(alias="targetMedian")] = (
55
+ None
56
+ )
57
+ r"""Median analyst price target"""
58
+
59
+ @model_serializer(mode="wrap")
60
+ def serialize_model(self, handler):
61
+ optional_fields = set(
62
+ [
63
+ "lastUpdated",
64
+ "numberAnalysts",
65
+ "symbol",
66
+ "targetHigh",
67
+ "targetLow",
68
+ "targetMean",
69
+ "targetMedian",
70
+ ]
71
+ )
72
+ serialized = handler(self)
73
+ m = {}
74
+
75
+ for n, f in type(self).model_fields.items():
76
+ k = f.alias or n
77
+ val = serialized.get(k, serialized.get(n))
78
+
79
+ if val != UNSET_SENTINEL:
80
+ if val is not None or k not in optional_fields:
81
+ m[k] = val
82
+
83
+ return m
84
+
85
+
86
+ try:
87
+ PriceTargetResponse.model_rebuild()
88
+ except NameError:
89
+ pass
@@ -0,0 +1,49 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: c2ee2e3f7432
3
+
4
+ from __future__ import annotations
5
+ from .quotevalues import QuoteValues, QuoteValuesTypedDict
6
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
7
+ from pydantic import model_serializer
8
+ from typing import Optional
9
+ from typing_extensions import NotRequired, TypedDict
10
+
11
+
12
+ class QuoteDataTypedDict(TypedDict):
13
+ r"""One quote record in a quote response. Use `s` to match each record back to the requested symbol."""
14
+
15
+ n: NotRequired[str]
16
+ r"""Display name returned for the quoted instrument or venue."""
17
+ s: NotRequired[str]
18
+ r"""Symbol this quote record belongs to. Match this against the symbol requested in the `symbols` query."""
19
+ v: NotRequired[QuoteValuesTypedDict]
20
+ r"""Market quote values for a symbol. Use bid/ask for trading decisions and last price for display context."""
21
+
22
+
23
+ class QuoteData(BaseModel):
24
+ r"""One quote record in a quote response. Use `s` to match each record back to the requested symbol."""
25
+
26
+ n: Optional[str] = None
27
+ r"""Display name returned for the quoted instrument or venue."""
28
+
29
+ s: Optional[str] = None
30
+ r"""Symbol this quote record belongs to. Match this against the symbol requested in the `symbols` query."""
31
+
32
+ v: Optional[QuoteValues] = None
33
+ r"""Market quote values for a symbol. Use bid/ask for trading decisions and last price for display context."""
34
+
35
+ @model_serializer(mode="wrap")
36
+ def serialize_model(self, handler):
37
+ optional_fields = set(["n", "s", "v"])
38
+ serialized = handler(self)
39
+ m = {}
40
+
41
+ for n, f in type(self).model_fields.items():
42
+ k = f.alias or n
43
+ val = serialized.get(k, serialized.get(n))
44
+
45
+ if val != UNSET_SENTINEL:
46
+ if val is not None or k not in optional_fields:
47
+ m[k] = val
48
+
49
+ return m
@@ -0,0 +1,62 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 7e2ee553b77e
3
+
4
+ from __future__ import annotations
5
+ from .quotedata import QuoteData, QuoteDataTypedDict
6
+ from enum import Enum
7
+ from finance_dev import models, utils
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 QuotesResponseS(str, Enum, metaclass=utils.OpenEnumMeta):
15
+ r"""Overall quote response status. `ok` means quote data was returned; `error` means the request could not be fulfilled."""
16
+
17
+ OK = "ok"
18
+ ERROR = "error"
19
+
20
+
21
+ class QuotesResponseTypedDict(TypedDict):
22
+ r"""Response body for quote requests. Use it to render current market prices for one or more symbols."""
23
+
24
+ d: NotRequired[List[QuoteDataTypedDict]]
25
+ r"""Quote records for the requested symbols. Iterate this array and use each record's `s` value to match the symbol."""
26
+ s: NotRequired[QuotesResponseS]
27
+ r"""Overall quote response status. `ok` means quote data was returned; `error` means the request could not be fulfilled."""
28
+
29
+
30
+ class QuotesResponse(BaseModel):
31
+ r"""Response body for quote requests. Use it to render current market prices for one or more symbols."""
32
+
33
+ d: Optional[List[QuoteData]] = None
34
+ r"""Quote records for the requested symbols. Iterate this array and use each record's `s` value to match the symbol."""
35
+
36
+ s: Optional[QuotesResponseS] = None
37
+ r"""Overall quote response status. `ok` means quote data was returned; `error` means the request could not be fulfilled."""
38
+
39
+ @field_serializer("s")
40
+ def serialize_s(self, value):
41
+ if isinstance(value, str):
42
+ try:
43
+ return models.QuotesResponseS(value)
44
+ except ValueError:
45
+ return value
46
+ return value
47
+
48
+ @model_serializer(mode="wrap")
49
+ def serialize_model(self, handler):
50
+ optional_fields = set(["d", "s"])
51
+ serialized = handler(self)
52
+ m = {}
53
+
54
+ for n, f in type(self).model_fields.items():
55
+ k = f.alias or n
56
+ val = serialized.get(k, serialized.get(n))
57
+
58
+ if val != UNSET_SENTINEL:
59
+ if val is not None or k not in optional_fields:
60
+ m[k] = val
61
+
62
+ return m
@@ -0,0 +1,114 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 2f709e6c1f49
3
+
4
+ from __future__ import annotations
5
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
6
+ from pydantic import model_serializer
7
+ from typing import Optional
8
+ from typing_extensions import NotRequired, TypedDict
9
+
10
+
11
+ class QuoteValuesTypedDict(TypedDict):
12
+ r"""Market quote values for a symbol. Use bid/ask for trading decisions and last price for display context."""
13
+
14
+ ask: NotRequired[float]
15
+ r"""Lowest price sellers are currently willing to accept. Buyers usually compare their limit price to the ask."""
16
+ bid: NotRequired[float]
17
+ r"""Highest price buyers are currently offering. Sellers usually compare their limit price to the bid."""
18
+ ch: NotRequired[float]
19
+ r"""Dollar price change from the previous close. Use this for quote tiles and daily move displays."""
20
+ chp: NotRequired[float]
21
+ r"""Percent change from the previous close. Use this to show the daily move as a percentage."""
22
+ description: NotRequired[str]
23
+ r"""Full company or instrument description. Show it when users need to confirm the symbol they are viewing."""
24
+ exchange: NotRequired[str]
25
+ r"""Exchange code where the data originates. Format depends on the upstream data source and may use MIC, ISO 10383, or a vendor-specific code."""
26
+ high_price: NotRequired[float]
27
+ r"""Highest price for the day"""
28
+ low_price: NotRequired[float]
29
+ r"""Lowest traded price during the current session. Use it for daily range displays."""
30
+ lp: NotRequired[float]
31
+ r"""Last traded price. Use this as the current reference price, but use bid and ask when estimating immediate buy or sell cost."""
32
+ open_price: NotRequired[float]
33
+ r"""Opening price for the day"""
34
+ prev_close_price: NotRequired[float]
35
+ r"""Previous day's closing price"""
36
+ short_name: NotRequired[str]
37
+ r"""Short name of the company"""
38
+ volume: NotRequired[float]
39
+ r"""Number of shares or contracts traded during the current session, when available."""
40
+
41
+
42
+ class QuoteValues(BaseModel):
43
+ r"""Market quote values for a symbol. Use bid/ask for trading decisions and last price for display context."""
44
+
45
+ ask: Optional[float] = None
46
+ r"""Lowest price sellers are currently willing to accept. Buyers usually compare their limit price to the ask."""
47
+
48
+ bid: Optional[float] = None
49
+ r"""Highest price buyers are currently offering. Sellers usually compare their limit price to the bid."""
50
+
51
+ ch: Optional[float] = None
52
+ r"""Dollar price change from the previous close. Use this for quote tiles and daily move displays."""
53
+
54
+ chp: Optional[float] = None
55
+ r"""Percent change from the previous close. Use this to show the daily move as a percentage."""
56
+
57
+ description: Optional[str] = None
58
+ r"""Full company or instrument description. Show it when users need to confirm the symbol they are viewing."""
59
+
60
+ exchange: Optional[str] = None
61
+ r"""Exchange code where the data originates. Format depends on the upstream data source and may use MIC, ISO 10383, or a vendor-specific code."""
62
+
63
+ high_price: Optional[float] = None
64
+ r"""Highest price for the day"""
65
+
66
+ low_price: Optional[float] = None
67
+ r"""Lowest traded price during the current session. Use it for daily range displays."""
68
+
69
+ lp: Optional[float] = None
70
+ r"""Last traded price. Use this as the current reference price, but use bid and ask when estimating immediate buy or sell cost."""
71
+
72
+ open_price: Optional[float] = None
73
+ r"""Opening price for the day"""
74
+
75
+ prev_close_price: Optional[float] = None
76
+ r"""Previous day's closing price"""
77
+
78
+ short_name: Optional[str] = None
79
+ r"""Short name of the company"""
80
+
81
+ volume: Optional[float] = None
82
+ r"""Number of shares or contracts traded during the current session, when available."""
83
+
84
+ @model_serializer(mode="wrap")
85
+ def serialize_model(self, handler):
86
+ optional_fields = set(
87
+ [
88
+ "ask",
89
+ "bid",
90
+ "ch",
91
+ "chp",
92
+ "description",
93
+ "exchange",
94
+ "high_price",
95
+ "low_price",
96
+ "lp",
97
+ "open_price",
98
+ "prev_close_price",
99
+ "short_name",
100
+ "volume",
101
+ ]
102
+ )
103
+ serialized = handler(self)
104
+ m = {}
105
+
106
+ for n, f in type(self).model_fields.items():
107
+ k = f.alias or n
108
+ val = serialized.get(k, serialized.get(n))
109
+
110
+ if val != UNSET_SENTINEL:
111
+ if val is not None or k not in optional_fields:
112
+ m[k] = val
113
+
114
+ return m
@@ -0,0 +1,193 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 62972285ea89
3
+
4
+ from __future__ import annotations
5
+ from .ratingsaccuracy import RatingsAccuracy, RatingsAccuracyTypedDict
6
+ from finance_dev.types import (
7
+ BaseModel,
8
+ Nullable,
9
+ OptionalNullable,
10
+ UNSET,
11
+ UNSET_SENTINEL,
12
+ )
13
+ import pydantic
14
+ from pydantic import model_serializer
15
+ from typing import Optional
16
+ from typing_extensions import Annotated, NotRequired, TypedDict
17
+
18
+
19
+ class RatingTypedDict(TypedDict):
20
+ r"""Single analyst rating. Fields use snake_case; some fields may be absent when empty."""
21
+
22
+ action_company: NotRequired[str]
23
+ r"""Rating action taken by the analyst firm, such as upgrades, downgrades, initiates or reiterates."""
24
+ action_pt: NotRequired[str]
25
+ r"""Action taken on the price target, such as raised, lowered, maintained or announced."""
26
+ analyst: NotRequired[str]
27
+ r"""Name of the analyst firm that issued the rating."""
28
+ analyst_id: NotRequired[str]
29
+ r"""Provider identifier of the analyst firm."""
30
+ analyst_name: NotRequired[str]
31
+ r"""Name of the individual analyst who issued the rating."""
32
+ currency: NotRequired[str]
33
+ r"""Currency code the price target values are denominated in."""
34
+ date_: NotRequired[str]
35
+ r"""Date the rating was issued, as supplied by Benzinga."""
36
+ exchange: NotRequired[str]
37
+ r"""Exchange code where the data originates. Format depends on the upstream data source and may use MIC, ISO 10383, or a vendor-specific code."""
38
+ id: NotRequired[str]
39
+ r"""Provider identifier of the analyst rating record."""
40
+ importance: NotRequired[int]
41
+ r"""Provider-assigned importance level of the rating event."""
42
+ name: NotRequired[str]
43
+ r"""Name of the rated company."""
44
+ notes: NotRequired[str]
45
+ r"""Free-text notes accompanying the rating."""
46
+ pt_current: NotRequired[Nullable[float]]
47
+ r"""Price target after this action."""
48
+ pt_current_adjusted: NotRequired[Nullable[float]]
49
+ r"""Price target after this action, adjusted for corporate actions such as splits."""
50
+ pt_prior: NotRequired[Nullable[float]]
51
+ r"""Price target before this action."""
52
+ pt_prior_adjusted: NotRequired[Nullable[float]]
53
+ r"""Price target before this action, adjusted for corporate actions such as splits."""
54
+ rating_current: NotRequired[str]
55
+ r"""Analyst rating after this action."""
56
+ rating_prior: NotRequired[str]
57
+ r"""Analyst rating before this action."""
58
+ ratings_accuracy: NotRequired[RatingsAccuracyTypedDict]
59
+ r"""Analyst accuracy metrics. Fields use snake_case; some fields may be absent when empty."""
60
+ ticker: NotRequired[str]
61
+ r"""Ticker symbol of the rated security."""
62
+ time: NotRequired[str]
63
+ r"""Time of day the rating was issued, as supplied by Benzinga."""
64
+ updated: NotRequired[str]
65
+ r"""Last updated timestamp of the rating record from the data provider."""
66
+
67
+
68
+ class Rating(BaseModel):
69
+ r"""Single analyst rating. Fields use snake_case; some fields may be absent when empty."""
70
+
71
+ action_company: Optional[str] = None
72
+ r"""Rating action taken by the analyst firm, such as upgrades, downgrades, initiates or reiterates."""
73
+
74
+ action_pt: Optional[str] = None
75
+ r"""Action taken on the price target, such as raised, lowered, maintained or announced."""
76
+
77
+ analyst: Optional[str] = None
78
+ r"""Name of the analyst firm that issued the rating."""
79
+
80
+ analyst_id: Optional[str] = None
81
+ r"""Provider identifier of the analyst firm."""
82
+
83
+ analyst_name: Optional[str] = None
84
+ r"""Name of the individual analyst who issued the rating."""
85
+
86
+ currency: Optional[str] = None
87
+ r"""Currency code the price target values are denominated in."""
88
+
89
+ date_: Annotated[Optional[str], pydantic.Field(alias="date")] = None
90
+ r"""Date the rating was issued, as supplied by Benzinga."""
91
+
92
+ exchange: Optional[str] = None
93
+ r"""Exchange code where the data originates. Format depends on the upstream data source and may use MIC, ISO 10383, or a vendor-specific code."""
94
+
95
+ id: Optional[str] = None
96
+ r"""Provider identifier of the analyst rating record."""
97
+
98
+ importance: Optional[int] = None
99
+ r"""Provider-assigned importance level of the rating event."""
100
+
101
+ name: Optional[str] = None
102
+ r"""Name of the rated company."""
103
+
104
+ notes: Optional[str] = None
105
+ r"""Free-text notes accompanying the rating."""
106
+
107
+ pt_current: OptionalNullable[float] = UNSET
108
+ r"""Price target after this action."""
109
+
110
+ pt_current_adjusted: OptionalNullable[float] = UNSET
111
+ r"""Price target after this action, adjusted for corporate actions such as splits."""
112
+
113
+ pt_prior: OptionalNullable[float] = UNSET
114
+ r"""Price target before this action."""
115
+
116
+ pt_prior_adjusted: OptionalNullable[float] = UNSET
117
+ r"""Price target before this action, adjusted for corporate actions such as splits."""
118
+
119
+ rating_current: Optional[str] = None
120
+ r"""Analyst rating after this action."""
121
+
122
+ rating_prior: Optional[str] = None
123
+ r"""Analyst rating before this action."""
124
+
125
+ ratings_accuracy: Optional[RatingsAccuracy] = None
126
+ r"""Analyst accuracy metrics. Fields use snake_case; some fields may be absent when empty."""
127
+
128
+ ticker: Optional[str] = None
129
+ r"""Ticker symbol of the rated security."""
130
+
131
+ time: Optional[str] = None
132
+ r"""Time of day the rating was issued, as supplied by Benzinga."""
133
+
134
+ updated: Optional[str] = None
135
+ r"""Last updated timestamp of the rating record from the data provider."""
136
+
137
+ @model_serializer(mode="wrap")
138
+ def serialize_model(self, handler):
139
+ optional_fields = set(
140
+ [
141
+ "action_company",
142
+ "action_pt",
143
+ "analyst",
144
+ "analyst_id",
145
+ "analyst_name",
146
+ "currency",
147
+ "date",
148
+ "exchange",
149
+ "id",
150
+ "importance",
151
+ "name",
152
+ "notes",
153
+ "pt_current",
154
+ "pt_current_adjusted",
155
+ "pt_prior",
156
+ "pt_prior_adjusted",
157
+ "rating_current",
158
+ "rating_prior",
159
+ "ratings_accuracy",
160
+ "ticker",
161
+ "time",
162
+ "updated",
163
+ ]
164
+ )
165
+ nullable_fields = set(
166
+ ["pt_current", "pt_current_adjusted", "pt_prior", "pt_prior_adjusted"]
167
+ )
168
+ serialized = handler(self)
169
+ m = {}
170
+
171
+ for n, f in type(self).model_fields.items():
172
+ k = f.alias or n
173
+ val = serialized.get(k, serialized.get(n))
174
+ is_nullable_and_explicitly_set = (
175
+ k in nullable_fields
176
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
177
+ )
178
+
179
+ if val != UNSET_SENTINEL:
180
+ if (
181
+ val is not None
182
+ or k not in optional_fields
183
+ or is_nullable_and_explicitly_set
184
+ ):
185
+ m[k] = val
186
+
187
+ return m
188
+
189
+
190
+ try:
191
+ Rating.model_rebuild()
192
+ except NameError:
193
+ pass