ccxt 4.3.21__tar.gz → 4.3.23__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 (545) hide show
  1. {ccxt-4.3.21/ccxt.egg-info → ccxt-4.3.23}/PKG-INFO +4 -4
  2. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/__init__.py +1 -1
  3. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/whitebit.py +9 -0
  4. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/__init__.py +1 -1
  5. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/base/exchange.py +1 -1
  6. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/binance.py +1 -1
  7. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/coinbase.py +4 -0
  8. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/coinex.py +156 -178
  9. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/phemex.py +58 -13
  10. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/probit.py +1 -20
  11. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/whitebit.py +9 -0
  12. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/base/exchange.py +1 -1
  13. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/binance.py +1 -1
  14. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/coinbase.py +4 -0
  15. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/coinex.py +156 -178
  16. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/phemex.py +58 -13
  17. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/__init__.py +1 -1
  18. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/poloniexfutures.py +20 -16
  19. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/probit.py +1 -20
  20. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/whitebit.py +9 -0
  21. {ccxt-4.3.21 → ccxt-4.3.23/ccxt.egg-info}/PKG-INFO +4 -4
  22. {ccxt-4.3.21 → ccxt-4.3.23}/package.json +1 -1
  23. {ccxt-4.3.21 → ccxt-4.3.23}/LICENSE.txt +0 -0
  24. {ccxt-4.3.21 → ccxt-4.3.23}/MANIFEST.in +0 -0
  25. {ccxt-4.3.21 → ccxt-4.3.23}/README.rst +0 -0
  26. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/__init__.py +0 -0
  27. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/ace.py +0 -0
  28. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/alpaca.py +0 -0
  29. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/ascendex.py +0 -0
  30. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bequant.py +0 -0
  31. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bigone.py +0 -0
  32. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/binance.py +0 -0
  33. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/binancecoinm.py +0 -0
  34. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/binanceus.py +0 -0
  35. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/binanceusdm.py +0 -0
  36. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bingx.py +0 -0
  37. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bit2c.py +0 -0
  38. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bitbank.py +0 -0
  39. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bitbay.py +0 -0
  40. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bitbns.py +0 -0
  41. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bitcoincom.py +0 -0
  42. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bitfinex.py +0 -0
  43. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bitfinex2.py +0 -0
  44. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bitflyer.py +0 -0
  45. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bitget.py +0 -0
  46. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bithumb.py +0 -0
  47. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bitmart.py +0 -0
  48. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bitmex.py +0 -0
  49. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bitopro.py +0 -0
  50. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bitpanda.py +0 -0
  51. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bitrue.py +0 -0
  52. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bitso.py +0 -0
  53. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bitstamp.py +0 -0
  54. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bitteam.py +0 -0
  55. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bitvavo.py +0 -0
  56. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bl3p.py +0 -0
  57. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/blockchaincom.py +0 -0
  58. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/blofin.py +0 -0
  59. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/btcalpha.py +0 -0
  60. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/btcbox.py +0 -0
  61. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/btcmarkets.py +0 -0
  62. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/btcturk.py +0 -0
  63. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/bybit.py +0 -0
  64. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/cex.py +0 -0
  65. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/coinbase.py +0 -0
  66. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/coinbaseinternational.py +0 -0
  67. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/coinbasepro.py +0 -0
  68. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/coincheck.py +0 -0
  69. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/coinex.py +0 -0
  70. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/coinlist.py +0 -0
  71. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/coinmate.py +0 -0
  72. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/coinmetro.py +0 -0
  73. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/coinone.py +0 -0
  74. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/coinsph.py +0 -0
  75. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/coinspot.py +0 -0
  76. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/cryptocom.py +0 -0
  77. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/currencycom.py +0 -0
  78. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/delta.py +0 -0
  79. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/deribit.py +0 -0
  80. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/digifinex.py +0 -0
  81. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/exmo.py +0 -0
  82. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/fmfwio.py +0 -0
  83. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/gate.py +0 -0
  84. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/gateio.py +0 -0
  85. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/gemini.py +0 -0
  86. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/hitbtc.py +0 -0
  87. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/hitbtc3.py +0 -0
  88. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/hollaex.py +0 -0
  89. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/htx.py +0 -0
  90. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/huobi.py +0 -0
  91. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/huobijp.py +0 -0
  92. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/hyperliquid.py +0 -0
  93. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/idex.py +0 -0
  94. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/independentreserve.py +0 -0
  95. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/indodax.py +0 -0
  96. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/kraken.py +0 -0
  97. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/krakenfutures.py +0 -0
  98. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/kucoin.py +0 -0
  99. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/kucoinfutures.py +0 -0
  100. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/kuna.py +0 -0
  101. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/latoken.py +0 -0
  102. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/lbank.py +0 -0
  103. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/luno.py +0 -0
  104. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/lykke.py +0 -0
  105. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/mercado.py +0 -0
  106. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/mexc.py +0 -0
  107. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/ndax.py +0 -0
  108. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/novadax.py +0 -0
  109. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/oceanex.py +0 -0
  110. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/okcoin.py +0 -0
  111. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/okx.py +0 -0
  112. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/onetrading.py +0 -0
  113. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/p2b.py +0 -0
  114. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/paymium.py +0 -0
  115. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/phemex.py +0 -0
  116. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/poloniex.py +0 -0
  117. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/poloniexfutures.py +0 -0
  118. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/probit.py +0 -0
  119. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/timex.py +0 -0
  120. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/tokocrypto.py +0 -0
  121. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/tradeogre.py +0 -0
  122. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/upbit.py +0 -0
  123. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/wavesexchange.py +0 -0
  124. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/wazirx.py +0 -0
  125. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/woo.py +0 -0
  126. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/woofipro.py +0 -0
  127. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/yobit.py +0 -0
  128. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/zaif.py +0 -0
  129. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/abstract/zonda.py +0 -0
  130. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/ace.py +0 -0
  131. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/alpaca.py +0 -0
  132. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/ascendex.py +0 -0
  133. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/ace.py +0 -0
  134. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/alpaca.py +0 -0
  135. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/ascendex.py +0 -0
  136. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/base/__init__.py +0 -0
  137. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/base/throttler.py +0 -0
  138. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/base/ws/__init__.py +0 -0
  139. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  140. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/base/ws/cache.py +0 -0
  141. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/base/ws/client.py +0 -0
  142. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/base/ws/fast_client.py +0 -0
  143. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/base/ws/functions.py +0 -0
  144. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/base/ws/future.py +0 -0
  145. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/base/ws/order_book.py +0 -0
  146. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  147. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bequant.py +0 -0
  148. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bigone.py +0 -0
  149. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/binancecoinm.py +0 -0
  150. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/binanceus.py +0 -0
  151. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/binanceusdm.py +0 -0
  152. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bingx.py +0 -0
  153. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bit2c.py +0 -0
  154. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bitbank.py +0 -0
  155. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bitbay.py +0 -0
  156. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bitbns.py +0 -0
  157. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bitcoincom.py +0 -0
  158. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bitfinex.py +0 -0
  159. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bitfinex2.py +0 -0
  160. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bitflyer.py +0 -0
  161. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bitget.py +0 -0
  162. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bithumb.py +0 -0
  163. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bitmart.py +0 -0
  164. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bitmex.py +0 -0
  165. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bitopro.py +0 -0
  166. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bitpanda.py +0 -0
  167. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bitrue.py +0 -0
  168. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bitso.py +0 -0
  169. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bitstamp.py +0 -0
  170. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bitteam.py +0 -0
  171. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bitvavo.py +0 -0
  172. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bl3p.py +0 -0
  173. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/blockchaincom.py +0 -0
  174. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/blofin.py +0 -0
  175. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/btcalpha.py +0 -0
  176. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/btcbox.py +0 -0
  177. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/btcmarkets.py +0 -0
  178. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/btcturk.py +0 -0
  179. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/bybit.py +0 -0
  180. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/cex.py +0 -0
  181. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/coinbaseinternational.py +0 -0
  182. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/coinbasepro.py +0 -0
  183. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/coincheck.py +0 -0
  184. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/coinlist.py +0 -0
  185. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/coinmate.py +0 -0
  186. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/coinmetro.py +0 -0
  187. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/coinone.py +0 -0
  188. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/coinsph.py +0 -0
  189. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/coinspot.py +0 -0
  190. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/cryptocom.py +0 -0
  191. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/currencycom.py +0 -0
  192. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/delta.py +0 -0
  193. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/deribit.py +0 -0
  194. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/digifinex.py +0 -0
  195. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/exmo.py +0 -0
  196. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/fmfwio.py +0 -0
  197. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/gate.py +0 -0
  198. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/gateio.py +0 -0
  199. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/gemini.py +0 -0
  200. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/hitbtc.py +0 -0
  201. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/hitbtc3.py +0 -0
  202. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/hollaex.py +0 -0
  203. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/htx.py +0 -0
  204. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/huobi.py +0 -0
  205. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/huobijp.py +0 -0
  206. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/hyperliquid.py +0 -0
  207. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/idex.py +0 -0
  208. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/independentreserve.py +0 -0
  209. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/indodax.py +0 -0
  210. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/kraken.py +0 -0
  211. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/krakenfutures.py +0 -0
  212. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/kucoin.py +0 -0
  213. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/kucoinfutures.py +0 -0
  214. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/kuna.py +0 -0
  215. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/latoken.py +0 -0
  216. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/lbank.py +0 -0
  217. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/luno.py +0 -0
  218. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/lykke.py +0 -0
  219. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/mercado.py +0 -0
  220. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/mexc.py +0 -0
  221. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/ndax.py +0 -0
  222. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/novadax.py +0 -0
  223. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/oceanex.py +0 -0
  224. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/okcoin.py +0 -0
  225. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/okx.py +0 -0
  226. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/onetrading.py +0 -0
  227. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/p2b.py +0 -0
  228. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/paymium.py +0 -0
  229. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/poloniex.py +0 -0
  230. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/poloniexfutures.py +0 -0
  231. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/timex.py +0 -0
  232. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/tokocrypto.py +0 -0
  233. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/tradeogre.py +0 -0
  234. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/upbit.py +0 -0
  235. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/wavesexchange.py +0 -0
  236. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/wazirx.py +0 -0
  237. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/woo.py +0 -0
  238. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/woofipro.py +0 -0
  239. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/yobit.py +0 -0
  240. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/zaif.py +0 -0
  241. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/async_support/zonda.py +0 -0
  242. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/base/__init__.py +0 -0
  243. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/base/decimal_to_precision.py +0 -0
  244. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/base/errors.py +0 -0
  245. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/base/precise.py +0 -0
  246. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/base/types.py +0 -0
  247. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bequant.py +0 -0
  248. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bigone.py +0 -0
  249. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/binancecoinm.py +0 -0
  250. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/binanceus.py +0 -0
  251. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/binanceusdm.py +0 -0
  252. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bingx.py +0 -0
  253. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bit2c.py +0 -0
  254. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bitbank.py +0 -0
  255. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bitbay.py +0 -0
  256. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bitbns.py +0 -0
  257. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bitcoincom.py +0 -0
  258. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bitfinex.py +0 -0
  259. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bitfinex2.py +0 -0
  260. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bitflyer.py +0 -0
  261. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bitget.py +0 -0
  262. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bithumb.py +0 -0
  263. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bitmart.py +0 -0
  264. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bitmex.py +0 -0
  265. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bitopro.py +0 -0
  266. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bitpanda.py +0 -0
  267. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bitrue.py +0 -0
  268. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bitso.py +0 -0
  269. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bitstamp.py +0 -0
  270. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bitteam.py +0 -0
  271. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bitvavo.py +0 -0
  272. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bl3p.py +0 -0
  273. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/blockchaincom.py +0 -0
  274. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/blofin.py +0 -0
  275. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/btcalpha.py +0 -0
  276. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/btcbox.py +0 -0
  277. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/btcmarkets.py +0 -0
  278. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/btcturk.py +0 -0
  279. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/bybit.py +0 -0
  280. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/cex.py +0 -0
  281. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/coinbaseinternational.py +0 -0
  282. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/coinbasepro.py +0 -0
  283. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/coincheck.py +0 -0
  284. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/coinlist.py +0 -0
  285. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/coinmate.py +0 -0
  286. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/coinmetro.py +0 -0
  287. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/coinone.py +0 -0
  288. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/coinsph.py +0 -0
  289. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/coinspot.py +0 -0
  290. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/cryptocom.py +0 -0
  291. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/currencycom.py +0 -0
  292. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/delta.py +0 -0
  293. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/deribit.py +0 -0
  294. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/digifinex.py +0 -0
  295. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/exmo.py +0 -0
  296. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/fmfwio.py +0 -0
  297. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/gate.py +0 -0
  298. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/gateio.py +0 -0
  299. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/gemini.py +0 -0
  300. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/hitbtc.py +0 -0
  301. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/hitbtc3.py +0 -0
  302. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/hollaex.py +0 -0
  303. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/htx.py +0 -0
  304. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/huobi.py +0 -0
  305. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/huobijp.py +0 -0
  306. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/hyperliquid.py +0 -0
  307. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/idex.py +0 -0
  308. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/independentreserve.py +0 -0
  309. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/indodax.py +0 -0
  310. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/kraken.py +0 -0
  311. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/krakenfutures.py +0 -0
  312. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/kucoin.py +0 -0
  313. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/kucoinfutures.py +0 -0
  314. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/kuna.py +0 -0
  315. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/latoken.py +0 -0
  316. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/lbank.py +0 -0
  317. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/luno.py +0 -0
  318. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/lykke.py +0 -0
  319. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/mercado.py +0 -0
  320. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/mexc.py +0 -0
  321. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/ndax.py +0 -0
  322. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/novadax.py +0 -0
  323. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/oceanex.py +0 -0
  324. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/okcoin.py +0 -0
  325. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/okx.py +0 -0
  326. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/onetrading.py +0 -0
  327. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/p2b.py +0 -0
  328. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/paymium.py +0 -0
  329. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/poloniex.py +0 -0
  330. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/poloniexfutures.py +0 -0
  331. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/alpaca.py +0 -0
  332. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/ascendex.py +0 -0
  333. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/bequant.py +0 -0
  334. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/binance.py +0 -0
  335. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/binancecoinm.py +0 -0
  336. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/binanceus.py +0 -0
  337. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/binanceusdm.py +0 -0
  338. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/bingx.py +0 -0
  339. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/bitcoincom.py +0 -0
  340. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/bitfinex.py +0 -0
  341. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/bitfinex2.py +0 -0
  342. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/bitget.py +0 -0
  343. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/bithumb.py +0 -0
  344. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/bitmart.py +0 -0
  345. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/bitmex.py +0 -0
  346. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/bitopro.py +0 -0
  347. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/bitpanda.py +0 -0
  348. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/bitrue.py +0 -0
  349. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/bitstamp.py +0 -0
  350. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/bitvavo.py +0 -0
  351. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/blockchaincom.py +0 -0
  352. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/bybit.py +0 -0
  353. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/cex.py +0 -0
  354. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/coinbase.py +0 -0
  355. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/coinbaseinternational.py +0 -0
  356. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/coinbasepro.py +0 -0
  357. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/coincheck.py +0 -0
  358. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/coinex.py +0 -0
  359. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/coinone.py +0 -0
  360. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/cryptocom.py +0 -0
  361. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/currencycom.py +0 -0
  362. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/deribit.py +0 -0
  363. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/exmo.py +0 -0
  364. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/gate.py +0 -0
  365. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/gateio.py +0 -0
  366. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/gemini.py +0 -0
  367. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/hitbtc.py +0 -0
  368. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/hollaex.py +0 -0
  369. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/htx.py +0 -0
  370. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/huobi.py +0 -0
  371. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/huobijp.py +0 -0
  372. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/hyperliquid.py +0 -0
  373. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/idex.py +0 -0
  374. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/independentreserve.py +0 -0
  375. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/kraken.py +0 -0
  376. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/krakenfutures.py +0 -0
  377. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/kucoin.py +0 -0
  378. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/kucoinfutures.py +0 -0
  379. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/lbank.py +0 -0
  380. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/luno.py +0 -0
  381. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/mexc.py +0 -0
  382. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/ndax.py +0 -0
  383. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/okcoin.py +0 -0
  384. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/okx.py +0 -0
  385. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/onetrading.py +0 -0
  386. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/p2b.py +0 -0
  387. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/phemex.py +0 -0
  388. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/poloniex.py +0 -0
  389. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/probit.py +0 -0
  390. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/upbit.py +0 -0
  391. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/wazirx.py +0 -0
  392. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/whitebit.py +0 -0
  393. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/woo.py +0 -0
  394. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/pro/woofipro.py +0 -0
  395. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/__init__.py +0 -0
  396. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  397. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  398. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  399. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  400. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  401. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  402. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  403. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  404. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  405. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  406. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
  407. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
  408. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
  409. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
  410. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
  411. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
  412. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
  413. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
  414. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
  415. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
  416. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
  417. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  418. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
  419. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
  420. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
  421. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  422. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
  423. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
  424. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
  425. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
  426. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
  427. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
  428. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
  429. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
  430. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  431. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
  432. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
  433. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
  434. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  435. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
  436. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
  437. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
  438. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
  439. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
  440. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
  441. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
  442. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
  443. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
  444. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  445. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
  446. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
  447. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
  448. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
  449. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
  450. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
  451. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
  452. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
  453. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
  454. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
  455. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
  456. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
  457. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
  458. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
  459. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
  460. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
  461. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
  462. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  463. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
  464. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
  465. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
  466. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
  467. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
  468. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  469. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  470. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
  471. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
  472. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/msgpack/ext.py +0 -0
  473. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
  474. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
  475. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
  476. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
  477. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
  478. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
  479. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
  480. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/toolz/__init__.py +0 -0
  481. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
  482. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/toolz/_version.py +0 -0
  483. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
  484. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
  485. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
  486. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
  487. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
  488. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
  489. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
  490. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/toolz/recipes.py +0 -0
  491. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/static_dependencies/toolz/utils.py +0 -0
  492. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/__init__.py +0 -0
  493. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/__init__.py +0 -0
  494. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_account.py +0 -0
  495. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_balance.py +0 -0
  496. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_borrow_interest.py +0 -0
  497. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_borrow_rate.py +0 -0
  498. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_calculate_fee.py +0 -0
  499. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_crypto.py +0 -0
  500. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_currency.py +0 -0
  501. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_datetime.py +0 -0
  502. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_decimal_to_precision.py +0 -0
  503. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_deep_extend.py +0 -0
  504. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
  505. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
  506. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_funding_rate_history.py +0 -0
  507. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_last_price.py +0 -0
  508. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_ledger_entry.py +0 -0
  509. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_ledger_item.py +0 -0
  510. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_leverage_tier.py +0 -0
  511. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_margin_mode.py +0 -0
  512. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_margin_modification.py +0 -0
  513. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_market.py +0 -0
  514. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_number.py +0 -0
  515. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_ohlcv.py +0 -0
  516. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_open_interest.py +0 -0
  517. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_order.py +0 -0
  518. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_order_book.py +0 -0
  519. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_position.py +0 -0
  520. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_shared_methods.py +0 -0
  521. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_status.py +0 -0
  522. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_throttle.py +0 -0
  523. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_ticker.py +0 -0
  524. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_trade.py +0 -0
  525. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_trading_fee.py +0 -0
  526. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/base/test_transaction.py +0 -0
  527. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/test_async.py +0 -0
  528. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/test/test_sync.py +0 -0
  529. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/timex.py +0 -0
  530. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/tokocrypto.py +0 -0
  531. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/tradeogre.py +0 -0
  532. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/upbit.py +0 -0
  533. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/wavesexchange.py +0 -0
  534. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/wazirx.py +0 -0
  535. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/woo.py +0 -0
  536. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/woofipro.py +0 -0
  537. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/yobit.py +0 -0
  538. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/zaif.py +0 -0
  539. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt/zonda.py +0 -0
  540. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt.egg-info/SOURCES.txt +0 -0
  541. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt.egg-info/dependency_links.txt +0 -0
  542. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt.egg-info/requires.txt +0 -0
  543. {ccxt-4.3.21 → ccxt-4.3.23}/ccxt.egg-info/top_level.txt +0 -0
  544. {ccxt-4.3.21 → ccxt-4.3.23}/setup.cfg +0 -0
  545. {ccxt-4.3.21 → ccxt-4.3.23}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.3.21
3
+ Version: 4.3.23
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
@@ -228,13 +228,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
228
228
 
229
229
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
230
230
 
231
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.21/dist/ccxt.browser.js
232
- * unpkg: https://unpkg.com/ccxt@4.3.21/dist/ccxt.browser.js
231
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.23/dist/ccxt.browser.js
232
+ * unpkg: https://unpkg.com/ccxt@4.3.23/dist/ccxt.browser.js
233
233
 
234
234
  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.
235
235
 
236
236
  ```HTML
237
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.21/dist/ccxt.browser.js"></script>
237
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.23/dist/ccxt.browser.js"></script>
238
238
  ```
239
239
 
240
240
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.3.21'
25
+ __version__ = '4.3.23'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -87,3 +87,12 @@ class ImplicitAPI:
87
87
  v4_private_post_convert_estimate = v4PrivatePostConvertEstimate = Entry('convert/estimate', ['v4', 'private'], 'POST', {})
88
88
  v4_private_post_convert_confirm = v4PrivatePostConvertConfirm = Entry('convert/confirm', ['v4', 'private'], 'POST', {})
89
89
  v4_private_post_convert_history = v4PrivatePostConvertHistory = Entry('convert/history', ['v4', 'private'], 'POST', {})
90
+ v4_private_post_sub_account_create = v4PrivatePostSubAccountCreate = Entry('sub-account/create', ['v4', 'private'], 'POST', {})
91
+ v4_private_post_sub_account_delete = v4PrivatePostSubAccountDelete = Entry('sub-account/delete', ['v4', 'private'], 'POST', {})
92
+ v4_private_post_sub_account_edit = v4PrivatePostSubAccountEdit = Entry('sub-account/edit', ['v4', 'private'], 'POST', {})
93
+ v4_private_post_sub_account_list = v4PrivatePostSubAccountList = Entry('sub-account/list', ['v4', 'private'], 'POST', {})
94
+ v4_private_post_sub_account_transfer = v4PrivatePostSubAccountTransfer = Entry('sub-account/transfer', ['v4', 'private'], 'POST', {})
95
+ v4_private_post_sub_account_block = v4PrivatePostSubAccountBlock = Entry('sub-account/block', ['v4', 'private'], 'POST', {})
96
+ v4_private_post_sub_account_unblock = v4PrivatePostSubAccountUnblock = Entry('sub-account/unblock', ['v4', 'private'], 'POST', {})
97
+ v4_private_post_sub_account_balances = v4PrivatePostSubAccountBalances = Entry('sub-account/balances', ['v4', 'private'], 'POST', {})
98
+ v4_private_post_sub_account_transfer_history = v4PrivatePostSubAccountTransferHistory = Entry('sub-account/transfer/history', ['v4', 'private'], 'POST', {})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.21'
7
+ __version__ = '4.3.23'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.3.21'
5
+ __version__ = '4.3.23'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -9004,7 +9004,7 @@ class binance(Exchange, ImplicitAPI):
9004
9004
  await self.load_markets()
9005
9005
  # by default cache the leverage bracket
9006
9006
  # it contains useful stuff like the maintenance margin and initial margin for positions
9007
- leverageBrackets = self.safe_dict(self.options, 'leverageBrackets', {})
9007
+ leverageBrackets = self.safe_dict(self.options, 'leverageBrackets')
9008
9008
  if (leverageBrackets is None) or (reload):
9009
9009
  defaultType = self.safe_string(self.options, 'defaultType', 'future')
9010
9010
  type = self.safe_string(params, 'type', defaultType)
@@ -1754,6 +1754,10 @@ class coinbase(Exchange, ImplicitAPI):
1754
1754
  request = {}
1755
1755
  if symbols is not None:
1756
1756
  request['product_ids'] = self.market_ids(symbols)
1757
+ marketType = None
1758
+ marketType, params = self.handle_market_type_and_params('fetchTickers', self.get_market_from_symbols(symbols), params, 'default')
1759
+ if marketType is not None and marketType != 'default':
1760
+ request['product_type'] = 'FUTURE' if (marketType == 'swap') else 'SPOT'
1757
1761
  response = await self.v3PublicGetBrokerageMarketProducts(self.extend(request, params))
1758
1762
  #
1759
1763
  # {
@@ -11,6 +11,7 @@ from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
13
13
  from ccxt.base.errors import PermissionDenied
14
+ from ccxt.base.errors import AccountSuspended
14
15
  from ccxt.base.errors import ArgumentsRequired
15
16
  from ccxt.base.errors import BadRequest
16
17
  from ccxt.base.errors import BadSymbol
@@ -481,10 +482,53 @@ class coinex(Exchange, ImplicitAPI):
481
482
  '36': RequestTimeout, # Service timeout
482
483
  '213': RateLimitExceeded, # Too many requests
483
484
  '107': InsufficientFunds,
485
+ '158': PermissionDenied, # {"code":158,"data":{},"message":"API permission is not allowed"}
484
486
  '600': OrderNotFound,
485
487
  '601': InvalidOrder,
486
488
  '602': InvalidOrder,
487
489
  '606': InvalidOrder,
490
+ '3008': RequestTimeout, # Service busy, please try again later.
491
+ '3109': InsufficientFunds, # {"code":3109,"data":{},"message":"balance not enough"}
492
+ '3127': InvalidOrder, # The order quantity is below the minimum requirement. Please adjust the order quantity.
493
+ '3606': InvalidOrder, # The price difference between the order price and the latest price is too large. Please adjust the order amount accordingly.
494
+ '3610': ExchangeError, # Order cancellation prohibited during the Call Auction period.
495
+ '3612': InvalidOrder, # The est. ask price is lower than the current bottom ask price. Please reduce the amount.
496
+ '3613': InvalidOrder, # The est. bid price is higher than the current top bid price. Please reduce the amount.
497
+ '3614': InvalidOrder, # The deviation between your est. filled price and the index price. Please reduce the amount.
498
+ '3615': InvalidOrder, # The deviation between your order price and the index price is too high. Please adjust your order price and try again.
499
+ '3616': InvalidOrder, # The order price exceeds the current top bid price. Please adjust the order price and try again.
500
+ '3617': InvalidOrder, # The order price exceeds the current bottom ask price. Please adjust the order price and try again.
501
+ '3618': InvalidOrder, # The deviation between your order price and the index price is too high. Please adjust your order price and try again.
502
+ '3619': InvalidOrder, # The deviation between your order price and the trigger price is too high. Please adjust your order price and try again.
503
+ '3620': InvalidOrder, # Market order submission is temporarily unavailable due to insufficient depth in the current market
504
+ '3621': InvalidOrder, # This order can't be completely executed and has been canceled.
505
+ '3622': InvalidOrder, # This order can't be set Only and has been canceled.
506
+ '3627': InvalidOrder, # The current market depth is low, please reduce your order amount and try again.
507
+ '3628': InvalidOrder, # The current market depth is low, please reduce your order amount and try again.
508
+ '3629': InvalidOrder, # The current market depth is low, please reduce your order amount and try again.
509
+ '3632': InvalidOrder, # The order price exceeds the current top bid price. Please adjust the order price and try again.
510
+ '3633': InvalidOrder, # The order price exceeds the current bottom ask price. Please adjust the order price and try again.
511
+ '3634': InvalidOrder, # The deviation between your est. filled price and the index price is too high. Please reduce the amount and try again.
512
+ '3635': InvalidOrder, # The deviation between your est. filled price and the index price is too high. Please reduce the amount and try again.
513
+ '4001': ExchangeNotAvailable, # Service unavailable, please try again later.
514
+ '4002': RequestTimeout, # Service request timed out, please try again later.
515
+ '4003': ExchangeError, # Internal error, please contact customer service for help.
516
+ '4004': BadRequest, # Parameter error, please check whether the request parameters are abnormal.
517
+ '4005': AuthenticationError, # Abnormal access_id, please check whether the value passed by X-COINEX-KEY is normal.
518
+ '4006': AuthenticationError, # Signature verification failed, please check the signature according to the documentation instructions.
519
+ '4007': PermissionDenied, # IP address prohibited, please check whether the whitelist or export IP is normal.
520
+ '4008': AuthenticationError, # Abnormal X-COIN-SIGN value, please check.
521
+ '4009': ExchangeError, # Abnormal request method, please check.
522
+ '4010': ExchangeError, # Expired request, please try again later.
523
+ '4011': PermissionDenied, # User prohibited from accessing, please contact customer service for help.
524
+ '4017': ExchangeError, # Signature expired, please try again later.
525
+ '4115': AccountSuspended, # User prohibited from trading, please contact customer service for help.
526
+ '4117': BadSymbol, # Trading hasattr(self, prohibited) market, please try again later.
527
+ '4123': RateLimitExceeded, # Rate limit triggered. Please adjust your strategy and reduce the request rate.
528
+ '4130': ExchangeError, # Futures trading prohibited, please try again later.
529
+ '4158': ExchangeError, # Trading prohibited, please try again later.
530
+ '4213': RateLimitExceeded, # The request is too frequent, please try again later.
531
+ '4512': PermissionDenied, # Insufficient sub-account permissions, please check.
488
532
  },
489
533
  'broad': {
490
534
  'ip not allow visit': PermissionDenied,
@@ -4139,8 +4183,8 @@ class coinex(Exchange, ImplicitAPI):
4139
4183
 
4140
4184
  async def fetch_funding_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
4141
4185
  """
4142
- fetch the history of funding payments paid and received on self account
4143
- :see: https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http034_funding_position
4186
+ fetch the history of funding fee payments paid and received on self account
4187
+ :see: https://docs.coinex.com/api/v2/futures/position/http/list-position-funding-history
4144
4188
  :param str symbol: unified market symbol
4145
4189
  :param int [since]: the earliest time in ms to fetch funding history for
4146
4190
  :param int [limit]: the maximum number of funding history structures to retrieve
@@ -4149,53 +4193,45 @@ class coinex(Exchange, ImplicitAPI):
4149
4193
  """
4150
4194
  if symbol is None:
4151
4195
  raise ArgumentsRequired(self.id + ' fetchFundingHistory() requires a symbol argument')
4152
- limit = 100 if (limit is None) else limit
4153
4196
  await self.load_markets()
4154
4197
  market = self.market(symbol)
4155
4198
  request = {
4156
4199
  'market': market['id'],
4157
- 'limit': limit,
4158
- # 'offset': 0,
4159
- # 'end_time': 1638990636000,
4160
- # 'windowtime': 1638990636000,
4200
+ 'market_type': 'FUTURES',
4161
4201
  }
4202
+ request, params = self.handle_until_option('end_time', request, params)
4162
4203
  if since is not None:
4163
4204
  request['start_time'] = since
4164
- response = await self.v1PerpetualPrivateGetPositionFunding(self.extend(request, params))
4205
+ if limit is not None:
4206
+ request['limit'] = limit
4207
+ response = await self.v2PrivateGetFuturesPositionFundingHistory(self.extend(request, params))
4165
4208
  #
4166
4209
  # {
4167
4210
  # "code": 0,
4168
- # "data": {
4169
- # "limit": 100,
4170
- # "offset": 0,
4171
- # "records": [
4172
- # {
4173
- # "amount": "0.0012",
4174
- # "asset": "USDT",
4175
- # "funding": "-0.0095688273996",
4176
- # "funding_rate": "0.00020034",
4177
- # "market": "BTCUSDT",
4178
- # "position_id": 62052321,
4179
- # "price": "39802.45",
4180
- # "real_funding_rate": "0.00020034",
4181
- # "side": 2,
4182
- # "time": 1650729623.933885,
4183
- # "type": 1,
4184
- # "user_id": 3620173,
4185
- # "value": "47.76294"
4186
- # },
4187
- # ]
4188
- # },
4189
- # "message": "OK"
4211
+ # "data": [
4212
+ # {
4213
+ # "ccy": "USDT",
4214
+ # "created_at": 1715673620183,
4215
+ # "funding_rate": "0",
4216
+ # "funding_value": "0",
4217
+ # "market": "BTCUSDT",
4218
+ # "market_type": "FUTURES",
4219
+ # "position_id": 306458800,
4220
+ # "side": "long"
4221
+ # },
4222
+ # ],
4223
+ # "message": "OK",
4224
+ # "pagination": {
4225
+ # "has_next": True
4226
+ # }
4190
4227
  # }
4191
4228
  #
4192
- data = self.safe_value(response, 'data', {})
4193
- resultList = self.safe_value(data, 'records', [])
4229
+ data = self.safe_list(response, 'data', [])
4194
4230
  result = []
4195
- for i in range(0, len(resultList)):
4196
- entry = resultList[i]
4197
- timestamp = self.safe_timestamp(entry, 'time')
4198
- currencyId = self.safe_string(entry, 'asset')
4231
+ for i in range(0, len(data)):
4232
+ entry = data[i]
4233
+ timestamp = self.safe_integer(entry, 'created_at')
4234
+ currencyId = self.safe_string(entry, 'ccy')
4199
4235
  code = self.safe_currency_code(currencyId)
4200
4236
  result.append({
4201
4237
  'info': entry,
@@ -4204,14 +4240,14 @@ class coinex(Exchange, ImplicitAPI):
4204
4240
  'timestamp': timestamp,
4205
4241
  'datetime': self.iso8601(timestamp),
4206
4242
  'id': self.safe_number(entry, 'position_id'),
4207
- 'amount': self.safe_number(entry, 'funding'),
4243
+ 'amount': self.safe_number(entry, 'funding_value'),
4208
4244
  })
4209
4245
  return result
4210
4246
 
4211
4247
  async def fetch_funding_rate(self, symbol: str, params={}):
4212
4248
  """
4213
4249
  fetch the current funding rate
4214
- :see: https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http008_market_ticker
4250
+ :see: https://docs.coinex.com/api/v2/futures/market/http/list-market-funding-rate
4215
4251
  :param str symbol: unified market symbol
4216
4252
  :param dict [params]: extra parameters specific to the exchange API endpoint
4217
4253
  :returns dict: a `funding rate structure <https://docs.ccxt.com/#/?id=funding-rate-structure>`
@@ -4223,93 +4259,63 @@ class coinex(Exchange, ImplicitAPI):
4223
4259
  request = {
4224
4260
  'market': market['id'],
4225
4261
  }
4226
- response = await self.v1PerpetualPublicGetMarketTicker(self.extend(request, params))
4262
+ response = await self.v2PublicGetFuturesFundingRate(self.extend(request, params))
4227
4263
  #
4228
4264
  # {
4229
- # "code": 0,
4230
- # "data":
4231
- # {
4232
- # "date": 1650678472474,
4233
- # "ticker": {
4234
- # "vol": "6090.9430",
4235
- # "low": "39180.30",
4236
- # "open": "40474.97",
4237
- # "high": "40798.01",
4238
- # "last": "39659.30",
4239
- # "buy": "39663.79",
4240
- # "period": 86400,
4241
- # "funding_time": 372,
4242
- # "position_amount": "270.1956",
4243
- # "funding_rate_last": "0.00022913",
4244
- # "funding_rate_next": "0.00013158",
4245
- # "funding_rate_predict": "0.00016552",
4246
- # "insurance": "16045554.83969682659674035672",
4247
- # "sign_price": "39652.48",
4248
- # "index_price": "39648.44250000",
4249
- # "sell_total": "22.3913",
4250
- # "buy_total": "19.4498",
4251
- # "buy_amount": "12.8942",
4252
- # "sell": "39663.80",
4253
- # "sell_amount": "0.9388"
4265
+ # "code": 0,
4266
+ # "data": [
4267
+ # {
4268
+ # "latest_funding_rate": "0",
4269
+ # "latest_funding_time": 1715731200000,
4270
+ # "mark_price": "61602.22",
4271
+ # "market": "BTCUSDT",
4272
+ # "max_funding_rate": "0.00375",
4273
+ # "min_funding_rate": "-0.00375",
4274
+ # "next_funding_rate": "0.00021074",
4275
+ # "next_funding_time": 1715760000000
4254
4276
  # }
4255
- # },
4277
+ # ],
4256
4278
  # "message": "OK"
4257
4279
  # }
4258
4280
  #
4259
- data = self.safe_value(response, 'data', {})
4260
- ticker = self.safe_value(data, 'ticker', {})
4261
- timestamp = self.safe_integer(data, 'date')
4262
- ticker['timestamp'] = timestamp # avoid changing parseFundingRate signature
4263
- return self.parse_funding_rate(ticker, market)
4281
+ data = self.safe_list(response, 'data', [])
4282
+ first = self.safe_dict(data, 0, {})
4283
+ return self.parse_funding_rate(first, market)
4264
4284
 
4265
4285
  def parse_funding_rate(self, contract, market: Market = None):
4266
4286
  #
4267
- # fetchFundingRate
4287
+ # fetchFundingRate, fetchFundingRates
4268
4288
  #
4269
4289
  # {
4270
- # "vol": "6090.9430",
4271
- # "low": "39180.30",
4272
- # "open": "40474.97",
4273
- # "high": "40798.01",
4274
- # "last": "39659.30",
4275
- # "buy": "39663.79",
4276
- # "period": 86400,
4277
- # "funding_time": 372,
4278
- # "position_amount": "270.1956",
4279
- # "funding_rate_last": "0.00022913",
4280
- # "funding_rate_next": "0.00013158",
4281
- # "funding_rate_predict": "0.00016552",
4282
- # "insurance": "16045554.83969682659674035672",
4283
- # "sign_price": "39652.48",
4284
- # "index_price": "39648.44250000",
4285
- # "sell_total": "22.3913",
4286
- # "buy_total": "19.4498",
4287
- # "buy_amount": "12.8942",
4288
- # "sell": "39663.80",
4289
- # "sell_amount": "0.9388"
4290
+ # "latest_funding_rate": "0",
4291
+ # "latest_funding_time": 1715731200000,
4292
+ # "mark_price": "61602.22",
4293
+ # "market": "BTCUSDT",
4294
+ # "max_funding_rate": "0.00375",
4295
+ # "min_funding_rate": "-0.00375",
4296
+ # "next_funding_rate": "0.00021074",
4297
+ # "next_funding_time": 1715760000000
4290
4298
  # }
4291
4299
  #
4292
- timestamp = self.safe_integer(contract, 'timestamp')
4293
- contract = self.omit(contract, 'timestamp')
4294
- fundingDelta = self.safe_integer(contract, 'funding_time') * 60 * 1000
4295
- fundingHour = (timestamp + fundingDelta) / 3600000
4296
- fundingTimestamp = int(round(fundingHour)) * 3600000
4300
+ currentFundingTimestamp = self.safe_integer(contract, 'latest_funding_time')
4301
+ futureFundingTimestamp = self.safe_integer(contract, 'next_funding_time')
4302
+ marketId = self.safe_string(contract, 'market')
4297
4303
  return {
4298
4304
  'info': contract,
4299
- 'symbol': self.safe_symbol(None, market),
4300
- 'markPrice': self.safe_number(contract, 'sign_price'),
4301
- 'indexPrice': self.safe_number(contract, 'index_price'),
4305
+ 'symbol': self.safe_symbol(marketId, market, None, 'swap'),
4306
+ 'markPrice': self.safe_number(contract, 'mark_price'),
4307
+ 'indexPrice': None,
4302
4308
  'interestRate': None,
4303
4309
  'estimatedSettlePrice': None,
4304
- 'timestamp': timestamp,
4305
- 'datetime': self.iso8601(timestamp),
4306
- 'fundingRate': self.safe_number(contract, 'funding_rate_next'),
4307
- 'fundingTimestamp': fundingTimestamp,
4308
- 'fundingDatetime': self.iso8601(fundingTimestamp),
4309
- 'nextFundingRate': self.safe_number(contract, 'funding_rate_predict'),
4310
- 'nextFundingTimestamp': None,
4311
- 'nextFundingDatetime': None,
4312
- 'previousFundingRate': self.safe_number(contract, 'funding_rate_last'),
4310
+ 'timestamp': None,
4311
+ 'datetime': None,
4312
+ 'fundingRate': self.safe_number(contract, 'latest_funding_rate'),
4313
+ 'fundingTimestamp': currentFundingTimestamp,
4314
+ 'fundingDatetime': self.iso8601(currentFundingTimestamp),
4315
+ 'nextFundingRate': self.safe_number(contract, 'next_funding_rate'),
4316
+ 'nextFundingTimestamp': futureFundingTimestamp,
4317
+ 'nextFundingDatetime': self.iso8601(futureFundingTimestamp),
4318
+ 'previousFundingRate': None,
4313
4319
  'previousFundingTimestamp': None,
4314
4320
  'previousFundingDatetime': None,
4315
4321
  }
@@ -4317,65 +4323,43 @@ class coinex(Exchange, ImplicitAPI):
4317
4323
  async def fetch_funding_rates(self, symbols: Strings = None, params={}):
4318
4324
  """
4319
4325
  fetch the current funding rates
4320
- :see: https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http009_market_ticker_all
4326
+ :see: https://docs.coinex.com/api/v2/futures/market/http/list-market-funding-rate
4321
4327
  :param str[] symbols: unified market symbols
4322
4328
  :param dict [params]: extra parameters specific to the exchange API endpoint
4323
4329
  :returns dict[]: an array of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-structure>`
4324
4330
  """
4325
4331
  await self.load_markets()
4326
4332
  symbols = self.market_symbols(symbols)
4333
+ request = {}
4327
4334
  market = None
4328
4335
  if symbols is not None:
4329
4336
  symbol = self.safe_value(symbols, 0)
4330
4337
  market = self.market(symbol)
4331
4338
  if not market['swap']:
4332
4339
  raise BadSymbol(self.id + ' fetchFundingRates() supports swap contracts only')
4333
- response = await self.v1PerpetualPublicGetMarketTickerAll(params)
4340
+ marketIds = self.market_ids(symbols)
4341
+ request['market'] = ','.join(marketIds)
4342
+ response = await self.v2PublicGetFuturesFundingRate(self.extend(request, params))
4334
4343
  #
4335
4344
  # {
4336
4345
  # "code": 0,
4337
- # "data":
4338
- # {
4339
- # "date": 1650678472474,
4340
- # "ticker": {
4341
- # "BTCUSDT": {
4342
- # "vol": "6090.9430",
4343
- # "low": "39180.30",
4344
- # "open": "40474.97",
4345
- # "high": "40798.01",
4346
- # "last": "39659.30",
4347
- # "buy": "39663.79",
4348
- # "period": 86400,
4349
- # "funding_time": 372,
4350
- # "position_amount": "270.1956",
4351
- # "funding_rate_last": "0.00022913",
4352
- # "funding_rate_next": "0.00013158",
4353
- # "funding_rate_predict": "0.00016552",
4354
- # "insurance": "16045554.83969682659674035672",
4355
- # "sign_price": "39652.48",
4356
- # "index_price": "39648.44250000",
4357
- # "sell_total": "22.3913",
4358
- # "buy_total": "19.4498",
4359
- # "buy_amount": "12.8942",
4360
- # "sell": "39663.80",
4361
- # "sell_amount": "0.9388"
4362
- # }
4346
+ # "data": [
4347
+ # {
4348
+ # "latest_funding_rate": "0",
4349
+ # "latest_funding_time": 1715731200000,
4350
+ # "mark_price": "61602.22",
4351
+ # "market": "BTCUSDT",
4352
+ # "max_funding_rate": "0.00375",
4353
+ # "min_funding_rate": "-0.00375",
4354
+ # "next_funding_rate": "0.00021074",
4355
+ # "next_funding_time": 1715760000000
4363
4356
  # }
4364
- # },
4357
+ # ],
4365
4358
  # "message": "OK"
4366
4359
  # }
4367
- data = self.safe_value(response, 'data', {})
4368
- tickers = self.safe_value(data, 'ticker', {})
4369
- timestamp = self.safe_integer(data, 'date')
4370
- result = []
4371
- marketIds = list(tickers.keys())
4372
- for i in range(0, len(marketIds)):
4373
- marketId = marketIds[i]
4374
- if marketId.find('_') == -1: # skip _signprice and _indexprice
4375
- marketInner = self.safe_market(marketId, None, None, 'swap')
4376
- ticker = tickers[marketId]
4377
- ticker['timestamp'] = timestamp
4378
- result.append(self.parse_funding_rate(ticker, marketInner))
4360
+ #
4361
+ data = self.safe_list(response, 'data', [])
4362
+ result = self.parse_funding_rates(data, market)
4379
4363
  return self.filter_by_array(result, 'symbol', symbols)
4380
4364
 
4381
4365
  async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
@@ -4443,13 +4427,13 @@ class coinex(Exchange, ImplicitAPI):
4443
4427
 
4444
4428
  async def fetch_funding_rate_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
4445
4429
  """
4446
- :see: https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http038_funding_history
4447
4430
  fetches historical funding rate prices
4431
+ :see: https://docs.coinex.com/api/v2/futures/market/http/list-market-funding-rate-history
4448
4432
  :param str symbol: unified symbol of the market to fetch the funding rate history for
4449
4433
  :param int [since]: timestamp in ms of the earliest funding rate to fetch
4450
4434
  :param int [limit]: the maximum amount of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-history-structure>` to fetch
4451
4435
  :param dict [params]: extra parameters specific to the exchange API endpoint
4452
- :param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [availble parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
4436
+ :param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
4453
4437
  :param int [params.until]: timestamp in ms of the latest funding rate
4454
4438
  :returns dict[]: a list of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-history-structure>`
4455
4439
  """
@@ -4460,50 +4444,44 @@ class coinex(Exchange, ImplicitAPI):
4460
4444
  paginate, params = self.handle_option_and_params(params, 'fetchFundingRateHistory', 'paginate')
4461
4445
  if paginate:
4462
4446
  return await self.fetch_paginated_call_deterministic('fetchFundingRateHistory', symbol, since, limit, '8h', params, 1000)
4463
- if limit is None:
4464
- limit = 100
4465
4447
  market = self.market(symbol)
4466
4448
  request = {
4467
4449
  'market': market['id'],
4468
- 'limit': limit,
4469
- 'offset': 0,
4470
- # 'end_time': 1638990636,
4471
4450
  }
4472
4451
  if since is not None:
4473
4452
  request['start_time'] = since
4453
+ if limit is not None:
4454
+ request['limit'] = limit
4474
4455
  request, params = self.handle_until_option('end_time', request, params)
4475
- response = await self.v1PerpetualPublicGetMarketFundingHistory(self.extend(request, params))
4456
+ response = await self.v2PublicGetFuturesFundingRateHistory(self.extend(request, params))
4476
4457
  #
4477
4458
  # {
4478
4459
  # "code": 0,
4479
- # "data": {
4480
- # "offset": 0,
4481
- # "limit": 3,
4482
- # "records": [
4483
- # {
4484
- # "time": 1650672021.6230309,
4485
- # "market": "BTCUSDT",
4486
- # "asset": "USDT",
4487
- # "funding_rate": "0.00022913",
4488
- # "funding_rate_real": "0.00022913"
4489
- # },
4490
- # ]
4491
- # },
4492
- # "message": "OK"
4460
+ # "data": [
4461
+ # {
4462
+ # "actual_funding_rate": "0",
4463
+ # "funding_time": 1715731221761,
4464
+ # "market": "BTCUSDT",
4465
+ # "theoretical_funding_rate": "0"
4466
+ # },
4467
+ # ],
4468
+ # "message": "OK",
4469
+ # "pagination": {
4470
+ # "has_next": True
4471
+ # }
4493
4472
  # }
4494
4473
  #
4495
- data = self.safe_value(response, 'data')
4496
- result = self.safe_value(data, 'records', [])
4474
+ data = self.safe_list(response, 'data', [])
4497
4475
  rates = []
4498
- for i in range(0, len(result)):
4499
- entry = result[i]
4476
+ for i in range(0, len(data)):
4477
+ entry = data[i]
4500
4478
  marketId = self.safe_string(entry, 'market')
4501
4479
  symbolInner = self.safe_symbol(marketId, market, None, 'swap')
4502
- timestamp = self.safe_timestamp(entry, 'time')
4480
+ timestamp = self.safe_integer(entry, 'funding_time')
4503
4481
  rates.append({
4504
4482
  'info': entry,
4505
4483
  'symbol': symbolInner,
4506
- 'fundingRate': self.safe_number(entry, 'funding_rate'),
4484
+ 'fundingRate': self.safe_number(entry, 'actual_funding_rate'),
4507
4485
  'timestamp': timestamp,
4508
4486
  'datetime': self.iso8601(timestamp),
4509
4487
  })
@@ -5550,7 +5528,7 @@ class coinex(Exchange, ImplicitAPI):
5550
5528
  code = self.safe_string(response, 'code')
5551
5529
  data = self.safe_value(response, 'data')
5552
5530
  message = self.safe_string(response, 'message')
5553
- if (code != '0') or ((message != 'Success') and (message != 'Succeeded') and (message != 'Ok') and not data):
5531
+ if (code != '0') or ((message != 'Success') and (message != 'Succeeded') and (message.lower() != 'ok') and not data):
5554
5532
  feedback = self.id + ' ' + message
5555
5533
  self.throw_broadly_matched_exception(self.exceptions['broad'], message, feedback)
5556
5534
  self.throw_exactly_matched_exception(self.exceptions['exact'], code, feedback)