ccxt 4.3.56__tar.gz → 4.3.57__tar.gz

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.

Potentially problematic release.


This version of ccxt might be problematic. Click here for more details.

Files changed (527) hide show
  1. {ccxt-4.3.56/ccxt.egg-info → ccxt-4.3.57}/PKG-INFO +4 -4
  2. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/__init__.py +1 -1
  3. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/__init__.py +1 -1
  4. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/base/exchange.py +1 -1
  5. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/base/ws/client.py +25 -5
  6. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bingx.py +45 -7
  7. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bitget.py +56 -47
  8. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/coinone.py +15 -19
  9. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/gate.py +96 -2
  10. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/htx.py +84 -25
  11. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/huobijp.py +61 -2
  12. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/base/exchange.py +1 -1
  13. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bingx.py +45 -7
  14. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bitget.py +56 -47
  15. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/coinone.py +15 -19
  16. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/gate.py +96 -2
  17. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/htx.py +84 -25
  18. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/huobijp.py +61 -2
  19. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/__init__.py +1 -1
  20. {ccxt-4.3.56 → ccxt-4.3.57/ccxt.egg-info}/PKG-INFO +4 -4
  21. {ccxt-4.3.56 → ccxt-4.3.57}/package.json +1 -1
  22. {ccxt-4.3.56 → ccxt-4.3.57}/LICENSE.txt +0 -0
  23. {ccxt-4.3.56 → ccxt-4.3.57}/MANIFEST.in +0 -0
  24. {ccxt-4.3.56 → ccxt-4.3.57}/README.rst +0 -0
  25. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/__init__.py +0 -0
  26. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/ace.py +0 -0
  27. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/alpaca.py +0 -0
  28. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/ascendex.py +0 -0
  29. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bequant.py +0 -0
  30. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bigone.py +0 -0
  31. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/binance.py +0 -0
  32. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/binancecoinm.py +0 -0
  33. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/binanceus.py +0 -0
  34. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/binanceusdm.py +0 -0
  35. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bingx.py +0 -0
  36. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bit2c.py +0 -0
  37. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bitbank.py +0 -0
  38. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bitbay.py +0 -0
  39. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bitbns.py +0 -0
  40. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bitcoincom.py +0 -0
  41. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bitfinex.py +0 -0
  42. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bitfinex2.py +0 -0
  43. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bitflyer.py +0 -0
  44. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bitget.py +0 -0
  45. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bithumb.py +0 -0
  46. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bitmart.py +0 -0
  47. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bitmex.py +0 -0
  48. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bitopro.py +0 -0
  49. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bitpanda.py +0 -0
  50. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bitrue.py +0 -0
  51. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bitso.py +0 -0
  52. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bitstamp.py +0 -0
  53. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bitteam.py +0 -0
  54. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bitvavo.py +0 -0
  55. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bl3p.py +0 -0
  56. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/blockchaincom.py +0 -0
  57. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/blofin.py +0 -0
  58. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/btcalpha.py +0 -0
  59. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/btcbox.py +0 -0
  60. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/btcmarkets.py +0 -0
  61. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/btcturk.py +0 -0
  62. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/bybit.py +0 -0
  63. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/cex.py +0 -0
  64. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/coinbase.py +0 -0
  65. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/coinbaseadvanced.py +0 -0
  66. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/coinbaseexchange.py +0 -0
  67. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/coinbaseinternational.py +0 -0
  68. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/coincheck.py +0 -0
  69. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/coinex.py +0 -0
  70. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/coinlist.py +0 -0
  71. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/coinmate.py +0 -0
  72. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/coinmetro.py +0 -0
  73. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/coinone.py +0 -0
  74. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/coinsph.py +0 -0
  75. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/coinspot.py +0 -0
  76. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/cryptocom.py +0 -0
  77. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/currencycom.py +0 -0
  78. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/delta.py +0 -0
  79. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/deribit.py +0 -0
  80. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/digifinex.py +0 -0
  81. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/exmo.py +0 -0
  82. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/fmfwio.py +0 -0
  83. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/gate.py +0 -0
  84. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/gateio.py +0 -0
  85. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/gemini.py +0 -0
  86. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/hitbtc.py +0 -0
  87. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/hitbtc3.py +0 -0
  88. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/hollaex.py +0 -0
  89. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/htx.py +0 -0
  90. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/huobi.py +0 -0
  91. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/huobijp.py +0 -0
  92. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/hyperliquid.py +0 -0
  93. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/idex.py +0 -0
  94. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/independentreserve.py +0 -0
  95. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/indodax.py +0 -0
  96. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/kraken.py +0 -0
  97. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/krakenfutures.py +0 -0
  98. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/kucoin.py +0 -0
  99. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/kucoinfutures.py +0 -0
  100. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/kuna.py +0 -0
  101. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/latoken.py +0 -0
  102. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/lbank.py +0 -0
  103. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/luno.py +0 -0
  104. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/lykke.py +0 -0
  105. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/mercado.py +0 -0
  106. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/mexc.py +0 -0
  107. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/ndax.py +0 -0
  108. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/novadax.py +0 -0
  109. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/oceanex.py +0 -0
  110. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/okcoin.py +0 -0
  111. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/okx.py +0 -0
  112. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/onetrading.py +0 -0
  113. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/oxfun.py +0 -0
  114. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/p2b.py +0 -0
  115. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/paymium.py +0 -0
  116. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/phemex.py +0 -0
  117. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/poloniex.py +0 -0
  118. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/poloniexfutures.py +0 -0
  119. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/probit.py +0 -0
  120. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/timex.py +0 -0
  121. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/tokocrypto.py +0 -0
  122. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/tradeogre.py +0 -0
  123. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/upbit.py +0 -0
  124. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/vertex.py +0 -0
  125. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/wavesexchange.py +0 -0
  126. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/wazirx.py +0 -0
  127. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/whitebit.py +0 -0
  128. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/woo.py +0 -0
  129. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/woofipro.py +0 -0
  130. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/xt.py +0 -0
  131. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/yobit.py +0 -0
  132. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/zaif.py +0 -0
  133. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/abstract/zonda.py +0 -0
  134. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/ace.py +0 -0
  135. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/alpaca.py +0 -0
  136. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/ascendex.py +0 -0
  137. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/ace.py +0 -0
  138. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/alpaca.py +0 -0
  139. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/ascendex.py +0 -0
  140. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/base/__init__.py +0 -0
  141. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/base/throttler.py +0 -0
  142. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/base/ws/__init__.py +0 -0
  143. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  144. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/base/ws/cache.py +0 -0
  145. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/base/ws/fast_client.py +0 -0
  146. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/base/ws/functions.py +0 -0
  147. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/base/ws/future.py +0 -0
  148. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/base/ws/order_book.py +0 -0
  149. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  150. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bequant.py +0 -0
  151. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bigone.py +0 -0
  152. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/binance.py +0 -0
  153. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/binancecoinm.py +0 -0
  154. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/binanceus.py +0 -0
  155. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/binanceusdm.py +0 -0
  156. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bit2c.py +0 -0
  157. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bitbank.py +0 -0
  158. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bitbay.py +0 -0
  159. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bitbns.py +0 -0
  160. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bitcoincom.py +0 -0
  161. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bitfinex.py +0 -0
  162. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bitfinex2.py +0 -0
  163. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bitflyer.py +0 -0
  164. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bithumb.py +0 -0
  165. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bitmart.py +0 -0
  166. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bitmex.py +0 -0
  167. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bitopro.py +0 -0
  168. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bitpanda.py +0 -0
  169. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bitrue.py +0 -0
  170. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bitso.py +0 -0
  171. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bitstamp.py +0 -0
  172. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bitteam.py +0 -0
  173. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bitvavo.py +0 -0
  174. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bl3p.py +0 -0
  175. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/blockchaincom.py +0 -0
  176. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/blofin.py +0 -0
  177. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/btcalpha.py +0 -0
  178. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/btcbox.py +0 -0
  179. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/btcmarkets.py +0 -0
  180. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/btcturk.py +0 -0
  181. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/bybit.py +0 -0
  182. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/cex.py +0 -0
  183. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/coinbase.py +0 -0
  184. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/coinbaseadvanced.py +0 -0
  185. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/coinbaseexchange.py +0 -0
  186. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/coinbaseinternational.py +0 -0
  187. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/coincheck.py +0 -0
  188. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/coinex.py +0 -0
  189. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/coinlist.py +0 -0
  190. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/coinmate.py +0 -0
  191. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/coinmetro.py +0 -0
  192. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/coinsph.py +0 -0
  193. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/coinspot.py +0 -0
  194. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/cryptocom.py +0 -0
  195. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/currencycom.py +0 -0
  196. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/delta.py +0 -0
  197. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/deribit.py +0 -0
  198. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/digifinex.py +0 -0
  199. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/exmo.py +0 -0
  200. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/fmfwio.py +0 -0
  201. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/gateio.py +0 -0
  202. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/gemini.py +0 -0
  203. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/hitbtc.py +0 -0
  204. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/hitbtc3.py +0 -0
  205. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/hollaex.py +0 -0
  206. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/huobi.py +0 -0
  207. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/hyperliquid.py +0 -0
  208. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/idex.py +0 -0
  209. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/independentreserve.py +0 -0
  210. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/indodax.py +0 -0
  211. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/kraken.py +0 -0
  212. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/krakenfutures.py +0 -0
  213. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/kucoin.py +0 -0
  214. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/kucoinfutures.py +0 -0
  215. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/kuna.py +0 -0
  216. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/latoken.py +0 -0
  217. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/lbank.py +0 -0
  218. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/luno.py +0 -0
  219. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/lykke.py +0 -0
  220. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/mercado.py +0 -0
  221. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/mexc.py +0 -0
  222. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/ndax.py +0 -0
  223. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/novadax.py +0 -0
  224. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/oceanex.py +0 -0
  225. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/okcoin.py +0 -0
  226. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/okx.py +0 -0
  227. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/onetrading.py +0 -0
  228. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/oxfun.py +0 -0
  229. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/p2b.py +0 -0
  230. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/paymium.py +0 -0
  231. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/phemex.py +0 -0
  232. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/poloniex.py +0 -0
  233. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/poloniexfutures.py +0 -0
  234. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/probit.py +0 -0
  235. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/timex.py +0 -0
  236. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/tokocrypto.py +0 -0
  237. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/tradeogre.py +0 -0
  238. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/upbit.py +0 -0
  239. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/vertex.py +0 -0
  240. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/wavesexchange.py +0 -0
  241. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/wazirx.py +0 -0
  242. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/whitebit.py +0 -0
  243. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/woo.py +0 -0
  244. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/woofipro.py +0 -0
  245. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/xt.py +0 -0
  246. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/yobit.py +0 -0
  247. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/zaif.py +0 -0
  248. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/async_support/zonda.py +0 -0
  249. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/base/__init__.py +0 -0
  250. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/base/decimal_to_precision.py +0 -0
  251. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/base/errors.py +0 -0
  252. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/base/precise.py +0 -0
  253. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/base/types.py +0 -0
  254. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bequant.py +0 -0
  255. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bigone.py +0 -0
  256. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/binance.py +0 -0
  257. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/binancecoinm.py +0 -0
  258. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/binanceus.py +0 -0
  259. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/binanceusdm.py +0 -0
  260. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bit2c.py +0 -0
  261. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bitbank.py +0 -0
  262. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bitbay.py +0 -0
  263. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bitbns.py +0 -0
  264. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bitcoincom.py +0 -0
  265. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bitfinex.py +0 -0
  266. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bitfinex2.py +0 -0
  267. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bitflyer.py +0 -0
  268. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bithumb.py +0 -0
  269. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bitmart.py +0 -0
  270. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bitmex.py +0 -0
  271. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bitopro.py +0 -0
  272. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bitpanda.py +0 -0
  273. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bitrue.py +0 -0
  274. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bitso.py +0 -0
  275. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bitstamp.py +0 -0
  276. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bitteam.py +0 -0
  277. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bitvavo.py +0 -0
  278. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bl3p.py +0 -0
  279. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/blockchaincom.py +0 -0
  280. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/blofin.py +0 -0
  281. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/btcalpha.py +0 -0
  282. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/btcbox.py +0 -0
  283. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/btcmarkets.py +0 -0
  284. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/btcturk.py +0 -0
  285. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/bybit.py +0 -0
  286. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/cex.py +0 -0
  287. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/coinbase.py +0 -0
  288. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/coinbaseadvanced.py +0 -0
  289. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/coinbaseexchange.py +0 -0
  290. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/coinbaseinternational.py +0 -0
  291. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/coincheck.py +0 -0
  292. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/coinex.py +0 -0
  293. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/coinlist.py +0 -0
  294. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/coinmate.py +0 -0
  295. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/coinmetro.py +0 -0
  296. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/coinsph.py +0 -0
  297. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/coinspot.py +0 -0
  298. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/cryptocom.py +0 -0
  299. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/currencycom.py +0 -0
  300. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/delta.py +0 -0
  301. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/deribit.py +0 -0
  302. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/digifinex.py +0 -0
  303. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/exmo.py +0 -0
  304. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/fmfwio.py +0 -0
  305. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/gateio.py +0 -0
  306. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/gemini.py +0 -0
  307. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/hitbtc.py +0 -0
  308. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/hitbtc3.py +0 -0
  309. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/hollaex.py +0 -0
  310. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/huobi.py +0 -0
  311. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/hyperliquid.py +0 -0
  312. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/idex.py +0 -0
  313. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/independentreserve.py +0 -0
  314. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/indodax.py +0 -0
  315. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/kraken.py +0 -0
  316. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/krakenfutures.py +0 -0
  317. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/kucoin.py +0 -0
  318. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/kucoinfutures.py +0 -0
  319. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/kuna.py +0 -0
  320. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/latoken.py +0 -0
  321. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/lbank.py +0 -0
  322. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/luno.py +0 -0
  323. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/lykke.py +0 -0
  324. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/mercado.py +0 -0
  325. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/mexc.py +0 -0
  326. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/ndax.py +0 -0
  327. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/novadax.py +0 -0
  328. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/oceanex.py +0 -0
  329. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/okcoin.py +0 -0
  330. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/okx.py +0 -0
  331. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/onetrading.py +0 -0
  332. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/oxfun.py +0 -0
  333. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/p2b.py +0 -0
  334. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/paymium.py +0 -0
  335. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/phemex.py +0 -0
  336. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/poloniex.py +0 -0
  337. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/poloniexfutures.py +0 -0
  338. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/alpaca.py +0 -0
  339. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/ascendex.py +0 -0
  340. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/bequant.py +0 -0
  341. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/binance.py +0 -0
  342. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/binancecoinm.py +0 -0
  343. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/binanceus.py +0 -0
  344. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/binanceusdm.py +0 -0
  345. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/bingx.py +0 -0
  346. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/bitcoincom.py +0 -0
  347. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/bitfinex.py +0 -0
  348. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/bitfinex2.py +0 -0
  349. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/bitget.py +0 -0
  350. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/bithumb.py +0 -0
  351. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/bitmart.py +0 -0
  352. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/bitmex.py +0 -0
  353. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/bitopro.py +0 -0
  354. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/bitpanda.py +0 -0
  355. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/bitrue.py +0 -0
  356. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/bitstamp.py +0 -0
  357. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/bitvavo.py +0 -0
  358. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/blockchaincom.py +0 -0
  359. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/bybit.py +0 -0
  360. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/cex.py +0 -0
  361. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/coinbase.py +0 -0
  362. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/coinbaseexchange.py +0 -0
  363. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/coinbaseinternational.py +0 -0
  364. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/coincheck.py +0 -0
  365. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/coinex.py +0 -0
  366. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/coinone.py +0 -0
  367. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/cryptocom.py +0 -0
  368. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/currencycom.py +0 -0
  369. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/deribit.py +0 -0
  370. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/exmo.py +0 -0
  371. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/gate.py +0 -0
  372. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/gateio.py +0 -0
  373. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/gemini.py +0 -0
  374. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/hitbtc.py +0 -0
  375. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/hollaex.py +0 -0
  376. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/htx.py +0 -0
  377. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/huobi.py +0 -0
  378. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/huobijp.py +0 -0
  379. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/hyperliquid.py +0 -0
  380. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/idex.py +0 -0
  381. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/independentreserve.py +0 -0
  382. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/kraken.py +0 -0
  383. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/krakenfutures.py +0 -0
  384. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/kucoin.py +0 -0
  385. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/kucoinfutures.py +0 -0
  386. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/lbank.py +0 -0
  387. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/luno.py +0 -0
  388. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/mexc.py +0 -0
  389. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/ndax.py +0 -0
  390. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/okcoin.py +0 -0
  391. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/okx.py +0 -0
  392. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/onetrading.py +0 -0
  393. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/oxfun.py +0 -0
  394. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/p2b.py +0 -0
  395. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/phemex.py +0 -0
  396. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/poloniex.py +0 -0
  397. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/poloniexfutures.py +0 -0
  398. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/probit.py +0 -0
  399. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/upbit.py +0 -0
  400. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/vertex.py +0 -0
  401. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/wazirx.py +0 -0
  402. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/whitebit.py +0 -0
  403. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/woo.py +0 -0
  404. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/pro/woofipro.py +0 -0
  405. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/probit.py +0 -0
  406. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/__init__.py +0 -0
  407. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  408. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  409. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  410. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  411. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  412. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  413. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  414. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  415. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  416. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  417. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
  418. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
  419. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
  420. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
  421. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
  422. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
  423. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
  424. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
  425. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
  426. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
  427. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
  428. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  429. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
  430. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
  431. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
  432. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  433. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
  434. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
  435. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
  436. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
  437. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
  438. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
  439. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
  440. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
  441. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  442. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
  443. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
  444. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
  445. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  446. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
  447. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
  448. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
  449. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
  450. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
  451. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
  452. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
  453. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
  454. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
  455. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  456. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
  457. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
  458. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
  459. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
  460. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
  461. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
  462. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
  463. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
  464. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
  465. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
  466. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
  467. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
  468. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
  469. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
  470. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
  471. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
  472. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
  473. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  474. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
  475. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
  476. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
  477. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
  478. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
  479. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  480. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  481. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
  482. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
  483. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/msgpack/ext.py +0 -0
  484. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
  485. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
  486. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
  487. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
  488. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
  489. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
  490. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
  491. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/__init__.py +0 -0
  492. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
  493. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/_version.py +0 -0
  494. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
  495. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
  496. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
  497. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
  498. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
  499. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
  500. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
  501. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/recipes.py +0 -0
  502. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/utils.py +0 -0
  503. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/test/__init__.py +0 -0
  504. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/test/tests_async.py +0 -0
  505. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/test/tests_helpers.py +0 -0
  506. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/test/tests_init.py +0 -0
  507. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/test/tests_sync.py +0 -0
  508. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/timex.py +0 -0
  509. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/tokocrypto.py +0 -0
  510. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/tradeogre.py +0 -0
  511. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/upbit.py +0 -0
  512. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/vertex.py +0 -0
  513. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/wavesexchange.py +0 -0
  514. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/wazirx.py +0 -0
  515. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/whitebit.py +0 -0
  516. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/woo.py +0 -0
  517. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/woofipro.py +0 -0
  518. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/xt.py +0 -0
  519. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/yobit.py +0 -0
  520. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/zaif.py +0 -0
  521. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt/zonda.py +0 -0
  522. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt.egg-info/SOURCES.txt +0 -0
  523. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt.egg-info/dependency_links.txt +0 -0
  524. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt.egg-info/requires.txt +0 -0
  525. {ccxt-4.3.56 → ccxt-4.3.57}/ccxt.egg-info/top_level.txt +0 -0
  526. {ccxt-4.3.56 → ccxt-4.3.57}/setup.cfg +0 -0
  527. {ccxt-4.3.56 → ccxt-4.3.57}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.3.56
3
+ Version: 4.3.57
4
4
  Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges
5
5
  Home-page: https://ccxt.com
6
6
  Author: Igor Kroitor
@@ -257,13 +257,13 @@ console.log(version, Object.keys(exchanges));
257
257
 
258
258
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
259
259
 
260
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.56/dist/ccxt.browser.min.js
261
- * unpkg: https://unpkg.com/ccxt@4.3.56/dist/ccxt.browser.min.js
260
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.57/dist/ccxt.browser.min.js
261
+ * unpkg: https://unpkg.com/ccxt@4.3.57/dist/ccxt.browser.min.js
262
262
 
263
263
  CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
264
264
 
265
265
  ```HTML
266
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.56/dist/ccxt.browser.min.js"></script>
266
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.57/dist/ccxt.browser.min.js"></script>
267
267
  ```
268
268
 
269
269
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.3.56'
25
+ __version__ = '4.3.57'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.56'
7
+ __version__ = '4.3.57'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.3.56'
5
+ __version__ = '4.3.57'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -4,7 +4,7 @@ from asyncio import sleep, ensure_future, wait_for, TimeoutError
4
4
  from .functions import milliseconds, iso8601, deep_extend
5
5
  from ccxt import NetworkError, RequestTimeout, NotSupported
6
6
  from ccxt.async_support.base.ws.future import Future
7
-
7
+ from collections import deque
8
8
 
9
9
  class Client(object):
10
10
 
@@ -14,6 +14,8 @@ class Client(object):
14
14
  options = {} # ws-specific options
15
15
  subscriptions = {}
16
16
  rejections = {}
17
+ message_queue = {}
18
+ useMessageQueue = True
17
19
  on_message_callback = None
18
20
  on_error_callback = None
19
21
  on_close_callback = None
@@ -68,15 +70,32 @@ class Client(object):
68
70
  if message_hash in self.rejections:
69
71
  future.reject(self.rejections[message_hash])
70
72
  del self.rejections[message_hash]
73
+ del self.message_queue[message_hash]
74
+ return future
75
+ if self.useMessageQueue and message_hash in self.message_queue:
76
+ queue = self.message_queue[message_hash]
77
+ if len(queue):
78
+ future.resolve(queue.popleft())
71
79
  return future
72
80
 
73
81
  def resolve(self, result, message_hash):
74
82
  if self.verbose and message_hash is None:
75
83
  self.log(iso8601(milliseconds()), 'resolve received None messageHash')
76
- if message_hash in self.futures:
77
- future = self.futures[message_hash]
78
- future.resolve(result)
79
- del self.futures[message_hash]
84
+
85
+ if self.useMessageQueue:
86
+ if message_hash not in self.message_queue:
87
+ self.message_queue[message_hash] = deque(maxlen=10)
88
+ queue = self.message_queue[message_hash]
89
+ queue.append(result)
90
+ if message_hash in self.futures:
91
+ future = self.futures[message_hash]
92
+ future.resolve(queue.popleft())
93
+ del self.futures[message_hash]
94
+ else:
95
+ if message_hash in self.futures:
96
+ future = self.futures[message_hash]
97
+ future.resolve(result)
98
+ del self.futures[message_hash]
80
99
  return result
81
100
 
82
101
  def reject(self, result, message_hash=None):
@@ -165,6 +184,7 @@ class Client(object):
165
184
  ensure_future(self.close(code), loop=self.asyncio_loop)
166
185
 
167
186
  def reset(self, error):
187
+ self.message_queue = {}
168
188
  self.reject(error)
169
189
 
170
190
  async def ping_loop(self):
@@ -675,6 +675,29 @@ class bingx(Exchange, ImplicitAPI):
675
675
  markets = self.safe_list(response, 'data', [])
676
676
  return self.parse_markets(markets)
677
677
 
678
+ async def fetch_inverse_swap_markets(self, params):
679
+ response = await self.cswapV1PublicGetMarketContracts(params)
680
+ #
681
+ # {
682
+ # "code": 0,
683
+ # "msg": "",
684
+ # "timestamp": 1720074487610,
685
+ # "data": [
686
+ # {
687
+ # "symbol": "BNB-USD",
688
+ # "pricePrecision": 2,
689
+ # "minTickSize": "10",
690
+ # "minTradeValue": "10",
691
+ # "minQty": "1.00000000",
692
+ # "status": 1,
693
+ # "timeOnline": 1713175200000
694
+ # },
695
+ # ]
696
+ # }
697
+ #
698
+ markets = self.safe_list(response, 'data', [])
699
+ return self.parse_markets(markets)
700
+
678
701
  def parse_market(self, market: dict) -> Market:
679
702
  id = self.safe_string(market, 'symbol')
680
703
  symbolParts = id.split('-')
@@ -683,6 +706,14 @@ class bingx(Exchange, ImplicitAPI):
683
706
  base = self.safe_currency_code(baseId)
684
707
  quote = self.safe_currency_code(quoteId)
685
708
  currency = self.safe_string(market, 'currency')
709
+ checkIsInverse = False
710
+ checkIsLinear = True
711
+ minTickSize = self.safe_number(market, 'minTickSize')
712
+ if minTickSize is not None:
713
+ # inverse swap market
714
+ currency = baseId
715
+ checkIsInverse = True
716
+ checkIsLinear = False
686
717
  settle = self.safe_currency_code(currency)
687
718
  pricePrecision = self.safe_number(market, 'tickSize')
688
719
  if pricePrecision is None:
@@ -699,8 +730,11 @@ class bingx(Exchange, ImplicitAPI):
699
730
  fees = self.safe_dict(self.fees, type, {})
700
731
  contractSize = self.parse_number('1') if (swap) else None
701
732
  isActive = self.safe_string(market, 'status') == '1'
702
- isInverse = None if (spot) else False
703
- isLinear = None if (spot) else swap
733
+ isInverse = None if (spot) else checkIsInverse
734
+ isLinear = None if (spot) else checkIsLinear
735
+ timeOnline = self.safe_integer(market, 'timeOnline')
736
+ if timeOnline == 0:
737
+ timeOnline = None
704
738
  return self.safe_market_structure({
705
739
  'id': id,
706
740
  'symbol': symbol,
@@ -742,15 +776,15 @@ class bingx(Exchange, ImplicitAPI):
742
776
  'max': self.safe_number(market, 'maxQty'),
743
777
  },
744
778
  'price': {
745
- 'min': None,
779
+ 'min': minTickSize,
746
780
  'max': None,
747
781
  },
748
782
  'cost': {
749
- 'min': self.safe_number_2(market, 'minNotional', 'tradeMinUSDT'),
783
+ 'min': self.safe_number_n(market, ['minNotional', 'tradeMinUSDT', 'minTradeValue']),
750
784
  'max': self.safe_number(market, 'maxNotional'),
751
785
  },
752
786
  },
753
- 'created': None,
787
+ 'created': timeOnline,
754
788
  'info': market,
755
789
  })
756
790
 
@@ -759,16 +793,20 @@ class bingx(Exchange, ImplicitAPI):
759
793
  retrieves data on all markets for bingx
760
794
  :see: https://bingx-api.github.io/docs/#/spot/market-api.html#Query%20Symbols
761
795
  :see: https://bingx-api.github.io/docs/#/swapV2/market-api.html#Contract%20Information
796
+ :see: https://bingx-api.github.io/docs/#/en-us/cswap/market-api.html#Contract%20Information
762
797
  :param dict [params]: extra parameters specific to the exchange API endpoint
763
798
  :returns dict[]: an array of objects representing market data
764
799
  """
765
800
  requests = [self.fetch_swap_markets(params)]
766
801
  isSandbox = self.safe_bool(self.options, 'sandboxMode', False)
767
802
  if not isSandbox:
803
+ requests.append(self.fetch_inverse_swap_markets(params))
768
804
  requests.append(self.fetch_spot_markets(params)) # sandbox is swap only
769
805
  promises = await asyncio.gather(*requests)
770
- spotMarkets = self.safe_list(promises, 0, [])
771
- swapMarkets = self.safe_list(promises, 1, [])
806
+ linearSwapMarkets = self.safe_list(promises, 0, [])
807
+ inverseSwapMarkets = self.safe_list(promises, 1, [])
808
+ spotMarkets = self.safe_list(promises, 2, [])
809
+ swapMarkets = self.array_concat(linearSwapMarkets, inverseSwapMarkets)
772
810
  return self.array_concat(spotMarkets, swapMarkets)
773
811
 
774
812
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
@@ -4692,6 +4692,22 @@ class bitget(Exchange, ImplicitAPI):
4692
4692
  response = await self.privateMarginPostMarginV1CrossOrderBatchCancelOrder(self.extend(request, params))
4693
4693
  else:
4694
4694
  response = await self.privateMarginPostMarginV1IsolatedOrderBatchCancelOrder(self.extend(request, params))
4695
+ #
4696
+ # {
4697
+ # "code": "00000",
4698
+ # "msg": "success",
4699
+ # "requestTime": 1700717155622,
4700
+ # "data": {
4701
+ # "resultList": [
4702
+ # {
4703
+ # "orderId": "1111453253721796609",
4704
+ # "clientOid": "2ae7fc8a4ff949b6b60d770ca3950e2d"
4705
+ # },
4706
+ # ],
4707
+ # "failure": []
4708
+ # }
4709
+ # }
4710
+ #
4695
4711
  else:
4696
4712
  if stop:
4697
4713
  stopRequest: dict = {
@@ -4700,6 +4716,27 @@ class bitget(Exchange, ImplicitAPI):
4700
4716
  response = await self.privateSpotPostV2SpotTradeBatchCancelPlanOrder(self.extend(stopRequest, params))
4701
4717
  else:
4702
4718
  response = await self.privateSpotPostV2SpotTradeCancelSymbolOrder(self.extend(request, params))
4719
+ #
4720
+ # {
4721
+ # "code": "00000",
4722
+ # "msg": "success",
4723
+ # "requestTime": 1700716953996,
4724
+ # "data": {
4725
+ # "symbol": "BTCUSDT"
4726
+ # }
4727
+ # }
4728
+ #
4729
+ timestamp = self.safe_integer(response, 'requestTime')
4730
+ responseData = self.safe_dict(response, 'data')
4731
+ marketId = self.safe_string(responseData, 'symbol')
4732
+ return [
4733
+ self.safe_order({
4734
+ 'info': response,
4735
+ 'symbol': self.safe_symbol(marketId, None, None, 'spot'),
4736
+ 'timestamp': timestamp,
4737
+ 'datetime': self.iso8601(timestamp),
4738
+ }),
4739
+ ]
4703
4740
  else:
4704
4741
  productType = None
4705
4742
  productType, params = self.handle_product_type_and_params(market, params)
@@ -4708,53 +4745,25 @@ class bitget(Exchange, ImplicitAPI):
4708
4745
  response = await self.privateMixPostV2MixOrderCancelPlanOrder(self.extend(request, params))
4709
4746
  else:
4710
4747
  response = await self.privateMixPostV2MixOrderBatchCancelOrders(self.extend(request, params))
4711
- #
4712
- # spot
4713
- #
4714
- # {
4715
- # "code": "00000",
4716
- # "msg": "success",
4717
- # "requestTime": 1700716953996,
4718
- # "data": {
4719
- # "symbol": "BTCUSDT"
4720
- # }
4721
- # }
4722
- #
4723
- # swap
4724
- #
4725
- # {
4726
- # "code": "00000",
4727
- # "msg": "success",
4728
- # "requestTime": "1680008815965",
4729
- # "data": {
4730
- # "successList": [
4731
- # {
4732
- # "orderId": "1024598257429823488",
4733
- # "clientOid": "876493ce-c287-4bfc-9f4a-8b1905881313"
4734
- # },
4735
- # ],
4736
- # "failureList": []
4737
- # }
4738
- # }
4739
- #
4740
- # spot margin
4741
- #
4742
- # {
4743
- # "code": "00000",
4744
- # "msg": "success",
4745
- # "requestTime": 1700717155622,
4746
- # "data": {
4747
- # "resultList": [
4748
- # {
4749
- # "orderId": "1111453253721796609",
4750
- # "clientOid": "2ae7fc8a4ff949b6b60d770ca3950e2d"
4751
- # },
4752
- # ],
4753
- # "failure": []
4754
- # }
4755
- # }
4756
- #
4757
- return response
4748
+ # {
4749
+ # "code": "00000",
4750
+ # "msg": "success",
4751
+ # "requestTime": "1680008815965",
4752
+ # "data": {
4753
+ # "successList": [
4754
+ # {
4755
+ # "orderId": "1024598257429823488",
4756
+ # "clientOid": "876493ce-c287-4bfc-9f4a-8b1905881313"
4757
+ # },
4758
+ # ],
4759
+ # "failureList": []
4760
+ # }
4761
+ # }
4762
+ data = self.safe_dict(response, 'data')
4763
+ resultList = self.safe_list_2(data, 'resultList', 'successList')
4764
+ failureList = self.safe_list_2(data, 'failure', 'failureList')
4765
+ responseList = self.array_concat(resultList, failureList)
4766
+ return self.parse_orders(responseList)
4758
4767
 
4759
4768
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
4760
4769
  """
@@ -25,8 +25,7 @@ class coinone(Exchange, ImplicitAPI):
25
25
  'id': 'coinone',
26
26
  'name': 'CoinOne',
27
27
  'countries': ['KR'], # Korea
28
- # 'enableRateLimit': False,
29
- 'rateLimit': 667,
28
+ 'rateLimit': 50,
30
29
  'version': 'v2',
31
30
  'pro': False,
32
31
  'has': {
@@ -198,10 +197,10 @@ class coinone(Exchange, ImplicitAPI):
198
197
  },
199
198
  'precisionMode': TICK_SIZE,
200
199
  'exceptions': {
201
- '405': OnMaintenance, # {"errorCode":"405","status":"maintenance","result":"error"}
202
- '104': OrderNotFound, # {"errorCode":"104","errorMsg":"Order id is not exist","result":"error"}
203
- '108': BadSymbol, # {"errorCode":"108","errorMsg":"Unknown CryptoCurrency","result":"error"}
204
- '107': BadRequest, # {"errorCode":"107","errorMsg":"Parameter error","result":"error"}
200
+ '104': OrderNotFound,
201
+ '107': BadRequest,
202
+ '108': BadSymbol,
203
+ '405': OnMaintenance,
205
204
  },
206
205
  'commonCurrencies': {
207
206
  'SOC': 'Soda Coin',
@@ -1111,17 +1110,14 @@ class coinone(Exchange, ImplicitAPI):
1111
1110
 
1112
1111
  def handle_errors(self, code: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
1113
1112
  if response is None:
1114
- return None
1115
- if 'result' in response:
1116
- result = response['result']
1117
- if result != 'success':
1118
- #
1119
- # { "errorCode": "405", "status": "maintenance", "result": "error"}
1120
- #
1121
- errorCode = self.safe_string(response, 'errorCode')
1122
- feedback = self.id + ' ' + body
1123
- self.throw_exactly_matched_exception(self.exceptions, errorCode, feedback)
1124
- raise ExchangeError(feedback)
1125
- else:
1126
- raise ExchangeError(self.id + ' ' + body)
1113
+ return None # fallback to default error handler
1114
+ #
1115
+ # {"result":"error","error_code":"107","error_msg":"Parameter value is wrong"}
1116
+ # {"result":"error","error_code":"108","error_msg":"Unknown CryptoCurrency"}
1117
+ #
1118
+ errorCode = self.safe_string(response, 'error_code')
1119
+ if errorCode != '0':
1120
+ feedback = self.id + ' ' + body
1121
+ self.throw_exactly_matched_exception(self.exceptions, errorCode, feedback)
1122
+ raise ExchangeError(feedback) # unknown message
1127
1123
  return None
@@ -7,7 +7,7 @@ from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.gate import ImplicitAPI
8
8
  import asyncio
9
9
  import hashlib
10
- from ccxt.base.types import Balances, Currencies, Currency, FundingHistory, Greeks, Int, Leverage, Leverages, LeverageTier, LeverageTiers, MarginModification, Market, MarketInterface, Num, Option, OptionChain, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
10
+ from ccxt.base.types import Balances, Currencies, Currency, FundingHistory, Greeks, Int, Leverage, Leverages, LeverageTier, LeverageTiers, MarginModification, Market, MarketInterface, Num, Option, OptionChain, Order, OrderBook, OrderRequest, CancellationRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
13
13
  from ccxt.base.errors import AuthenticationError
@@ -100,6 +100,8 @@ class gate(Exchange, ImplicitAPI):
100
100
  'borrowIsolatedMargin': True,
101
101
  'cancelAllOrders': True,
102
102
  'cancelOrder': True,
103
+ 'cancelOrders': True,
104
+ 'cancelOrdersForSymbols': True,
103
105
  'createMarketBuyOrderWithCost': True,
104
106
  'createMarketOrder': True,
105
107
  'createMarketOrderWithCost': False,
@@ -4185,6 +4187,8 @@ class gate(Exchange, ImplicitAPI):
4185
4187
  # "message": "Not enough balance"
4186
4188
  # }
4187
4189
  #
4190
+ # {"user_id":10406147,"id":"id","succeeded":false,"message":"INVALID_PROTOCOL","label":"INVALID_PROTOCOL"}
4191
+ #
4188
4192
  succeeded = self.safe_bool(order, 'succeeded', True)
4189
4193
  if not succeeded:
4190
4194
  # cancelOrders response
@@ -4192,6 +4196,7 @@ class gate(Exchange, ImplicitAPI):
4192
4196
  'clientOrderId': self.safe_string(order, 'text'),
4193
4197
  'info': order,
4194
4198
  'status': 'rejected',
4199
+ 'id': self.safe_string(order, 'id'),
4195
4200
  })
4196
4201
  put = self.safe_value_2(order, 'put', 'initial', {})
4197
4202
  trigger = self.safe_value(order, 'trigger', {})
@@ -4727,6 +4732,81 @@ class gate(Exchange, ImplicitAPI):
4727
4732
  #
4728
4733
  return self.parse_order(response, market)
4729
4734
 
4735
+ async def cancel_orders(self, ids: List[str], symbol: Str = None, params={}):
4736
+ """
4737
+ cancel multiple orders
4738
+ :see: https://www.gate.io/docs/developers/apiv4/en/#cancel-a-batch-of-orders-with-an-id-list
4739
+ :see: https://www.gate.io/docs/developers/apiv4/en/#cancel-a-batch-of-orders-with-an-id-list-2
4740
+ :param str[] ids: order ids
4741
+ :param str symbol: unified symbol of the market the order was made in
4742
+ :param dict [params]: extra parameters specific to the exchange API endpoint
4743
+ :returns dict: an list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
4744
+ """
4745
+ await self.load_markets()
4746
+ market = None
4747
+ if symbol is not None:
4748
+ market = self.market(symbol)
4749
+ type = None
4750
+ defaultSettle = 'usdt' if (market is None) else market['settle']
4751
+ settle = self.safe_string_lower(params, 'settle', defaultSettle)
4752
+ type, params = self.handle_market_type_and_params('cancelOrders', market, params)
4753
+ isSpot = (type == 'spot')
4754
+ if isSpot and (symbol is None):
4755
+ raise ArgumentsRequired(self.id + ' cancelOrders requires a symbol argument for spot markets')
4756
+ if isSpot:
4757
+ ordersRequests = []
4758
+ for i in range(0, len(ids)):
4759
+ id = ids[i]
4760
+ orderItem: dict = {
4761
+ 'id': id,
4762
+ 'symbol': symbol,
4763
+ }
4764
+ ordersRequests.append(orderItem)
4765
+ return await self.cancel_orders_for_symbols(ordersRequests, params)
4766
+ request = {
4767
+ 'settle': settle,
4768
+ }
4769
+ finalList = [request] # hacky but needs to be done here
4770
+ for i in range(0, len(ids)):
4771
+ finalList.append(ids[i])
4772
+ response = await self.privateFuturesPostSettleBatchCancelOrders(finalList)
4773
+ return self.parse_orders(response)
4774
+
4775
+ async def cancel_orders_for_symbols(self, orders: List[CancellationRequest], params={}):
4776
+ """
4777
+ cancel multiple orders for multiple symbols
4778
+ :see: https://www.gate.io/docs/developers/apiv4/en/#cancel-a-batch-of-orders-with-an-id-list
4779
+ :param str[] ids: order ids
4780
+ :param str symbol: unified symbol of the market the order was made in
4781
+ :param dict [params]: extra parameters specific to the exchange API endpoint
4782
+ :param str[] [params.clientOrderIds]: client order ids
4783
+ :returns dict: an list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
4784
+ """
4785
+ await self.load_markets()
4786
+ ordersRequests = []
4787
+ for i in range(0, len(orders)):
4788
+ order = orders[i]
4789
+ symbol = self.safe_string(order, 'symbol')
4790
+ market = self.market(symbol)
4791
+ if not market['spot']:
4792
+ raise NotSupported(self.id + ' cancelOrdersForSymbols() supports only spot markets')
4793
+ id = self.safe_string(order, 'id')
4794
+ orderItem: dict = {
4795
+ 'id': id,
4796
+ 'currency_pair': market['id'],
4797
+ }
4798
+ ordersRequests.append(orderItem)
4799
+ response = await self.privateSpotPostCancelBatchOrders(ordersRequests)
4800
+ #
4801
+ # [
4802
+ # {
4803
+ # "currency_pair": "BTC_USDT",
4804
+ # "id": "123456"
4805
+ # }
4806
+ # ]
4807
+ #
4808
+ return self.parse_orders(response)
4809
+
4730
4810
  async def cancel_all_orders(self, symbol: Str = None, params={}):
4731
4811
  """
4732
4812
  cancel all open orders
@@ -5653,7 +5733,20 @@ class gate(Exchange, ImplicitAPI):
5653
5733
  authentication = api[0] # public, private
5654
5734
  type = api[1] # spot, margin, future, delivery
5655
5735
  query = self.omit(params, self.extract_params(path))
5656
- if isinstance(params, list):
5736
+ containsSettle = path.find('settle') > -1
5737
+ if containsSettle and path.endswith('batch_cancel_orders'): # weird check to prevent $settle in php and converting {settle} to array(settle)
5738
+ # special case where we need to extract the settle from the path
5739
+ # but the body is an array of strings
5740
+ settle = self.safe_dict(params, 0)
5741
+ path = self.implode_params(path, settle)
5742
+ # remove the first element from params
5743
+ newParams = []
5744
+ anyParams = params
5745
+ for i in range(1, len(anyParams)):
5746
+ newParams.append(params[i])
5747
+ params = newParams
5748
+ query = newParams
5749
+ elif isinstance(params, list):
5657
5750
  # endpoints like createOrders use an array instead of an object
5658
5751
  # so we infer the settle from one of the elements
5659
5752
  # they have to be all the same so relying on the first one is fine
@@ -7012,6 +7105,7 @@ class gate(Exchange, ImplicitAPI):
7012
7105
  # {"label": "INVALID_PARAM_VALUE", "message": "invalid argument: Trigger.rule"}
7013
7106
  # {"label": "INVALID_PARAM_VALUE", "message": "invalid argument: trigger.expiration invalid range"}
7014
7107
  # {"label": "INVALID_ARGUMENT", "detail": "invalid size"}
7108
+ # {"user_id":10406147,"id":"id","succeeded":false,"message":"INVALID_PROTOCOL","label":"INVALID_PROTOCOL"}
7015
7109
  #
7016
7110
  label = self.safe_string(response, 'label')
7017
7111
  if label is not None: