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,170 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 9a60e9279e12
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 StockQuotesResponseResultTypedDict(TypedDict):
13
+ ask_exchange: NotRequired[int]
14
+ r"""Ask exchange ID"""
15
+ ask_price: NotRequired[float]
16
+ r"""Ask price"""
17
+ ask_size: NotRequired[float]
18
+ r"""Ask size"""
19
+ bid_exchange: NotRequired[int]
20
+ r"""Bid exchange ID"""
21
+ bid_price: NotRequired[float]
22
+ r"""Bid price"""
23
+ bid_size: NotRequired[float]
24
+ r"""Bid size"""
25
+ conditions: NotRequired[List[int]]
26
+ r"""Quote conditions"""
27
+ indicators: NotRequired[List[int]]
28
+ r"""Quote indicators"""
29
+ participant_timestamp: NotRequired[int]
30
+ r"""Participant timestamp"""
31
+ sequence_number: NotRequired[int]
32
+ r"""Sequence number"""
33
+ sip_timestamp: NotRequired[int]
34
+ r"""SIP timestamp"""
35
+ tape: NotRequired[int]
36
+ r"""Tape"""
37
+ trf_timestamp: NotRequired[int]
38
+ r"""TRF timestamp"""
39
+
40
+
41
+ class StockQuotesResponseResult(BaseModel):
42
+ ask_exchange: Annotated[Optional[int], pydantic.Field(alias="askExchange")] = None
43
+ r"""Ask exchange ID"""
44
+
45
+ ask_price: Annotated[Optional[float], pydantic.Field(alias="askPrice")] = None
46
+ r"""Ask price"""
47
+
48
+ ask_size: Annotated[Optional[float], pydantic.Field(alias="askSize")] = None
49
+ r"""Ask size"""
50
+
51
+ bid_exchange: Annotated[Optional[int], pydantic.Field(alias="bidExchange")] = None
52
+ r"""Bid exchange ID"""
53
+
54
+ bid_price: Annotated[Optional[float], pydantic.Field(alias="bidPrice")] = None
55
+ r"""Bid price"""
56
+
57
+ bid_size: Annotated[Optional[float], pydantic.Field(alias="bidSize")] = None
58
+ r"""Bid size"""
59
+
60
+ conditions: Optional[List[int]] = None
61
+ r"""Quote conditions"""
62
+
63
+ indicators: Optional[List[int]] = None
64
+ r"""Quote indicators"""
65
+
66
+ participant_timestamp: Annotated[
67
+ Optional[int], pydantic.Field(alias="participantTimestamp")
68
+ ] = None
69
+ r"""Participant timestamp"""
70
+
71
+ sequence_number: Annotated[
72
+ Optional[int], pydantic.Field(alias="sequenceNumber")
73
+ ] = None
74
+ r"""Sequence number"""
75
+
76
+ sip_timestamp: Annotated[Optional[int], pydantic.Field(alias="sipTimestamp")] = None
77
+ r"""SIP timestamp"""
78
+
79
+ tape: Optional[int] = None
80
+ r"""Tape"""
81
+
82
+ trf_timestamp: Annotated[Optional[int], pydantic.Field(alias="trfTimestamp")] = None
83
+ r"""TRF timestamp"""
84
+
85
+ @model_serializer(mode="wrap")
86
+ def serialize_model(self, handler):
87
+ optional_fields = set(
88
+ [
89
+ "askExchange",
90
+ "askPrice",
91
+ "askSize",
92
+ "bidExchange",
93
+ "bidPrice",
94
+ "bidSize",
95
+ "conditions",
96
+ "indicators",
97
+ "participantTimestamp",
98
+ "sequenceNumber",
99
+ "sipTimestamp",
100
+ "tape",
101
+ "trfTimestamp",
102
+ ]
103
+ )
104
+ serialized = handler(self)
105
+ m = {}
106
+
107
+ for n, f in type(self).model_fields.items():
108
+ k = f.alias or n
109
+ val = serialized.get(k, serialized.get(n))
110
+
111
+ if val != UNSET_SENTINEL:
112
+ if val is not None or k not in optional_fields:
113
+ m[k] = val
114
+
115
+ return m
116
+
117
+
118
+ class StockQuotesResponseTypedDict(TypedDict):
119
+ r"""Paginated list of historical NBBO quotes for a stock ticker."""
120
+
121
+ next_url: NotRequired[str]
122
+ r"""URL for next page of results"""
123
+ request_id: NotRequired[str]
124
+ r"""Unique request ID"""
125
+ results: NotRequired[List[StockQuotesResponseResultTypedDict]]
126
+ r"""Array of NBBO quote objects"""
127
+ status: NotRequired[str]
128
+ 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."""
129
+
130
+
131
+ class StockQuotesResponse(BaseModel):
132
+ r"""Paginated list of historical NBBO quotes for a stock ticker."""
133
+
134
+ next_url: Annotated[Optional[str], pydantic.Field(alias="nextUrl")] = None
135
+ r"""URL for next page of results"""
136
+
137
+ request_id: Annotated[Optional[str], pydantic.Field(alias="requestId")] = None
138
+ r"""Unique request ID"""
139
+
140
+ results: Optional[List[StockQuotesResponseResult]] = None
141
+ r"""Array of NBBO quote objects"""
142
+
143
+ status: Optional[str] = None
144
+ 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."""
145
+
146
+ @model_serializer(mode="wrap")
147
+ def serialize_model(self, handler):
148
+ optional_fields = set(["nextUrl", "requestId", "results", "status"])
149
+ serialized = handler(self)
150
+ m = {}
151
+
152
+ for n, f in type(self).model_fields.items():
153
+ k = f.alias or n
154
+ val = serialized.get(k, serialized.get(n))
155
+
156
+ if val != UNSET_SENTINEL:
157
+ if val is not None or k not in optional_fields:
158
+ m[k] = val
159
+
160
+ return m
161
+
162
+
163
+ try:
164
+ StockQuotesResponseResult.model_rebuild()
165
+ except NameError:
166
+ pass
167
+ try:
168
+ StockQuotesResponse.model_rebuild()
169
+ except NameError:
170
+ pass
@@ -0,0 +1,144 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: c7990651d6df
3
+
4
+ from __future__ import annotations
5
+ from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
6
+ from .sortorderenum import SortOrderEnum
7
+ from .stockscreenerrequest import StockScreenerRequest, StockScreenerRequestTypedDict
8
+ from .stockscreenerresponse import StockScreenerResponse, StockScreenerResponseTypedDict
9
+ from finance_dev import models
10
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
11
+ from finance_dev.utils import FieldMetadata, QueryParamMetadata, RequestMetadata
12
+ import pydantic
13
+ from pydantic import field_serializer, model_serializer
14
+ from typing import List, Optional
15
+ from typing_extensions import Annotated, NotRequired, TypedDict
16
+
17
+
18
+ class StockScreenerRequestRequestTypedDict(TypedDict):
19
+ stock_screener_request: StockScreenerRequestTypedDict
20
+ r"""Screener request with operator (AND, OR, or NOT), clauses (field, operator, value), and optional groups."""
21
+ page_size: NotRequired[int]
22
+ r"""Number of results to return per page. Use smaller values (10–50) for UI screens, larger (100–500) for batch exports. Defaults to the upstream provider's default."""
23
+ order_column: NotRequired[str]
24
+ r"""Which data column to sort the screened results by. Accepts any column the upstream screener exposes — not a fixed enum on our side. Common columns:
25
+ - `marketcap` — market capitalization.
26
+ - `pricetoearnings` — trailing P/E ratio.
27
+ - `pricetobook` — price-to-book ratio.
28
+ - `roe` — return on equity.
29
+ - `volume` — average daily volume.
30
+ - `open_price` / `close_price` — most recent open / close.
31
+ - `dilutedeps` — diluted earnings per share (TTM).
32
+ - `cashandequivalents` — cash + cash equivalents on the balance sheet.
33
+
34
+ Pair with `order_direction` (`asc` / `desc`).
35
+ """
36
+ order_direction: NotRequired[SortOrderEnum]
37
+ r"""Direction to sort `order_column` in:
38
+ - `asc` — ascending (smallest first).
39
+ - `desc` — descending (largest first).
40
+ """
41
+ primary_only: NotRequired[str]
42
+ r"""When `true`, return only the primary listing for each company (e.g. NYSE for a U.S. dual-listed stock) instead of every listing. Defaults to `false`."""
43
+
44
+
45
+ class StockScreenerRequestRequest(BaseModel):
46
+ stock_screener_request: Annotated[
47
+ StockScreenerRequest,
48
+ FieldMetadata(request=RequestMetadata(media_type="application/json")),
49
+ ]
50
+ r"""Screener request with operator (AND, OR, or NOT), clauses (field, operator, value), and optional groups."""
51
+
52
+ page_size: Annotated[
53
+ Optional[int],
54
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
55
+ ] = None
56
+ r"""Number of results to return per page. Use smaller values (10–50) for UI screens, larger (100–500) for batch exports. Defaults to the upstream provider's default."""
57
+
58
+ order_column: Annotated[
59
+ Optional[str],
60
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
61
+ ] = None
62
+ r"""Which data column to sort the screened results by. Accepts any column the upstream screener exposes — not a fixed enum on our side. Common columns:
63
+ - `marketcap` — market capitalization.
64
+ - `pricetoearnings` — trailing P/E ratio.
65
+ - `pricetobook` — price-to-book ratio.
66
+ - `roe` — return on equity.
67
+ - `volume` — average daily volume.
68
+ - `open_price` / `close_price` — most recent open / close.
69
+ - `dilutedeps` — diluted earnings per share (TTM).
70
+ - `cashandequivalents` — cash + cash equivalents on the balance sheet.
71
+
72
+ Pair with `order_direction` (`asc` / `desc`).
73
+ """
74
+
75
+ order_direction: Annotated[
76
+ Optional[SortOrderEnum],
77
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
78
+ ] = None
79
+ r"""Direction to sort `order_column` in:
80
+ - `asc` — ascending (smallest first).
81
+ - `desc` — descending (largest first).
82
+ """
83
+
84
+ primary_only: Annotated[
85
+ Optional[str],
86
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
87
+ ] = None
88
+ r"""When `true`, return only the primary listing for each company (e.g. NYSE for a U.S. dual-listed stock) instead of every listing. Defaults to `false`."""
89
+
90
+ @field_serializer("order_direction")
91
+ def serialize_order_direction(self, value):
92
+ if isinstance(value, str):
93
+ try:
94
+ return models.SortOrderEnum(value)
95
+ except ValueError:
96
+ return value
97
+ return value
98
+
99
+ @model_serializer(mode="wrap")
100
+ def serialize_model(self, handler):
101
+ optional_fields = set(
102
+ ["page_size", "order_column", "order_direction", "primary_only"]
103
+ )
104
+ serialized = handler(self)
105
+ m = {}
106
+
107
+ for n, f in type(self).model_fields.items():
108
+ k = f.alias or n
109
+ val = serialized.get(k, serialized.get(n))
110
+
111
+ if val != UNSET_SENTINEL:
112
+ if val is not None or k not in optional_fields:
113
+ m[k] = val
114
+
115
+ return m
116
+
117
+
118
+ class StockScreenerResponseResponseTypedDict(TypedDict):
119
+ http_meta: HTTPMetadataTypedDict
120
+ stock_screener_response: NotRequired[List[StockScreenerResponseTypedDict]]
121
+ r"""Array of screened securities; each item has security (id, ticker, name, etc.) and data (array of tag, number_value, text_value)"""
122
+
123
+
124
+ class StockScreenerResponseResponse(BaseModel):
125
+ http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
126
+
127
+ stock_screener_response: Optional[List[StockScreenerResponse]] = None
128
+ r"""Array of screened securities; each item has security (id, ticker, name, etc.) and data (array of tag, number_value, text_value)"""
129
+
130
+ @model_serializer(mode="wrap")
131
+ def serialize_model(self, handler):
132
+ optional_fields = set(["StockScreenerResponse"])
133
+ serialized = handler(self)
134
+ m = {}
135
+
136
+ for n, f in type(self).model_fields.items():
137
+ k = f.alias or n
138
+ val = serialized.get(k, serialized.get(n))
139
+
140
+ if val != UNSET_SENTINEL:
141
+ if val is not None or k not in optional_fields:
142
+ m[k] = val
143
+
144
+ return m
@@ -0,0 +1,131 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: 15ca9ede6f77
3
+
4
+ from __future__ import annotations
5
+ from .screenclause import ScreenClause, ScreenClauseTypedDict
6
+ from .screengroup import ScreenGroup, ScreenGroupTypedDict
7
+ from enum import Enum
8
+ from finance_dev import models, utils
9
+ from finance_dev.types import BaseModel, UNSET_SENTINEL
10
+ from pydantic import field_serializer, model_serializer
11
+ from typing import List, Optional, Union
12
+ from typing_extensions import NotRequired, TypeAliasType, TypedDict
13
+
14
+
15
+ class StockScreenerRequestOperator2(str, Enum, metaclass=utils.OpenEnumMeta):
16
+ r"""Logical operator for combining clauses: AND, OR, or NOT"""
17
+
18
+ AND = "AND"
19
+ OR = "OR"
20
+ NOT = "NOT"
21
+
22
+
23
+ class StockScreenerRequest2TypedDict(TypedDict):
24
+ groups: List[ScreenGroupTypedDict]
25
+ r"""Optional nested groups of clauses for complex logic"""
26
+ operator: StockScreenerRequestOperator2
27
+ r"""Logical operator for combining clauses: AND, OR, or NOT"""
28
+ clauses: NotRequired[List[ScreenClauseTypedDict]]
29
+ r"""List of filter conditions (field, operator, value). Required unless groups is non-empty."""
30
+
31
+
32
+ class StockScreenerRequest2(BaseModel):
33
+ groups: List[ScreenGroup]
34
+ r"""Optional nested groups of clauses for complex logic"""
35
+
36
+ operator: StockScreenerRequestOperator2
37
+ r"""Logical operator for combining clauses: AND, OR, or NOT"""
38
+
39
+ clauses: Optional[List[ScreenClause]] = None
40
+ r"""List of filter conditions (field, operator, value). Required unless groups is non-empty."""
41
+
42
+ @field_serializer("operator")
43
+ def serialize_operator(self, value):
44
+ if isinstance(value, str):
45
+ try:
46
+ return models.StockScreenerRequestOperator2(value)
47
+ except ValueError:
48
+ return value
49
+ return value
50
+
51
+ @model_serializer(mode="wrap")
52
+ def serialize_model(self, handler):
53
+ optional_fields = set(["clauses"])
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
66
+
67
+
68
+ class StockScreenerRequestOperator1(str, Enum, metaclass=utils.OpenEnumMeta):
69
+ r"""Logical operator for combining clauses: AND, OR, or NOT"""
70
+
71
+ AND = "AND"
72
+ OR = "OR"
73
+ NOT = "NOT"
74
+
75
+
76
+ class StockScreenerRequest1TypedDict(TypedDict):
77
+ clauses: List[ScreenClauseTypedDict]
78
+ r"""List of filter conditions (field, operator, value). Required unless groups is non-empty."""
79
+ operator: StockScreenerRequestOperator1
80
+ r"""Logical operator for combining clauses: AND, OR, or NOT"""
81
+ groups: NotRequired[List[ScreenGroupTypedDict]]
82
+ r"""Optional nested groups of clauses for complex logic"""
83
+
84
+
85
+ class StockScreenerRequest1(BaseModel):
86
+ clauses: List[ScreenClause]
87
+ r"""List of filter conditions (field, operator, value). Required unless groups is non-empty."""
88
+
89
+ operator: StockScreenerRequestOperator1
90
+ r"""Logical operator for combining clauses: AND, OR, or NOT"""
91
+
92
+ groups: Optional[List[ScreenGroup]] = None
93
+ r"""Optional nested groups of clauses for complex logic"""
94
+
95
+ @field_serializer("operator")
96
+ def serialize_operator(self, value):
97
+ if isinstance(value, str):
98
+ try:
99
+ return models.StockScreenerRequestOperator1(value)
100
+ except ValueError:
101
+ return value
102
+ return value
103
+
104
+ @model_serializer(mode="wrap")
105
+ def serialize_model(self, handler):
106
+ optional_fields = set(["groups"])
107
+ serialized = handler(self)
108
+ m = {}
109
+
110
+ for n, f in type(self).model_fields.items():
111
+ k = f.alias or n
112
+ val = serialized.get(k, serialized.get(n))
113
+
114
+ if val != UNSET_SENTINEL:
115
+ if val is not None or k not in optional_fields:
116
+ m[k] = val
117
+
118
+ return m
119
+
120
+
121
+ StockScreenerRequestTypedDict = TypeAliasType(
122
+ "StockScreenerRequestTypedDict",
123
+ Union[StockScreenerRequest1TypedDict, StockScreenerRequest2TypedDict],
124
+ )
125
+ r"""Request body for POST /v1/stock/screener. At least one of clauses or groups must be non-empty."""
126
+
127
+
128
+ StockScreenerRequest = TypeAliasType(
129
+ "StockScreenerRequest", Union[StockScreenerRequest1, StockScreenerRequest2]
130
+ )
131
+ r"""Request body for POST /v1/stock/screener. At least one of clauses or groups must be non-empty."""
@@ -0,0 +1,197 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+ # @generated-id: bfc1ee05ecf0
3
+
4
+ from __future__ import annotations
5
+ from finance_dev.types import (
6
+ BaseModel,
7
+ Nullable,
8
+ OptionalNullable,
9
+ UNSET,
10
+ UNSET_SENTINEL,
11
+ )
12
+ from pydantic import model_serializer
13
+ from typing import List, Optional
14
+ from typing_extensions import NotRequired, TypedDict
15
+
16
+
17
+ class StockScreenerResponseDataTypedDict(TypedDict):
18
+ number_value: NotRequired[Nullable[float]]
19
+ tag: NotRequired[str]
20
+ r"""Data tag name (e.g. pricetoearnings, marketcap)"""
21
+ text_value: NotRequired[Nullable[str]]
22
+
23
+
24
+ class StockScreenerResponseData(BaseModel):
25
+ number_value: OptionalNullable[float] = UNSET
26
+
27
+ tag: Optional[str] = None
28
+ r"""Data tag name (e.g. pricetoearnings, marketcap)"""
29
+
30
+ text_value: OptionalNullable[str] = UNSET
31
+
32
+ @model_serializer(mode="wrap")
33
+ def serialize_model(self, handler):
34
+ optional_fields = set(["number_value", "tag", "text_value"])
35
+ nullable_fields = set(["number_value", "text_value"])
36
+ serialized = handler(self)
37
+ m = {}
38
+
39
+ for n, f in type(self).model_fields.items():
40
+ k = f.alias or n
41
+ val = serialized.get(k, serialized.get(n))
42
+ is_nullable_and_explicitly_set = (
43
+ k in nullable_fields
44
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
45
+ )
46
+
47
+ if val != UNSET_SENTINEL:
48
+ if (
49
+ val is not None
50
+ or k not in optional_fields
51
+ or is_nullable_and_explicitly_set
52
+ ):
53
+ m[k] = val
54
+
55
+ return m
56
+
57
+
58
+ class StockScreenerResponseSecurityTypedDict(TypedDict):
59
+ r"""Security identity and metadata"""
60
+
61
+ code: NotRequired[Nullable[str]]
62
+ company_id: NotRequired[Nullable[str]]
63
+ composite_figi: NotRequired[Nullable[str]]
64
+ composite_ticker: NotRequired[Nullable[str]]
65
+ currency: NotRequired[Nullable[str]]
66
+ exchange: NotRequired[Nullable[str]]
67
+ exchange_mic: NotRequired[Nullable[str]]
68
+ figi: NotRequired[Nullable[str]]
69
+ id: NotRequired[str]
70
+ r"""Security ID"""
71
+ name: NotRequired[Nullable[str]]
72
+ primary_listing: NotRequired[Nullable[bool]]
73
+ share_class_figi: NotRequired[Nullable[str]]
74
+ stock_exchange_id: NotRequired[Nullable[str]]
75
+ ticker: NotRequired[Nullable[str]]
76
+
77
+
78
+ class StockScreenerResponseSecurity(BaseModel):
79
+ r"""Security identity and metadata"""
80
+
81
+ code: OptionalNullable[str] = UNSET
82
+
83
+ company_id: OptionalNullable[str] = UNSET
84
+
85
+ composite_figi: OptionalNullable[str] = UNSET
86
+
87
+ composite_ticker: OptionalNullable[str] = UNSET
88
+
89
+ currency: OptionalNullable[str] = UNSET
90
+
91
+ exchange: OptionalNullable[str] = UNSET
92
+
93
+ exchange_mic: OptionalNullable[str] = UNSET
94
+
95
+ figi: OptionalNullable[str] = UNSET
96
+
97
+ id: Optional[str] = None
98
+ r"""Security ID"""
99
+
100
+ name: OptionalNullable[str] = UNSET
101
+
102
+ primary_listing: OptionalNullable[bool] = UNSET
103
+
104
+ share_class_figi: OptionalNullable[str] = UNSET
105
+
106
+ stock_exchange_id: OptionalNullable[str] = UNSET
107
+
108
+ ticker: OptionalNullable[str] = UNSET
109
+
110
+ @model_serializer(mode="wrap")
111
+ def serialize_model(self, handler):
112
+ optional_fields = set(
113
+ [
114
+ "code",
115
+ "company_id",
116
+ "composite_figi",
117
+ "composite_ticker",
118
+ "currency",
119
+ "exchange",
120
+ "exchange_mic",
121
+ "figi",
122
+ "id",
123
+ "name",
124
+ "primary_listing",
125
+ "share_class_figi",
126
+ "stock_exchange_id",
127
+ "ticker",
128
+ ]
129
+ )
130
+ nullable_fields = set(
131
+ [
132
+ "code",
133
+ "company_id",
134
+ "composite_figi",
135
+ "composite_ticker",
136
+ "currency",
137
+ "exchange",
138
+ "exchange_mic",
139
+ "figi",
140
+ "name",
141
+ "primary_listing",
142
+ "share_class_figi",
143
+ "stock_exchange_id",
144
+ "ticker",
145
+ ]
146
+ )
147
+ serialized = handler(self)
148
+ m = {}
149
+
150
+ for n, f in type(self).model_fields.items():
151
+ k = f.alias or n
152
+ val = serialized.get(k, serialized.get(n))
153
+ is_nullable_and_explicitly_set = (
154
+ k in nullable_fields
155
+ and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
156
+ )
157
+
158
+ if val != UNSET_SENTINEL:
159
+ if (
160
+ val is not None
161
+ or k not in optional_fields
162
+ or is_nullable_and_explicitly_set
163
+ ):
164
+ m[k] = val
165
+
166
+ return m
167
+
168
+
169
+ class StockScreenerResponseTypedDict(TypedDict):
170
+ data: NotRequired[List[StockScreenerResponseDataTypedDict]]
171
+ r"""Screened data-tag values (e.g. pricetoearnings, marketcap)"""
172
+ security: NotRequired[StockScreenerResponseSecurityTypedDict]
173
+ r"""Security identity and metadata"""
174
+
175
+
176
+ class StockScreenerResponse(BaseModel):
177
+ data: Optional[List[StockScreenerResponseData]] = None
178
+ r"""Screened data-tag values (e.g. pricetoearnings, marketcap)"""
179
+
180
+ security: Optional[StockScreenerResponseSecurity] = None
181
+ r"""Security identity and metadata"""
182
+
183
+ @model_serializer(mode="wrap")
184
+ def serialize_model(self, handler):
185
+ optional_fields = set(["data", "security"])
186
+ serialized = handler(self)
187
+ m = {}
188
+
189
+ for n, f in type(self).model_fields.items():
190
+ k = f.alias or n
191
+ val = serialized.get(k, serialized.get(n))
192
+
193
+ if val != UNSET_SENTINEL:
194
+ if val is not None or k not in optional_fields:
195
+ m[k] = val
196
+
197
+ return m