ccxt 4.2.77__py2.py3-none-any.whl → 4.4.49__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 +3205 -937
  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 +1525 -573
  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 +223 -97
  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 +639 -323
  126. ccxt/async_support/digifinex.py +465 -233
  127. ccxt/async_support/ellipx.py +1887 -0
  128. ccxt/async_support/exmo.py +317 -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 +433 -178
  133. ccxt/async_support/hollaex.py +207 -83
  134. ccxt/async_support/htx.py +1095 -563
  135. ccxt/async_support/huobijp.py +178 -56
  136. ccxt/async_support/hyperliquid.py +1678 -292
  137. ccxt/async_support/idex.py +219 -95
  138. ccxt/async_support/independentreserve.py +300 -31
  139. ccxt/async_support/indodax.py +226 -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 +198 -107
  145. ccxt/async_support/latoken.py +199 -79
  146. ccxt/async_support/lbank.py +360 -113
  147. ccxt/async_support/luno.py +185 -62
  148. ccxt/async_support/lykke.py +168 -55
  149. ccxt/async_support/mercado.py +101 -29
  150. ccxt/async_support/mexc.py +995 -429
  151. ccxt/async_support/myokx.py +53 -0
  152. ccxt/async_support/ndax.py +234 -82
  153. ccxt/async_support/novadax.py +195 -75
  154. ccxt/async_support/oceanex.py +244 -59
  155. ccxt/async_support/okcoin.py +301 -165
  156. ccxt/async_support/okx.py +1776 -454
  157. ccxt/async_support/onetrading.py +198 -414
  158. ccxt/async_support/oxfun.py +2898 -0
  159. ccxt/async_support/p2b.py +142 -52
  160. ccxt/async_support/paradex.py +2085 -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 +3205 -937
  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 +1525 -573
  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 +223 -97
  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 +639 -323
  234. ccxt/digifinex.py +465 -233
  235. ccxt/ellipx.py +1887 -0
  236. ccxt/exmo.py +317 -128
  237. ccxt/gate.py +1472 -463
  238. ccxt/gemini.py +206 -84
  239. ccxt/hashkey.py +4164 -0
  240. ccxt/hitbtc.py +433 -178
  241. ccxt/hollaex.py +207 -83
  242. ccxt/htx.py +1095 -563
  243. ccxt/huobijp.py +178 -56
  244. ccxt/hyperliquid.py +1677 -292
  245. ccxt/idex.py +219 -95
  246. ccxt/independentreserve.py +299 -31
  247. ccxt/indodax.py +226 -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 +198 -107
  253. ccxt/latoken.py +199 -79
  254. ccxt/lbank.py +360 -113
  255. ccxt/luno.py +185 -62
  256. ccxt/lykke.py +168 -55
  257. ccxt/mercado.py +101 -29
  258. ccxt/mexc.py +994 -429
  259. ccxt/myokx.py +53 -0
  260. ccxt/ndax.py +234 -82
  261. ccxt/novadax.py +195 -75
  262. ccxt/oceanex.py +244 -59
  263. ccxt/okcoin.py +301 -165
  264. ccxt/okx.py +1776 -454
  265. ccxt/onetrading.py +198 -414
  266. ccxt/oxfun.py +2897 -0
  267. ccxt/p2b.py +142 -52
  268. ccxt/paradex.py +2085 -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 +143 -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.49.dist-info/LICENSE.txt +21 -0
  496. ccxt-4.4.49.dist-info/METADATA +646 -0
  497. ccxt-4.4.49.dist-info/RECORD +669 -0
  498. {ccxt-4.2.77.dist-info → ccxt-4.4.49.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.49.dist-info}/top_level.txt +0 -0
ccxt/huobijp.py CHANGED
@@ -6,9 +6,10 @@
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.huobijp import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Account, Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
9
+ from ccxt.base.types import Account, Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import PermissionDenied
13
14
  from ccxt.base.errors import ArgumentsRequired
14
15
  from ccxt.base.errors import BadRequest
@@ -21,7 +22,6 @@ from ccxt.base.errors import NetworkError
21
22
  from ccxt.base.errors import ExchangeNotAvailable
22
23
  from ccxt.base.errors import OnMaintenance
23
24
  from ccxt.base.errors import RequestTimeout
24
- from ccxt.base.errors import AuthenticationError
25
25
  from ccxt.base.decimal_to_precision import TRUNCATE
26
26
  from ccxt.base.decimal_to_precision import TICK_SIZE
27
27
  from ccxt.base.precise import Precise
@@ -265,6 +265,79 @@ class huobijp(Exchange, ImplicitAPI):
265
265
  'taker': self.parse_number('0.002'),
266
266
  },
267
267
  },
268
+ 'features': {
269
+ 'spot': {
270
+ 'sandbox': False,
271
+ 'createOrder': {
272
+ 'marginMode': False,
273
+ 'triggerPrice': True, # todo: implement
274
+ 'triggerPriceType': None,
275
+ 'triggerDirection': False,
276
+ 'stopLossPrice': False, # todo
277
+ 'takeProfitPrice': False, # todo
278
+ 'attachedStopLossTakeProfit': None,
279
+ 'timeInForce': {
280
+ 'IOC': False,
281
+ 'FOK': False,
282
+ 'PO': False,
283
+ 'GTD': False,
284
+ },
285
+ 'hedged': False,
286
+ 'selfTradePrevention': False,
287
+ 'trailing': False,
288
+ 'leverage': False,
289
+ 'marketBuyByCost': True,
290
+ 'marketBuyRequiresPrice': False,
291
+ 'iceberg': False,
292
+ },
293
+ 'createOrders': None,
294
+ 'fetchMyTrades': {
295
+ 'marginMode': False,
296
+ 'limit': 100,
297
+ 'daysBack': 120,
298
+ 'untilDays': 2,
299
+ },
300
+ 'fetchOrder': {
301
+ 'marginMode': False,
302
+ 'trigger': False,
303
+ 'trailing': False,
304
+ },
305
+ 'fetchOpenOrders': {
306
+ 'marginMode': False,
307
+ 'limit': None, # todo
308
+ 'trigger': False,
309
+ 'trailing': False,
310
+ },
311
+ 'fetchOrders': {
312
+ 'marginMode': False,
313
+ 'limit': None,
314
+ 'daysBack': None, # todo
315
+ 'untilDays': None, # todo
316
+ 'trigger': False,
317
+ 'trailing': False,
318
+ },
319
+ 'fetchClosedOrders': {
320
+ 'marginMode': False,
321
+ 'limit': None,
322
+ 'daysBack': None, # todo
323
+ 'daysBackCanceled': None, # todo
324
+ 'untilDays': None, # todo
325
+ 'trigger': False,
326
+ 'trailing': False,
327
+ },
328
+ 'fetchOHLCV': {
329
+ 'limit': 2000,
330
+ },
331
+ },
332
+ 'swap': {
333
+ 'linear': None,
334
+ 'inverse': None,
335
+ },
336
+ 'future': {
337
+ 'linear': None,
338
+ 'inverse': None,
339
+ },
340
+ },
268
341
  'precisionMode': TICK_SIZE,
269
342
  'exceptions': {
270
343
  'broad': {
@@ -323,6 +396,7 @@ class huobijp(Exchange, ImplicitAPI):
323
396
  'fetchMarketsMethod': 'publicGetCommonSymbols',
324
397
  'fetchBalanceMethod': 'privateGetAccountAccountsIdBalance',
325
398
  'createOrderMethod': 'privatePostOrderOrdersPlace',
399
+ 'currencyToPrecisionRoundingMode': TRUNCATE,
326
400
  'language': 'en-US',
327
401
  'broker': {
328
402
  'id': 'AA03022abc',
@@ -361,14 +435,14 @@ class huobijp(Exchange, ImplicitAPI):
361
435
  self.load_markets()
362
436
  if symbols is None:
363
437
  symbols = self.symbols
364
- result = {}
438
+ result: dict = {}
365
439
  for i in range(0, len(symbols)):
366
440
  symbol = symbols[i]
367
441
  result[symbol] = self.fetch_trading_limits_by_id(self.market_id(symbol), params)
368
442
  return result
369
443
 
370
444
  def fetch_trading_limits_by_id(self, id: str, params={}):
371
- request = {
445
+ request: dict = {
372
446
  'symbol': id,
373
447
  }
374
448
  response = self.publicGetCommonExchange(self.extend(request, params))
@@ -419,7 +493,7 @@ class huobijp(Exchange, ImplicitAPI):
419
493
  def cost_to_precision(self, symbol, cost):
420
494
  return self.decimal_to_precision(cost, TRUNCATE, self.markets[symbol]['precision']['cost'], self.precisionMode)
421
495
 
422
- def fetch_markets(self, params={}):
496
+ def fetch_markets(self, params={}) -> List[Market]:
423
497
  """
424
498
  retrieves data on all markets for huobijp
425
499
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -530,7 +604,7 @@ class huobijp(Exchange, ImplicitAPI):
530
604
  })
531
605
  return result
532
606
 
533
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
607
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
534
608
  #
535
609
  # fetchTicker
536
610
  #
@@ -621,7 +695,7 @@ class huobijp(Exchange, ImplicitAPI):
621
695
  """
622
696
  self.load_markets()
623
697
  market = self.market(symbol)
624
- request = {
698
+ request: dict = {
625
699
  'symbol': market['id'],
626
700
  'type': 'step0',
627
701
  }
@@ -666,7 +740,7 @@ class huobijp(Exchange, ImplicitAPI):
666
740
  """
667
741
  self.load_markets()
668
742
  market = self.market(symbol)
669
- request = {
743
+ request: dict = {
670
744
  'symbol': market['id'],
671
745
  }
672
746
  response = self.marketGetDetailMerged(self.extend(request, params))
@@ -708,7 +782,7 @@ class huobijp(Exchange, ImplicitAPI):
708
782
  response = self.marketGetTickers(params)
709
783
  tickers = self.safe_value(response, 'data', [])
710
784
  timestamp = self.safe_integer(response, 'ts')
711
- result = {}
785
+ result: dict = {}
712
786
  for i in range(0, len(tickers)):
713
787
  marketId = self.safe_string(tickers[i], 'symbol')
714
788
  market = self.safe_market(marketId)
@@ -719,7 +793,7 @@ class huobijp(Exchange, ImplicitAPI):
719
793
  result[symbol] = ticker
720
794
  return self.filter_by_array_tickers(result, 'symbol', symbols)
721
795
 
722
- def parse_trade(self, trade, market: Market = None) -> Trade:
796
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
723
797
  #
724
798
  # fetchTrades(public)
725
799
  #
@@ -808,7 +882,7 @@ class huobijp(Exchange, ImplicitAPI):
808
882
  :returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
809
883
  """
810
884
  self.load_markets()
811
- request = {
885
+ request: dict = {
812
886
  'id': id,
813
887
  }
814
888
  response = self.privateGetOrderOrdersIdMatchresults(self.extend(request, params))
@@ -825,7 +899,7 @@ class huobijp(Exchange, ImplicitAPI):
825
899
  """
826
900
  self.load_markets()
827
901
  market = None
828
- request = {}
902
+ request: dict = {}
829
903
  if symbol is not None:
830
904
  market = self.market(symbol)
831
905
  request['symbol'] = market['id']
@@ -848,7 +922,7 @@ class huobijp(Exchange, ImplicitAPI):
848
922
  """
849
923
  self.load_markets()
850
924
  market = self.market(symbol)
851
- request = {
925
+ request: dict = {
852
926
  'symbol': market['id'],
853
927
  }
854
928
  if limit is not None:
@@ -922,12 +996,12 @@ class huobijp(Exchange, ImplicitAPI):
922
996
  """
923
997
  self.load_markets()
924
998
  market = self.market(symbol)
925
- request = {
999
+ request: dict = {
926
1000
  'symbol': market['id'],
927
1001
  'period': self.safe_string(self.timeframes, timeframe, timeframe),
928
1002
  }
929
1003
  if limit is not None:
930
- request['size'] = limit
1004
+ request['size'] = min(limit, 2000)
931
1005
  response = self.marketGetHistoryKline(self.extend(request, params))
932
1006
  #
933
1007
  # {
@@ -941,7 +1015,7 @@ class huobijp(Exchange, ImplicitAPI):
941
1015
  # ]
942
1016
  # }
943
1017
  #
944
- data = self.safe_value(response, 'data', [])
1018
+ data = self.safe_list(response, 'data', [])
945
1019
  return self.parse_ohlcvs(data, market, timeframe, since, limit)
946
1020
 
947
1021
  def fetch_accounts(self, params={}) -> List[Account]:
@@ -954,13 +1028,13 @@ class huobijp(Exchange, ImplicitAPI):
954
1028
  response = self.privateGetAccountAccounts(params)
955
1029
  return response['data']
956
1030
 
957
- def fetch_currencies(self, params={}):
1031
+ def fetch_currencies(self, params={}) -> Currencies:
958
1032
  """
959
1033
  fetches all available currencies on an exchange
960
1034
  :param dict [params]: extra parameters specific to the exchange API endpoint
961
1035
  :returns dict: an associative dictionary of currencies
962
1036
  """
963
- request = {
1037
+ request: dict = {
964
1038
  'language': self.options['language'],
965
1039
  }
966
1040
  response = self.publicGetSettingsCurrencys(self.extend(request, params))
@@ -1005,7 +1079,7 @@ class huobijp(Exchange, ImplicitAPI):
1005
1079
  # }
1006
1080
  #
1007
1081
  currencies = self.safe_value(response, 'data', [])
1008
- result = {}
1082
+ result: dict = {}
1009
1083
  for i in range(0, len(currencies)):
1010
1084
  currency = currencies[i]
1011
1085
  id = self.safe_value(currency, 'name')
@@ -1051,7 +1125,7 @@ class huobijp(Exchange, ImplicitAPI):
1051
1125
 
1052
1126
  def parse_balance(self, response) -> Balances:
1053
1127
  balances = self.safe_value(response['data'], 'list', [])
1054
- result = {'info': response}
1128
+ result: dict = {'info': response}
1055
1129
  for i in range(0, len(balances)):
1056
1130
  balance = balances[i]
1057
1131
  currencyId = self.safe_string(balance, 'currency')
@@ -1077,7 +1151,7 @@ class huobijp(Exchange, ImplicitAPI):
1077
1151
  self.load_markets()
1078
1152
  self.load_accounts()
1079
1153
  method = self.options['fetchBalanceMethod']
1080
- request = {
1154
+ request: dict = {
1081
1155
  'id': self.accounts[0]['id'],
1082
1156
  }
1083
1157
  response = getattr(self, method)(self.extend(request, params))
@@ -1085,7 +1159,7 @@ class huobijp(Exchange, ImplicitAPI):
1085
1159
 
1086
1160
  def fetch_orders_by_states(self, states, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1087
1161
  self.load_markets()
1088
- request = {
1162
+ request: dict = {
1089
1163
  'states': states,
1090
1164
  }
1091
1165
  market = None
@@ -1116,16 +1190,17 @@ class huobijp(Exchange, ImplicitAPI):
1116
1190
  def fetch_order(self, id: str, symbol: Str = None, params={}):
1117
1191
  """
1118
1192
  fetches information on an order made by the user
1193
+ :param str id: order id
1119
1194
  :param str symbol: unified symbol of the market the order was made in
1120
1195
  :param dict [params]: extra parameters specific to the exchange API endpoint
1121
1196
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1122
1197
  """
1123
1198
  self.load_markets()
1124
- request = {
1199
+ request: dict = {
1125
1200
  'id': id,
1126
1201
  }
1127
1202
  response = self.privateGetOrderOrdersId(self.extend(request, params))
1128
- order = self.safe_value(response, 'data')
1203
+ order = self.safe_dict(response, 'data')
1129
1204
  return self.parse_order(order)
1130
1205
 
1131
1206
  def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
@@ -1169,7 +1244,7 @@ class huobijp(Exchange, ImplicitAPI):
1169
1244
 
1170
1245
  def fetch_open_orders_v2(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
1171
1246
  self.load_markets()
1172
- request = {}
1247
+ request: dict = {}
1173
1248
  market = None
1174
1249
  if symbol is not None:
1175
1250
  market = self.market(symbol)
@@ -1210,11 +1285,11 @@ class huobijp(Exchange, ImplicitAPI):
1210
1285
  # ]
1211
1286
  # }
1212
1287
  #
1213
- data = self.safe_value(response, 'data', [])
1288
+ data = self.safe_list(response, 'data', [])
1214
1289
  return self.parse_orders(data, market, since, limit)
1215
1290
 
1216
- def parse_order_status(self, status):
1217
- statuses = {
1291
+ def parse_order_status(self, status: Str):
1292
+ statuses: dict = {
1218
1293
  'partial-filled': 'open',
1219
1294
  'partial-canceled': 'canceled',
1220
1295
  'filled': 'closed',
@@ -1223,7 +1298,7 @@ class huobijp(Exchange, ImplicitAPI):
1223
1298
  }
1224
1299
  return self.safe_string(statuses, status, status)
1225
1300
 
1226
- def parse_order(self, order, market: Market = None) -> Order:
1301
+ def parse_order(self, order: dict, market: Market = None) -> Order:
1227
1302
  #
1228
1303
  # { id: 13997833014,
1229
1304
  # "symbol": "ethbtc",
@@ -1293,7 +1368,6 @@ class huobijp(Exchange, ImplicitAPI):
1293
1368
  'postOnly': None,
1294
1369
  'side': side,
1295
1370
  'price': price,
1296
- 'stopPrice': None,
1297
1371
  'triggerPrice': None,
1298
1372
  'average': None,
1299
1373
  'cost': cost,
@@ -1327,14 +1401,14 @@ class huobijp(Exchange, ImplicitAPI):
1327
1401
  :param str type: 'market' or 'limit'
1328
1402
  :param str side: 'buy' or 'sell'
1329
1403
  :param float amount: how much of currency you want to trade in units of base currency
1330
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1404
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
1331
1405
  :param dict [params]: extra parameters specific to the exchange API endpoint
1332
1406
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1333
1407
  """
1334
1408
  self.load_markets()
1335
1409
  self.load_accounts()
1336
1410
  market = self.market(symbol)
1337
- request = {
1411
+ request: dict = {
1338
1412
  'account-id': self.accounts[0]['id'],
1339
1413
  'symbol': market['id'],
1340
1414
  'type': side + '-' + type,
@@ -1430,7 +1504,7 @@ class huobijp(Exchange, ImplicitAPI):
1430
1504
  self.load_markets()
1431
1505
  clientOrderIds = self.safe_value_2(params, 'clientOrderIds', 'client-order-ids')
1432
1506
  params = self.omit(params, ['clientOrderIds', 'client-order-ids'])
1433
- request = {}
1507
+ request: dict = {}
1434
1508
  if clientOrderIds is None:
1435
1509
  request['order-ids'] = ids
1436
1510
  else:
@@ -1468,7 +1542,61 @@ class huobijp(Exchange, ImplicitAPI):
1468
1542
  # }
1469
1543
  # }
1470
1544
  #
1471
- return response
1545
+ return self.parse_cancel_orders(response)
1546
+
1547
+ def parse_cancel_orders(self, orders):
1548
+ #
1549
+ # {
1550
+ # "success": [
1551
+ # "5983466"
1552
+ # ],
1553
+ # "failed": [
1554
+ # {
1555
+ # "err-msg": "Incorrect order state",
1556
+ # "order-state": 7,
1557
+ # "order-id": "",
1558
+ # "err-code": "order-orderstate-error",
1559
+ # "client-order-id": "first"
1560
+ # },
1561
+ # ...
1562
+ # ]
1563
+ # }
1564
+ #
1565
+ # {
1566
+ # "errors": [
1567
+ # {
1568
+ # "order_id": "769206471845261312",
1569
+ # "err_code": 1061,
1570
+ # "err_msg": "This order doesnt exist."
1571
+ # }
1572
+ # ],
1573
+ # "successes": "1258075374411399168,1258075393254871040"
1574
+ # }
1575
+ #
1576
+ successes = self.safe_string(orders, 'successes')
1577
+ success = None
1578
+ if successes is not None:
1579
+ success = successes.split(',')
1580
+ else:
1581
+ success = self.safe_list(orders, 'success', [])
1582
+ failed = self.safe_list_2(orders, 'errors', 'failed', [])
1583
+ result = []
1584
+ for i in range(0, len(success)):
1585
+ order = success[i]
1586
+ result.append(self.safe_order({
1587
+ 'info': order,
1588
+ 'id': order,
1589
+ 'status': 'canceled',
1590
+ }))
1591
+ for i in range(0, len(failed)):
1592
+ order = failed[i]
1593
+ result.append(self.safe_order({
1594
+ 'info': order,
1595
+ 'id': self.safe_string_2(order, 'order-id', 'order_id'),
1596
+ 'status': 'failed',
1597
+ 'clientOrderId': self.safe_string(order, 'client-order-id'),
1598
+ }))
1599
+ return result
1472
1600
 
1473
1601
  def cancel_all_orders(self, symbol: Str = None, params={}):
1474
1602
  """
@@ -1478,7 +1606,7 @@ class huobijp(Exchange, ImplicitAPI):
1478
1606
  :returns dict[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1479
1607
  """
1480
1608
  self.load_markets()
1481
- request = {
1609
+ request: dict = {
1482
1610
  # 'account-id' string False NA The account id used for self cancel Refer to GET /v1/account/accounts
1483
1611
  # 'symbol': market['id'], # a list of comma-separated symbols, all symbols by default
1484
1612
  # 'types' 'string', buy-market, sell-market, buy-limit, sell-limit, buy-ioc, sell-ioc, buy-stop-limit, sell-stop-limit, buy-limit-fok, sell-limit-fok, buy-stop-limit-fok, sell-stop-limit-fok
@@ -1500,18 +1628,12 @@ class huobijp(Exchange, ImplicitAPI):
1500
1628
  # }
1501
1629
  # }
1502
1630
  #
1503
- return response
1504
-
1505
- def currency_to_precision(self, code, fee, networkCode=None):
1506
- return self.decimal_to_precision(fee, 0, self.currencies[code]['precision'], self.precisionMode)
1507
-
1508
- def safe_network(self, networkId):
1509
- lastCharacterIndex = len(networkId) - 1
1510
- lastCharacter = networkId[lastCharacterIndex]
1511
- if lastCharacter == '1':
1512
- networkId = networkId[0:lastCharacterIndex]
1513
- networksById = {}
1514
- return self.safe_string(networksById, networkId, networkId)
1631
+ data = self.safe_dict(response, 'data', {})
1632
+ return [
1633
+ self.safe_order({
1634
+ 'info': data,
1635
+ }),
1636
+ ]
1515
1637
 
1516
1638
  def parse_deposit_address(self, depositAddress, currency: Currency = None):
1517
1639
  #
@@ -1556,7 +1678,7 @@ class huobijp(Exchange, ImplicitAPI):
1556
1678
  currency = None
1557
1679
  if code is not None:
1558
1680
  currency = self.currency(code)
1559
- request = {
1681
+ request: dict = {
1560
1682
  'type': 'deposit',
1561
1683
  'from': 0, # From 'id' ... if you want to get results after a particular transaction id, pass the id in params.from
1562
1684
  }
@@ -1583,7 +1705,7 @@ class huobijp(Exchange, ImplicitAPI):
1583
1705
  currency = None
1584
1706
  if code is not None:
1585
1707
  currency = self.currency(code)
1586
- request = {
1708
+ request: dict = {
1587
1709
  'type': 'withdraw',
1588
1710
  'from': 0, # From 'id' ... if you want to get results after a particular transaction id, pass the id in params.from
1589
1711
  }
@@ -1595,7 +1717,7 @@ class huobijp(Exchange, ImplicitAPI):
1595
1717
  # return response
1596
1718
  return self.parse_transactions(response['data'], currency, since, limit)
1597
1719
 
1598
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
1720
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
1599
1721
  #
1600
1722
  # fetchDeposits
1601
1723
  #
@@ -1673,8 +1795,8 @@ class huobijp(Exchange, ImplicitAPI):
1673
1795
  },
1674
1796
  }
1675
1797
 
1676
- def parse_transaction_status(self, status):
1677
- statuses = {
1798
+ def parse_transaction_status(self, status: Str):
1799
+ statuses: dict = {
1678
1800
  # deposit statuses
1679
1801
  'unknown': 'failed',
1680
1802
  'confirming': 'pending',
@@ -1696,7 +1818,7 @@ class huobijp(Exchange, ImplicitAPI):
1696
1818
  }
1697
1819
  return self.safe_string(statuses, status, status)
1698
1820
 
1699
- def withdraw(self, code: str, amount: float, address, tag=None, params={}):
1821
+ def withdraw(self, code: str, amount: float, address: str, tag=None, params={}) -> Transaction:
1700
1822
  """
1701
1823
  make a withdrawal
1702
1824
  :param str code: unified currency code
@@ -1710,7 +1832,7 @@ class huobijp(Exchange, ImplicitAPI):
1710
1832
  self.load_markets()
1711
1833
  self.check_address(address)
1712
1834
  currency = self.currency(code)
1713
- request = {
1835
+ request: dict = {
1714
1836
  'address': address, # only supports existing addresses in your withdraw address list
1715
1837
  'amount': amount,
1716
1838
  'currency': currency['id'].lower(),
@@ -1749,7 +1871,7 @@ class huobijp(Exchange, ImplicitAPI):
1749
1871
  if api == 'private' or api == 'v2Private':
1750
1872
  self.check_required_credentials()
1751
1873
  timestamp = self.ymdhms(self.milliseconds(), 'T')
1752
- request = {
1874
+ request: dict = {
1753
1875
  'SignatureMethod': 'HmacSHA256',
1754
1876
  'SignatureVersion': '2',
1755
1877
  'AccessKeyId': self.apiKey,
@@ -1782,7 +1904,7 @@ class huobijp(Exchange, ImplicitAPI):
1782
1904
  }) + url
1783
1905
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
1784
1906
 
1785
- def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
1907
+ def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
1786
1908
  if response is None:
1787
1909
  return None # fallback to default error handler
1788
1910
  if 'status' in response: