ccxt 4.3.65__tar.gz → 4.3.67__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.
Files changed (528) hide show
  1. {ccxt-4.3.65/ccxt.egg-info → ccxt-4.3.67}/PKG-INFO +5 -4
  2. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/__init__.py +1 -1
  3. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bingx.py +7 -0
  4. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/__init__.py +1 -1
  5. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/base/exchange.py +1 -1
  6. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/base/ws/fast_client.py +2 -1
  7. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/base/ws/future.py +13 -2
  8. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bingx.py +147 -19
  9. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bithumb.py +60 -17
  10. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/hyperliquid.py +60 -7
  11. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/kraken.py +25 -0
  12. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/whitebit.py +1 -1
  13. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/zonda.py +1 -1
  14. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/base/exchange.py +10 -10
  15. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bingx.py +147 -19
  16. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bithumb.py +59 -17
  17. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/hyperliquid.py +60 -7
  18. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/kraken.py +25 -0
  19. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/__init__.py +1 -1
  20. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/bitget.py +1 -1
  21. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/bybit.py +1 -1
  22. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/coinone.py +1 -1
  23. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/currencycom.py +1 -1
  24. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/hollaex.py +1 -1
  25. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/hyperliquid.py +103 -3
  26. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/kucoin.py +1 -1
  27. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/kucoinfutures.py +1 -1
  28. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/mexc.py +1 -1
  29. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/okcoin.py +1 -1
  30. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/okx.py +21 -9
  31. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/oxfun.py +1 -1
  32. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/p2b.py +1 -1
  33. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/poloniex.py +1 -1
  34. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/whitebit.py +1 -1
  35. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/test/tests_async.py +58 -28
  36. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/test/tests_helpers.py +8 -1
  37. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/test/tests_sync.py +58 -28
  38. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/whitebit.py +1 -1
  39. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/zonda.py +1 -1
  40. {ccxt-4.3.65 → ccxt-4.3.67/ccxt.egg-info}/PKG-INFO +5 -4
  41. {ccxt-4.3.65 → ccxt-4.3.67}/package.json +1 -1
  42. {ccxt-4.3.65 → ccxt-4.3.67}/LICENSE.txt +0 -0
  43. {ccxt-4.3.65 → ccxt-4.3.67}/MANIFEST.in +0 -0
  44. {ccxt-4.3.65 → ccxt-4.3.67}/README.rst +0 -0
  45. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/__init__.py +0 -0
  46. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/ace.py +0 -0
  47. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/alpaca.py +0 -0
  48. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/ascendex.py +0 -0
  49. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bequant.py +0 -0
  50. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bigone.py +0 -0
  51. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/binance.py +0 -0
  52. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/binancecoinm.py +0 -0
  53. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/binanceus.py +0 -0
  54. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/binanceusdm.py +0 -0
  55. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bit2c.py +0 -0
  56. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bitbank.py +0 -0
  57. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bitbay.py +0 -0
  58. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bitbns.py +0 -0
  59. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bitcoincom.py +0 -0
  60. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bitfinex.py +0 -0
  61. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bitfinex2.py +0 -0
  62. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bitflyer.py +0 -0
  63. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bitget.py +0 -0
  64. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bithumb.py +0 -0
  65. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bitmart.py +0 -0
  66. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bitmex.py +0 -0
  67. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bitopro.py +0 -0
  68. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bitpanda.py +0 -0
  69. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bitrue.py +0 -0
  70. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bitso.py +0 -0
  71. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bitstamp.py +0 -0
  72. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bitteam.py +0 -0
  73. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bitvavo.py +0 -0
  74. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bl3p.py +0 -0
  75. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/blockchaincom.py +0 -0
  76. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/blofin.py +0 -0
  77. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/btcalpha.py +0 -0
  78. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/btcbox.py +0 -0
  79. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/btcmarkets.py +0 -0
  80. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/btcturk.py +0 -0
  81. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/bybit.py +0 -0
  82. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/cex.py +0 -0
  83. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/coinbase.py +0 -0
  84. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/coinbaseadvanced.py +0 -0
  85. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/coinbaseexchange.py +0 -0
  86. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/coinbaseinternational.py +0 -0
  87. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/coincheck.py +0 -0
  88. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/coinex.py +0 -0
  89. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/coinlist.py +0 -0
  90. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/coinmate.py +0 -0
  91. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/coinmetro.py +0 -0
  92. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/coinone.py +0 -0
  93. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/coinsph.py +0 -0
  94. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/coinspot.py +0 -0
  95. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/cryptocom.py +0 -0
  96. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/currencycom.py +0 -0
  97. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/delta.py +0 -0
  98. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/deribit.py +0 -0
  99. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/digifinex.py +0 -0
  100. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/exmo.py +0 -0
  101. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/fmfwio.py +0 -0
  102. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/gate.py +0 -0
  103. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/gateio.py +0 -0
  104. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/gemini.py +0 -0
  105. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/hitbtc.py +0 -0
  106. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/hitbtc3.py +0 -0
  107. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/hollaex.py +0 -0
  108. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/htx.py +0 -0
  109. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/huobi.py +0 -0
  110. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/huobijp.py +0 -0
  111. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/hyperliquid.py +0 -0
  112. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/idex.py +0 -0
  113. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/independentreserve.py +0 -0
  114. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/indodax.py +0 -0
  115. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/kraken.py +0 -0
  116. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/krakenfutures.py +0 -0
  117. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/kucoin.py +0 -0
  118. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/kucoinfutures.py +0 -0
  119. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/kuna.py +0 -0
  120. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/latoken.py +0 -0
  121. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/lbank.py +0 -0
  122. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/luno.py +0 -0
  123. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/lykke.py +0 -0
  124. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/mercado.py +0 -0
  125. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/mexc.py +0 -0
  126. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/ndax.py +0 -0
  127. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/novadax.py +0 -0
  128. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/oceanex.py +0 -0
  129. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/okcoin.py +0 -0
  130. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/okx.py +0 -0
  131. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/onetrading.py +0 -0
  132. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/oxfun.py +0 -0
  133. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/p2b.py +0 -0
  134. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/paymium.py +0 -0
  135. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/phemex.py +0 -0
  136. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/poloniex.py +0 -0
  137. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/poloniexfutures.py +0 -0
  138. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/probit.py +0 -0
  139. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/timex.py +0 -0
  140. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/tokocrypto.py +0 -0
  141. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/tradeogre.py +0 -0
  142. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/upbit.py +0 -0
  143. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/vertex.py +0 -0
  144. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/wavesexchange.py +0 -0
  145. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/wazirx.py +0 -0
  146. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/whitebit.py +0 -0
  147. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/woo.py +0 -0
  148. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/woofipro.py +0 -0
  149. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/xt.py +0 -0
  150. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/yobit.py +0 -0
  151. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/zaif.py +0 -0
  152. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/abstract/zonda.py +0 -0
  153. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/ace.py +0 -0
  154. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/alpaca.py +0 -0
  155. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/ascendex.py +0 -0
  156. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/ace.py +0 -0
  157. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/alpaca.py +0 -0
  158. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/ascendex.py +0 -0
  159. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/base/__init__.py +0 -0
  160. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/base/throttler.py +0 -0
  161. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/base/ws/__init__.py +0 -0
  162. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  163. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/base/ws/cache.py +0 -0
  164. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/base/ws/client.py +0 -0
  165. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/base/ws/functions.py +0 -0
  166. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/base/ws/order_book.py +0 -0
  167. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  168. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bequant.py +0 -0
  169. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bigone.py +0 -0
  170. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/binance.py +0 -0
  171. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/binancecoinm.py +0 -0
  172. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/binanceus.py +0 -0
  173. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/binanceusdm.py +0 -0
  174. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bit2c.py +0 -0
  175. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bitbank.py +0 -0
  176. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bitbay.py +0 -0
  177. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bitbns.py +0 -0
  178. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bitcoincom.py +0 -0
  179. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bitfinex.py +0 -0
  180. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bitfinex2.py +0 -0
  181. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bitflyer.py +0 -0
  182. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bitget.py +0 -0
  183. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bitmart.py +0 -0
  184. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bitmex.py +0 -0
  185. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bitopro.py +0 -0
  186. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bitpanda.py +0 -0
  187. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bitrue.py +0 -0
  188. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bitso.py +0 -0
  189. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bitstamp.py +0 -0
  190. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bitteam.py +0 -0
  191. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bitvavo.py +0 -0
  192. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bl3p.py +0 -0
  193. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/blockchaincom.py +0 -0
  194. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/blofin.py +0 -0
  195. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/btcalpha.py +0 -0
  196. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/btcbox.py +0 -0
  197. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/btcmarkets.py +0 -0
  198. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/btcturk.py +0 -0
  199. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/bybit.py +0 -0
  200. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/cex.py +0 -0
  201. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/coinbase.py +0 -0
  202. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/coinbaseadvanced.py +0 -0
  203. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/coinbaseexchange.py +0 -0
  204. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/coinbaseinternational.py +0 -0
  205. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/coincheck.py +0 -0
  206. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/coinex.py +0 -0
  207. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/coinlist.py +0 -0
  208. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/coinmate.py +0 -0
  209. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/coinmetro.py +0 -0
  210. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/coinone.py +0 -0
  211. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/coinsph.py +0 -0
  212. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/coinspot.py +0 -0
  213. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/cryptocom.py +0 -0
  214. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/currencycom.py +0 -0
  215. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/delta.py +0 -0
  216. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/deribit.py +0 -0
  217. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/digifinex.py +0 -0
  218. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/exmo.py +0 -0
  219. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/fmfwio.py +0 -0
  220. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/gate.py +0 -0
  221. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/gateio.py +0 -0
  222. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/gemini.py +0 -0
  223. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/hitbtc.py +0 -0
  224. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/hitbtc3.py +0 -0
  225. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/hollaex.py +0 -0
  226. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/htx.py +0 -0
  227. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/huobi.py +0 -0
  228. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/huobijp.py +0 -0
  229. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/idex.py +0 -0
  230. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/independentreserve.py +0 -0
  231. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/indodax.py +0 -0
  232. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/krakenfutures.py +0 -0
  233. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/kucoin.py +0 -0
  234. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/kucoinfutures.py +0 -0
  235. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/kuna.py +0 -0
  236. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/latoken.py +0 -0
  237. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/lbank.py +0 -0
  238. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/luno.py +0 -0
  239. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/lykke.py +0 -0
  240. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/mercado.py +0 -0
  241. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/mexc.py +0 -0
  242. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/ndax.py +0 -0
  243. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/novadax.py +0 -0
  244. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/oceanex.py +0 -0
  245. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/okcoin.py +0 -0
  246. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/okx.py +0 -0
  247. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/onetrading.py +0 -0
  248. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/oxfun.py +0 -0
  249. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/p2b.py +0 -0
  250. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/paymium.py +0 -0
  251. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/phemex.py +0 -0
  252. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/poloniex.py +0 -0
  253. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/poloniexfutures.py +0 -0
  254. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/probit.py +0 -0
  255. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/timex.py +0 -0
  256. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/tokocrypto.py +0 -0
  257. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/tradeogre.py +0 -0
  258. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/upbit.py +0 -0
  259. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/vertex.py +0 -0
  260. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/wavesexchange.py +0 -0
  261. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/wazirx.py +0 -0
  262. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/woo.py +0 -0
  263. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/woofipro.py +0 -0
  264. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/xt.py +0 -0
  265. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/yobit.py +0 -0
  266. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/async_support/zaif.py +0 -0
  267. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/base/__init__.py +0 -0
  268. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/base/decimal_to_precision.py +0 -0
  269. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/base/errors.py +0 -0
  270. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/base/precise.py +0 -0
  271. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/base/types.py +0 -0
  272. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bequant.py +0 -0
  273. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bigone.py +0 -0
  274. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/binance.py +0 -0
  275. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/binancecoinm.py +0 -0
  276. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/binanceus.py +0 -0
  277. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/binanceusdm.py +0 -0
  278. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bit2c.py +0 -0
  279. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bitbank.py +0 -0
  280. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bitbay.py +0 -0
  281. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bitbns.py +0 -0
  282. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bitcoincom.py +0 -0
  283. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bitfinex.py +0 -0
  284. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bitfinex2.py +0 -0
  285. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bitflyer.py +0 -0
  286. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bitget.py +0 -0
  287. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bitmart.py +0 -0
  288. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bitmex.py +0 -0
  289. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bitopro.py +0 -0
  290. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bitpanda.py +0 -0
  291. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bitrue.py +0 -0
  292. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bitso.py +0 -0
  293. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bitstamp.py +0 -0
  294. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bitteam.py +0 -0
  295. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bitvavo.py +0 -0
  296. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bl3p.py +0 -0
  297. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/blockchaincom.py +0 -0
  298. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/blofin.py +0 -0
  299. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/btcalpha.py +0 -0
  300. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/btcbox.py +0 -0
  301. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/btcmarkets.py +0 -0
  302. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/btcturk.py +0 -0
  303. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/bybit.py +0 -0
  304. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/cex.py +0 -0
  305. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/coinbase.py +0 -0
  306. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/coinbaseadvanced.py +0 -0
  307. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/coinbaseexchange.py +0 -0
  308. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/coinbaseinternational.py +0 -0
  309. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/coincheck.py +0 -0
  310. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/coinex.py +0 -0
  311. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/coinlist.py +0 -0
  312. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/coinmate.py +0 -0
  313. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/coinmetro.py +0 -0
  314. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/coinone.py +0 -0
  315. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/coinsph.py +0 -0
  316. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/coinspot.py +0 -0
  317. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/cryptocom.py +0 -0
  318. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/currencycom.py +0 -0
  319. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/delta.py +0 -0
  320. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/deribit.py +0 -0
  321. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/digifinex.py +0 -0
  322. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/exmo.py +0 -0
  323. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/fmfwio.py +0 -0
  324. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/gate.py +0 -0
  325. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/gateio.py +0 -0
  326. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/gemini.py +0 -0
  327. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/hitbtc.py +0 -0
  328. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/hitbtc3.py +0 -0
  329. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/hollaex.py +0 -0
  330. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/htx.py +0 -0
  331. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/huobi.py +0 -0
  332. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/huobijp.py +0 -0
  333. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/idex.py +0 -0
  334. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/independentreserve.py +0 -0
  335. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/indodax.py +0 -0
  336. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/krakenfutures.py +0 -0
  337. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/kucoin.py +0 -0
  338. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/kucoinfutures.py +0 -0
  339. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/kuna.py +0 -0
  340. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/latoken.py +0 -0
  341. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/lbank.py +0 -0
  342. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/luno.py +0 -0
  343. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/lykke.py +0 -0
  344. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/mercado.py +0 -0
  345. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/mexc.py +0 -0
  346. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/ndax.py +0 -0
  347. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/novadax.py +0 -0
  348. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/oceanex.py +0 -0
  349. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/okcoin.py +0 -0
  350. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/okx.py +0 -0
  351. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/onetrading.py +0 -0
  352. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/oxfun.py +0 -0
  353. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/p2b.py +0 -0
  354. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/paymium.py +0 -0
  355. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/phemex.py +0 -0
  356. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/poloniex.py +0 -0
  357. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/poloniexfutures.py +0 -0
  358. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/alpaca.py +0 -0
  359. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/ascendex.py +0 -0
  360. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/bequant.py +0 -0
  361. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/binance.py +0 -0
  362. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/binancecoinm.py +0 -0
  363. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/binanceus.py +0 -0
  364. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/binanceusdm.py +0 -0
  365. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/bingx.py +0 -0
  366. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/bitcoincom.py +0 -0
  367. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/bitfinex.py +0 -0
  368. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/bitfinex2.py +0 -0
  369. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/bithumb.py +0 -0
  370. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/bitmart.py +0 -0
  371. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/bitmex.py +0 -0
  372. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/bitopro.py +0 -0
  373. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/bitpanda.py +0 -0
  374. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/bitrue.py +0 -0
  375. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/bitstamp.py +0 -0
  376. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/bitvavo.py +0 -0
  377. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/blockchaincom.py +0 -0
  378. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/cex.py +0 -0
  379. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/coinbase.py +0 -0
  380. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/coinbaseexchange.py +0 -0
  381. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/coinbaseinternational.py +0 -0
  382. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/coincheck.py +0 -0
  383. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/coinex.py +0 -0
  384. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/cryptocom.py +0 -0
  385. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/deribit.py +0 -0
  386. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/exmo.py +0 -0
  387. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/gate.py +0 -0
  388. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/gateio.py +0 -0
  389. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/gemini.py +0 -0
  390. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/hitbtc.py +0 -0
  391. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/htx.py +0 -0
  392. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/huobi.py +0 -0
  393. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/huobijp.py +0 -0
  394. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/idex.py +0 -0
  395. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/independentreserve.py +0 -0
  396. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/kraken.py +0 -0
  397. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/krakenfutures.py +0 -0
  398. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/lbank.py +0 -0
  399. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/luno.py +0 -0
  400. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/ndax.py +0 -0
  401. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/onetrading.py +0 -0
  402. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/phemex.py +0 -0
  403. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/poloniexfutures.py +0 -0
  404. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/probit.py +0 -0
  405. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/upbit.py +0 -0
  406. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/vertex.py +0 -0
  407. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/wazirx.py +0 -0
  408. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/woo.py +0 -0
  409. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/woofipro.py +0 -0
  410. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/pro/xt.py +0 -0
  411. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/probit.py +0 -0
  412. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/__init__.py +0 -0
  413. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  414. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  415. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  416. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  417. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  418. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  419. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  420. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  421. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  422. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  423. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
  424. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
  425. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
  426. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
  427. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
  428. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
  429. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
  430. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
  431. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
  432. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
  433. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
  434. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  435. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
  436. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
  437. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
  438. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  439. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
  440. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
  441. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
  442. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
  443. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
  444. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
  445. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
  446. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
  447. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  448. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
  449. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
  450. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
  451. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  452. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
  453. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
  454. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
  455. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
  456. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
  457. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
  458. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
  459. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
  460. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
  461. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  462. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
  463. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
  464. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
  465. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
  466. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
  467. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
  468. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
  469. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
  470. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
  471. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
  472. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
  473. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
  474. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
  475. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
  476. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
  477. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
  478. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
  479. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  480. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
  481. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
  482. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
  483. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
  484. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
  485. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  486. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  487. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
  488. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
  489. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/msgpack/ext.py +0 -0
  490. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
  491. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
  492. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
  493. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
  494. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
  495. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
  496. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
  497. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/toolz/__init__.py +0 -0
  498. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
  499. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/toolz/_version.py +0 -0
  500. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
  501. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
  502. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
  503. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
  504. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
  505. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
  506. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
  507. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/toolz/recipes.py +0 -0
  508. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/static_dependencies/toolz/utils.py +0 -0
  509. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/test/__init__.py +0 -0
  510. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/test/tests_init.py +0 -0
  511. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/timex.py +0 -0
  512. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/tokocrypto.py +0 -0
  513. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/tradeogre.py +0 -0
  514. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/upbit.py +0 -0
  515. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/vertex.py +0 -0
  516. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/wavesexchange.py +0 -0
  517. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/wazirx.py +0 -0
  518. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/woo.py +0 -0
  519. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/woofipro.py +0 -0
  520. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/xt.py +0 -0
  521. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/yobit.py +0 -0
  522. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt/zaif.py +0 -0
  523. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt.egg-info/SOURCES.txt +0 -0
  524. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt.egg-info/dependency_links.txt +0 -0
  525. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt.egg-info/requires.txt +0 -0
  526. {ccxt-4.3.65 → ccxt-4.3.67}/ccxt.egg-info/top_level.txt +0 -0
  527. {ccxt-4.3.65 → ccxt-4.3.67}/setup.cfg +0 -0
  528. {ccxt-4.3.65 → ccxt-4.3.67}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.3.65
3
+ Version: 4.3.67
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
@@ -59,6 +59,7 @@ Current feature list:
59
59
 
60
60
 
61
61
  ## Sponsored Promotion
62
+ [![bingx-campaign](https://github.com/user-attachments/assets/374fd5de-7d70-4281-85aa-d827afeb7270)](https://bingx.com/en/act/contestNew/7947320527/)
62
63
 
63
64
  ## See Also
64
65
 
@@ -257,13 +258,13 @@ console.log(version, Object.keys(exchanges));
257
258
 
258
259
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
259
260
 
260
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.65/dist/ccxt.browser.min.js
261
- * unpkg: https://unpkg.com/ccxt@4.3.65/dist/ccxt.browser.min.js
261
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.67/dist/ccxt.browser.min.js
262
+ * unpkg: https://unpkg.com/ccxt@4.3.67/dist/ccxt.browser.min.js
262
263
 
263
264
  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
265
 
265
266
  ```HTML
266
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.65/dist/ccxt.browser.min.js"></script>
267
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.67/dist/ccxt.browser.min.js"></script>
267
268
  ```
268
269
 
269
270
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.3.65'
25
+ __version__ = '4.3.67'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -85,13 +85,20 @@ class ImplicitAPI:
85
85
  cswap_v1_private_get_trade_leverage = cswapV1PrivateGetTradeLeverage = Entry('trade/leverage', ['cswap', 'v1', 'private'], 'GET', {'cost': 2})
86
86
  cswap_v1_private_get_trade_forceorders = cswapV1PrivateGetTradeForceOrders = Entry('trade/forceOrders', ['cswap', 'v1', 'private'], 'GET', {'cost': 2})
87
87
  cswap_v1_private_get_trade_allfillorders = cswapV1PrivateGetTradeAllFillOrders = Entry('trade/allFillOrders', ['cswap', 'v1', 'private'], 'GET', {'cost': 2})
88
+ cswap_v1_private_get_trade_openorders = cswapV1PrivateGetTradeOpenOrders = Entry('trade/openOrders', ['cswap', 'v1', 'private'], 'GET', {'cost': 2})
89
+ cswap_v1_private_get_trade_orderdetail = cswapV1PrivateGetTradeOrderDetail = Entry('trade/orderDetail', ['cswap', 'v1', 'private'], 'GET', {'cost': 2})
90
+ cswap_v1_private_get_trade_orderhistory = cswapV1PrivateGetTradeOrderHistory = Entry('trade/orderHistory', ['cswap', 'v1', 'private'], 'GET', {'cost': 2})
91
+ cswap_v1_private_get_trade_margintype = cswapV1PrivateGetTradeMarginType = Entry('trade/marginType', ['cswap', 'v1', 'private'], 'GET', {'cost': 2})
88
92
  cswap_v1_private_get_user_commissionrate = cswapV1PrivateGetUserCommissionRate = Entry('user/commissionRate', ['cswap', 'v1', 'private'], 'GET', {'cost': 2})
89
93
  cswap_v1_private_get_user_positions = cswapV1PrivateGetUserPositions = Entry('user/positions', ['cswap', 'v1', 'private'], 'GET', {'cost': 2})
90
94
  cswap_v1_private_get_user_balance = cswapV1PrivateGetUserBalance = Entry('user/balance', ['cswap', 'v1', 'private'], 'GET', {'cost': 2})
91
95
  cswap_v1_private_post_trade_order = cswapV1PrivatePostTradeOrder = Entry('trade/order', ['cswap', 'v1', 'private'], 'POST', {'cost': 2})
92
96
  cswap_v1_private_post_trade_leverage = cswapV1PrivatePostTradeLeverage = Entry('trade/leverage', ['cswap', 'v1', 'private'], 'POST', {'cost': 2})
93
97
  cswap_v1_private_post_trade_closeallpositions = cswapV1PrivatePostTradeCloseAllPositions = Entry('trade/closeAllPositions', ['cswap', 'v1', 'private'], 'POST', {'cost': 2})
98
+ cswap_v1_private_post_trade_margintype = cswapV1PrivatePostTradeMarginType = Entry('trade/marginType', ['cswap', 'v1', 'private'], 'POST', {'cost': 2})
99
+ cswap_v1_private_post_trade_positionmargin = cswapV1PrivatePostTradePositionMargin = Entry('trade/positionMargin', ['cswap', 'v1', 'private'], 'POST', {'cost': 2})
94
100
  cswap_v1_private_delete_trade_allopenorders = cswapV1PrivateDeleteTradeAllOpenOrders = Entry('trade/allOpenOrders', ['cswap', 'v1', 'private'], 'DELETE', {'cost': 2})
101
+ cswap_v1_private_delete_trade_cancelorder = cswapV1PrivateDeleteTradeCancelOrder = Entry('trade/cancelOrder', ['cswap', 'v1', 'private'], 'DELETE', {'cost': 2})
95
102
  contract_v1_private_get_allposition = contractV1PrivateGetAllPosition = Entry('allPosition', ['contract', 'v1', 'private'], 'GET', {'cost': 2})
96
103
  contract_v1_private_get_allorders = contractV1PrivateGetAllOrders = Entry('allOrders', ['contract', 'v1', 'private'], 'GET', {'cost': 2})
97
104
  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.65'
7
+ __version__ = '4.3.67'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.3.65'
5
+ __version__ = '4.3.67'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -4,6 +4,7 @@ import asyncio
4
4
  import socket
5
5
  import collections
6
6
  from ccxt.async_support.base.ws.aiohttp_client import AiohttpClient
7
+ from ccxt.base.errors import NetworkError
7
8
 
8
9
 
9
10
  class FastClient(AiohttpClient):
@@ -38,7 +39,7 @@ class FastClient(AiohttpClient):
38
39
  if self.connection._close_code == 1000: # OK close
39
40
  self.on_close(1000)
40
41
  else:
41
- self.on_error(1006) # ABNORMAL_CLOSURE
42
+ self.on_error(NetworkError("Abnormal closure of client")) # ABNORMAL_CLOSURE
42
43
 
43
44
  def wrapper(func):
44
45
  def parse_frame(buf):
@@ -7,11 +7,22 @@ class Future(asyncio.Future):
7
7
 
8
8
  def resolve(self, result=None):
9
9
  if not self.done():
10
- self.set_result(result)
10
+ try:
11
+ self.set_result(result)
12
+ except BaseException as e:
13
+ print("Error in Future.resolve")
14
+ raise e
11
15
 
12
16
  def reject(self, error=None):
13
17
  if not self.done():
14
- self.set_exception(error)
18
+ # If not an exception, wrap it in a generic Exception
19
+ if not isinstance(error, BaseException):
20
+ error = Exception(error)
21
+ try:
22
+ self.set_exception(error)
23
+ except BaseException as e:
24
+ print("Error in Future.reject")
25
+ raise e
15
26
 
16
27
  @classmethod
17
28
  def race(cls, futures):
@@ -298,6 +298,10 @@ class bingx(Exchange, ImplicitAPI):
298
298
  'trade/leverage': 2,
299
299
  'trade/forceOrders': 2,
300
300
  'trade/allFillOrders': 2,
301
+ 'trade/openOrders': 2,
302
+ 'trade/orderDetail': 2,
303
+ 'trade/orderHistory': 2,
304
+ 'trade/marginType': 2,
301
305
  'user/commissionRate': 2,
302
306
  'user/positions': 2,
303
307
  'user/balance': 2,
@@ -306,9 +310,12 @@ class bingx(Exchange, ImplicitAPI):
306
310
  'trade/order': 2,
307
311
  'trade/leverage': 2,
308
312
  'trade/closeAllPositions': 2,
313
+ 'trade/marginType': 2,
314
+ 'trade/positionMargin': 2,
309
315
  },
310
316
  'delete': {
311
317
  'trade/allOpenOrders': 2,
318
+ 'trade/cancelOrder': 2,
312
319
  },
313
320
  },
314
321
  },
@@ -2835,7 +2842,8 @@ class bingx(Exchange, ImplicitAPI):
2835
2842
  # "clientOrderID": ""
2836
2843
  # }
2837
2844
  #
2838
- # inverse swap cancelAllOrders
2845
+ # inverse swap cancelAllOrders, cancelOrder
2846
+ # inverse swap cancelAllOrders, cancelOrder, fetchOpenOrders
2839
2847
  #
2840
2848
  # {
2841
2849
  # "symbol": "SOL-USD",
@@ -2979,13 +2987,14 @@ class bingx(Exchange, ImplicitAPI):
2979
2987
  async def cancel_order(self, id: str, symbol: Str = None, params={}):
2980
2988
  """
2981
2989
  cancels an open order
2982
- :see: https://bingx-api.github.io/docs/#/spot/trade-api.html#Cancel%20an%20Order
2983
- :see: https://bingx-api.github.io/docs/#/swapV2/trade-api.html#Cancel%20an%20Order
2990
+ :see: https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Cancel%20Order
2991
+ :see: https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Cancel%20Order
2992
+ :see: https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Cancel%20an%20Order
2984
2993
  :param str id: order id
2985
2994
  :param str symbol: unified symbol of the market the order was made in
2986
2995
  :param dict [params]: extra parameters specific to the exchange API endpoint
2987
2996
  :param str [params.clientOrderId]: a unique id for the order
2988
- :returns dict: An `order structure <https://docs.ccxt.com/#/?id=order-structure>`
2997
+ :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
2989
2998
  """
2990
2999
  if symbol is None:
2991
3000
  raise ArgumentsRequired(self.id + ' cancelOrder() requires a symbol argument')
@@ -3001,11 +3010,17 @@ class bingx(Exchange, ImplicitAPI):
3001
3010
  else:
3002
3011
  request['orderId'] = id
3003
3012
  response = None
3004
- marketType, query = self.handle_market_type_and_params('cancelOrder', market, params)
3005
- if marketType == 'spot':
3006
- response = await self.spotV1PrivatePostTradeCancel(self.extend(request, query))
3013
+ type = None
3014
+ subType = None
3015
+ type, params = self.handle_market_type_and_params('cancelOrder', market, params)
3016
+ subType, params = self.handle_sub_type_and_params('cancelOrder', market, params)
3017
+ if type == 'spot':
3018
+ response = await self.spotV1PrivatePostTradeCancel(self.extend(request, params))
3007
3019
  else:
3008
- response = await self.swapV2PrivateDeleteTradeOrder(self.extend(request, query))
3020
+ if subType == 'inverse':
3021
+ response = await self.cswapV1PrivateDeleteTradeCancelOrder(self.extend(request, params))
3022
+ else:
3023
+ response = await self.swapV2PrivateDeleteTradeOrder(self.extend(request, params))
3009
3024
  #
3010
3025
  # spot
3011
3026
  #
@@ -3025,7 +3040,59 @@ class bingx(Exchange, ImplicitAPI):
3025
3040
  # }
3026
3041
  # }
3027
3042
  #
3028
- # swap
3043
+ # inverse swap
3044
+ #
3045
+ # {
3046
+ # "code": 0,
3047
+ # "msg": "",
3048
+ # "data": {
3049
+ # "order": {
3050
+ # "symbol": "SOL-USD",
3051
+ # "orderId": "1816002957423951872",
3052
+ # "side": "BUY",
3053
+ # "positionSide": "Long",
3054
+ # "type": "Pending",
3055
+ # "quantity": 0,
3056
+ # "origQty": "0",
3057
+ # "price": "150",
3058
+ # "executedQty": "0",
3059
+ # "avgPrice": "0",
3060
+ # "cumQuote": "0",
3061
+ # "stopPrice": "",
3062
+ # "profit": "0.0000",
3063
+ # "commission": "0.000000",
3064
+ # "status": "CANCELLED",
3065
+ # "time": 1721803819410,
3066
+ # "updateTime": 1721803819427,
3067
+ # "clientOrderId": "",
3068
+ # "leverage": "",
3069
+ # "takeProfit": {
3070
+ # "type": "",
3071
+ # "quantity": 0,
3072
+ # "stopPrice": 0,
3073
+ # "price": 0,
3074
+ # "workingType": "",
3075
+ # "stopGuaranteed": ""
3076
+ # },
3077
+ # "stopLoss": {
3078
+ # "type": "",
3079
+ # "quantity": 0,
3080
+ # "stopPrice": 0,
3081
+ # "price": 0,
3082
+ # "workingType": "",
3083
+ # "stopGuaranteed": ""
3084
+ # },
3085
+ # "advanceAttr": 0,
3086
+ # "positionID": 0,
3087
+ # "takeProfitEntrustPrice": 0,
3088
+ # "stopLossEntrustPrice": 0,
3089
+ # "orderType": "",
3090
+ # "workingType": ""
3091
+ # }
3092
+ # }
3093
+ # }
3094
+ #
3095
+ # linear swap
3029
3096
  #
3030
3097
  # {
3031
3098
  # "code": 0,
@@ -3052,9 +3119,9 @@ class bingx(Exchange, ImplicitAPI):
3052
3119
  # }
3053
3120
  # }
3054
3121
  #
3055
- data = self.safe_value(response, 'data')
3056
- first = self.safe_dict(data, 'order', data)
3057
- return self.parse_order(first, market)
3122
+ data = self.safe_dict(response, 'data', {})
3123
+ order = self.safe_dict(data, 'order', data)
3124
+ return self.parse_order(order, market)
3058
3125
 
3059
3126
  async def cancel_all_orders(self, symbol: Str = None, params={}):
3060
3127
  """
@@ -3498,9 +3565,10 @@ class bingx(Exchange, ImplicitAPI):
3498
3565
 
3499
3566
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
3500
3567
  """
3501
- :see: https://bingx-api.github.io/docs/#/spot/trade-api.html#Query%20Open%20Orders
3502
- :see: https://bingx-api.github.io/docs/#/swapV2/trade-api.html#Query%20all%20current%20pending%20orders
3503
3568
  fetch all unfilled currently open orders
3569
+ :see: https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Current%20Open%20Orders
3570
+ :see: https://bingx-api.github.io/docs/#/en-us/swapV2/trade-api.html#Current%20All%20Open%20Orders
3571
+ :see: https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Query%20all%20current%20pending%20orders
3504
3572
  :param str symbol: unified market symbol
3505
3573
  :param int [since]: the earliest time in ms to fetch open orders for
3506
3574
  :param int [limit]: the maximum number of open order structures to retrieve
@@ -3513,12 +3581,18 @@ class bingx(Exchange, ImplicitAPI):
3513
3581
  if symbol is not None:
3514
3582
  market = self.market(symbol)
3515
3583
  request['symbol'] = market['id']
3584
+ type = None
3585
+ subType = None
3516
3586
  response = None
3517
- marketType, query = self.handle_market_type_and_params('fetchOpenOrders', market, params)
3518
- if marketType == 'spot':
3519
- response = await self.spotV1PrivateGetTradeOpenOrders(self.extend(request, query))
3587
+ type, params = self.handle_market_type_and_params('fetchOpenOrders', market, params)
3588
+ subType, params = self.handle_sub_type_and_params('fetchOpenOrders', market, params)
3589
+ if type == 'spot':
3590
+ response = await self.spotV1PrivateGetTradeOpenOrders(self.extend(request, params))
3520
3591
  else:
3521
- response = await self.swapV2PrivateGetTradeOpenOrders(self.extend(request, query))
3592
+ if subType == 'inverse':
3593
+ response = await self.cswapV1PrivateGetTradeOpenOrders(self.extend(request, params))
3594
+ else:
3595
+ response = await self.swapV2PrivateGetTradeOpenOrders(self.extend(request, params))
3522
3596
  #
3523
3597
  # spot
3524
3598
  #
@@ -3545,7 +3619,61 @@ class bingx(Exchange, ImplicitAPI):
3545
3619
  # }
3546
3620
  # }
3547
3621
  #
3548
- # swap
3622
+ # inverse swap
3623
+ #
3624
+ # {
3625
+ # "code": 0,
3626
+ # "msg": "",
3627
+ # "data": {
3628
+ # "orders": [
3629
+ # {
3630
+ # "symbol": "SOL-USD",
3631
+ # "orderId": "1816013900044320768",
3632
+ # "side": "BUY",
3633
+ # "positionSide": "Long",
3634
+ # "type": "LIMIT",
3635
+ # "quantity": 1,
3636
+ # "origQty": "",
3637
+ # "price": "150",
3638
+ # "executedQty": "0",
3639
+ # "avgPrice": "0.000",
3640
+ # "cumQuote": "",
3641
+ # "stopPrice": "",
3642
+ # "profit": "0.0000",
3643
+ # "commission": "0.0000",
3644
+ # "status": "Pending",
3645
+ # "time": 1721806428334,
3646
+ # "updateTime": 1721806428352,
3647
+ # "clientOrderId": "",
3648
+ # "leverage": "",
3649
+ # "takeProfit": {
3650
+ # "type": "TAKE_PROFIT",
3651
+ # "quantity": 0,
3652
+ # "stopPrice": 0,
3653
+ # "price": 0,
3654
+ # "workingType": "MARK_PRICE",
3655
+ # "stopGuaranteed": ""
3656
+ # },
3657
+ # "stopLoss": {
3658
+ # "type": "STOP",
3659
+ # "quantity": 0,
3660
+ # "stopPrice": 0,
3661
+ # "price": 0,
3662
+ # "workingType": "MARK_PRICE",
3663
+ # "stopGuaranteed": ""
3664
+ # },
3665
+ # "advanceAttr": 0,
3666
+ # "positionID": 0,
3667
+ # "takeProfitEntrustPrice": 0,
3668
+ # "stopLossEntrustPrice": 0,
3669
+ # "orderType": "",
3670
+ # "workingType": "MARK_PRICE"
3671
+ # }
3672
+ # ]
3673
+ # }
3674
+ # }
3675
+ #
3676
+ # linear swap
3549
3677
  #
3550
3678
  # {
3551
3679
  # "code": 0,
@@ -5,6 +5,7 @@
5
5
 
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.bithumb import ImplicitAPI
8
+ import asyncio
8
9
  import hashlib
9
10
  from ccxt.base.types import Balances, Currency, Int, Market, MarketInterface, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
10
11
  from typing import List
@@ -212,17 +213,56 @@ class bithumb(Exchange, ImplicitAPI):
212
213
  :returns dict[]: an array of objects representing market data
213
214
  """
214
215
  result = []
215
- quoteCurrencies = self.safe_value(self.options, 'quoteCurrencies', {})
216
+ quoteCurrencies = self.safe_dict(self.options, 'quoteCurrencies', {})
216
217
  quotes = list(quoteCurrencies.keys())
218
+ promises = []
219
+ for i in range(0, len(quotes)):
220
+ request = {
221
+ 'quoteId': quotes[i],
222
+ }
223
+ promises.append(self.publicGetTickerALLQuoteId(self.extend(request, params)))
224
+ #
225
+ # {
226
+ # "status": "0000",
227
+ # "data": {
228
+ # "ETH": {
229
+ # "opening_price": "0.05153399",
230
+ # "closing_price": "0.05145144",
231
+ # "min_price": "0.05145144",
232
+ # "max_price": "0.05160781",
233
+ # "units_traded": "6.541124172077830855",
234
+ # "acc_trade_value": "0.33705472498492329997697755",
235
+ # "prev_closing_price": "0.0515943",
236
+ # "units_traded_24H": "43.368879902677400513",
237
+ # "acc_trade_value_24H": "2.24165339555398079994373342",
238
+ # "fluctate_24H": "-0.00018203",
239
+ # "fluctate_rate_24H": "-0.35"
240
+ # },
241
+ # "XRP": {
242
+ # "opening_price": "0.00000918",
243
+ # "closing_price": "0.0000092",
244
+ # "min_price": "0.00000918",
245
+ # "max_price": "0.0000092",
246
+ # "units_traded": "6516.949363",
247
+ # "acc_trade_value": "0.0598792533602796",
248
+ # "prev_closing_price": "0.00000916",
249
+ # "units_traded_24H": "229161.50354738",
250
+ # "acc_trade_value_24H": "2.0446589371637117",
251
+ # "fluctate_24H": "0.00000049",
252
+ # "fluctate_rate_24H": "5.63"
253
+ # },
254
+ # ...
255
+ # "date": "1721675913145"
256
+ # }
257
+ # }
258
+ #
259
+ results = await asyncio.gather(*promises)
217
260
  for i in range(0, len(quotes)):
218
261
  quote = quotes[i]
219
262
  quoteId = quote
220
- extension = self.safe_value(quoteCurrencies, quote, {})
221
- request: dict = {
222
- 'quoteId': quoteId,
223
- }
224
- response = await self.publicGetTickerALLQuoteId(self.extend(request, params))
225
- data = self.safe_value(response, 'data')
263
+ response = results[i]
264
+ data = self.safe_dict(response, 'data')
265
+ extension = self.safe_dict(quoteCurrencies, quote, {})
226
266
  currencyIds = list(data.keys())
227
267
  for j in range(0, len(currencyIds)):
228
268
  currencyId = currencyIds[j]
@@ -286,7 +326,7 @@ class bithumb(Exchange, ImplicitAPI):
286
326
 
287
327
  def parse_balance(self, response) -> Balances:
288
328
  result: dict = {'info': response}
289
- balances = self.safe_value(response, 'data')
329
+ balances = self.safe_dict(response, 'data')
290
330
  codes = list(self.currencies.keys())
291
331
  for i in range(0, len(codes)):
292
332
  code = codes[i]
@@ -351,7 +391,7 @@ class bithumb(Exchange, ImplicitAPI):
351
391
  # }
352
392
  # }
353
393
  #
354
- data = self.safe_value(response, 'data', {})
394
+ data = self.safe_dict(response, 'data', {})
355
395
  timestamp = self.safe_integer(data, 'timestamp')
356
396
  return self.parse_order_book(data, symbol, timestamp, 'bids', 'asks', 'price', 'quantity')
357
397
 
@@ -413,15 +453,18 @@ class bithumb(Exchange, ImplicitAPI):
413
453
  """
414
454
  await self.load_markets()
415
455
  result: dict = {}
416
- quoteCurrencies = self.safe_value(self.options, 'quoteCurrencies', {})
456
+ quoteCurrencies = self.safe_dict(self.options, 'quoteCurrencies', {})
417
457
  quotes = list(quoteCurrencies.keys())
458
+ promises = []
418
459
  for i in range(0, len(quotes)):
419
- quote = quotes[i]
420
- quoteId = quote
421
460
  request: dict = {
422
- 'quoteId': quoteId,
461
+ 'quoteId': quotes[i],
423
462
  }
424
- response = await self.publicGetTickerALLQuoteId(self.extend(request, params))
463
+ promises.append(self.publicGetTickerALLQuoteId(self.extend(request, params)))
464
+ responses = await asyncio.gather(*promises)
465
+ for i in range(0, len(quotes)):
466
+ quote = quotes[i]
467
+ response = responses[i]
425
468
  #
426
469
  # {
427
470
  # "status":"0000",
@@ -443,7 +486,7 @@ class bithumb(Exchange, ImplicitAPI):
443
486
  # }
444
487
  # }
445
488
  #
446
- data = self.safe_value(response, 'data', {})
489
+ data = self.safe_dict(response, 'data', {})
447
490
  timestamp = self.safe_integer(data, 'date')
448
491
  tickers = self.omit(data, 'date')
449
492
  currencyIds = list(tickers.keys())
@@ -805,7 +848,7 @@ class bithumb(Exchange, ImplicitAPI):
805
848
  # }
806
849
  #
807
850
  timestamp = self.safe_integer_product(order, 'order_date', 0.001)
808
- sideProperty = self.safe_value_2(order, 'type', 'side')
851
+ sideProperty = self.safe_string_2(order, 'type', 'side')
809
852
  side = 'buy' if (sideProperty == 'bid') else 'sell'
810
853
  status = self.parse_order_status(self.safe_string(order, 'order_status'))
811
854
  price = self.safe_string_2(order, 'order_price', 'price')
@@ -830,7 +873,7 @@ class bithumb(Exchange, ImplicitAPI):
830
873
  market = self.safe_market(None, market)
831
874
  symbol = market['symbol']
832
875
  id = self.safe_string(order, 'order_id')
833
- rawTrades = self.safe_value(order, 'contract', [])
876
+ rawTrades = self.safe_list(order, 'contract', [])
834
877
  return self.safe_order({
835
878
  'info': order,
836
879
  'id': id,
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.hyperliquid import ImplicitAPI
8
8
  import asyncio
9
- from ccxt.base.types import Balances, Currencies, Currency, Int, MarginModification, Market, Num, Order, OrderBook, OrderRequest, CancellationRequest, OrderSide, OrderType, Str, Strings, Trade, TradingFeeInterface, Transaction, TransferEntry
9
+ from ccxt.base.types import Balances, Currencies, Currency, Int, MarginModification, Market, Num, Order, OrderBook, OrderRequest, CancellationRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import ArgumentsRequired
@@ -102,8 +102,8 @@ class hyperliquid(Exchange, ImplicitAPI):
102
102
  'fetchPositions': True,
103
103
  'fetchPositionsRisk': False,
104
104
  'fetchPremiumIndexOHLCV': False,
105
- 'fetchTicker': False,
106
- 'fetchTickers': False,
105
+ 'fetchTicker': 'emulated',
106
+ 'fetchTickers': True,
107
107
  'fetchTime': False,
108
108
  'fetchTrades': True,
109
109
  'fetchTradingFee': True,
@@ -328,12 +328,12 @@ class hyperliquid(Exchange, ImplicitAPI):
328
328
  #
329
329
  #
330
330
  meta = self.safe_dict(response, 0, {})
331
- meta = self.safe_list(meta, 'universe', [])
331
+ universe = self.safe_list(meta, 'universe', [])
332
332
  assetCtxs = self.safe_dict(response, 1, {})
333
333
  result = []
334
- for i in range(0, len(meta)):
334
+ for i in range(0, len(universe)):
335
335
  data = self.extend(
336
- self.safe_dict(meta, i, {}),
336
+ self.safe_dict(universe, i, {}),
337
337
  self.safe_dict(assetCtxs, i, {})
338
338
  )
339
339
  data['baseId'] = i
@@ -447,11 +447,13 @@ class hyperliquid(Exchange, ImplicitAPI):
447
447
  #
448
448
  # response differs depending on the environment(mainnet vs sandbox)
449
449
  first = self.safe_dict(response, 0, {})
450
+ second = self.safe_list(response, 1, [])
450
451
  meta = self.safe_list_2(first, 'universe', 'spot_infos', [])
451
452
  tokens = self.safe_list_2(first, 'tokens', 'token_infos', [])
452
453
  markets = []
453
454
  for i in range(0, len(meta)):
454
455
  market = self.safe_dict(meta, i, {})
456
+ extraData = self.safe_dict(second, i, {})
455
457
  marketName = self.safe_string(market, 'name')
456
458
  # if marketName.find('/') < 0:
457
459
  # # there are some weird spot markets in testnet, eg @2
@@ -528,7 +530,7 @@ class hyperliquid(Exchange, ImplicitAPI):
528
530
  },
529
531
  },
530
532
  'created': None,
531
- 'info': market,
533
+ 'info': self.extend(extraData, market),
532
534
  }))
533
535
  return markets
534
536
 
@@ -747,6 +749,57 @@ class hyperliquid(Exchange, ImplicitAPI):
747
749
  timestamp = self.safe_integer(response, 'time')
748
750
  return self.parse_order_book(result, market['symbol'], timestamp, 'bids', 'asks', 'px', 'sz')
749
751
 
752
+ async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
753
+ """
754
+ fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
755
+ :see: https://www.bitmex.com/api/explorer/#not /Instrument/Instrument_getActiveAndIndices
756
+ :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
757
+ :param dict [params]: extra parameters specific to the exchange API endpoint
758
+ :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
759
+ """
760
+ await self.load_markets()
761
+ symbols = self.market_symbols(symbols)
762
+ # at self stage, to get tickers data, we use fetchMarkets endpoints
763
+ response = await self.fetch_markets(params)
764
+ # same response "fetchMarkets"
765
+ result: dict = {}
766
+ for i in range(0, len(response)):
767
+ market = response[i]
768
+ info = market['info']
769
+ ticker = self.parse_ticker(info, market)
770
+ symbol = self.safe_string(ticker, 'symbol')
771
+ result[symbol] = ticker
772
+ return self.filter_by_array_tickers(result, 'symbol', symbols)
773
+
774
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
775
+ #
776
+ # {
777
+ # "prevDayPx": "3400.5",
778
+ # "dayNtlVlm": "511297257.47936022",
779
+ # "markPx": "3464.7",
780
+ # "midPx": "3465.05",
781
+ # "oraclePx": "3460.1", # only in swap
782
+ # "openInterest": "64638.1108", # only in swap
783
+ # "premium": "0.00141614", # only in swap
784
+ # "funding": "0.00008727", # only in swap
785
+ # "impactPxs": ["3465.0", "3465.1"], # only in swap
786
+ # "coin": "PURR", # only in spot
787
+ # "circulatingSupply": "998949190.03400207", # only in spot
788
+ # },
789
+ #
790
+ bidAsk = self.safe_list(ticker, 'impactPxs')
791
+ return self.safe_ticker({
792
+ 'symbol': market['symbol'],
793
+ 'timestamp': None,
794
+ 'datetime': None,
795
+ 'previousClose': self.safe_number(ticker, 'prevDayPx'),
796
+ 'close': self.safe_number(ticker, 'midPx'),
797
+ 'bid': self.safe_number(bidAsk, 0),
798
+ 'ask': self.safe_number(bidAsk, 1),
799
+ 'quoteVolume': self.safe_number(ticker, 'dayNtlVlm'),
800
+ 'info': ticker,
801
+ }, market)
802
+
750
803
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
751
804
  """
752
805
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market