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,308 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: d7732ad18976
3
+
4
+ from __future__ import annotations
5
+ from .optionsnapshotcontractdetails import (
6
+ OptionSnapshotContractDetails,
7
+ OptionSnapshotContractDetailsTypedDict,
8
+ )
9
+ from .optionsnapshotdaybar import OptionSnapshotDayBar, OptionSnapshotDayBarTypedDict
10
+ from .optionsnapshotgreeks import OptionSnapshotGreeks, OptionSnapshotGreeksTypedDict
11
+ from .optionsnapshotlastquote import (
12
+ OptionSnapshotLastQuote,
13
+ OptionSnapshotLastQuoteTypedDict,
14
+ )
15
+ from .optionsnapshotlasttrade import (
16
+ OptionSnapshotLastTrade,
17
+ OptionSnapshotLastTradeTypedDict,
18
+ )
19
+ from .optionsnapshotunderlying import (
20
+ OptionSnapshotUnderlying,
21
+ OptionSnapshotUnderlyingTypedDict,
22
+ )
23
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
24
+ import pydantic
25
+ from pydantic import model_serializer
26
+ from typing import List, Optional
27
+ from typing_extensions import Annotated, NotRequired, TypedDict
28
+
29
+
30
+ class LastMinuteTypedDict(TypedDict):
31
+ r"""Last minute aggregate"""
32
+
33
+ close: NotRequired[float]
34
+ r"""Close price of the last minute aggregate."""
35
+ high: NotRequired[float]
36
+ r"""High price of the last minute aggregate."""
37
+ low: NotRequired[float]
38
+ r"""Low price of the last minute aggregate."""
39
+ open: NotRequired[float]
40
+ r"""Open price of the last minute aggregate."""
41
+ transactions: NotRequired[int]
42
+ r"""Number of transactions in the last minute aggregate."""
43
+ volume: NotRequired[int]
44
+ r"""Trading volume in the last minute aggregate."""
45
+ vwap: NotRequired[float]
46
+ r"""Volume-weighted average price of the last minute aggregate."""
47
+
48
+
49
+ class LastMinute(BaseModel):
50
+ r"""Last minute aggregate"""
51
+
52
+ close: Optional[float] = None
53
+ r"""Close price of the last minute aggregate."""
54
+
55
+ high: Optional[float] = None
56
+ r"""High price of the last minute aggregate."""
57
+
58
+ low: Optional[float] = None
59
+ r"""Low price of the last minute aggregate."""
60
+
61
+ open: Optional[float] = None
62
+ r"""Open price of the last minute aggregate."""
63
+
64
+ transactions: Optional[int] = None
65
+ r"""Number of transactions in the last minute aggregate."""
66
+
67
+ volume: Optional[int] = None
68
+ r"""Trading volume in the last minute aggregate."""
69
+
70
+ vwap: Optional[float] = None
71
+ r"""Volume-weighted average price of the last minute aggregate."""
72
+
73
+ @model_serializer(mode="wrap")
74
+ def serialize_model(self, handler):
75
+ optional_fields = set(
76
+ ["close", "high", "low", "open", "transactions", "volume", "vwap"]
77
+ )
78
+ serialized = handler(self)
79
+ m = {}
80
+
81
+ for n, f in type(self).model_fields.items():
82
+ k = f.alias or n
83
+ val = serialized.get(k, serialized.get(n))
84
+
85
+ if val != UNSET_SENTINEL:
86
+ if val is not None or k not in optional_fields:
87
+ m[k] = val
88
+
89
+ return m
90
+
91
+
92
+ class UnifiedSnapshotResponseResultTypedDict(TypedDict):
93
+ break_even_price: NotRequired[float]
94
+ r"""Options-only break-even price when available"""
95
+ details: NotRequired[OptionSnapshotContractDetailsTypedDict]
96
+ r"""Static contract metadata (`OptionSnapshotDetailsDTO`)."""
97
+ error: NotRequired[str]
98
+ r"""Per-item error, when returned"""
99
+ fmv: NotRequired[float]
100
+ r"""Fair market value"""
101
+ fmv_last_updated: NotRequired[int]
102
+ r"""FMV last updated timestamp"""
103
+ greeks: NotRequired[OptionSnapshotGreeksTypedDict]
104
+ r"""Greeks when available (`OptionSnapshotGreeksDTO`)."""
105
+ implied_volatility: NotRequired[float]
106
+ r"""Options implied volatility when available"""
107
+ last_minute: NotRequired[LastMinuteTypedDict]
108
+ r"""Last minute aggregate"""
109
+ last_quote: NotRequired[OptionSnapshotLastQuoteTypedDict]
110
+ r"""Latest NBBO quote when included (`OptionSnapshotLastQuoteDTO`)."""
111
+ last_trade: NotRequired[OptionSnapshotLastTradeTypedDict]
112
+ r"""Latest trade when included (`OptionSnapshotLastTradeDTO`)."""
113
+ last_updated: NotRequired[int]
114
+ r"""Item-level last updated timestamp, when available"""
115
+ market_status: NotRequired[str]
116
+ r"""Market status"""
117
+ message: NotRequired[str]
118
+ r"""Per-item message, when returned"""
119
+ name: NotRequired[str]
120
+ r"""Company name"""
121
+ open_interest: NotRequired[int]
122
+ r"""Options open interest when available"""
123
+ session: NotRequired[OptionSnapshotDayBarTypedDict]
124
+ r"""Most recent daily OHLCV bar for the contract (`OptionSnapshotDayBarDTO`)."""
125
+ ticker: NotRequired[str]
126
+ r"""Ticker symbol"""
127
+ timeframe: NotRequired[str]
128
+ r"""Timeframe for the item, when available"""
129
+ type: NotRequired[str]
130
+ r"""Asset class returned by the provider, such as stocks or options."""
131
+ underlying_asset: NotRequired[OptionSnapshotUnderlyingTypedDict]
132
+ r"""Underlying equity snapshot (`OptionSnapshotUnderlyingDTO`)."""
133
+ value: NotRequired[float]
134
+ r"""Value field, when available"""
135
+
136
+
137
+ class UnifiedSnapshotResponseResult(BaseModel):
138
+ break_even_price: Annotated[
139
+ Optional[float], pydantic.Field(alias="breakEvenPrice")
140
+ ] = None
141
+ r"""Options-only break-even price when available"""
142
+
143
+ details: Optional[OptionSnapshotContractDetails] = None
144
+ r"""Static contract metadata (`OptionSnapshotDetailsDTO`)."""
145
+
146
+ error: Optional[str] = None
147
+ r"""Per-item error, when returned"""
148
+
149
+ fmv: Optional[float] = None
150
+ r"""Fair market value"""
151
+
152
+ fmv_last_updated: Annotated[
153
+ Optional[int], pydantic.Field(alias="fmvLastUpdated")
154
+ ] = None
155
+ r"""FMV last updated timestamp"""
156
+
157
+ greeks: Optional[OptionSnapshotGreeks] = None
158
+ r"""Greeks when available (`OptionSnapshotGreeksDTO`)."""
159
+
160
+ implied_volatility: Annotated[
161
+ Optional[float], pydantic.Field(alias="impliedVolatility")
162
+ ] = None
163
+ r"""Options implied volatility when available"""
164
+
165
+ last_minute: Annotated[Optional[LastMinute], pydantic.Field(alias="lastMinute")] = (
166
+ None
167
+ )
168
+ r"""Last minute aggregate"""
169
+
170
+ last_quote: Annotated[
171
+ Optional[OptionSnapshotLastQuote], pydantic.Field(alias="lastQuote")
172
+ ] = None
173
+ r"""Latest NBBO quote when included (`OptionSnapshotLastQuoteDTO`)."""
174
+
175
+ last_trade: Annotated[
176
+ Optional[OptionSnapshotLastTrade], pydantic.Field(alias="lastTrade")
177
+ ] = None
178
+ r"""Latest trade when included (`OptionSnapshotLastTradeDTO`)."""
179
+
180
+ last_updated: Annotated[Optional[int], pydantic.Field(alias="lastUpdated")] = None
181
+ r"""Item-level last updated timestamp, when available"""
182
+
183
+ market_status: Annotated[Optional[str], pydantic.Field(alias="marketStatus")] = None
184
+ r"""Market status"""
185
+
186
+ message: Optional[str] = None
187
+ r"""Per-item message, when returned"""
188
+
189
+ name: Optional[str] = None
190
+ r"""Company name"""
191
+
192
+ open_interest: Annotated[Optional[int], pydantic.Field(alias="openInterest")] = None
193
+ r"""Options open interest when available"""
194
+
195
+ session: Optional[OptionSnapshotDayBar] = None
196
+ r"""Most recent daily OHLCV bar for the contract (`OptionSnapshotDayBarDTO`)."""
197
+
198
+ ticker: Optional[str] = None
199
+ r"""Ticker symbol"""
200
+
201
+ timeframe: Optional[str] = None
202
+ r"""Timeframe for the item, when available"""
203
+
204
+ type: Optional[str] = None
205
+ r"""Asset class returned by the provider, such as stocks or options."""
206
+
207
+ underlying_asset: Annotated[
208
+ Optional[OptionSnapshotUnderlying], pydantic.Field(alias="underlyingAsset")
209
+ ] = None
210
+ r"""Underlying equity snapshot (`OptionSnapshotUnderlyingDTO`)."""
211
+
212
+ value: Optional[float] = None
213
+ r"""Value field, when available"""
214
+
215
+ @model_serializer(mode="wrap")
216
+ def serialize_model(self, handler):
217
+ optional_fields = set(
218
+ [
219
+ "breakEvenPrice",
220
+ "details",
221
+ "error",
222
+ "fmv",
223
+ "fmvLastUpdated",
224
+ "greeks",
225
+ "impliedVolatility",
226
+ "lastMinute",
227
+ "lastQuote",
228
+ "lastTrade",
229
+ "lastUpdated",
230
+ "marketStatus",
231
+ "message",
232
+ "name",
233
+ "openInterest",
234
+ "session",
235
+ "ticker",
236
+ "timeframe",
237
+ "type",
238
+ "underlyingAsset",
239
+ "value",
240
+ ]
241
+ )
242
+ serialized = handler(self)
243
+ m = {}
244
+
245
+ for n, f in type(self).model_fields.items():
246
+ k = f.alias or n
247
+ val = serialized.get(k, serialized.get(n))
248
+
249
+ if val != UNSET_SENTINEL:
250
+ if val is not None or k not in optional_fields:
251
+ m[k] = val
252
+
253
+ return m
254
+
255
+
256
+ class UnifiedSnapshotResponseTypedDict(TypedDict):
257
+ r"""Paginated unified snapshots across asset types, including stocks and options, with last quote, last trade and latest minute aggregate per item."""
258
+
259
+ next_url: NotRequired[str]
260
+ r"""URL for next page of results"""
261
+ request_id: NotRequired[str]
262
+ r"""Unique request ID"""
263
+ results: NotRequired[List[UnifiedSnapshotResponseResultTypedDict]]
264
+ r"""Array of unified snapshots"""
265
+ status: NotRequired[str]
266
+ r"""Status string from the upstream data provider — typically `OK` for a successful response. Treat any other value as an error indicator alongside the HTTP status code."""
267
+
268
+
269
+ class UnifiedSnapshotResponse(BaseModel):
270
+ r"""Paginated unified snapshots across asset types, including stocks and options, with last quote, last trade and latest minute aggregate per item."""
271
+
272
+ next_url: Annotated[Optional[str], pydantic.Field(alias="nextUrl")] = None
273
+ r"""URL for next page of results"""
274
+
275
+ request_id: Annotated[Optional[str], pydantic.Field(alias="requestId")] = None
276
+ r"""Unique request ID"""
277
+
278
+ results: Optional[List[UnifiedSnapshotResponseResult]] = None
279
+ r"""Array of unified snapshots"""
280
+
281
+ status: Optional[str] = None
282
+ r"""Status string from the upstream data provider — typically `OK` for a successful response. Treat any other value as an error indicator alongside the HTTP status code."""
283
+
284
+ @model_serializer(mode="wrap")
285
+ def serialize_model(self, handler):
286
+ optional_fields = set(["nextUrl", "requestId", "results", "status"])
287
+ serialized = handler(self)
288
+ m = {}
289
+
290
+ for n, f in type(self).model_fields.items():
291
+ k = f.alias or n
292
+ val = serialized.get(k, serialized.get(n))
293
+
294
+ if val != UNSET_SENTINEL:
295
+ if val is not None or k not in optional_fields:
296
+ m[k] = val
297
+
298
+ return m
299
+
300
+
301
+ try:
302
+ UnifiedSnapshotResponseResult.model_rebuild()
303
+ except NameError:
304
+ pass
305
+ try:
306
+ UnifiedSnapshotResponse.model_rebuild()
307
+ except NameError:
308
+ pass
@@ -0,0 +1,65 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: ebd6b51101d5
3
+
4
+ from __future__ import annotations
5
+ from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
6
+ from .updatewatchlistrequest_union import (
7
+ UpdateWatchlistRequestUnion,
8
+ UpdateWatchlistRequestUnionTypedDict,
9
+ )
10
+ from .watchlist import Watchlist, WatchlistTypedDict
11
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
12
+ from finance_dev.utils import FieldMetadata, PathParamMetadata, RequestMetadata
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 UpdateConfigWatchlistByIDRequestTypedDict(TypedDict):
20
+ watchlist_id: int
21
+ r"""The numeric ID of the watchlist to update. You can get this from a previous list/create/update response (the `id` field in the returned watchlist)."""
22
+ update_watchlist_request: UpdateWatchlistRequestUnionTypedDict
23
+ r"""At least one of `name`, `add_symbols`, or `remove_symbols` must be included."""
24
+
25
+
26
+ class UpdateConfigWatchlistByIDRequest(BaseModel):
27
+ watchlist_id: Annotated[
28
+ int, FieldMetadata(path=PathParamMetadata(style="simple", explode=False))
29
+ ]
30
+ r"""The numeric ID of the watchlist to update. You can get this from a previous list/create/update response (the `id` field in the returned watchlist)."""
31
+
32
+ update_watchlist_request: Annotated[
33
+ UpdateWatchlistRequestUnion,
34
+ FieldMetadata(request=RequestMetadata(media_type="application/json")),
35
+ ]
36
+ r"""At least one of `name`, `add_symbols`, or `remove_symbols` must be included."""
37
+
38
+
39
+ class UpdateConfigWatchlistByIDResponseTypedDict(TypedDict):
40
+ http_meta: HTTPMetadataTypedDict
41
+ watchlist: NotRequired[WatchlistTypedDict]
42
+ r"""Watchlist updated. The response contains the full, updated watchlist; check `invalid_symbols` for any submitted symbols that were dropped."""
43
+
44
+
45
+ class UpdateConfigWatchlistByIDResponse(BaseModel):
46
+ http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
47
+
48
+ watchlist: Optional[Watchlist] = None
49
+ r"""Watchlist updated. The response contains the full, updated watchlist; check `invalid_symbols` for any submitted symbols that were dropped."""
50
+
51
+ @model_serializer(mode="wrap")
52
+ def serialize_model(self, handler):
53
+ optional_fields = set(["Watchlist"])
54
+ serialized = handler(self)
55
+ m = {}
56
+
57
+ for n, f in type(self).model_fields.items():
58
+ k = f.alias or n
59
+ val = serialized.get(k, serialized.get(n))
60
+
61
+ if val != UNSET_SENTINEL:
62
+ if val is not None or k not in optional_fields:
63
+ m[k] = val
64
+
65
+ return m
@@ -0,0 +1,134 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 5667a6ca5147
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 List, Optional, Union
8
+ from typing_extensions import NotRequired, TypeAliasType, TypedDict
9
+
10
+
11
+ class UpdateWatchlistRequest3TypedDict(TypedDict):
12
+ remove_symbols: List[str]
13
+ r"""Symbols to remove from the watchlist."""
14
+ add_symbols: NotRequired[List[str]]
15
+ r"""Symbols to add to the watchlist. Use exact uppercase ticker symbols; symbols that can't be resolved are dropped and returned in the response's `invalid_symbols` field."""
16
+ name: NotRequired[str]
17
+ r"""New name for the watchlist. Omit to leave the name unchanged; if included, it cannot be empty and must not match the name of another of the user's watchlists (case-sensitive)."""
18
+
19
+
20
+ class UpdateWatchlistRequest3(BaseModel):
21
+ remove_symbols: List[str]
22
+ r"""Symbols to remove from the watchlist."""
23
+
24
+ add_symbols: Optional[List[str]] = None
25
+ r"""Symbols to add to the watchlist. Use exact uppercase ticker symbols; symbols that can't be resolved are dropped and returned in the response's `invalid_symbols` field."""
26
+
27
+ name: Optional[str] = None
28
+ r"""New name for the watchlist. Omit to leave the name unchanged; if included, it cannot be empty and must not match the name of another of the user's watchlists (case-sensitive)."""
29
+
30
+ @model_serializer(mode="wrap")
31
+ def serialize_model(self, handler):
32
+ optional_fields = set(["add_symbols", "name"])
33
+ serialized = handler(self)
34
+ m = {}
35
+
36
+ for n, f in type(self).model_fields.items():
37
+ k = f.alias or n
38
+ val = serialized.get(k, serialized.get(n))
39
+
40
+ if val != UNSET_SENTINEL:
41
+ if val is not None or k not in optional_fields:
42
+ m[k] = val
43
+
44
+ return m
45
+
46
+
47
+ class UpdateWatchlistRequest2TypedDict(TypedDict):
48
+ add_symbols: List[str]
49
+ r"""Symbols to add to the watchlist. Use exact uppercase ticker symbols; symbols that can't be resolved are dropped and returned in the response's `invalid_symbols` field."""
50
+ name: NotRequired[str]
51
+ r"""New name for the watchlist. Omit to leave the name unchanged; if included, it cannot be empty and must not match the name of another of the user's watchlists (case-sensitive)."""
52
+ remove_symbols: NotRequired[List[str]]
53
+ r"""Symbols to remove from the watchlist."""
54
+
55
+
56
+ class UpdateWatchlistRequest2(BaseModel):
57
+ add_symbols: List[str]
58
+ r"""Symbols to add to the watchlist. Use exact uppercase ticker symbols; symbols that can't be resolved are dropped and returned in the response's `invalid_symbols` field."""
59
+
60
+ name: Optional[str] = None
61
+ r"""New name for the watchlist. Omit to leave the name unchanged; if included, it cannot be empty and must not match the name of another of the user's watchlists (case-sensitive)."""
62
+
63
+ remove_symbols: Optional[List[str]] = None
64
+ r"""Symbols to remove from the watchlist."""
65
+
66
+ @model_serializer(mode="wrap")
67
+ def serialize_model(self, handler):
68
+ optional_fields = set(["name", "remove_symbols"])
69
+ serialized = handler(self)
70
+ m = {}
71
+
72
+ for n, f in type(self).model_fields.items():
73
+ k = f.alias or n
74
+ val = serialized.get(k, serialized.get(n))
75
+
76
+ if val != UNSET_SENTINEL:
77
+ if val is not None or k not in optional_fields:
78
+ m[k] = val
79
+
80
+ return m
81
+
82
+
83
+ class UpdateWatchlistRequest1TypedDict(TypedDict):
84
+ name: str
85
+ r"""New name for the watchlist. Omit to leave the name unchanged; if included, it cannot be empty and must not match the name of another of the user's watchlists (case-sensitive)."""
86
+ add_symbols: NotRequired[List[str]]
87
+ r"""Symbols to add to the watchlist. Use exact uppercase ticker symbols; symbols that can't be resolved are dropped and returned in the response's `invalid_symbols` field."""
88
+ remove_symbols: NotRequired[List[str]]
89
+ r"""Symbols to remove from the watchlist."""
90
+
91
+
92
+ class UpdateWatchlistRequest1(BaseModel):
93
+ name: str
94
+ r"""New name for the watchlist. Omit to leave the name unchanged; if included, it cannot be empty and must not match the name of another of the user's watchlists (case-sensitive)."""
95
+
96
+ add_symbols: Optional[List[str]] = None
97
+ r"""Symbols to add to the watchlist. Use exact uppercase ticker symbols; symbols that can't be resolved are dropped and returned in the response's `invalid_symbols` field."""
98
+
99
+ remove_symbols: Optional[List[str]] = None
100
+ r"""Symbols to remove from the watchlist."""
101
+
102
+ @model_serializer(mode="wrap")
103
+ def serialize_model(self, handler):
104
+ optional_fields = set(["add_symbols", "remove_symbols"])
105
+ serialized = handler(self)
106
+ m = {}
107
+
108
+ for n, f in type(self).model_fields.items():
109
+ k = f.alias or n
110
+ val = serialized.get(k, serialized.get(n))
111
+
112
+ if val != UNSET_SENTINEL:
113
+ if val is not None or k not in optional_fields:
114
+ m[k] = val
115
+
116
+ return m
117
+
118
+
119
+ UpdateWatchlistRequestUnionTypedDict = TypeAliasType(
120
+ "UpdateWatchlistRequestUnionTypedDict",
121
+ Union[
122
+ UpdateWatchlistRequest1TypedDict,
123
+ UpdateWatchlistRequest2TypedDict,
124
+ UpdateWatchlistRequest3TypedDict,
125
+ ],
126
+ )
127
+ r"""Request body for partially updating a watchlist. Include at least one of `name`, `add_symbols`, or `remove_symbols`."""
128
+
129
+
130
+ UpdateWatchlistRequestUnion = TypeAliasType(
131
+ "UpdateWatchlistRequestUnion",
132
+ Union[UpdateWatchlistRequest1, UpdateWatchlistRequest2, UpdateWatchlistRequest3],
133
+ )
134
+ r"""Request body for partially updating a watchlist. Include at least one of `name`, `add_symbols`, or `remove_symbols`."""
@@ -0,0 +1,98 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 172f3b892ed5
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 UpgradesDowngradesResponseDataTypedDict(TypedDict):
13
+ action: NotRequired[str]
14
+ r"""Type of rating action, such as upgrade, downgrade, initiate or maintain"""
15
+ company: NotRequired[str]
16
+ r"""Name of the firm that issued the rating change"""
17
+ from_grade: NotRequired[str]
18
+ r"""Previous rating"""
19
+ grade_time: NotRequired[int]
20
+ r"""Time of the rating change as a Unix timestamp"""
21
+ symbol: NotRequired[str]
22
+ r"""Stock ticker symbol"""
23
+ to_grade: NotRequired[str]
24
+ r"""New rating"""
25
+
26
+
27
+ class UpgradesDowngradesResponseData(BaseModel):
28
+ action: Optional[str] = None
29
+ r"""Type of rating action, such as upgrade, downgrade, initiate or maintain"""
30
+
31
+ company: Optional[str] = None
32
+ r"""Name of the firm that issued the rating change"""
33
+
34
+ from_grade: Annotated[Optional[str], pydantic.Field(alias="fromGrade")] = None
35
+ r"""Previous rating"""
36
+
37
+ grade_time: Annotated[Optional[int], pydantic.Field(alias="gradeTime")] = None
38
+ r"""Time of the rating change as a Unix timestamp"""
39
+
40
+ symbol: Optional[str] = None
41
+ r"""Stock ticker symbol"""
42
+
43
+ to_grade: Annotated[Optional[str], pydantic.Field(alias="toGrade")] = None
44
+ r"""New rating"""
45
+
46
+ @model_serializer(mode="wrap")
47
+ def serialize_model(self, handler):
48
+ optional_fields = set(
49
+ ["action", "company", "fromGrade", "gradeTime", "symbol", "toGrade"]
50
+ )
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
63
+
64
+
65
+ class UpgradesDowngradesResponseTypedDict(TypedDict):
66
+ r"""Analyst rating upgrades and downgrades for a stock, sourced from Finnhub."""
67
+
68
+ data: NotRequired[List[UpgradesDowngradesResponseDataTypedDict]]
69
+ r"""List of analyst rating change events"""
70
+
71
+
72
+ class UpgradesDowngradesResponse(BaseModel):
73
+ r"""Analyst rating upgrades and downgrades for a stock, sourced from Finnhub."""
74
+
75
+ data: Optional[List[UpgradesDowngradesResponseData]] = None
76
+ r"""List of analyst rating change events"""
77
+
78
+ @model_serializer(mode="wrap")
79
+ def serialize_model(self, handler):
80
+ optional_fields = set(["data"])
81
+ serialized = handler(self)
82
+ m = {}
83
+
84
+ for n, f in type(self).model_fields.items():
85
+ k = f.alias or n
86
+ val = serialized.get(k, serialized.get(n))
87
+
88
+ if val != UNSET_SENTINEL:
89
+ if val is not None or k not in optional_fields:
90
+ m[k] = val
91
+
92
+ return m
93
+
94
+
95
+ try:
96
+ UpgradesDowngradesResponseData.model_rebuild()
97
+ except NameError:
98
+ pass