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
@@ -11,8 +11,6 @@ from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import InsufficientFunds
13
13
  from ccxt.base.errors import InvalidOrder
14
- from ccxt.base.errors import DDoSProtection
15
- from ccxt.base.errors import AuthenticationError
16
14
  from ccxt.base.decimal_to_precision import TICK_SIZE
17
15
  from ccxt.base.precise import Precise
18
16
 
@@ -73,8 +71,11 @@ class btcalpha(Exchange, ImplicitAPI):
73
71
  'fetchOrderBook': True,
74
72
  'fetchOrders': True,
75
73
  'fetchPosition': False,
74
+ 'fetchPositionHistory': False,
76
75
  'fetchPositionMode': False,
77
76
  'fetchPositions': False,
77
+ 'fetchPositionsForSymbol': False,
78
+ 'fetchPositionsHistory': False,
78
79
  'fetchPositionsRisk': False,
79
80
  'fetchPremiumIndexOHLCV': False,
80
81
  'fetchTicker': True,
@@ -102,7 +103,7 @@ class btcalpha(Exchange, ImplicitAPI):
102
103
  '1d': 'D',
103
104
  },
104
105
  'urls': {
105
- 'logo': 'https://user-images.githubusercontent.com/1294454/42625213-dabaa5da-85cf-11e8-8f99-aa8f8f7699f0.jpg',
106
+ 'logo': 'https://github.com/user-attachments/assets/dce49f3a-61e5-4ba0-a2fe-41d192fd0e5d',
106
107
  'api': {
107
108
  'rest': 'https://btc-alpha.com/api',
108
109
  },
@@ -149,6 +150,79 @@ class btcalpha(Exchange, ImplicitAPI):
149
150
  'commonCurrencies': {
150
151
  'CBC': 'Cashbery',
151
152
  },
153
+ 'features': {
154
+ 'spot': {
155
+ 'sandbox': False,
156
+ 'createOrder': {
157
+ 'marginMode': False,
158
+ 'triggerPrice': False,
159
+ 'triggerPriceType': None,
160
+ 'triggerDirection': False,
161
+ 'stopLossPrice': False,
162
+ 'takeProfitPrice': False,
163
+ 'attachedStopLossTakeProfit': None,
164
+ 'timeInForce': {
165
+ 'IOC': False,
166
+ 'FOK': False,
167
+ 'PO': False,
168
+ 'GTD': False,
169
+ },
170
+ 'hedged': False,
171
+ 'leverage': False,
172
+ 'marketBuyRequiresPrice': False,
173
+ 'marketBuyByCost': False,
174
+ 'selfTradePrevention': False,
175
+ 'trailing': False,
176
+ 'iceberg': False,
177
+ },
178
+ 'createOrders': None,
179
+ 'fetchMyTrades': {
180
+ 'marginMode': False,
181
+ 'limit': 100,
182
+ 'daysBack': None,
183
+ 'untilDays': None,
184
+ },
185
+ 'fetchOrder': {
186
+ 'marginMode': False,
187
+ 'trigger': False,
188
+ 'trailing': False,
189
+ },
190
+ 'fetchOpenOrders': {
191
+ 'marginMode': False,
192
+ 'limit': 2000,
193
+ 'trigger': False,
194
+ 'trailing': False,
195
+ },
196
+ 'fetchOrders': {
197
+ 'marginMode': False,
198
+ 'limit': 2000,
199
+ 'daysBack': None,
200
+ 'untilDays': None,
201
+ 'trigger': False,
202
+ 'trailing': False,
203
+ },
204
+ 'fetchClosedOrders': {
205
+ 'marginMode': False,
206
+ 'limit': 2000,
207
+ 'daysBack': None,
208
+ 'daysBackCanceled': None,
209
+ 'untilDays': None,
210
+ 'trigger': False,
211
+ 'trailing': False,
212
+ },
213
+ 'fetchOHLCV': {
214
+ 'max': 720,
215
+ },
216
+ },
217
+ 'swap': {
218
+ 'linear': None,
219
+ 'inverse': None,
220
+ },
221
+ 'future': {
222
+ 'linear': None,
223
+ 'inverse': None,
224
+ },
225
+ },
152
226
  'precisionMode': TICK_SIZE,
153
227
  'exceptions': {
154
228
  'exact': {},
@@ -158,10 +232,12 @@ class btcalpha(Exchange, ImplicitAPI):
158
232
  },
159
233
  })
160
234
 
161
- async def fetch_markets(self, params={}):
235
+ async def fetch_markets(self, params={}) -> List[Market]:
162
236
  """
163
237
  retrieves data on all markets for btcalpha
164
- :see: https://btc-alpha.github.io/api-docs/#list-all-currencies
238
+
239
+ https://btc-alpha.github.io/api-docs/#list-all-currencies
240
+
165
241
  :param dict [params]: extra parameters specific to the exchange API endpoint
166
242
  :returns dict[]: an array of objects representing market data
167
243
  """
@@ -183,7 +259,7 @@ class btcalpha(Exchange, ImplicitAPI):
183
259
  #
184
260
  return self.parse_markets(response)
185
261
 
186
- def parse_market(self, market) -> Market:
262
+ def parse_market(self, market: dict) -> Market:
187
263
  id = self.safe_string(market, 'name')
188
264
  baseId = self.safe_string(market, 'currency1')
189
265
  quoteId = self.safe_string(market, 'currency2')
@@ -244,7 +320,9 @@ class btcalpha(Exchange, ImplicitAPI):
244
320
 
245
321
  async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
246
322
  """
247
- :see: https://btc-alpha.github.io/api-docs/#tickers
323
+
324
+ https://btc-alpha.github.io/api-docs/#tickers
325
+
248
326
  fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
249
327
  :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
250
328
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -272,7 +350,9 @@ class btcalpha(Exchange, ImplicitAPI):
272
350
 
273
351
  async def fetch_ticker(self, symbol: str, params={}) -> Ticker:
274
352
  """
275
- :see: https://btc-alpha.github.io/api-docs/#tickers
353
+
354
+ https://btc-alpha.github.io/api-docs/#tickers
355
+
276
356
  fetches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
277
357
  :param str symbol: unified symbol of the market to fetch the ticker for
278
358
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -280,7 +360,7 @@ class btcalpha(Exchange, ImplicitAPI):
280
360
  """
281
361
  await self.load_markets()
282
362
  market = self.market(symbol)
283
- request = {
363
+ request: dict = {
284
364
  'pair': market['id'],
285
365
  }
286
366
  response = await self.publicGetTicker(self.extend(request, params))
@@ -299,7 +379,7 @@ class btcalpha(Exchange, ImplicitAPI):
299
379
  #
300
380
  return self.parse_ticker(response, market)
301
381
 
302
- def parse_ticker(self, ticker, market: Market = None) -> Ticker:
382
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
303
383
  #
304
384
  # {
305
385
  # "timestamp": "1674658.445272",
@@ -343,7 +423,9 @@ class btcalpha(Exchange, ImplicitAPI):
343
423
 
344
424
  async def fetch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
345
425
  """
346
- :see: https://btc-alpha.github.io/api-docs/#get-orderbook
426
+
427
+ https://btc-alpha.github.io/api-docs/#get-orderbook
428
+
347
429
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
348
430
  :param str symbol: unified symbol of the market to fetch the order book for
349
431
  :param int [limit]: the maximum amount of order book entries to return
@@ -352,7 +434,7 @@ class btcalpha(Exchange, ImplicitAPI):
352
434
  """
353
435
  await self.load_markets()
354
436
  market = self.market(symbol)
355
- request = {
437
+ request: dict = {
356
438
  'pair_name': market['id'],
357
439
  }
358
440
  if limit:
@@ -369,7 +451,7 @@ class btcalpha(Exchange, ImplicitAPI):
369
451
  result.append(self.parse_bid_ask(bidask, priceKey, amountKey))
370
452
  return result
371
453
 
372
- def parse_trade(self, trade, market: Market = None) -> Trade:
454
+ def parse_trade(self, trade: dict, market: Market = None) -> Trade:
373
455
  #
374
456
  # fetchTrades(public)
375
457
  #
@@ -421,7 +503,9 @@ class btcalpha(Exchange, ImplicitAPI):
421
503
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
422
504
  """
423
505
  get the list of most recent trades for a particular symbol
424
- :see: https://btc-alpha.github.io/api-docs/#list-all-exchanges
506
+
507
+ https://btc-alpha.github.io/api-docs/#list-all-exchanges
508
+
425
509
  :param str symbol: unified symbol of the market to fetch trades for
426
510
  :param int [since]: timestamp in ms of the earliest trade to fetch
427
511
  :param int [limit]: the maximum amount of trades to fetch
@@ -430,7 +514,7 @@ class btcalpha(Exchange, ImplicitAPI):
430
514
  """
431
515
  await self.load_markets()
432
516
  market = None
433
- request = {}
517
+ request: dict = {}
434
518
  if symbol is not None:
435
519
  market = self.market(symbol)
436
520
  request['pair'] = market['id']
@@ -442,7 +526,9 @@ class btcalpha(Exchange, ImplicitAPI):
442
526
  async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
443
527
  """
444
528
  fetch all deposits made to an account
445
- :see: https://btc-alpha.github.io/api-docs/#list-own-deposits
529
+
530
+ https://btc-alpha.github.io/api-docs/#list-own-deposits
531
+
446
532
  :param str code: unified currency code
447
533
  :param int [since]: the earliest time in ms to fetch deposits for
448
534
  :param int [limit]: the maximum number of deposits structures to retrieve
@@ -469,7 +555,9 @@ class btcalpha(Exchange, ImplicitAPI):
469
555
  async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
470
556
  """
471
557
  fetch all withdrawals made from an account
472
- :see: https://btc-alpha.github.io/api-docs/#list-own-made-withdraws
558
+
559
+ https://btc-alpha.github.io/api-docs/#list-own-made-withdraws
560
+
473
561
  :param str code: unified currency code
474
562
  :param int [since]: the earliest time in ms to fetch withdrawals for
475
563
  :param int [limit]: the maximum number of withdrawals structures to retrieve
@@ -478,7 +566,7 @@ class btcalpha(Exchange, ImplicitAPI):
478
566
  """
479
567
  await self.load_markets()
480
568
  currency = None
481
- request = {}
569
+ request: dict = {}
482
570
  if code is not None:
483
571
  currency = self.currency(code)
484
572
  request['currency_id'] = currency['id']
@@ -496,7 +584,7 @@ class btcalpha(Exchange, ImplicitAPI):
496
584
  #
497
585
  return self.parse_transactions(response, currency, since, limit, {'type': 'withdrawal'})
498
586
 
499
- def parse_transaction(self, transaction, currency: Currency = None) -> Transaction:
587
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
500
588
  #
501
589
  # deposit
502
590
  # {
@@ -541,8 +629,8 @@ class btcalpha(Exchange, ImplicitAPI):
541
629
  'updated': None,
542
630
  }
543
631
 
544
- def parse_transaction_status(self, status):
545
- statuses = {
632
+ def parse_transaction_status(self, status: Str):
633
+ statuses: dict = {
546
634
  '10': 'pending', # New
547
635
  '20': 'pending', # Verified, waiting for approving
548
636
  '30': 'ok', # Approved by moderator
@@ -574,7 +662,9 @@ class btcalpha(Exchange, ImplicitAPI):
574
662
  async def fetch_ohlcv(self, symbol: str, timeframe='5m', since: Int = None, limit: Int = None, params={}) -> List[list]:
575
663
  """
576
664
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
577
- :see: https://btc-alpha.github.io/api-docs/#charts
665
+
666
+ https://btc-alpha.github.io/api-docs/#charts
667
+
578
668
  :param str symbol: unified symbol of the market to fetch OHLCV data for
579
669
  :param str timeframe: the length of time each candle represents
580
670
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -584,7 +674,7 @@ class btcalpha(Exchange, ImplicitAPI):
584
674
  """
585
675
  await self.load_markets()
586
676
  market = self.market(symbol)
587
- request = {
677
+ request: dict = {
588
678
  'pair': market['id'],
589
679
  'type': self.safe_string(self.timeframes, timeframe, timeframe),
590
680
  }
@@ -603,7 +693,7 @@ class btcalpha(Exchange, ImplicitAPI):
603
693
  return self.parse_ohlcvs(response, market, timeframe, since, limit)
604
694
 
605
695
  def parse_balance(self, response) -> Balances:
606
- result = {'info': response}
696
+ result: dict = {'info': response}
607
697
  for i in range(0, len(response)):
608
698
  balance = response[i]
609
699
  currencyId = self.safe_string(balance, 'currency')
@@ -617,7 +707,9 @@ class btcalpha(Exchange, ImplicitAPI):
617
707
  async def fetch_balance(self, params={}) -> Balances:
618
708
  """
619
709
  query for balance and get the amount of funds available for trading or funds locked in orders
620
- :see: https://btc-alpha.github.io/api-docs/#list-own-wallets
710
+
711
+ https://btc-alpha.github.io/api-docs/#list-own-wallets
712
+
621
713
  :param dict [params]: extra parameters specific to the exchange API endpoint
622
714
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
623
715
  """
@@ -625,15 +717,15 @@ class btcalpha(Exchange, ImplicitAPI):
625
717
  response = await self.privateGetWallets(params)
626
718
  return self.parse_balance(response)
627
719
 
628
- def parse_order_status(self, status):
629
- statuses = {
720
+ def parse_order_status(self, status: Str):
721
+ statuses: dict = {
630
722
  '1': 'open',
631
723
  '2': 'canceled',
632
724
  '3': 'closed',
633
725
  }
634
726
  return self.safe_string(statuses, status, status)
635
727
 
636
- def parse_order(self, order, market: Market = None) -> Order:
728
+ def parse_order(self, order: dict, market: Market = None) -> Order:
637
729
  #
638
730
  # fetchClosedOrders / fetchOrder
639
731
  # {
@@ -676,7 +768,7 @@ class btcalpha(Exchange, ImplicitAPI):
676
768
  filled = self.safe_string(order, 'amount_filled')
677
769
  amount = self.safe_string(order, 'amount_original')
678
770
  status = self.parse_order_status(self.safe_string(order, 'status'))
679
- id = self.safe_string_2(order, 'oid', 'id')
771
+ id = self.safe_string_n(order, ['oid', 'id', 'order'])
680
772
  trades = self.safe_value(order, 'trades')
681
773
  side = self.safe_string_2(order, 'my_side', 'type')
682
774
  return self.safe_order({
@@ -691,7 +783,6 @@ class btcalpha(Exchange, ImplicitAPI):
691
783
  'postOnly': None,
692
784
  'side': side,
693
785
  'price': price,
694
- 'stopPrice': None,
695
786
  'triggerPrice': None,
696
787
  'cost': None,
697
788
  'amount': amount,
@@ -706,13 +797,15 @@ class btcalpha(Exchange, ImplicitAPI):
706
797
 
707
798
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}):
708
799
  """
709
- :see: https://btc-alpha.github.io/api-docs/#create-order
800
+
801
+ https://btc-alpha.github.io/api-docs/#create-order
802
+
710
803
  create a trade order
711
804
  :param str symbol: unified symbol of the market to create an order in
712
805
  :param str type: 'limit'
713
806
  :param str side: 'buy' or 'sell'
714
807
  :param float amount: how much of currency you want to trade in units of base currency
715
- :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
808
+ :param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
716
809
  :param dict [params]: extra parameters specific to the exchange API endpoint
717
810
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
718
811
  """
@@ -720,7 +813,7 @@ class btcalpha(Exchange, ImplicitAPI):
720
813
  raise InvalidOrder(self.id + ' only limits orders are supported')
721
814
  await self.load_markets()
722
815
  market = self.market(symbol)
723
- request = {
816
+ request: dict = {
724
817
  'pair': market['id'],
725
818
  'type': side,
726
819
  'amount': amount,
@@ -737,29 +830,39 @@ class btcalpha(Exchange, ImplicitAPI):
737
830
 
738
831
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
739
832
  """
740
- :see: https://btc-alpha.github.io/api-docs/#cancel-order
833
+
834
+ https://btc-alpha.github.io/api-docs/#cancel-order
835
+
741
836
  cancels an open order
742
837
  :param str id: order id
743
838
  :param str symbol: unified symbol of the market the order was made in
744
839
  :param dict [params]: extra parameters specific to the exchange API endpoint
745
840
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
746
841
  """
747
- request = {
842
+ request: dict = {
748
843
  'order': id,
749
844
  }
750
845
  response = await self.privatePostOrderCancel(self.extend(request, params))
751
- return response
846
+ #
847
+ # {
848
+ # "order": 63568
849
+ # }
850
+ #
851
+ return self.parse_order(response)
752
852
 
753
853
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
754
854
  """
755
- :see: https://btc-alpha.github.io/api-docs/#retrieve-single-order
855
+
856
+ https://btc-alpha.github.io/api-docs/#retrieve-single-order
857
+
756
858
  fetches information on an order made by the user
859
+ :param str id: the order id
757
860
  :param str symbol: not used by btcalpha fetchOrder
758
861
  :param dict [params]: extra parameters specific to the exchange API endpoint
759
862
  :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
760
863
  """
761
864
  await self.load_markets()
762
- request = {
865
+ request: dict = {
763
866
  'id': id,
764
867
  }
765
868
  order = await self.privateGetOrderId(self.extend(request, params))
@@ -767,7 +870,9 @@ class btcalpha(Exchange, ImplicitAPI):
767
870
 
768
871
  async def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
769
872
  """
770
- :see: https://btc-alpha.github.io/api-docs/#list-own-orders
873
+
874
+ https://btc-alpha.github.io/api-docs/#list-own-orders
875
+
771
876
  fetches information on multiple orders made by the user
772
877
  :param str symbol: unified market symbol of the market orders were made in
773
878
  :param int [since]: the earliest time in ms to fetch orders for
@@ -776,7 +881,7 @@ class btcalpha(Exchange, ImplicitAPI):
776
881
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
777
882
  """
778
883
  await self.load_markets()
779
- request = {}
884
+ request: dict = {}
780
885
  market = None
781
886
  if symbol is not None:
782
887
  market = self.market(symbol)
@@ -789,14 +894,16 @@ class btcalpha(Exchange, ImplicitAPI):
789
894
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
790
895
  """
791
896
  fetch all unfilled currently open orders
792
- :see: https://btc-alpha.github.io/api-docs/#list-own-orders
897
+
898
+ https://btc-alpha.github.io/api-docs/#list-own-orders
899
+
793
900
  :param str symbol: unified market symbol
794
901
  :param int [since]: the earliest time in ms to fetch open orders for
795
902
  :param int [limit]: the maximum number of open orders structures to retrieve
796
903
  :param dict [params]: extra parameters specific to the exchange API endpoint
797
904
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
798
905
  """
799
- request = {
906
+ request: dict = {
800
907
  'status': '1',
801
908
  }
802
909
  return await self.fetch_orders(symbol, since, limit, self.extend(request, params))
@@ -804,14 +911,16 @@ class btcalpha(Exchange, ImplicitAPI):
804
911
  async def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
805
912
  """
806
913
  fetches information on multiple closed orders made by the user
807
- :see: https://btc-alpha.github.io/api-docs/#list-own-orders
914
+
915
+ https://btc-alpha.github.io/api-docs/#list-own-orders
916
+
808
917
  :param str symbol: unified market symbol of the market orders were made in
809
918
  :param int [since]: the earliest time in ms to fetch orders for
810
919
  :param int [limit]: the maximum number of order structures to retrieve
811
920
  :param dict [params]: extra parameters specific to the exchange API endpoint
812
921
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
813
922
  """
814
- request = {
923
+ request: dict = {
815
924
  'status': '3',
816
925
  }
817
926
  return await self.fetch_orders(symbol, since, limit, self.extend(request, params))
@@ -819,7 +928,9 @@ class btcalpha(Exchange, ImplicitAPI):
819
928
  async def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
820
929
  """
821
930
  fetch all trades made by the user
822
- :see: https://btc-alpha.github.io/api-docs/#list-own-exchanges
931
+
932
+ https://btc-alpha.github.io/api-docs/#list-own-exchanges
933
+
823
934
  :param str symbol: unified market symbol
824
935
  :param int [since]: the earliest time in ms to fetch trades for
825
936
  :param int [limit]: the maximum number of trades structures to retrieve
@@ -827,7 +938,7 @@ class btcalpha(Exchange, ImplicitAPI):
827
938
  :returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=trade-structure>`
828
939
  """
829
940
  await self.load_markets()
830
- request = {}
941
+ request: dict = {}
831
942
  if symbol is not None:
832
943
  market = self.market(symbol)
833
944
  request['pair'] = market['id']
@@ -863,21 +974,16 @@ class btcalpha(Exchange, ImplicitAPI):
863
974
  headers['X-NONCE'] = str(self.nonce())
864
975
  return {'url': url, 'method': method, 'body': body, 'headers': headers}
865
976
 
866
- def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
977
+ def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
867
978
  if response is None:
868
979
  return None # fallback to default error handler
869
980
  #
870
981
  # {"date":1570599531.4814300537,"error":"Out of balance -9.99243661 BTC"}
871
982
  #
872
983
  error = self.safe_string(response, 'error')
873
- feedback = self.id + ' ' + body
874
984
  if error is not None:
985
+ feedback = self.id + ' ' + body
875
986
  self.throw_exactly_matched_exception(self.exceptions['exact'], error, feedback)
876
987
  self.throw_broadly_matched_exception(self.exceptions['broad'], error, feedback)
877
- if code == 401 or code == 403:
878
- raise AuthenticationError(feedback)
879
- elif code == 429:
880
- raise DDoSProtection(feedback)
881
- if code < 400:
882
- return None
883
- raise ExchangeError(feedback)
988
+ raise ExchangeError(feedback) # unknown error
989
+ return None