ccxt 4.3.55__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.55/ccxt.egg-info → ccxt-4.3.57}/PKG-INFO +4 -6
  2. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/__init__.py +1 -1
  3. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bingx.py +16 -0
  4. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/__init__.py +1 -1
  5. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/base/exchange.py +19 -3
  6. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/base/ws/client.py +25 -5
  7. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/binance.py +7 -7
  8. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bingx.py +78 -7
  9. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bitflyer.py +7 -1
  10. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bitget.py +56 -47
  11. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bitopro.py +18 -3
  12. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/btcmarkets.py +27 -26
  13. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bybit.py +8 -5
  14. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/coinone.py +15 -19
  15. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/delta.py +5 -1
  16. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/gate.py +97 -2
  17. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/htx.py +84 -25
  18. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/huobijp.py +61 -2
  19. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/hyperliquid.py +1 -1
  20. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/lbank.py +27 -6
  21. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/base/exchange.py +19 -3
  22. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/binance.py +7 -7
  23. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bingx.py +78 -7
  24. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bitflyer.py +7 -1
  25. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bitget.py +56 -47
  26. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bitopro.py +18 -3
  27. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/btcmarkets.py +27 -26
  28. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bybit.py +8 -5
  29. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/coinone.py +15 -19
  30. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/delta.py +5 -1
  31. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/gate.py +97 -2
  32. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/htx.py +84 -25
  33. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/huobijp.py +61 -2
  34. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/hyperliquid.py +1 -1
  35. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/lbank.py +27 -6
  36. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/__init__.py +1 -1
  37. {ccxt-4.3.55 → ccxt-4.3.57/ccxt.egg-info}/PKG-INFO +4 -6
  38. {ccxt-4.3.55 → ccxt-4.3.57}/package.json +7 -3
  39. {ccxt-4.3.55 → ccxt-4.3.57}/LICENSE.txt +0 -0
  40. {ccxt-4.3.55 → ccxt-4.3.57}/MANIFEST.in +0 -0
  41. {ccxt-4.3.55 → ccxt-4.3.57}/README.rst +0 -0
  42. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/__init__.py +0 -0
  43. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/ace.py +0 -0
  44. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/alpaca.py +0 -0
  45. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/ascendex.py +0 -0
  46. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bequant.py +0 -0
  47. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bigone.py +0 -0
  48. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/binance.py +0 -0
  49. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/binancecoinm.py +0 -0
  50. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/binanceus.py +0 -0
  51. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/binanceusdm.py +0 -0
  52. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bit2c.py +0 -0
  53. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bitbank.py +0 -0
  54. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bitbay.py +0 -0
  55. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bitbns.py +0 -0
  56. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bitcoincom.py +0 -0
  57. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bitfinex.py +0 -0
  58. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bitfinex2.py +0 -0
  59. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bitflyer.py +0 -0
  60. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bitget.py +0 -0
  61. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bithumb.py +0 -0
  62. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bitmart.py +0 -0
  63. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bitmex.py +0 -0
  64. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bitopro.py +0 -0
  65. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bitpanda.py +0 -0
  66. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bitrue.py +0 -0
  67. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bitso.py +0 -0
  68. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bitstamp.py +0 -0
  69. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bitteam.py +0 -0
  70. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bitvavo.py +0 -0
  71. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bl3p.py +0 -0
  72. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/blockchaincom.py +0 -0
  73. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/blofin.py +0 -0
  74. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/btcalpha.py +0 -0
  75. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/btcbox.py +0 -0
  76. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/btcmarkets.py +0 -0
  77. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/btcturk.py +0 -0
  78. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/bybit.py +0 -0
  79. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/cex.py +0 -0
  80. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/coinbase.py +0 -0
  81. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/coinbaseadvanced.py +0 -0
  82. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/coinbaseexchange.py +0 -0
  83. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/coinbaseinternational.py +0 -0
  84. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/coincheck.py +0 -0
  85. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/coinex.py +0 -0
  86. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/coinlist.py +0 -0
  87. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/coinmate.py +0 -0
  88. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/coinmetro.py +0 -0
  89. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/coinone.py +0 -0
  90. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/coinsph.py +0 -0
  91. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/coinspot.py +0 -0
  92. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/cryptocom.py +0 -0
  93. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/currencycom.py +0 -0
  94. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/delta.py +0 -0
  95. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/deribit.py +0 -0
  96. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/digifinex.py +0 -0
  97. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/exmo.py +0 -0
  98. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/fmfwio.py +0 -0
  99. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/gate.py +0 -0
  100. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/gateio.py +0 -0
  101. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/gemini.py +0 -0
  102. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/hitbtc.py +0 -0
  103. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/hitbtc3.py +0 -0
  104. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/hollaex.py +0 -0
  105. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/htx.py +0 -0
  106. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/huobi.py +0 -0
  107. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/huobijp.py +0 -0
  108. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/hyperliquid.py +0 -0
  109. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/idex.py +0 -0
  110. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/independentreserve.py +0 -0
  111. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/indodax.py +0 -0
  112. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/kraken.py +0 -0
  113. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/krakenfutures.py +0 -0
  114. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/kucoin.py +0 -0
  115. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/kucoinfutures.py +0 -0
  116. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/kuna.py +0 -0
  117. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/latoken.py +0 -0
  118. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/lbank.py +0 -0
  119. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/luno.py +0 -0
  120. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/lykke.py +0 -0
  121. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/mercado.py +0 -0
  122. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/mexc.py +0 -0
  123. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/ndax.py +0 -0
  124. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/novadax.py +0 -0
  125. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/oceanex.py +0 -0
  126. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/okcoin.py +0 -0
  127. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/okx.py +0 -0
  128. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/onetrading.py +0 -0
  129. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/oxfun.py +0 -0
  130. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/p2b.py +0 -0
  131. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/paymium.py +0 -0
  132. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/phemex.py +0 -0
  133. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/poloniex.py +0 -0
  134. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/poloniexfutures.py +0 -0
  135. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/probit.py +0 -0
  136. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/timex.py +0 -0
  137. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/tokocrypto.py +0 -0
  138. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/tradeogre.py +0 -0
  139. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/upbit.py +0 -0
  140. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/vertex.py +0 -0
  141. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/wavesexchange.py +0 -0
  142. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/wazirx.py +0 -0
  143. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/whitebit.py +0 -0
  144. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/woo.py +0 -0
  145. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/woofipro.py +0 -0
  146. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/xt.py +0 -0
  147. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/yobit.py +0 -0
  148. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/zaif.py +0 -0
  149. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/abstract/zonda.py +0 -0
  150. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/ace.py +0 -0
  151. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/alpaca.py +0 -0
  152. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/ascendex.py +0 -0
  153. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/ace.py +0 -0
  154. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/alpaca.py +0 -0
  155. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/ascendex.py +0 -0
  156. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/base/__init__.py +0 -0
  157. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/base/throttler.py +0 -0
  158. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/base/ws/__init__.py +0 -0
  159. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  160. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/base/ws/cache.py +0 -0
  161. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/base/ws/fast_client.py +0 -0
  162. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/base/ws/functions.py +0 -0
  163. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/base/ws/future.py +0 -0
  164. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/base/ws/order_book.py +0 -0
  165. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  166. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bequant.py +0 -0
  167. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bigone.py +0 -0
  168. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/binancecoinm.py +0 -0
  169. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/binanceus.py +0 -0
  170. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/binanceusdm.py +0 -0
  171. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bit2c.py +0 -0
  172. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bitbank.py +0 -0
  173. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bitbay.py +0 -0
  174. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bitbns.py +0 -0
  175. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bitcoincom.py +0 -0
  176. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bitfinex.py +0 -0
  177. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bitfinex2.py +0 -0
  178. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bithumb.py +0 -0
  179. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bitmart.py +0 -0
  180. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bitmex.py +0 -0
  181. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bitpanda.py +0 -0
  182. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bitrue.py +0 -0
  183. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bitso.py +0 -0
  184. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bitstamp.py +0 -0
  185. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bitteam.py +0 -0
  186. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bitvavo.py +0 -0
  187. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/bl3p.py +0 -0
  188. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/blockchaincom.py +0 -0
  189. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/blofin.py +0 -0
  190. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/btcalpha.py +0 -0
  191. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/btcbox.py +0 -0
  192. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/btcturk.py +0 -0
  193. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/cex.py +0 -0
  194. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/coinbase.py +0 -0
  195. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/coinbaseadvanced.py +0 -0
  196. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/coinbaseexchange.py +0 -0
  197. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/coinbaseinternational.py +0 -0
  198. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/coincheck.py +0 -0
  199. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/coinex.py +0 -0
  200. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/coinlist.py +0 -0
  201. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/coinmate.py +0 -0
  202. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/coinmetro.py +0 -0
  203. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/coinsph.py +0 -0
  204. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/coinspot.py +0 -0
  205. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/cryptocom.py +0 -0
  206. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/currencycom.py +0 -0
  207. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/deribit.py +0 -0
  208. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/digifinex.py +0 -0
  209. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/exmo.py +0 -0
  210. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/fmfwio.py +0 -0
  211. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/gateio.py +0 -0
  212. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/gemini.py +0 -0
  213. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/hitbtc.py +0 -0
  214. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/hitbtc3.py +0 -0
  215. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/hollaex.py +0 -0
  216. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/huobi.py +0 -0
  217. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/idex.py +0 -0
  218. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/independentreserve.py +0 -0
  219. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/indodax.py +0 -0
  220. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/kraken.py +0 -0
  221. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/krakenfutures.py +0 -0
  222. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/kucoin.py +0 -0
  223. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/kucoinfutures.py +0 -0
  224. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/kuna.py +0 -0
  225. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/latoken.py +0 -0
  226. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/luno.py +0 -0
  227. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/lykke.py +0 -0
  228. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/mercado.py +0 -0
  229. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/mexc.py +0 -0
  230. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/ndax.py +0 -0
  231. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/novadax.py +0 -0
  232. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/oceanex.py +0 -0
  233. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/okcoin.py +0 -0
  234. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/okx.py +0 -0
  235. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/onetrading.py +0 -0
  236. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/oxfun.py +0 -0
  237. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/p2b.py +0 -0
  238. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/paymium.py +0 -0
  239. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/phemex.py +0 -0
  240. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/poloniex.py +0 -0
  241. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/poloniexfutures.py +0 -0
  242. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/probit.py +0 -0
  243. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/timex.py +0 -0
  244. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/tokocrypto.py +0 -0
  245. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/tradeogre.py +0 -0
  246. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/upbit.py +0 -0
  247. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/vertex.py +0 -0
  248. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/wavesexchange.py +0 -0
  249. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/wazirx.py +0 -0
  250. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/whitebit.py +0 -0
  251. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/woo.py +0 -0
  252. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/woofipro.py +0 -0
  253. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/xt.py +0 -0
  254. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/yobit.py +0 -0
  255. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/zaif.py +0 -0
  256. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/async_support/zonda.py +0 -0
  257. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/base/__init__.py +0 -0
  258. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/base/decimal_to_precision.py +0 -0
  259. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/base/errors.py +0 -0
  260. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/base/precise.py +0 -0
  261. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/base/types.py +0 -0
  262. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bequant.py +0 -0
  263. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bigone.py +0 -0
  264. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/binancecoinm.py +0 -0
  265. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/binanceus.py +0 -0
  266. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/binanceusdm.py +0 -0
  267. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bit2c.py +0 -0
  268. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bitbank.py +0 -0
  269. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bitbay.py +0 -0
  270. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bitbns.py +0 -0
  271. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bitcoincom.py +0 -0
  272. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bitfinex.py +0 -0
  273. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bitfinex2.py +0 -0
  274. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bithumb.py +0 -0
  275. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bitmart.py +0 -0
  276. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bitmex.py +0 -0
  277. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bitpanda.py +0 -0
  278. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bitrue.py +0 -0
  279. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bitso.py +0 -0
  280. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bitstamp.py +0 -0
  281. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bitteam.py +0 -0
  282. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bitvavo.py +0 -0
  283. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/bl3p.py +0 -0
  284. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/blockchaincom.py +0 -0
  285. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/blofin.py +0 -0
  286. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/btcalpha.py +0 -0
  287. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/btcbox.py +0 -0
  288. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/btcturk.py +0 -0
  289. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/cex.py +0 -0
  290. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/coinbase.py +0 -0
  291. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/coinbaseadvanced.py +0 -0
  292. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/coinbaseexchange.py +0 -0
  293. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/coinbaseinternational.py +0 -0
  294. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/coincheck.py +0 -0
  295. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/coinex.py +0 -0
  296. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/coinlist.py +0 -0
  297. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/coinmate.py +0 -0
  298. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/coinmetro.py +0 -0
  299. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/coinsph.py +0 -0
  300. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/coinspot.py +0 -0
  301. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/cryptocom.py +0 -0
  302. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/currencycom.py +0 -0
  303. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/deribit.py +0 -0
  304. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/digifinex.py +0 -0
  305. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/exmo.py +0 -0
  306. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/fmfwio.py +0 -0
  307. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/gateio.py +0 -0
  308. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/gemini.py +0 -0
  309. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/hitbtc.py +0 -0
  310. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/hitbtc3.py +0 -0
  311. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/hollaex.py +0 -0
  312. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/huobi.py +0 -0
  313. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/idex.py +0 -0
  314. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/independentreserve.py +0 -0
  315. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/indodax.py +0 -0
  316. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/kraken.py +0 -0
  317. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/krakenfutures.py +0 -0
  318. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/kucoin.py +0 -0
  319. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/kucoinfutures.py +0 -0
  320. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/kuna.py +0 -0
  321. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/latoken.py +0 -0
  322. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/luno.py +0 -0
  323. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/lykke.py +0 -0
  324. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/mercado.py +0 -0
  325. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/mexc.py +0 -0
  326. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/ndax.py +0 -0
  327. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/novadax.py +0 -0
  328. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/oceanex.py +0 -0
  329. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/okcoin.py +0 -0
  330. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/okx.py +0 -0
  331. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/onetrading.py +0 -0
  332. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/oxfun.py +0 -0
  333. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/p2b.py +0 -0
  334. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/paymium.py +0 -0
  335. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/phemex.py +0 -0
  336. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/poloniex.py +0 -0
  337. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/poloniexfutures.py +0 -0
  338. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/alpaca.py +0 -0
  339. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/ascendex.py +0 -0
  340. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/bequant.py +0 -0
  341. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/binance.py +0 -0
  342. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/binancecoinm.py +0 -0
  343. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/binanceus.py +0 -0
  344. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/binanceusdm.py +0 -0
  345. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/bingx.py +0 -0
  346. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/bitcoincom.py +0 -0
  347. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/bitfinex.py +0 -0
  348. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/bitfinex2.py +0 -0
  349. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/bitget.py +0 -0
  350. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/bithumb.py +0 -0
  351. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/bitmart.py +0 -0
  352. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/bitmex.py +0 -0
  353. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/bitopro.py +0 -0
  354. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/bitpanda.py +0 -0
  355. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/bitrue.py +0 -0
  356. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/bitstamp.py +0 -0
  357. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/bitvavo.py +0 -0
  358. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/blockchaincom.py +0 -0
  359. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/bybit.py +0 -0
  360. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/cex.py +0 -0
  361. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/coinbase.py +0 -0
  362. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/coinbaseexchange.py +0 -0
  363. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/coinbaseinternational.py +0 -0
  364. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/coincheck.py +0 -0
  365. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/coinex.py +0 -0
  366. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/coinone.py +0 -0
  367. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/cryptocom.py +0 -0
  368. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/currencycom.py +0 -0
  369. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/deribit.py +0 -0
  370. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/exmo.py +0 -0
  371. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/gate.py +0 -0
  372. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/gateio.py +0 -0
  373. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/gemini.py +0 -0
  374. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/hitbtc.py +0 -0
  375. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/hollaex.py +0 -0
  376. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/htx.py +0 -0
  377. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/huobi.py +0 -0
  378. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/huobijp.py +0 -0
  379. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/hyperliquid.py +0 -0
  380. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/idex.py +0 -0
  381. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/independentreserve.py +0 -0
  382. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/kraken.py +0 -0
  383. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/krakenfutures.py +0 -0
  384. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/kucoin.py +0 -0
  385. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/kucoinfutures.py +0 -0
  386. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/lbank.py +0 -0
  387. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/luno.py +0 -0
  388. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/mexc.py +0 -0
  389. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/ndax.py +0 -0
  390. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/okcoin.py +0 -0
  391. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/okx.py +0 -0
  392. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/onetrading.py +0 -0
  393. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/oxfun.py +0 -0
  394. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/p2b.py +0 -0
  395. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/phemex.py +0 -0
  396. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/poloniex.py +0 -0
  397. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/poloniexfutures.py +0 -0
  398. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/probit.py +0 -0
  399. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/upbit.py +0 -0
  400. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/vertex.py +0 -0
  401. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/wazirx.py +0 -0
  402. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/whitebit.py +0 -0
  403. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/woo.py +0 -0
  404. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/pro/woofipro.py +0 -0
  405. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/probit.py +0 -0
  406. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/__init__.py +0 -0
  407. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  408. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  409. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  410. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  411. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  412. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  413. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  414. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  415. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  416. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  417. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
  418. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
  419. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
  420. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
  421. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
  422. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
  423. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
  424. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
  425. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
  426. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
  427. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
  428. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  429. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
  430. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
  431. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
  432. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  433. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
  434. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
  435. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
  436. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
  437. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
  438. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
  439. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
  440. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
  441. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  442. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
  443. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
  444. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
  445. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  446. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
  447. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
  448. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
  449. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
  450. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
  451. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
  452. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
  453. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
  454. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
  455. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  456. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
  457. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
  458. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
  459. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
  460. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
  461. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
  462. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
  463. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
  464. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
  465. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
  466. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
  467. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
  468. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
  469. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
  470. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
  471. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
  472. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
  473. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  474. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
  475. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
  476. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
  477. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
  478. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
  479. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  480. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  481. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
  482. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
  483. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/msgpack/ext.py +0 -0
  484. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
  485. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
  486. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
  487. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
  488. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
  489. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
  490. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
  491. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/__init__.py +0 -0
  492. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
  493. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/_version.py +0 -0
  494. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
  495. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
  496. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
  497. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
  498. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
  499. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
  500. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
  501. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/recipes.py +0 -0
  502. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/static_dependencies/toolz/utils.py +0 -0
  503. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/test/__init__.py +0 -0
  504. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/test/tests_async.py +0 -0
  505. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/test/tests_helpers.py +0 -0
  506. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/test/tests_init.py +0 -0
  507. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/test/tests_sync.py +0 -0
  508. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/timex.py +0 -0
  509. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/tokocrypto.py +0 -0
  510. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/tradeogre.py +0 -0
  511. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/upbit.py +0 -0
  512. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/vertex.py +0 -0
  513. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/wavesexchange.py +0 -0
  514. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/wazirx.py +0 -0
  515. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/whitebit.py +0 -0
  516. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/woo.py +0 -0
  517. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/woofipro.py +0 -0
  518. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/xt.py +0 -0
  519. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/yobit.py +0 -0
  520. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/zaif.py +0 -0
  521. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt/zonda.py +0 -0
  522. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt.egg-info/SOURCES.txt +0 -0
  523. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt.egg-info/dependency_links.txt +0 -0
  524. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt.egg-info/requires.txt +0 -0
  525. {ccxt-4.3.55 → ccxt-4.3.57}/ccxt.egg-info/top_level.txt +0 -0
  526. {ccxt-4.3.55 → ccxt-4.3.57}/setup.cfg +0 -0
  527. {ccxt-4.3.55 → 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.55
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
@@ -60,8 +60,6 @@ Current feature list:
60
60
 
61
61
  ## Sponsored Promotion
62
62
 
63
- [![Trade derivatives in June with BitMEX](https://github.com/ccxt/ccxt/assets/1294454/94c3d456-fdf5-4d62-8178-a42e3999e29e)](https://www.bitmex.com/app/register/NZTR1q)
64
-
65
63
  ## See Also
66
64
 
67
65
  - <sub>[![TabTrader](https://user-images.githubusercontent.com/1294454/66755907-9c3e8880-eea1-11e9-846e-0bff349ceb87.png)](https://tab-trader.com/?utm_source=ccxt)</sub> **[TabTrader](https://tab-trader.com/?utm_source=ccxt)** – trading on all exchanges in one app. Available on **[Android](https://play.google.com/store/apps/details?id=com.tabtrader.android&referrer=utm_source%3Dccxt)** and **[iOS](https://itunes.apple.com/app/apple-store/id1095716562?mt=8)**!
@@ -259,13 +257,13 @@ console.log(version, Object.keys(exchanges));
259
257
 
260
258
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
261
259
 
262
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.55/dist/ccxt.browser.min.js
263
- * unpkg: https://unpkg.com/ccxt@4.3.55/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
264
262
 
265
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.
266
264
 
267
265
  ```HTML
268
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.55/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>
269
267
  ```
270
268
 
271
269
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.3.55'
25
+ __version__ = '4.3.57'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -76,6 +76,22 @@ class ImplicitAPI:
76
76
  swap_v2_private_delete_trade_batchorders = swapV2PrivateDeleteTradeBatchOrders = Entry('trade/batchOrders', ['swap', 'v2', 'private'], 'DELETE', {'cost': 2})
77
77
  swap_v2_private_delete_trade_allopenorders = swapV2PrivateDeleteTradeAllOpenOrders = Entry('trade/allOpenOrders', ['swap', 'v2', 'private'], 'DELETE', {'cost': 2})
78
78
  swap_v3_public_get_quote_klines = swapV3PublicGetQuoteKlines = Entry('quote/klines', ['swap', 'v3', 'public'], 'GET', {'cost': 1})
79
+ cswap_v1_public_get_market_contracts = cswapV1PublicGetMarketContracts = Entry('market/contracts', ['cswap', 'v1', 'public'], 'GET', {'cost': 1})
80
+ cswap_v1_public_get_market_premiumindex = cswapV1PublicGetMarketPremiumIndex = Entry('market/premiumIndex', ['cswap', 'v1', 'public'], 'GET', {'cost': 1})
81
+ cswap_v1_public_get_market_openinterest = cswapV1PublicGetMarketOpenInterest = Entry('market/openInterest', ['cswap', 'v1', 'public'], 'GET', {'cost': 1})
82
+ cswap_v1_public_get_market_klines = cswapV1PublicGetMarketKlines = Entry('market/klines', ['cswap', 'v1', 'public'], 'GET', {'cost': 1})
83
+ cswap_v1_public_get_market_depth = cswapV1PublicGetMarketDepth = Entry('market/depth', ['cswap', 'v1', 'public'], 'GET', {'cost': 1})
84
+ cswap_v1_public_get_market_ticker = cswapV1PublicGetMarketTicker = Entry('market/ticker', ['cswap', 'v1', 'public'], 'GET', {'cost': 1})
85
+ cswap_v1_private_get_trade_leverage = cswapV1PrivateGetTradeLeverage = Entry('trade/leverage', ['cswap', 'v1', 'private'], 'GET', {'cost': 2})
86
+ cswap_v1_private_get_trade_forceorders = cswapV1PrivateGetTradeForceOrders = Entry('trade/forceOrders', ['cswap', 'v1', 'private'], 'GET', {'cost': 2})
87
+ cswap_v1_private_get_trade_allfillorders = cswapV1PrivateGetTradeAllFillOrders = Entry('trade/allFillOrders', ['cswap', 'v1', 'private'], 'GET', {'cost': 2})
88
+ cswap_v1_private_get_user_commissionrate = cswapV1PrivateGetUserCommissionRate = Entry('user/commissionRate', ['cswap', 'v1', 'private'], 'GET', {'cost': 2})
89
+ cswap_v1_private_get_user_positions = cswapV1PrivateGetUserPositions = Entry('user/positions', ['cswap', 'v1', 'private'], 'GET', {'cost': 2})
90
+ cswap_v1_private_get_user_balance = cswapV1PrivateGetUserBalance = Entry('user/balance', ['cswap', 'v1', 'private'], 'GET', {'cost': 2})
91
+ cswap_v1_private_post_trade_order = cswapV1PrivatePostTradeOrder = Entry('trade/order', ['cswap', 'v1', 'private'], 'POST', {'cost': 2})
92
+ cswap_v1_private_post_trade_leverage = cswapV1PrivatePostTradeLeverage = Entry('trade/leverage', ['cswap', 'v1', 'private'], 'POST', {'cost': 2})
93
+ cswap_v1_private_post_trade_allopenorders = cswapV1PrivatePostTradeAllOpenOrders = Entry('trade/allOpenOrders', ['cswap', 'v1', 'private'], 'POST', {'cost': 2})
94
+ cswap_v1_private_post_trade_closeallpositions = cswapV1PrivatePostTradeCloseAllPositions = Entry('trade/closeAllPositions', ['cswap', 'v1', 'private'], 'POST', {'cost': 2})
79
95
  contract_v1_private_get_allposition = contractV1PrivateGetAllPosition = Entry('allPosition', ['contract', 'v1', 'private'], 'GET', {'cost': 2})
80
96
  contract_v1_private_get_allorders = contractV1PrivateGetAllOrders = Entry('allOrders', ['contract', 'v1', 'private'], 'GET', {'cost': 2})
81
97
  contract_v1_private_get_balance = contractV1PrivateGetBalance = Entry('balance', ['contract', 'v1', 'private'], 'GET', {'cost': 2})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.55'
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.55'
5
+ __version__ = '4.3.57'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -24,7 +24,7 @@ from ccxt.async_support.base.throttler import Throttler
24
24
 
25
25
  # -----------------------------------------------------------------------------
26
26
 
27
- from ccxt.base.errors import BaseError, BadSymbol, BadRequest, BadResponse, ExchangeError, ExchangeNotAvailable, RequestTimeout, NotSupported, NullResponse, InvalidAddress, RateLimitExceeded
27
+ from ccxt.base.errors import BaseError, NetworkError, BadSymbol, BadRequest, BadResponse, ExchangeError, ExchangeNotAvailable, RequestTimeout, NotSupported, NullResponse, InvalidAddress, RateLimitExceeded
28
28
  from ccxt.base.types import OrderType, OrderSide, OrderRequest, CancellationRequest
29
29
 
30
30
  # -----------------------------------------------------------------------------
@@ -826,7 +826,23 @@ class Exchange(BaseExchange):
826
826
  self.last_request_headers = request['headers']
827
827
  self.last_request_body = request['body']
828
828
  self.last_request_url = request['url']
829
- return await self.fetch(request['url'], request['method'], request['headers'], request['body'])
829
+ retries = None
830
+ retries, params = self.handle_option_and_params(params, path, 'maxRetriesOnFailure', 0)
831
+ retryDelay = None
832
+ retryDelay, params = self.handle_option_and_params(params, path, 'maxRetriesOnFailureDelay', 0)
833
+ for i in range(0, retries + 1):
834
+ try:
835
+ return await self.fetch(request['url'], request['method'], request['headers'], request['body'])
836
+ except Exception as e:
837
+ if isinstance(e, NetworkError):
838
+ if i < retries:
839
+ if self.verbose:
840
+ self.log('Request failed with the error: ' + str(e) + ', retrying ' + (i + str(1)) + ' of ' + str(retries) + '...')
841
+ if (retryDelay is not None) and (retryDelay != 0):
842
+ await self.sleep(retryDelay)
843
+ continue
844
+ raise e
845
+ return None # self line is never reached, but exists for c# value return requirement
830
846
 
831
847
  async def request(self, path, api: Any = 'public', method='GET', params={}, headers: Any = None, body: Any = None, config={}):
832
848
  return await self.fetch2(path, api, method, params, headers, body, config)
@@ -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):
@@ -1567,7 +1567,7 @@ class binance(Exchange, ImplicitAPI):
1567
1567
  '-3042': BadRequest, # {"code":-3042,"msg":"PriceIndex not available for self margin pair."}
1568
1568
  '-3043': PermissionDenied, # {"code":-3043,"msg":"Transferring in not allowed."}
1569
1569
  '-3044': OperationFailed, # {"code":-3044,"msg":"System busy."}
1570
- '-3045': OperationFailed, # {"code":-3045,"msg":"The system doesn't have enough asset now."}
1570
+ '-3045': OperationRejected, # {"code":-3045,"msg":"The system doesn't have enough asset now."}
1571
1571
  '-3999': PermissionDenied, # {"code":-3999,"msg":"This function is only available for invited users."}
1572
1572
  #
1573
1573
  # 4xxx(different from contract markets)
@@ -1586,7 +1586,7 @@ class binance(Exchange, ImplicitAPI):
1586
1586
  '-4011': BadRequest, # {"code":-4011 ,"msg":"White list mail is invalid."}
1587
1587
  '-4012': PermissionDenied, # {"code":-4012 ,"msg":"White list is not opened."}
1588
1588
  '-4013': AuthenticationError, # {"code":-4013 ,"msg":"2FA is not opened."}
1589
- '-4014': OperationFailed, # {"code":-4014 ,"msg":"Withdraw is not allowed within 2 min login."}
1589
+ '-4014': OperationRejected, # {"code":-4014 ,"msg":"Withdraw is not allowed within 2 min login."}
1590
1590
  '-4015': PermissionDenied, # {"code":-4015 ,"msg":"Withdraw is limited."}
1591
1591
  '-4016': PermissionDenied, # {"code":-4016 ,"msg":"Within 24 hours after password modification, withdrawal is prohibited."}
1592
1592
  '-4017': PermissionDenied, # {"code":-4017 ,"msg":"Within 24 hours after the release of 2FA, withdrawal is prohibited."}
@@ -1595,7 +1595,7 @@ class binance(Exchange, ImplicitAPI):
1595
1595
  '-4020': ExchangeError, # override commons
1596
1596
  '-4021': BadRequest, # {"code":-4021,"msg":"Asset withdrawal must be an %s multiple of %s."}
1597
1597
  '-4022': BadRequest, # {"code":-4022,"msg":"Not less than the minimum pick-up quantity %s."}
1598
- '-4023': OperationFailed, # {"code":-4023,"msg":"Within 24 hours, the withdrawal exceeds the maximum amount."}
1598
+ '-4023': OperationRejected, # {"code":-4023,"msg":"Within 24 hours, the withdrawal exceeds the maximum amount."}
1599
1599
  '-4024': InsufficientFunds, # {"code":-4024,"msg":"You don't have self asset."}
1600
1600
  '-4025': InsufficientFunds, # {"code":-4025,"msg":"The number of hold asset is less than zero."}
1601
1601
  '-4026': InsufficientFunds, # {"code":-4026,"msg":"You have insufficient balance."}
@@ -1604,7 +1604,7 @@ class binance(Exchange, ImplicitAPI):
1604
1604
  '-4029': BadRequest, # {"code":-4029,"msg":"The withdrawal record does not exist."}
1605
1605
  '-4030': BadResponse, # {"code":-4030,"msg":"Confirmation of successful asset withdrawal. [TODO] possible bug in docs"}
1606
1606
  '-4031': OperationFailed, # {"code":-4031,"msg":"Cancellation failed."}
1607
- '-4032': OperationFailed, # {"code":-4032,"msg":"Withdraw verification exception."}
1607
+ '-4032': OperationRejected, # {"code":-4032,"msg":"Withdraw verification exception."}
1608
1608
  '-4033': BadRequest, # {"code":-4033,"msg":"Illegal address."}
1609
1609
  '-4034': OperationRejected, # {"code":-4034,"msg":"The address is suspected of fake."}
1610
1610
  '-4035': PermissionDenied, # {"code":-4035,"msg":"This address is not on the whitelist. Please join and try again."}
@@ -1727,7 +1727,7 @@ class binance(Exchange, ImplicitAPI):
1727
1727
  '-5003': InsufficientFunds, # You don't have self asset.
1728
1728
  '-5004': OperationRejected, # The residual balances of %s have exceeded 0.001BTC, Please re-choose.
1729
1729
  '-5005': OperationRejected, # The residual balances of %s is too low, Please re-choose.
1730
- '-5006': OperationFailed, # Only transfer once in 24 hours.
1730
+ '-5006': OperationRejected, # Only transfer once in 24 hours.
1731
1731
  '-5007': BadRequest, # Quantity must be greater than zero.
1732
1732
  '-5008': OperationRejected, # Insufficient amount of returnable assets.
1733
1733
  '-5009': BadSymbol, # Product does not exist.
@@ -1745,8 +1745,8 @@ class binance(Exchange, ImplicitAPI):
1745
1745
  '-6004': BadRequest, # Product not in purchase status
1746
1746
  '-6005': BadRequest, # Smaller than min purchase limit
1747
1747
  '-6006': BadRequest, # Redeem amount error
1748
- '-6007': OperationFailed, # Not in redeem time
1749
- '-6008': OperationFailed, # Product not in redeem status
1748
+ '-6007': OperationRejected, # Not in redeem time
1749
+ '-6008': OperationRejected, # Product not in redeem status
1750
1750
  '-6009': RateLimitExceeded, # Request frequency too high
1751
1751
  '-6011': OperationRejected, # Exceeding the maximum num allowed to purchase per user
1752
1752
  '-6012': InsufficientFunds, # Balance not enough
@@ -116,6 +116,7 @@ class bingx(Exchange, ImplicitAPI):
116
116
  'subAccount': 'https://open-api.{hostname}/openApi',
117
117
  'account': 'https://open-api.{hostname}/openApi',
118
118
  'copyTrading': 'https://open-api.{hostname}/openApi',
119
+ 'cswap': 'https://open-api.{hostname}/openApi',
119
120
  },
120
121
  'test': {
121
122
  'swap': 'https://open-api-vst.{hostname}/openApi', # only swap is really "test" but since the API keys are the same, we want to keep all the functionalities when the user enables the sandboxmode
@@ -278,6 +279,36 @@ class bingx(Exchange, ImplicitAPI):
278
279
  },
279
280
  },
280
281
  },
282
+ 'cswap': {
283
+ 'v1': {
284
+ 'public': {
285
+ 'get': {
286
+ 'market/contracts': 1,
287
+ 'market/premiumIndex': 1,
288
+ 'market/openInterest': 1,
289
+ 'market/klines': 1,
290
+ 'market/depth': 1,
291
+ 'market/ticker': 1,
292
+ },
293
+ },
294
+ 'private': {
295
+ 'get': {
296
+ 'trade/leverage': 2,
297
+ 'trade/forceOrders': 2,
298
+ 'trade/allFillOrders': 2,
299
+ 'user/commissionRate': 2,
300
+ 'user/positions': 2,
301
+ 'user/balance': 2,
302
+ },
303
+ 'post': {
304
+ 'trade/order': 2,
305
+ 'trade/leverage': 2,
306
+ 'trade/allOpenOrders': 2,
307
+ 'trade/closeAllPositions': 2,
308
+ },
309
+ },
310
+ },
311
+ },
281
312
  'contract': {
282
313
  'v1': {
283
314
  'private': {
@@ -644,6 +675,29 @@ class bingx(Exchange, ImplicitAPI):
644
675
  markets = self.safe_list(response, 'data', [])
645
676
  return self.parse_markets(markets)
646
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
+
647
701
  def parse_market(self, market: dict) -> Market:
648
702
  id = self.safe_string(market, 'symbol')
649
703
  symbolParts = id.split('-')
@@ -652,6 +706,14 @@ class bingx(Exchange, ImplicitAPI):
652
706
  base = self.safe_currency_code(baseId)
653
707
  quote = self.safe_currency_code(quoteId)
654
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
655
717
  settle = self.safe_currency_code(currency)
656
718
  pricePrecision = self.safe_number(market, 'tickSize')
657
719
  if pricePrecision is None:
@@ -668,8 +730,11 @@ class bingx(Exchange, ImplicitAPI):
668
730
  fees = self.safe_dict(self.fees, type, {})
669
731
  contractSize = self.parse_number('1') if (swap) else None
670
732
  isActive = self.safe_string(market, 'status') == '1'
671
- isInverse = None if (spot) else False
672
- 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
673
738
  return self.safe_market_structure({
674
739
  'id': id,
675
740
  'symbol': symbol,
@@ -711,15 +776,15 @@ class bingx(Exchange, ImplicitAPI):
711
776
  'max': self.safe_number(market, 'maxQty'),
712
777
  },
713
778
  'price': {
714
- 'min': None,
779
+ 'min': minTickSize,
715
780
  'max': None,
716
781
  },
717
782
  'cost': {
718
- 'min': self.safe_number_2(market, 'minNotional', 'tradeMinUSDT'),
783
+ 'min': self.safe_number_n(market, ['minNotional', 'tradeMinUSDT', 'minTradeValue']),
719
784
  'max': self.safe_number(market, 'maxNotional'),
720
785
  },
721
786
  },
722
- 'created': None,
787
+ 'created': timeOnline,
723
788
  'info': market,
724
789
  })
725
790
 
@@ -728,16 +793,20 @@ class bingx(Exchange, ImplicitAPI):
728
793
  retrieves data on all markets for bingx
729
794
  :see: https://bingx-api.github.io/docs/#/spot/market-api.html#Query%20Symbols
730
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
731
797
  :param dict [params]: extra parameters specific to the exchange API endpoint
732
798
  :returns dict[]: an array of objects representing market data
733
799
  """
734
800
  requests = [self.fetch_swap_markets(params)]
735
801
  isSandbox = self.safe_bool(self.options, 'sandboxMode', False)
736
802
  if not isSandbox:
803
+ requests.append(self.fetch_inverse_swap_markets(params))
737
804
  requests.append(self.fetch_spot_markets(params)) # sandbox is swap only
738
805
  promises = await asyncio.gather(*requests)
739
- spotMarkets = self.safe_list(promises, 0, [])
740
- 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)
741
810
  return self.array_concat(spotMarkets, swapMarkets)
742
811
 
743
812
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
@@ -1466,6 +1535,8 @@ class bingx(Exchange, ImplicitAPI):
1466
1535
  percentage = percentage.replace('%', '')
1467
1536
  change = self.safe_string(ticker, 'priceChange')
1468
1537
  ts = self.safe_integer(ticker, 'closeTime')
1538
+ if ts == 0:
1539
+ ts = None
1469
1540
  datetime = self.iso8601(ts)
1470
1541
  bid = self.safe_string(ticker, 'bidPrice')
1471
1542
  bidVolume = self.safe_string(ticker, 'bidQty')
@@ -566,7 +566,13 @@ class bitflyer(Exchange, ImplicitAPI):
566
566
  'product_code': self.market_id(symbol),
567
567
  'child_order_acceptance_id': id,
568
568
  }
569
- return await self.privatePostCancelchildorder(self.extend(request, params))
569
+ response = await self.privatePostCancelchildorder(self.extend(request, params))
570
+ #
571
+ # 200 OK.
572
+ #
573
+ return self.safe_order({
574
+ 'info': response,
575
+ })
570
576
 
571
577
  def parse_order_status(self, status: Str):
572
578
  statuses: dict = {
@@ -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
  """
@@ -1038,6 +1038,20 @@ class bitopro(Exchange, ImplicitAPI):
1038
1038
  #
1039
1039
  return self.parse_order(response, market)
1040
1040
 
1041
+ def parse_cancel_orders(self, data):
1042
+ dataKeys = list(data.keys())
1043
+ orders = []
1044
+ for i in range(0, len(dataKeys)):
1045
+ marketId = dataKeys[i]
1046
+ orderIds = data[marketId]
1047
+ for j in range(0, len(orderIds)):
1048
+ orders.append(self.safe_order({
1049
+ 'info': orderIds[j],
1050
+ 'id': orderIds[j],
1051
+ 'symbol': self.safe_symbol(marketId),
1052
+ }))
1053
+ return orders
1054
+
1041
1055
  async def cancel_orders(self, ids, symbol: Str = None, params={}):
1042
1056
  """
1043
1057
  cancel multiple orders
@@ -1065,7 +1079,8 @@ class bitopro(Exchange, ImplicitAPI):
1065
1079
  # }
1066
1080
  # }
1067
1081
  #
1068
- return response
1082
+ data = self.safe_dict(response, 'data')
1083
+ return self.parse_cancel_orders(data)
1069
1084
 
1070
1085
  async def cancel_all_orders(self, symbol: Str = None, params={}):
1071
1086
  """
@@ -1086,7 +1101,7 @@ class bitopro(Exchange, ImplicitAPI):
1086
1101
  response = await self.privateDeleteOrdersPair(self.extend(request, params))
1087
1102
  else:
1088
1103
  response = await self.privateDeleteOrdersAll(self.extend(request, params))
1089
- result = self.safe_value(response, 'data', {})
1104
+ data = self.safe_value(response, 'data', {})
1090
1105
  #
1091
1106
  # {
1092
1107
  # "data":{
@@ -1097,7 +1112,7 @@ class bitopro(Exchange, ImplicitAPI):
1097
1112
  # }
1098
1113
  # }
1099
1114
  #
1100
- return result
1115
+ return self.parse_cancel_orders(data)
1101
1116
 
1102
1117
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
1103
1118
  """