ccxt 4.2.77__py2.py3-none-any.whl → 4.4.48__py2.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 (546) hide show
  1. ccxt/__init__.py +36 -14
  2. ccxt/abstract/alpaca.py +4 -0
  3. ccxt/abstract/bigone.py +1 -1
  4. ccxt/abstract/binance.py +112 -48
  5. ccxt/abstract/binancecoinm.py +112 -48
  6. ccxt/abstract/binanceus.py +147 -83
  7. ccxt/abstract/binanceusdm.py +112 -48
  8. ccxt/abstract/bingx.py +133 -78
  9. ccxt/abstract/bitbank.py +5 -0
  10. ccxt/abstract/bitfinex.py +136 -65
  11. ccxt/abstract/bitfinex1.py +69 -0
  12. ccxt/abstract/bitflyer.py +1 -0
  13. ccxt/abstract/bitget.py +8 -1
  14. ccxt/abstract/bitmart.py +13 -1
  15. ccxt/abstract/bitopro.py +1 -0
  16. ccxt/abstract/bitpanda.py +0 -12
  17. ccxt/abstract/bitrue.py +3 -3
  18. ccxt/abstract/bitstamp.py +26 -3
  19. ccxt/abstract/blofin.py +24 -0
  20. ccxt/abstract/btcbox.py +1 -0
  21. ccxt/abstract/bybit.py +29 -14
  22. ccxt/abstract/cex.py +28 -29
  23. ccxt/abstract/coinbase.py +6 -0
  24. ccxt/abstract/coinbaseadvanced.py +94 -0
  25. ccxt/abstract/{coinbasepro.py → coinbaseexchange.py} +1 -0
  26. ccxt/abstract/coinbaseinternational.py +1 -1
  27. ccxt/abstract/coincatch.py +94 -0
  28. ccxt/abstract/coinex.py +233 -123
  29. ccxt/abstract/coinmetro.py +1 -0
  30. ccxt/abstract/cryptocom.py +14 -0
  31. ccxt/abstract/defx.py +69 -0
  32. ccxt/abstract/deribit.py +1 -0
  33. ccxt/abstract/digifinex.py +1 -0
  34. ccxt/abstract/ellipx.py +25 -0
  35. ccxt/abstract/gate.py +20 -0
  36. ccxt/abstract/gateio.py +20 -0
  37. ccxt/abstract/gemini.py +1 -0
  38. ccxt/abstract/hashkey.py +67 -0
  39. ccxt/abstract/hyperliquid.py +1 -1
  40. ccxt/abstract/independentreserve.py +6 -0
  41. ccxt/abstract/kraken.py +4 -3
  42. ccxt/abstract/krakenfutures.py +4 -0
  43. ccxt/abstract/kucoin.py +24 -0
  44. ccxt/abstract/kucoinfutures.py +34 -0
  45. ccxt/abstract/luno.py +2 -0
  46. ccxt/abstract/mexc.py +4 -0
  47. ccxt/abstract/myokx.py +340 -0
  48. ccxt/abstract/oceanex.py +5 -0
  49. ccxt/abstract/okx.py +30 -0
  50. ccxt/abstract/onetrading.py +0 -12
  51. ccxt/abstract/oxfun.py +34 -0
  52. ccxt/abstract/paradex.py +40 -0
  53. ccxt/abstract/phemex.py +1 -0
  54. ccxt/abstract/upbit.py +4 -0
  55. ccxt/abstract/vertex.py +19 -0
  56. ccxt/abstract/whitebit.py +31 -1
  57. ccxt/abstract/woo.py +6 -2
  58. ccxt/abstract/woofipro.py +119 -0
  59. ccxt/abstract/xt.py +153 -0
  60. ccxt/abstract/zonda.py +6 -0
  61. ccxt/ace.py +164 -60
  62. ccxt/alpaca.py +727 -63
  63. ccxt/ascendex.py +395 -249
  64. ccxt/async_support/__init__.py +36 -14
  65. ccxt/async_support/ace.py +164 -60
  66. ccxt/async_support/alpaca.py +727 -63
  67. ccxt/async_support/ascendex.py +396 -249
  68. ccxt/async_support/base/exchange.py +531 -155
  69. ccxt/async_support/base/ws/aiohttp_client.py +28 -5
  70. ccxt/async_support/base/ws/cache.py +3 -2
  71. ccxt/async_support/base/ws/client.py +26 -5
  72. ccxt/async_support/base/ws/fast_client.py +4 -3
  73. ccxt/async_support/base/ws/functions.py +1 -1
  74. ccxt/async_support/base/ws/future.py +40 -31
  75. ccxt/async_support/base/ws/order_book_side.py +3 -0
  76. ccxt/async_support/bequant.py +1 -1
  77. ccxt/async_support/bigone.py +329 -202
  78. ccxt/async_support/binance.py +3030 -1087
  79. ccxt/async_support/binancecoinm.py +2 -1
  80. ccxt/async_support/binanceus.py +12 -1
  81. ccxt/async_support/binanceusdm.py +3 -1
  82. ccxt/async_support/bingx.py +3104 -880
  83. ccxt/async_support/bit2c.py +119 -38
  84. ccxt/async_support/bitbank.py +215 -76
  85. ccxt/async_support/bitbns.py +124 -53
  86. ccxt/async_support/bitfinex.py +3236 -1078
  87. ccxt/async_support/bitfinex1.py +1711 -0
  88. ccxt/async_support/bitflyer.py +238 -49
  89. ccxt/async_support/bitget.py +1513 -563
  90. ccxt/async_support/bithumb.py +199 -65
  91. ccxt/async_support/bitmart.py +1320 -435
  92. ccxt/async_support/bitmex.py +308 -111
  93. ccxt/async_support/bitopro.py +256 -96
  94. ccxt/async_support/bitrue.py +365 -233
  95. ccxt/async_support/bitso.py +201 -89
  96. ccxt/async_support/bitstamp.py +438 -269
  97. ccxt/async_support/bitteam.py +179 -73
  98. ccxt/async_support/bitvavo.py +180 -70
  99. ccxt/async_support/bl3p.py +92 -25
  100. ccxt/async_support/blockchaincom.py +193 -79
  101. ccxt/async_support/blofin.py +392 -148
  102. ccxt/async_support/btcalpha.py +161 -55
  103. ccxt/async_support/btcbox.py +250 -34
  104. ccxt/async_support/btcmarkets.py +232 -85
  105. ccxt/async_support/btcturk.py +159 -60
  106. ccxt/async_support/bybit.py +2231 -1193
  107. ccxt/async_support/cex.py +1409 -1329
  108. ccxt/async_support/coinbase.py +1454 -287
  109. ccxt/async_support/coinbaseadvanced.py +17 -0
  110. ccxt/async_support/{coinbasepro.py → coinbaseexchange.py} +233 -99
  111. ccxt/async_support/coinbaseinternational.py +428 -88
  112. ccxt/async_support/coincatch.py +5152 -0
  113. ccxt/async_support/coincheck.py +121 -38
  114. ccxt/async_support/coinex.py +4020 -3339
  115. ccxt/async_support/coinlist.py +273 -116
  116. ccxt/async_support/coinmate.py +204 -97
  117. ccxt/async_support/coinmetro.py +203 -110
  118. ccxt/async_support/coinone.py +142 -68
  119. ccxt/async_support/coinsph.py +206 -89
  120. ccxt/async_support/coinspot.py +137 -62
  121. ccxt/async_support/cryptocom.py +515 -185
  122. ccxt/async_support/currencycom.py +203 -85
  123. ccxt/async_support/defx.py +2066 -0
  124. ccxt/async_support/delta.py +404 -109
  125. ccxt/async_support/deribit.py +557 -323
  126. ccxt/async_support/digifinex.py +340 -223
  127. ccxt/async_support/ellipx.py +1826 -0
  128. ccxt/async_support/exmo.py +259 -128
  129. ccxt/async_support/gate.py +1472 -463
  130. ccxt/async_support/gemini.py +206 -84
  131. ccxt/async_support/hashkey.py +4164 -0
  132. ccxt/async_support/hitbtc.py +334 -178
  133. ccxt/async_support/hollaex.py +134 -83
  134. ccxt/async_support/htx.py +1095 -563
  135. ccxt/async_support/huobijp.py +105 -56
  136. ccxt/async_support/hyperliquid.py +1633 -268
  137. ccxt/async_support/idex.py +148 -95
  138. ccxt/async_support/independentreserve.py +236 -31
  139. ccxt/async_support/indodax.py +165 -62
  140. ccxt/async_support/kraken.py +871 -354
  141. ccxt/async_support/krakenfutures.py +324 -100
  142. ccxt/async_support/kucoin.py +917 -357
  143. ccxt/async_support/kucoinfutures.py +1004 -149
  144. ccxt/async_support/kuna.py +138 -106
  145. ccxt/async_support/latoken.py +135 -79
  146. ccxt/async_support/lbank.py +290 -113
  147. ccxt/async_support/luno.py +112 -62
  148. ccxt/async_support/lykke.py +104 -55
  149. ccxt/async_support/mercado.py +36 -29
  150. ccxt/async_support/mexc.py +995 -429
  151. ccxt/async_support/myokx.py +43 -0
  152. ccxt/async_support/ndax.py +163 -82
  153. ccxt/async_support/novadax.py +121 -75
  154. ccxt/async_support/oceanex.py +175 -59
  155. ccxt/async_support/okcoin.py +222 -163
  156. ccxt/async_support/okx.py +1776 -454
  157. ccxt/async_support/onetrading.py +132 -414
  158. ccxt/async_support/oxfun.py +2832 -0
  159. ccxt/async_support/p2b.py +79 -51
  160. ccxt/async_support/paradex.py +2017 -0
  161. ccxt/async_support/paymium.py +56 -32
  162. ccxt/async_support/phemex.py +572 -196
  163. ccxt/async_support/poloniex.py +218 -95
  164. ccxt/async_support/poloniexfutures.py +260 -92
  165. ccxt/async_support/probit.py +143 -110
  166. ccxt/async_support/timex.py +123 -70
  167. ccxt/async_support/tokocrypto.py +129 -93
  168. ccxt/async_support/tradeogre.py +39 -25
  169. ccxt/async_support/upbit.py +322 -113
  170. ccxt/async_support/vertex.py +2983 -0
  171. ccxt/async_support/wavesexchange.py +227 -173
  172. ccxt/async_support/wazirx.py +145 -65
  173. ccxt/async_support/whitebit.py +533 -138
  174. ccxt/async_support/woo.py +1137 -296
  175. ccxt/async_support/woofipro.py +2716 -0
  176. ccxt/async_support/xt.py +4628 -0
  177. ccxt/async_support/yobit.py +160 -92
  178. ccxt/async_support/zaif.py +80 -33
  179. ccxt/async_support/zonda.py +140 -69
  180. ccxt/base/errors.py +51 -20
  181. ccxt/base/exchange.py +1722 -480
  182. ccxt/base/precise.py +10 -0
  183. ccxt/base/types.py +223 -4
  184. ccxt/bequant.py +1 -1
  185. ccxt/bigone.py +329 -202
  186. ccxt/binance.py +3030 -1087
  187. ccxt/binancecoinm.py +2 -1
  188. ccxt/binanceus.py +12 -1
  189. ccxt/binanceusdm.py +3 -1
  190. ccxt/bingx.py +3104 -880
  191. ccxt/bit2c.py +119 -38
  192. ccxt/bitbank.py +215 -76
  193. ccxt/bitbns.py +124 -53
  194. ccxt/bitfinex.py +3235 -1078
  195. ccxt/bitfinex1.py +1710 -0
  196. ccxt/bitflyer.py +238 -49
  197. ccxt/bitget.py +1513 -563
  198. ccxt/bithumb.py +198 -65
  199. ccxt/bitmart.py +1320 -435
  200. ccxt/bitmex.py +308 -111
  201. ccxt/bitopro.py +256 -96
  202. ccxt/bitrue.py +365 -233
  203. ccxt/bitso.py +201 -89
  204. ccxt/bitstamp.py +438 -269
  205. ccxt/bitteam.py +179 -73
  206. ccxt/bitvavo.py +180 -70
  207. ccxt/bl3p.py +92 -25
  208. ccxt/blockchaincom.py +193 -79
  209. ccxt/blofin.py +392 -148
  210. ccxt/btcalpha.py +161 -55
  211. ccxt/btcbox.py +250 -34
  212. ccxt/btcmarkets.py +232 -85
  213. ccxt/btcturk.py +159 -60
  214. ccxt/bybit.py +2231 -1193
  215. ccxt/cex.py +1408 -1329
  216. ccxt/coinbase.py +1454 -287
  217. ccxt/coinbaseadvanced.py +17 -0
  218. ccxt/{coinbasepro.py → coinbaseexchange.py} +233 -99
  219. ccxt/coinbaseinternational.py +428 -88
  220. ccxt/coincatch.py +5152 -0
  221. ccxt/coincheck.py +121 -38
  222. ccxt/coinex.py +4020 -3339
  223. ccxt/coinlist.py +273 -116
  224. ccxt/coinmate.py +204 -97
  225. ccxt/coinmetro.py +203 -110
  226. ccxt/coinone.py +142 -68
  227. ccxt/coinsph.py +206 -89
  228. ccxt/coinspot.py +137 -62
  229. ccxt/cryptocom.py +515 -185
  230. ccxt/currencycom.py +203 -85
  231. ccxt/defx.py +2065 -0
  232. ccxt/delta.py +404 -109
  233. ccxt/deribit.py +557 -323
  234. ccxt/digifinex.py +340 -223
  235. ccxt/ellipx.py +1826 -0
  236. ccxt/exmo.py +259 -128
  237. ccxt/gate.py +1472 -463
  238. ccxt/gemini.py +206 -84
  239. ccxt/hashkey.py +4164 -0
  240. ccxt/hitbtc.py +334 -178
  241. ccxt/hollaex.py +134 -83
  242. ccxt/htx.py +1095 -563
  243. ccxt/huobijp.py +105 -56
  244. ccxt/hyperliquid.py +1632 -268
  245. ccxt/idex.py +148 -95
  246. ccxt/independentreserve.py +235 -31
  247. ccxt/indodax.py +165 -62
  248. ccxt/kraken.py +871 -354
  249. ccxt/krakenfutures.py +324 -100
  250. ccxt/kucoin.py +917 -357
  251. ccxt/kucoinfutures.py +1004 -149
  252. ccxt/kuna.py +138 -106
  253. ccxt/latoken.py +135 -79
  254. ccxt/lbank.py +290 -113
  255. ccxt/luno.py +112 -62
  256. ccxt/lykke.py +104 -55
  257. ccxt/mercado.py +36 -29
  258. ccxt/mexc.py +994 -429
  259. ccxt/myokx.py +43 -0
  260. ccxt/ndax.py +163 -82
  261. ccxt/novadax.py +121 -75
  262. ccxt/oceanex.py +175 -59
  263. ccxt/okcoin.py +222 -163
  264. ccxt/okx.py +1776 -454
  265. ccxt/onetrading.py +132 -414
  266. ccxt/oxfun.py +2831 -0
  267. ccxt/p2b.py +79 -51
  268. ccxt/paradex.py +2017 -0
  269. ccxt/paymium.py +56 -32
  270. ccxt/phemex.py +572 -196
  271. ccxt/poloniex.py +218 -95
  272. ccxt/poloniexfutures.py +260 -92
  273. ccxt/pro/__init__.py +29 -5
  274. ccxt/pro/alpaca.py +32 -17
  275. ccxt/pro/ascendex.py +62 -14
  276. ccxt/pro/bequant.py +4 -0
  277. ccxt/pro/binance.py +1596 -329
  278. ccxt/pro/binancecoinm.py +1 -0
  279. ccxt/pro/binanceus.py +2 -9
  280. ccxt/pro/binanceusdm.py +2 -0
  281. ccxt/pro/bingx.py +527 -134
  282. ccxt/pro/bitcoincom.py +4 -1
  283. ccxt/pro/bitfinex.py +731 -266
  284. ccxt/pro/bitfinex1.py +635 -0
  285. ccxt/pro/bitget.py +726 -357
  286. ccxt/pro/bithumb.py +380 -0
  287. ccxt/pro/bitmart.py +138 -39
  288. ccxt/pro/bitmex.py +199 -40
  289. ccxt/pro/bitopro.py +25 -13
  290. ccxt/pro/bitrue.py +31 -32
  291. ccxt/pro/bitstamp.py +7 -6
  292. ccxt/pro/bitvavo.py +203 -81
  293. ccxt/pro/blockchaincom.py +30 -17
  294. ccxt/pro/blofin.py +692 -0
  295. ccxt/pro/bybit.py +791 -82
  296. ccxt/pro/cex.py +99 -51
  297. ccxt/pro/coinbase.py +220 -30
  298. ccxt/{async_support/hitbtc3.py → pro/coinbaseadvanced.py} +5 -5
  299. ccxt/pro/{coinbasepro.py → coinbaseexchange.py} +19 -19
  300. ccxt/pro/coinbaseinternational.py +193 -30
  301. ccxt/pro/coincatch.py +1464 -0
  302. ccxt/pro/coincheck.py +11 -6
  303. ccxt/pro/coinex.py +965 -665
  304. ccxt/pro/coinone.py +17 -10
  305. ccxt/pro/cryptocom.py +446 -66
  306. ccxt/pro/currencycom.py +11 -10
  307. ccxt/pro/defx.py +832 -0
  308. ccxt/pro/deribit.py +167 -31
  309. ccxt/pro/exmo.py +252 -20
  310. ccxt/pro/gate.py +729 -64
  311. ccxt/pro/gemini.py +44 -26
  312. ccxt/pro/hashkey.py +802 -0
  313. ccxt/pro/hitbtc.py +208 -103
  314. ccxt/pro/hollaex.py +25 -9
  315. ccxt/pro/htx.py +83 -39
  316. ccxt/pro/huobijp.py +17 -16
  317. ccxt/pro/hyperliquid.py +502 -31
  318. ccxt/pro/idex.py +28 -13
  319. ccxt/pro/independentreserve.py +21 -16
  320. ccxt/pro/kraken.py +298 -51
  321. ccxt/pro/krakenfutures.py +166 -75
  322. ccxt/pro/kucoin.py +395 -77
  323. ccxt/pro/kucoinfutures.py +400 -99
  324. ccxt/pro/lbank.py +52 -31
  325. ccxt/pro/luno.py +12 -10
  326. ccxt/pro/mexc.py +400 -50
  327. ccxt/pro/myokx.py +28 -0
  328. ccxt/pro/ndax.py +25 -12
  329. ccxt/pro/okcoin.py +28 -9
  330. ccxt/pro/okx.py +935 -124
  331. ccxt/pro/onetrading.py +41 -24
  332. ccxt/pro/oxfun.py +1054 -0
  333. ccxt/pro/p2b.py +100 -24
  334. ccxt/pro/paradex.py +352 -0
  335. ccxt/pro/phemex.py +92 -33
  336. ccxt/pro/poloniex.py +128 -49
  337. ccxt/pro/poloniexfutures.py +53 -32
  338. ccxt/pro/probit.py +92 -85
  339. ccxt/pro/upbit.py +401 -8
  340. ccxt/pro/vertex.py +943 -0
  341. ccxt/pro/wazirx.py +46 -28
  342. ccxt/pro/whitebit.py +65 -12
  343. ccxt/pro/woo.py +437 -65
  344. ccxt/pro/woofipro.py +1271 -0
  345. ccxt/pro/xt.py +1067 -0
  346. ccxt/probit.py +143 -110
  347. ccxt/static_dependencies/__init__.py +1 -1
  348. ccxt/static_dependencies/lark/__init__.py +38 -0
  349. ccxt/static_dependencies/lark/__pyinstaller/__init__.py +6 -0
  350. ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +14 -0
  351. ccxt/static_dependencies/lark/ast_utils.py +59 -0
  352. ccxt/static_dependencies/lark/common.py +86 -0
  353. ccxt/static_dependencies/lark/exceptions.py +292 -0
  354. ccxt/static_dependencies/lark/grammar.py +130 -0
  355. ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  356. ccxt/static_dependencies/lark/indenter.py +143 -0
  357. ccxt/static_dependencies/lark/lark.py +658 -0
  358. ccxt/static_dependencies/lark/lexer.py +678 -0
  359. ccxt/static_dependencies/lark/load_grammar.py +1428 -0
  360. ccxt/static_dependencies/lark/parse_tree_builder.py +391 -0
  361. ccxt/static_dependencies/lark/parser_frontends.py +257 -0
  362. ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  363. ccxt/static_dependencies/lark/parsers/cyk.py +340 -0
  364. ccxt/static_dependencies/lark/parsers/earley.py +314 -0
  365. ccxt/static_dependencies/lark/parsers/earley_common.py +42 -0
  366. ccxt/static_dependencies/lark/parsers/earley_forest.py +801 -0
  367. ccxt/static_dependencies/lark/parsers/grammar_analysis.py +203 -0
  368. ccxt/static_dependencies/lark/parsers/lalr_analysis.py +332 -0
  369. ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +158 -0
  370. ccxt/static_dependencies/lark/parsers/lalr_parser.py +122 -0
  371. ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +110 -0
  372. ccxt/static_dependencies/lark/parsers/xearley.py +165 -0
  373. ccxt/static_dependencies/lark/py.typed +0 -0
  374. ccxt/static_dependencies/lark/reconstruct.py +107 -0
  375. ccxt/static_dependencies/lark/tools/__init__.py +70 -0
  376. ccxt/static_dependencies/lark/tools/nearley.py +202 -0
  377. ccxt/static_dependencies/lark/tools/serialize.py +32 -0
  378. ccxt/static_dependencies/lark/tools/standalone.py +196 -0
  379. ccxt/static_dependencies/lark/tree.py +267 -0
  380. ccxt/static_dependencies/lark/tree_matcher.py +186 -0
  381. ccxt/static_dependencies/lark/tree_templates.py +180 -0
  382. ccxt/static_dependencies/lark/utils.py +343 -0
  383. ccxt/static_dependencies/lark/visitors.py +596 -0
  384. ccxt/static_dependencies/marshmallow/__init__.py +81 -0
  385. ccxt/static_dependencies/marshmallow/base.py +65 -0
  386. ccxt/static_dependencies/marshmallow/class_registry.py +94 -0
  387. ccxt/static_dependencies/marshmallow/decorators.py +231 -0
  388. ccxt/static_dependencies/marshmallow/error_store.py +60 -0
  389. ccxt/static_dependencies/marshmallow/exceptions.py +71 -0
  390. ccxt/static_dependencies/marshmallow/fields.py +2114 -0
  391. ccxt/static_dependencies/marshmallow/orderedset.py +89 -0
  392. ccxt/static_dependencies/marshmallow/py.typed +0 -0
  393. ccxt/static_dependencies/marshmallow/schema.py +1228 -0
  394. ccxt/static_dependencies/marshmallow/types.py +12 -0
  395. ccxt/static_dependencies/marshmallow/utils.py +378 -0
  396. ccxt/static_dependencies/marshmallow/validate.py +678 -0
  397. ccxt/static_dependencies/marshmallow/warnings.py +2 -0
  398. ccxt/static_dependencies/marshmallow_dataclass/__init__.py +1047 -0
  399. ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +51 -0
  400. ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +45 -0
  401. ccxt/static_dependencies/marshmallow_dataclass/mypy.py +71 -0
  402. ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  403. ccxt/static_dependencies/marshmallow_dataclass/typing.py +14 -0
  404. ccxt/static_dependencies/marshmallow_dataclass/union_field.py +82 -0
  405. ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +1 -0
  406. ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +193 -0
  407. ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  408. ccxt/static_dependencies/starknet/__init__.py +0 -0
  409. ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  410. ccxt/static_dependencies/starknet/cairo/data_types.py +123 -0
  411. ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  412. ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +77 -0
  413. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +46 -0
  414. ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +138 -0
  415. ccxt/static_dependencies/starknet/cairo/felt.py +64 -0
  416. ccxt/static_dependencies/starknet/cairo/type_parser.py +121 -0
  417. ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  418. ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +59 -0
  419. ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  420. ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +77 -0
  421. ccxt/static_dependencies/starknet/ccxt_utils.py +7 -0
  422. ccxt/static_dependencies/starknet/common.py +15 -0
  423. ccxt/static_dependencies/starknet/constants.py +39 -0
  424. ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  425. ccxt/static_dependencies/starknet/hash/address.py +79 -0
  426. ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +111 -0
  427. ccxt/static_dependencies/starknet/hash/selector.py +16 -0
  428. ccxt/static_dependencies/starknet/hash/storage.py +12 -0
  429. ccxt/static_dependencies/starknet/hash/utils.py +78 -0
  430. ccxt/static_dependencies/starknet/models/__init__.py +0 -0
  431. ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
  432. ccxt/static_dependencies/starknet/serialization/__init__.py +24 -0
  433. ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +40 -0
  434. ccxt/static_dependencies/starknet/serialization/_context.py +142 -0
  435. ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +10 -0
  436. ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +82 -0
  437. ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +43 -0
  438. ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +37 -0
  439. ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +66 -0
  440. ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +71 -0
  441. ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +71 -0
  442. ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +50 -0
  443. ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +58 -0
  444. ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +43 -0
  445. ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +40 -0
  446. ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +72 -0
  447. ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +36 -0
  448. ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +36 -0
  449. ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +76 -0
  450. ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +100 -0
  451. ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +32 -0
  452. ccxt/static_dependencies/starknet/serialization/errors.py +10 -0
  453. ccxt/static_dependencies/starknet/serialization/factory.py +229 -0
  454. ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +110 -0
  455. ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +59 -0
  456. ccxt/static_dependencies/starknet/utils/__init__.py +0 -0
  457. ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +86 -0
  458. ccxt/static_dependencies/starknet/utils/iterable.py +13 -0
  459. ccxt/static_dependencies/starknet/utils/schema.py +13 -0
  460. ccxt/static_dependencies/starknet/utils/typed_data.py +182 -0
  461. ccxt/static_dependencies/starkware/__init__.py +0 -0
  462. ccxt/static_dependencies/starkware/crypto/__init__.py +0 -0
  463. ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
  464. ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
  465. ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
  466. ccxt/static_dependencies/starkware/crypto/utils.py +63 -0
  467. ccxt/static_dependencies/sympy/__init__.py +0 -0
  468. ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  469. ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
  470. ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  471. ccxt/static_dependencies/sympy/external/gmpy.py +345 -0
  472. ccxt/static_dependencies/sympy/external/importtools.py +187 -0
  473. ccxt/static_dependencies/sympy/external/ntheory.py +637 -0
  474. ccxt/static_dependencies/sympy/external/pythonmpq.py +341 -0
  475. ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  476. ccxt/static_dependencies/typing_inspect/typing_inspect.py +851 -0
  477. ccxt/test/{test_async.py → tests_async.py} +456 -391
  478. ccxt/test/tests_helpers.py +285 -0
  479. ccxt/test/tests_init.py +39 -0
  480. ccxt/test/{test_sync.py → tests_sync.py} +456 -393
  481. ccxt/timex.py +123 -70
  482. ccxt/tokocrypto.py +129 -93
  483. ccxt/tradeogre.py +39 -25
  484. ccxt/upbit.py +322 -113
  485. ccxt/vertex.py +2983 -0
  486. ccxt/wavesexchange.py +227 -173
  487. ccxt/wazirx.py +145 -65
  488. ccxt/whitebit.py +533 -138
  489. ccxt/woo.py +1137 -296
  490. ccxt/woofipro.py +2716 -0
  491. ccxt/xt.py +4627 -0
  492. ccxt/yobit.py +159 -92
  493. ccxt/zaif.py +80 -33
  494. ccxt/zonda.py +140 -69
  495. ccxt-4.4.48.dist-info/LICENSE.txt +21 -0
  496. ccxt-4.4.48.dist-info/METADATA +646 -0
  497. ccxt-4.4.48.dist-info/RECORD +669 -0
  498. {ccxt-4.2.77.dist-info → ccxt-4.4.48.dist-info}/WHEEL +1 -1
  499. ccxt/abstract/bitbay.py +0 -47
  500. ccxt/abstract/bitfinex2.py +0 -139
  501. ccxt/abstract/hitbtc3.py +0 -115
  502. ccxt/async_support/bitbay.py +0 -17
  503. ccxt/async_support/bitfinex2.py +0 -3496
  504. ccxt/async_support/flowbtc.py +0 -34
  505. ccxt/bitbay.py +0 -17
  506. ccxt/bitfinex2.py +0 -3496
  507. ccxt/flowbtc.py +0 -34
  508. ccxt/hitbtc3.py +0 -16
  509. ccxt/pro/bitfinex2.py +0 -1081
  510. ccxt/test/base/__init__.py +0 -28
  511. ccxt/test/base/test_account.py +0 -26
  512. ccxt/test/base/test_balance.py +0 -56
  513. ccxt/test/base/test_borrow_interest.py +0 -35
  514. ccxt/test/base/test_borrow_rate.py +0 -32
  515. ccxt/test/base/test_calculate_fee.py +0 -51
  516. ccxt/test/base/test_crypto.py +0 -127
  517. ccxt/test/base/test_currency.py +0 -76
  518. ccxt/test/base/test_datetime.py +0 -103
  519. ccxt/test/base/test_decimal_to_precision.py +0 -392
  520. ccxt/test/base/test_deep_extend.py +0 -68
  521. ccxt/test/base/test_deposit_withdrawal.py +0 -50
  522. ccxt/test/base/test_exchange_datetime_functions.py +0 -76
  523. ccxt/test/base/test_funding_rate_history.py +0 -29
  524. ccxt/test/base/test_last_price.py +0 -32
  525. ccxt/test/base/test_ledger_entry.py +0 -45
  526. ccxt/test/base/test_ledger_item.py +0 -48
  527. ccxt/test/base/test_leverage_tier.py +0 -33
  528. ccxt/test/base/test_margin_mode.py +0 -24
  529. ccxt/test/base/test_margin_modification.py +0 -35
  530. ccxt/test/base/test_market.py +0 -190
  531. ccxt/test/base/test_number.py +0 -411
  532. ccxt/test/base/test_ohlcv.py +0 -32
  533. ccxt/test/base/test_open_interest.py +0 -32
  534. ccxt/test/base/test_order.py +0 -64
  535. ccxt/test/base/test_order_book.py +0 -63
  536. ccxt/test/base/test_position.py +0 -60
  537. ccxt/test/base/test_shared_methods.py +0 -345
  538. ccxt/test/base/test_status.py +0 -24
  539. ccxt/test/base/test_throttle.py +0 -126
  540. ccxt/test/base/test_ticker.py +0 -86
  541. ccxt/test/base/test_trade.py +0 -47
  542. ccxt/test/base/test_trading_fee.py +0 -26
  543. ccxt/test/base/test_transaction.py +0 -39
  544. ccxt-4.2.77.dist-info/METADATA +0 -626
  545. ccxt-4.2.77.dist-info/RECORD +0 -534
  546. {ccxt-4.2.77.dist-info → ccxt-4.4.48.dist-info}/top_level.txt +0 -0
ccxt/pro/cex.py CHANGED
@@ -25,6 +25,7 @@ class cex(ccxt.async_support.cex):
25
25
  'watchTicker': True,
26
26
  'watchTickers': True,
27
27
  'watchTrades': True,
28
+ 'watchTradesForSymbols': False,
28
29
  'watchMyTrades': True,
29
30
  'watchOrders': True,
30
31
  'watchOrderBook': True,
@@ -61,14 +62,16 @@ class cex(ccxt.async_support.cex):
61
62
  async def watch_balance(self, params={}) -> Balances:
62
63
  """
63
64
  watch balance and get the amount of funds available for trading or funds locked in orders
64
- :see: https://cex.io/websocket-api#get-balance
65
+
66
+ https://cex.io/websocket-api#get-balance
67
+
65
68
  :param dict [params]: extra parameters specific to the exchange API endpoint
66
69
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
67
70
  """
68
71
  await self.authenticate(params)
69
72
  messageHash = self.request_id()
70
73
  url = self.urls['api']['ws']
71
- subscribe = {
74
+ subscribe: dict = {
72
75
  'e': 'get-balance',
73
76
  'data': {},
74
77
  'oid': self.request_id(),
@@ -100,7 +103,7 @@ class cex(ccxt.async_support.cex):
100
103
  data = self.safe_value(message, 'data', {})
101
104
  freeBalance = self.safe_value(data, 'balance', {})
102
105
  usedBalance = self.safe_value(data, 'obalance', {})
103
- result = {
106
+ result: dict = {
104
107
  'info': data,
105
108
  }
106
109
  currencyIds = list(freeBalance.keys())
@@ -118,7 +121,9 @@ class cex(ccxt.async_support.cex):
118
121
  async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
119
122
  """
120
123
  get the list of most recent trades for a particular symbol. Note: can only watch one symbol at a time.
121
- :see: https://cex.io/websocket-api#old-pair-room
124
+
125
+ https://cex.io/websocket-api#old-pair-room
126
+
122
127
  :param str symbol: unified symbol of the market to fetch trades for
123
128
  :param int [since]: timestamp in ms of the earliest trade to fetch
124
129
  :param int [limit]: the maximum amount of trades to fetch
@@ -131,6 +136,7 @@ class cex(ccxt.async_support.cex):
131
136
  url = self.urls['api']['ws']
132
137
  messageHash = 'trades'
133
138
  subscriptionHash = 'old:' + symbol
139
+ self.options['currentWatchTradeSymbol'] = symbol # exchange supports only 1 symbol for self watchTrades channel
134
140
  client = self.safe_value(self.clients, url)
135
141
  if client is not None:
136
142
  subscriptionKeys = list(client.subscriptions.keys())
@@ -141,7 +147,7 @@ class cex(ccxt.async_support.cex):
141
147
  subscriptionKey = subscriptionKey[0:3]
142
148
  if subscriptionKey == 'old':
143
149
  raise ExchangeError(self.id + ' watchTrades() only supports watching one symbol at a time.')
144
- message = {
150
+ message: dict = {
145
151
  'e': 'subscribe',
146
152
  'rooms': ['pair-' + market['base'] + '-' + market['quote']],
147
153
  }
@@ -157,17 +163,25 @@ class cex(ccxt.async_support.cex):
157
163
  # {
158
164
  # "e": "history",
159
165
  # "data": [
160
- # "sell:1665467367741:3888551:19058.8:14541219",
161
- # "buy:1665467367741:1059339:19071.5:14541218",
166
+ # 'buy:1710255706095:444444:71222.2:14892622'
167
+ # 'sell:1710255658251:42530:71300:14892621'
168
+ # 'buy:1710252424241:87913:72800:14892620'
169
+ # ... timestamp descending
162
170
  # ]
163
171
  # }
164
172
  #
165
- data = self.safe_value(message, 'data', [])
173
+ data = self.safe_list(message, 'data', [])
166
174
  limit = self.safe_integer(self.options, 'tradesLimit', 1000)
167
175
  stored = ArrayCache(limit)
168
- for i in range(0, len(data)):
169
- rawTrade = data[i]
170
- parsed = self.parse_ws_old_trade(rawTrade)
176
+ symbol = self.safe_string(self.options, 'currentWatchTradeSymbol')
177
+ if symbol is None:
178
+ return
179
+ market = self.market(symbol)
180
+ dataLength = len(data)
181
+ for i in range(0, dataLength):
182
+ index = dataLength - 1 - i
183
+ rawTrade = data[index]
184
+ parsed = self.parse_ws_old_trade(rawTrade, market)
171
185
  stored.append(parsed)
172
186
  messageHash = 'trades'
173
187
  self.trades = stored # trades don't have symbol
@@ -192,7 +206,7 @@ class cex(ccxt.async_support.cex):
192
206
  'id': id,
193
207
  'timestamp': timestamp,
194
208
  'datetime': self.iso8601(timestamp),
195
- 'symbol': None,
209
+ 'symbol': self.safe_string(market, 'symbol'),
196
210
  'type': None,
197
211
  'side': side,
198
212
  'order': None,
@@ -214,8 +228,10 @@ class cex(ccxt.async_support.cex):
214
228
  #
215
229
  data = self.safe_value(message, 'data', [])
216
230
  stored = self.trades # to do fix self, self.trades is not meant to be used like self
217
- for i in range(0, len(data)):
218
- rawTrade = data[i]
231
+ dataLength = len(data)
232
+ for i in range(0, dataLength):
233
+ index = dataLength - 1 - i
234
+ rawTrade = data[index]
219
235
  parsed = self.parse_ws_old_trade(rawTrade)
220
236
  stored.append(parsed)
221
237
  messageHash = 'trades'
@@ -224,7 +240,9 @@ class cex(ccxt.async_support.cex):
224
240
 
225
241
  async def watch_ticker(self, symbol: str, params={}) -> Ticker:
226
242
  """
227
- :see: https://cex.io/websocket-api#ticker-subscription
243
+
244
+ https://cex.io/websocket-api#ticker-subscription
245
+
228
246
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
229
247
  :param str symbol: unified symbol of the market to fetch the ticker for
230
248
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -259,7 +277,9 @@ class cex(ccxt.async_support.cex):
259
277
 
260
278
  async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
261
279
  """
262
- :see: https://cex.io/websocket-api#ticker-subscription
280
+
281
+ https://cex.io/websocket-api#ticker-subscription
282
+
263
283
  watches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
264
284
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
265
285
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -269,7 +289,7 @@ class cex(ccxt.async_support.cex):
269
289
  symbols = self.market_symbols(symbols)
270
290
  url = self.urls['api']['ws']
271
291
  messageHash = 'tickers'
272
- message = {
292
+ message: dict = {
273
293
  'e': 'subscribe',
274
294
  'rooms': [
275
295
  'tickers',
@@ -281,14 +301,16 @@ class cex(ccxt.async_support.cex):
281
301
  if symbols is not None and not self.in_array(tickerSymbol, symbols):
282
302
  return await self.watch_tickers(symbols, params)
283
303
  if self.newUpdates:
284
- result = {}
304
+ result: dict = {}
285
305
  result[tickerSymbol] = ticker
286
306
  return result
287
307
  return self.filter_by_array(self.tickers, 'symbol', symbols)
288
308
 
289
- async def fetch_ticker_ws(self, symbol: str, params={}):
309
+ async def fetch_ticker_ws(self, symbol: str, params={}) -> Ticker:
290
310
  """
291
- :see: https://docs.cex.io/#ws-api-ticker-deprecated
311
+
312
+ https://docs.cex.io/#ws-api-ticker-deprecated
313
+
292
314
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
293
315
  :param str symbol: unified symbol of the market to fetch the ticker for
294
316
  :param dict [params]: extra parameters specific to the cex api endpoint
@@ -321,12 +343,15 @@ class cex(ccxt.async_support.cex):
321
343
  data = self.safe_value(message, 'data', {})
322
344
  ticker = self.parse_ws_ticker(data)
323
345
  symbol = ticker['symbol']
346
+ if symbol is None:
347
+ return
324
348
  self.tickers[symbol] = ticker
325
349
  messageHash = 'ticker:' + symbol
326
350
  client.resolve(ticker, messageHash)
327
351
  client.resolve(ticker, 'tickers')
328
352
  messageHash = self.safe_string(message, 'oid')
329
- client.resolve(ticker, messageHash)
353
+ if messageHash is not None:
354
+ client.resolve(ticker, messageHash)
330
355
 
331
356
  def parse_ws_ticker(self, ticker, market=None):
332
357
  #
@@ -390,7 +415,9 @@ class cex(ccxt.async_support.cex):
390
415
 
391
416
  async def fetch_balance_ws(self, params={}) -> Balances:
392
417
  """
393
- :see: https://docs.cex.io/#ws-api-get-balance
418
+
419
+ https://docs.cex.io/#ws-api-get-balance
420
+
394
421
  query for balance and get the amount of funds available for trading or funds locked in orders
395
422
  :param dict [params]: extra parameters specific to the cex api endpoint
396
423
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
@@ -408,7 +435,9 @@ class cex(ccxt.async_support.cex):
408
435
  async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
409
436
  """
410
437
  get the list of orders associated with the user. Note: In CEX.IO system, orders can be present in trade engine or in archive database. There can be time periods(~2 seconds or more), when order is done/canceled, but still not moved to archive database. That means, you cannot see it using calls: archived-orders/open-orders.
411
- :see: https://docs.cex.io/#ws-api-open-orders
438
+
439
+ https://docs.cex.io/#ws-api-open-orders
440
+
412
441
  :param str symbol: unified symbol of the market to fetch trades for
413
442
  :param int [since]: timestamp in ms of the earliest trade to fetch
414
443
  :param int [limit]: the maximum amount of trades to fetch
@@ -423,7 +452,7 @@ class cex(ccxt.async_support.cex):
423
452
  market = self.market(symbol)
424
453
  symbol = market['symbol']
425
454
  messageHash = 'orders:' + symbol
426
- message = {
455
+ message: dict = {
427
456
  'e': 'open-orders',
428
457
  'data': {
429
458
  'pair': [
@@ -442,7 +471,9 @@ class cex(ccxt.async_support.cex):
442
471
  async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
443
472
  """
444
473
  get the list of trades associated with the user. Note: In CEX.IO system, orders can be present in trade engine or in archive database. There can be time periods(~2 seconds or more), when order is done/canceled, but still not moved to archive database. That means, you cannot see it using calls: archived-orders/open-orders.
445
- :see: https://docs.cex.io/#ws-api-open-orders
474
+
475
+ https://docs.cex.io/#ws-api-open-orders
476
+
446
477
  :param str symbol: unified symbol of the market to fetch trades for
447
478
  :param int [since]: timestamp in ms of the earliest trade to fetch
448
479
  :param int [limit]: the maximum amount of trades to fetch
@@ -457,7 +488,7 @@ class cex(ccxt.async_support.cex):
457
488
  market = self.market(symbol)
458
489
  messageHash = 'myTrades:' + market['symbol']
459
490
  subscriptionHash = 'orders:' + market['symbol']
460
- message = {
491
+ message: dict = {
461
492
  'e': 'open-orders',
462
493
  'data': {
463
494
  'pair': [
@@ -569,7 +600,7 @@ class cex(ccxt.async_support.cex):
569
600
  if side == 'sell':
570
601
  symbol = quote + '/' + base
571
602
  amount = Precise.string_div(amount, price) # due to rounding errors amount in not exact to trade
572
- parsedTrade = {
603
+ parsedTrade: dict = {
573
604
  'id': self.safe_string(trade, 'id'),
574
605
  'order': self.safe_string(trade, 'order'),
575
606
  'info': trade,
@@ -626,7 +657,7 @@ class cex(ccxt.async_support.cex):
626
657
  # }
627
658
  # }
628
659
  # }
629
- # fullfilledOrder
660
+ # fulfilledOrder
630
661
  # {
631
662
  # "e": "order",
632
663
  # "data": {
@@ -773,7 +804,7 @@ class cex(ccxt.async_support.cex):
773
804
  status = 'canceled'
774
805
  elif isTransaction:
775
806
  status = 'closed'
776
- parsedOrder = {
807
+ parsedOrder: dict = {
777
808
  'id': self.safe_string_2(order, 'id', 'order'),
778
809
  'clientOrderId': None,
779
810
  'info': order,
@@ -854,7 +885,9 @@ class cex(ccxt.async_support.cex):
854
885
  async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
855
886
  """
856
887
  watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
857
- :see: https://cex.io/websocket-api#orderbook-subscribe
888
+
889
+ https://cex.io/websocket-api#orderbook-subscribe
890
+
858
891
  :param str symbol: unified symbol of the market to fetch the order book for
859
892
  :param int [limit]: the maximum amount of order book entries to return
860
893
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -867,7 +900,7 @@ class cex(ccxt.async_support.cex):
867
900
  url = self.urls['api']['ws']
868
901
  messageHash = 'orderbook:' + symbol
869
902
  depth = 0 if (limit is None) else limit
870
- subscribe = {
903
+ subscribe: dict = {
871
904
  'e': 'order-book-subscribe',
872
905
  'data': {
873
906
  'pair': [
@@ -911,7 +944,7 @@ class cex(ccxt.async_support.cex):
911
944
  symbol = self.pair_to_symbol(pair)
912
945
  messageHash = 'orderbook:' + symbol
913
946
  timestamp = self.safe_integer_2(data, 'timestamp_ms', 'timestamp')
914
- incrementalId = self.safe_number(data, 'id')
947
+ incrementalId = self.safe_integer(data, 'id')
915
948
  orderbook = self.order_book({})
916
949
  snapshot = self.parse_order_book(data, symbol, timestamp, 'bids', 'asks')
917
950
  snapshot['nonce'] = incrementalId
@@ -947,7 +980,7 @@ class cex(ccxt.async_support.cex):
947
980
  # }
948
981
  #
949
982
  data = self.safe_value(message, 'data', {})
950
- incrementalId = self.safe_number(data, 'id')
983
+ incrementalId = self.safe_integer(data, 'id')
951
984
  pair = self.safe_string(data, 'pair', '')
952
985
  symbol = self.pair_to_symbol(pair)
953
986
  storedOrderBook = self.safe_value(self.orderbooks, symbol)
@@ -975,7 +1008,9 @@ class cex(ccxt.async_support.cex):
975
1008
 
976
1009
  async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
977
1010
  """
978
- :see: https://cex.io/websocket-api#minute-data
1011
+
1012
+ https://cex.io/websocket-api#minute-data
1013
+
979
1014
  watches historical candlestick data containing the open, high, low, and close price, and the volume of a market. It will return the last 120 minutes with the selected timeframe and then 1m candle updates after that.
980
1015
  :param str symbol: unified symbol of the market to fetch OHLCV data for
981
1016
  :param str timeframe: the length of time each candle represents.
@@ -989,7 +1024,7 @@ class cex(ccxt.async_support.cex):
989
1024
  symbol = market['symbol']
990
1025
  messageHash = 'ohlcv:' + symbol
991
1026
  url = self.urls['api']['ws']
992
- request = {
1027
+ request: dict = {
993
1028
  'e': 'init-ohlcv',
994
1029
  'i': timeframe,
995
1030
  'rooms': [
@@ -1114,7 +1149,10 @@ class cex(ccxt.async_support.cex):
1114
1149
  async def fetch_order_ws(self, id: str, symbol: Str = None, params={}):
1115
1150
  """
1116
1151
  fetches information on an order made by the user
1117
- :see: https://docs.cex.io/#ws-api-get-order
1152
+
1153
+ https://docs.cex.io/#ws-api-get-order
1154
+
1155
+ :param str id: the order id
1118
1156
  :param str symbol: not used by cex fetchOrder
1119
1157
  :param dict [params]: extra parameters specific to the cex api endpoint
1120
1158
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1129,7 +1167,7 @@ class cex(ccxt.async_support.cex):
1129
1167
  }, params)
1130
1168
  url = self.urls['api']['ws']
1131
1169
  messageHash = self.request_id()
1132
- request = {
1170
+ request: dict = {
1133
1171
  'e': 'get-order',
1134
1172
  'oid': messageHash,
1135
1173
  'data': data,
@@ -1139,7 +1177,9 @@ class cex(ccxt.async_support.cex):
1139
1177
 
1140
1178
  async def fetch_open_orders_ws(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1141
1179
  """
1142
- :see: https://docs.cex.io/#ws-api-open-orders
1180
+
1181
+ https://docs.cex.io/#ws-api-open-orders
1182
+
1143
1183
  fetch all unfilled currently open orders
1144
1184
  :param str symbol: unified market symbol
1145
1185
  :param int [since]: the earliest time in ms to fetch open orders for
@@ -1157,7 +1197,7 @@ class cex(ccxt.async_support.cex):
1157
1197
  data = self.extend({
1158
1198
  'pair': [market['baseId'], market['quoteId']],
1159
1199
  }, params)
1160
- request = {
1200
+ request: dict = {
1161
1201
  'e': 'open-orders',
1162
1202
  'oid': messageHash,
1163
1203
  'data': data,
@@ -1167,13 +1207,15 @@ class cex(ccxt.async_support.cex):
1167
1207
 
1168
1208
  async def create_order_ws(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}) -> Order:
1169
1209
  """
1170
- :see: https://docs.cex.io/#ws-api-order-placement
1210
+
1211
+ https://docs.cex.io/#ws-api-order-placement
1212
+
1171
1213
  create a trade order
1172
1214
  :param str symbol: unified symbol of the market to create an order in
1173
1215
  :param str type: 'market' or 'limit'
1174
1216
  :param str side: 'buy' or 'sell'
1175
1217
  :param float amount: how much of currency you want to trade in units of base currency
1176
- :param float price: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1218
+ :param float price: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1177
1219
  :param dict [params]: extra parameters specific to the kraken api endpoint
1178
1220
  :param boolean [params.maker_only]: Optional, maker only places an order only if offers best sell(<= max) or buy(>= max) price for self pair, if not order placement will be rejected with an error - "Order is not maker"
1179
1221
  :returns dict: an `order structure <https://docs.ccxt.com/en/latest/manual.html#order-structure>`
@@ -1191,7 +1233,7 @@ class cex(ccxt.async_support.cex):
1191
1233
  'price': price,
1192
1234
  'type': side,
1193
1235
  }, params)
1194
- request = {
1236
+ request: dict = {
1195
1237
  'e': 'place-order',
1196
1238
  'oid': messageHash,
1197
1239
  'data': data,
@@ -1202,13 +1244,15 @@ class cex(ccxt.async_support.cex):
1202
1244
  async def edit_order_ws(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: Num = None, price: Num = None, params={}) -> Order:
1203
1245
  """
1204
1246
  edit a trade order
1205
- :see: https://docs.cex.io/#ws-api-cancel-replace
1247
+
1248
+ https://docs.cex.io/#ws-api-cancel-replace
1249
+
1206
1250
  :param str id: order id
1207
1251
  :param str symbol: unified symbol of the market to create an order in
1208
1252
  :param str type: 'market' or 'limit'
1209
1253
  :param str side: 'buy' or 'sell'
1210
1254
  :param float amount: how much of the currency you want to trade in units of the base currency
1211
- :param float|None [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1255
+ :param float|None [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1212
1256
  :param dict [params]: extra parameters specific to the cex api endpoint
1213
1257
  :returns dict: an `order structure <https://docs.ccxt.com/en/latest/manual.html#order-structure>`
1214
1258
  """
@@ -1228,7 +1272,7 @@ class cex(ccxt.async_support.cex):
1228
1272
  }, params)
1229
1273
  messageHash = self.request_id()
1230
1274
  url = self.urls['api']['ws']
1231
- request = {
1275
+ request: dict = {
1232
1276
  'e': 'cancel-replace-order',
1233
1277
  'oid': messageHash,
1234
1278
  'data': data,
@@ -1238,7 +1282,9 @@ class cex(ccxt.async_support.cex):
1238
1282
 
1239
1283
  async def cancel_order_ws(self, id: str, symbol: Str = None, params={}):
1240
1284
  """
1241
- :see: https://docs.cex.io/#ws-api-order-cancel
1285
+
1286
+ https://docs.cex.io/#ws-api-order-cancel
1287
+
1242
1288
  cancels an open order
1243
1289
  :param str id: order id
1244
1290
  :param str symbol: not used by cex cancelOrder()
@@ -1255,7 +1301,7 @@ class cex(ccxt.async_support.cex):
1255
1301
  }, params)
1256
1302
  messageHash = self.request_id()
1257
1303
  url = self.urls['api']['ws']
1258
- request = {
1304
+ request: dict = {
1259
1305
  'e': 'cancel-order',
1260
1306
  'oid': messageHash,
1261
1307
  'data': data,
@@ -1266,7 +1312,9 @@ class cex(ccxt.async_support.cex):
1266
1312
  async def cancel_orders_ws(self, ids: List[str], symbol: Str = None, params={}):
1267
1313
  """
1268
1314
  cancel multiple orders
1269
- :see: https://docs.cex.io/#ws-api-mass-cancel-place
1315
+
1316
+ https://docs.cex.io/#ws-api-mass-cancel-place
1317
+
1270
1318
  :param str[] ids: order ids
1271
1319
  :param str symbol: not used by cex cancelOrders()
1272
1320
  :param dict [params]: extra parameters specific to the cex api endpoint
@@ -1281,7 +1329,7 @@ class cex(ccxt.async_support.cex):
1281
1329
  'cancel-orders': ids,
1282
1330
  }, params)
1283
1331
  url = self.urls['api']['ws']
1284
- request = {
1332
+ request: dict = {
1285
1333
  'e': 'mass-cancel-place-orders',
1286
1334
  'oid': messageHash,
1287
1335
  'data': data,
@@ -1361,7 +1409,7 @@ class cex(ccxt.async_support.cex):
1361
1409
  self.handle_error_message(client, message)
1362
1410
  return
1363
1411
  event = self.safe_string(message, 'e')
1364
- handlers = {
1412
+ handlers: dict = {
1365
1413
  'auth': self.handle_authentication_message,
1366
1414
  'connected': self.handle_connected,
1367
1415
  'tick': self.handle_ticker,
@@ -1414,7 +1462,7 @@ class cex(ccxt.async_support.cex):
1414
1462
  nonce = str(self.seconds())
1415
1463
  auth = nonce + self.apiKey
1416
1464
  signature = self.hmac(self.encode(auth), self.encode(self.secret), hashlib.sha256)
1417
- request = {
1465
+ request: dict = {
1418
1466
  'e': 'auth',
1419
1467
  'auth': {
1420
1468
  'key': self.apiKey,