ccxt 4.3.63__tar.gz → 4.3.65__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (528) hide show
  1. {ccxt-4.3.63/ccxt.egg-info → ccxt-4.3.65}/PKG-INFO +4 -4
  2. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/__init__.py +1 -1
  3. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/kucoin.py +1 -0
  4. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/kucoinfutures.py +1 -0
  5. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/alpaca.py +1 -0
  6. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/__init__.py +1 -1
  7. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/alpaca.py +1 -0
  8. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/base/exchange.py +4 -4
  9. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bingx.py +83 -1
  10. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bitfinex.py +1 -1
  11. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bitfinex2.py +1 -1
  12. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bybit.py +11 -4
  13. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/independentreserve.py +103 -1
  14. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/kucoin.py +2 -0
  15. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/whitebit.py +1 -1
  16. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/woo.py +25 -0
  17. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/yobit.py +1 -1
  18. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/zonda.py +1 -1
  19. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/base/exchange.py +4 -4
  20. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bingx.py +83 -1
  21. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bitfinex.py +1 -1
  22. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bitfinex2.py +1 -1
  23. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bybit.py +11 -4
  24. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/independentreserve.py +103 -1
  25. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/kucoin.py +2 -0
  26. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/__init__.py +1 -1
  27. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/bitmart.py +3 -3
  28. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/gate.py +1 -1
  29. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/gemini.py +4 -2
  30. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/okx.py +1 -1
  31. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/onetrading.py +3 -2
  32. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/oxfun.py +1 -1
  33. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/vertex.py +3 -2
  34. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/woo.py +2 -1
  35. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/woofipro.py +2 -1
  36. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/test/tests_async.py +3 -3
  37. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/test/tests_helpers.py +1 -1
  38. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/test/tests_init.py +3 -3
  39. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/test/tests_sync.py +3 -3
  40. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/whitebit.py +1 -1
  41. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/woo.py +25 -0
  42. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/yobit.py +1 -1
  43. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/zonda.py +1 -1
  44. {ccxt-4.3.63 → ccxt-4.3.65/ccxt.egg-info}/PKG-INFO +4 -4
  45. {ccxt-4.3.63 → ccxt-4.3.65}/package.json +1 -1
  46. {ccxt-4.3.63 → ccxt-4.3.65}/LICENSE.txt +0 -0
  47. {ccxt-4.3.63 → ccxt-4.3.65}/MANIFEST.in +0 -0
  48. {ccxt-4.3.63 → ccxt-4.3.65}/README.rst +0 -0
  49. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/__init__.py +0 -0
  50. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/ace.py +0 -0
  51. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/alpaca.py +0 -0
  52. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/ascendex.py +0 -0
  53. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bequant.py +0 -0
  54. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bigone.py +0 -0
  55. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/binance.py +0 -0
  56. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/binancecoinm.py +0 -0
  57. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/binanceus.py +0 -0
  58. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/binanceusdm.py +0 -0
  59. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bingx.py +0 -0
  60. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bit2c.py +0 -0
  61. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bitbank.py +0 -0
  62. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bitbay.py +0 -0
  63. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bitbns.py +0 -0
  64. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bitcoincom.py +0 -0
  65. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bitfinex.py +0 -0
  66. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bitfinex2.py +0 -0
  67. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bitflyer.py +0 -0
  68. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bitget.py +0 -0
  69. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bithumb.py +0 -0
  70. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bitmart.py +0 -0
  71. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bitmex.py +0 -0
  72. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bitopro.py +0 -0
  73. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bitpanda.py +0 -0
  74. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bitrue.py +0 -0
  75. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bitso.py +0 -0
  76. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bitstamp.py +0 -0
  77. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bitteam.py +0 -0
  78. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bitvavo.py +0 -0
  79. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bl3p.py +0 -0
  80. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/blockchaincom.py +0 -0
  81. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/blofin.py +0 -0
  82. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/btcalpha.py +0 -0
  83. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/btcbox.py +0 -0
  84. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/btcmarkets.py +0 -0
  85. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/btcturk.py +0 -0
  86. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/bybit.py +0 -0
  87. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/cex.py +0 -0
  88. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/coinbase.py +0 -0
  89. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/coinbaseadvanced.py +0 -0
  90. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/coinbaseexchange.py +0 -0
  91. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/coinbaseinternational.py +0 -0
  92. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/coincheck.py +0 -0
  93. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/coinex.py +0 -0
  94. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/coinlist.py +0 -0
  95. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/coinmate.py +0 -0
  96. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/coinmetro.py +0 -0
  97. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/coinone.py +0 -0
  98. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/coinsph.py +0 -0
  99. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/coinspot.py +0 -0
  100. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/cryptocom.py +0 -0
  101. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/currencycom.py +0 -0
  102. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/delta.py +0 -0
  103. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/deribit.py +0 -0
  104. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/digifinex.py +0 -0
  105. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/exmo.py +0 -0
  106. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/fmfwio.py +0 -0
  107. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/gate.py +0 -0
  108. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/gateio.py +0 -0
  109. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/gemini.py +0 -0
  110. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/hitbtc.py +0 -0
  111. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/hitbtc3.py +0 -0
  112. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/hollaex.py +0 -0
  113. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/htx.py +0 -0
  114. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/huobi.py +0 -0
  115. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/huobijp.py +0 -0
  116. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/hyperliquid.py +0 -0
  117. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/idex.py +0 -0
  118. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/independentreserve.py +0 -0
  119. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/indodax.py +0 -0
  120. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/kraken.py +0 -0
  121. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/krakenfutures.py +0 -0
  122. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/kuna.py +0 -0
  123. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/latoken.py +0 -0
  124. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/lbank.py +0 -0
  125. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/luno.py +0 -0
  126. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/lykke.py +0 -0
  127. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/mercado.py +0 -0
  128. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/mexc.py +0 -0
  129. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/ndax.py +0 -0
  130. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/novadax.py +0 -0
  131. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/oceanex.py +0 -0
  132. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/okcoin.py +0 -0
  133. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/okx.py +0 -0
  134. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/onetrading.py +0 -0
  135. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/oxfun.py +0 -0
  136. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/p2b.py +0 -0
  137. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/paymium.py +0 -0
  138. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/phemex.py +0 -0
  139. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/poloniex.py +0 -0
  140. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/poloniexfutures.py +0 -0
  141. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/probit.py +0 -0
  142. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/timex.py +0 -0
  143. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/tokocrypto.py +0 -0
  144. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/tradeogre.py +0 -0
  145. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/upbit.py +0 -0
  146. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/vertex.py +0 -0
  147. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/wavesexchange.py +0 -0
  148. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/wazirx.py +0 -0
  149. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/whitebit.py +0 -0
  150. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/woo.py +0 -0
  151. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/woofipro.py +0 -0
  152. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/xt.py +0 -0
  153. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/yobit.py +0 -0
  154. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/zaif.py +0 -0
  155. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/abstract/zonda.py +0 -0
  156. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/ace.py +0 -0
  157. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/ascendex.py +0 -0
  158. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/ace.py +0 -0
  159. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/ascendex.py +0 -0
  160. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/base/__init__.py +0 -0
  161. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/base/throttler.py +0 -0
  162. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/base/ws/__init__.py +0 -0
  163. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  164. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/base/ws/cache.py +0 -0
  165. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/base/ws/client.py +0 -0
  166. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/base/ws/fast_client.py +0 -0
  167. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/base/ws/functions.py +0 -0
  168. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/base/ws/future.py +0 -0
  169. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/base/ws/order_book.py +0 -0
  170. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  171. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bequant.py +0 -0
  172. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bigone.py +0 -0
  173. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/binance.py +0 -0
  174. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/binancecoinm.py +0 -0
  175. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/binanceus.py +0 -0
  176. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/binanceusdm.py +0 -0
  177. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bit2c.py +0 -0
  178. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bitbank.py +0 -0
  179. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bitbay.py +0 -0
  180. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bitbns.py +0 -0
  181. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bitcoincom.py +0 -0
  182. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bitflyer.py +0 -0
  183. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bitget.py +0 -0
  184. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bithumb.py +0 -0
  185. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bitmart.py +0 -0
  186. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bitmex.py +0 -0
  187. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bitopro.py +0 -0
  188. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bitpanda.py +0 -0
  189. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bitrue.py +0 -0
  190. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bitso.py +0 -0
  191. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bitstamp.py +0 -0
  192. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bitteam.py +0 -0
  193. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bitvavo.py +0 -0
  194. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/bl3p.py +0 -0
  195. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/blockchaincom.py +0 -0
  196. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/blofin.py +0 -0
  197. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/btcalpha.py +0 -0
  198. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/btcbox.py +0 -0
  199. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/btcmarkets.py +0 -0
  200. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/btcturk.py +0 -0
  201. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/cex.py +0 -0
  202. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/coinbase.py +0 -0
  203. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/coinbaseadvanced.py +0 -0
  204. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/coinbaseexchange.py +0 -0
  205. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/coinbaseinternational.py +0 -0
  206. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/coincheck.py +0 -0
  207. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/coinex.py +0 -0
  208. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/coinlist.py +0 -0
  209. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/coinmate.py +0 -0
  210. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/coinmetro.py +0 -0
  211. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/coinone.py +0 -0
  212. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/coinsph.py +0 -0
  213. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/coinspot.py +0 -0
  214. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/cryptocom.py +0 -0
  215. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/currencycom.py +0 -0
  216. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/delta.py +0 -0
  217. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/deribit.py +0 -0
  218. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/digifinex.py +0 -0
  219. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/exmo.py +0 -0
  220. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/fmfwio.py +0 -0
  221. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/gate.py +0 -0
  222. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/gateio.py +0 -0
  223. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/gemini.py +0 -0
  224. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/hitbtc.py +0 -0
  225. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/hitbtc3.py +0 -0
  226. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/hollaex.py +0 -0
  227. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/htx.py +0 -0
  228. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/huobi.py +0 -0
  229. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/huobijp.py +0 -0
  230. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/hyperliquid.py +0 -0
  231. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/idex.py +0 -0
  232. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/indodax.py +0 -0
  233. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/kraken.py +0 -0
  234. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/krakenfutures.py +0 -0
  235. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/kucoinfutures.py +0 -0
  236. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/kuna.py +0 -0
  237. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/latoken.py +0 -0
  238. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/lbank.py +0 -0
  239. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/luno.py +0 -0
  240. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/lykke.py +0 -0
  241. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/mercado.py +0 -0
  242. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/mexc.py +0 -0
  243. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/ndax.py +0 -0
  244. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/novadax.py +0 -0
  245. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/oceanex.py +0 -0
  246. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/okcoin.py +0 -0
  247. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/okx.py +0 -0
  248. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/onetrading.py +0 -0
  249. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/oxfun.py +0 -0
  250. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/p2b.py +0 -0
  251. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/paymium.py +0 -0
  252. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/phemex.py +0 -0
  253. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/poloniex.py +0 -0
  254. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/poloniexfutures.py +0 -0
  255. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/probit.py +0 -0
  256. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/timex.py +0 -0
  257. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/tokocrypto.py +0 -0
  258. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/tradeogre.py +0 -0
  259. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/upbit.py +0 -0
  260. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/vertex.py +0 -0
  261. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/wavesexchange.py +0 -0
  262. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/wazirx.py +0 -0
  263. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/woofipro.py +0 -0
  264. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/xt.py +0 -0
  265. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/async_support/zaif.py +0 -0
  266. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/base/__init__.py +0 -0
  267. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/base/decimal_to_precision.py +0 -0
  268. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/base/errors.py +0 -0
  269. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/base/precise.py +0 -0
  270. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/base/types.py +0 -0
  271. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bequant.py +0 -0
  272. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bigone.py +0 -0
  273. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/binance.py +0 -0
  274. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/binancecoinm.py +0 -0
  275. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/binanceus.py +0 -0
  276. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/binanceusdm.py +0 -0
  277. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bit2c.py +0 -0
  278. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bitbank.py +0 -0
  279. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bitbay.py +0 -0
  280. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bitbns.py +0 -0
  281. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bitcoincom.py +0 -0
  282. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bitflyer.py +0 -0
  283. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bitget.py +0 -0
  284. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bithumb.py +0 -0
  285. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bitmart.py +0 -0
  286. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bitmex.py +0 -0
  287. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bitopro.py +0 -0
  288. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bitpanda.py +0 -0
  289. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bitrue.py +0 -0
  290. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bitso.py +0 -0
  291. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bitstamp.py +0 -0
  292. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bitteam.py +0 -0
  293. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bitvavo.py +0 -0
  294. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/bl3p.py +0 -0
  295. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/blockchaincom.py +0 -0
  296. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/blofin.py +0 -0
  297. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/btcalpha.py +0 -0
  298. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/btcbox.py +0 -0
  299. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/btcmarkets.py +0 -0
  300. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/btcturk.py +0 -0
  301. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/cex.py +0 -0
  302. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/coinbase.py +0 -0
  303. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/coinbaseadvanced.py +0 -0
  304. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/coinbaseexchange.py +0 -0
  305. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/coinbaseinternational.py +0 -0
  306. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/coincheck.py +0 -0
  307. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/coinex.py +0 -0
  308. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/coinlist.py +0 -0
  309. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/coinmate.py +0 -0
  310. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/coinmetro.py +0 -0
  311. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/coinone.py +0 -0
  312. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/coinsph.py +0 -0
  313. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/coinspot.py +0 -0
  314. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/cryptocom.py +0 -0
  315. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/currencycom.py +0 -0
  316. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/delta.py +0 -0
  317. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/deribit.py +0 -0
  318. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/digifinex.py +0 -0
  319. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/exmo.py +0 -0
  320. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/fmfwio.py +0 -0
  321. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/gate.py +0 -0
  322. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/gateio.py +0 -0
  323. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/gemini.py +0 -0
  324. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/hitbtc.py +0 -0
  325. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/hitbtc3.py +0 -0
  326. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/hollaex.py +0 -0
  327. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/htx.py +0 -0
  328. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/huobi.py +0 -0
  329. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/huobijp.py +0 -0
  330. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/hyperliquid.py +0 -0
  331. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/idex.py +0 -0
  332. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/indodax.py +0 -0
  333. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/kraken.py +0 -0
  334. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/krakenfutures.py +0 -0
  335. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/kucoinfutures.py +0 -0
  336. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/kuna.py +0 -0
  337. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/latoken.py +0 -0
  338. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/lbank.py +0 -0
  339. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/luno.py +0 -0
  340. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/lykke.py +0 -0
  341. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/mercado.py +0 -0
  342. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/mexc.py +0 -0
  343. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/ndax.py +0 -0
  344. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/novadax.py +0 -0
  345. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/oceanex.py +0 -0
  346. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/okcoin.py +0 -0
  347. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/okx.py +0 -0
  348. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/onetrading.py +0 -0
  349. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/oxfun.py +0 -0
  350. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/p2b.py +0 -0
  351. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/paymium.py +0 -0
  352. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/phemex.py +0 -0
  353. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/poloniex.py +0 -0
  354. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/poloniexfutures.py +0 -0
  355. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/alpaca.py +0 -0
  356. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/ascendex.py +0 -0
  357. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/bequant.py +0 -0
  358. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/binance.py +0 -0
  359. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/binancecoinm.py +0 -0
  360. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/binanceus.py +0 -0
  361. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/binanceusdm.py +0 -0
  362. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/bingx.py +0 -0
  363. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/bitcoincom.py +0 -0
  364. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/bitfinex.py +0 -0
  365. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/bitfinex2.py +0 -0
  366. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/bitget.py +0 -0
  367. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/bithumb.py +0 -0
  368. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/bitmex.py +0 -0
  369. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/bitopro.py +0 -0
  370. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/bitpanda.py +0 -0
  371. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/bitrue.py +0 -0
  372. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/bitstamp.py +0 -0
  373. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/bitvavo.py +0 -0
  374. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/blockchaincom.py +0 -0
  375. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/bybit.py +0 -0
  376. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/cex.py +0 -0
  377. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/coinbase.py +0 -0
  378. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/coinbaseexchange.py +0 -0
  379. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/coinbaseinternational.py +0 -0
  380. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/coincheck.py +0 -0
  381. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/coinex.py +0 -0
  382. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/coinone.py +0 -0
  383. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/cryptocom.py +0 -0
  384. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/currencycom.py +0 -0
  385. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/deribit.py +0 -0
  386. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/exmo.py +0 -0
  387. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/gateio.py +0 -0
  388. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/hitbtc.py +0 -0
  389. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/hollaex.py +0 -0
  390. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/htx.py +0 -0
  391. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/huobi.py +0 -0
  392. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/huobijp.py +0 -0
  393. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/hyperliquid.py +0 -0
  394. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/idex.py +0 -0
  395. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/independentreserve.py +0 -0
  396. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/kraken.py +0 -0
  397. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/krakenfutures.py +0 -0
  398. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/kucoin.py +0 -0
  399. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/kucoinfutures.py +0 -0
  400. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/lbank.py +0 -0
  401. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/luno.py +0 -0
  402. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/mexc.py +0 -0
  403. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/ndax.py +0 -0
  404. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/okcoin.py +0 -0
  405. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/p2b.py +0 -0
  406. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/phemex.py +0 -0
  407. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/poloniex.py +0 -0
  408. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/poloniexfutures.py +0 -0
  409. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/probit.py +0 -0
  410. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/upbit.py +0 -0
  411. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/wazirx.py +0 -0
  412. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/whitebit.py +0 -0
  413. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/pro/xt.py +0 -0
  414. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/probit.py +0 -0
  415. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/__init__.py +0 -0
  416. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  417. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  418. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  419. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  420. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  421. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  422. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  423. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  424. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  425. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  426. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
  427. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
  428. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
  429. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
  430. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
  431. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
  432. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
  433. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
  434. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
  435. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
  436. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
  437. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  438. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
  439. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
  440. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
  441. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  442. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
  443. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
  444. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
  445. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
  446. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
  447. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
  448. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
  449. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
  450. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  451. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
  452. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
  453. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
  454. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  455. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
  456. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
  457. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
  458. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
  459. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
  460. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
  461. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
  462. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
  463. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
  464. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  465. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
  466. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
  467. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
  468. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
  469. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
  470. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
  471. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
  472. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
  473. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
  474. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
  475. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
  476. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
  477. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
  478. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
  479. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
  480. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
  481. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
  482. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  483. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
  484. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
  485. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
  486. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
  487. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
  488. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  489. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  490. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
  491. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
  492. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/msgpack/ext.py +0 -0
  493. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
  494. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
  495. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
  496. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
  497. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
  498. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
  499. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
  500. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/toolz/__init__.py +0 -0
  501. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
  502. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/toolz/_version.py +0 -0
  503. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
  504. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
  505. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
  506. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
  507. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
  508. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
  509. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
  510. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/toolz/recipes.py +0 -0
  511. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/static_dependencies/toolz/utils.py +0 -0
  512. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/test/__init__.py +0 -0
  513. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/timex.py +0 -0
  514. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/tokocrypto.py +0 -0
  515. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/tradeogre.py +0 -0
  516. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/upbit.py +0 -0
  517. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/vertex.py +0 -0
  518. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/wavesexchange.py +0 -0
  519. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/wazirx.py +0 -0
  520. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/woofipro.py +0 -0
  521. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/xt.py +0 -0
  522. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt/zaif.py +0 -0
  523. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt.egg-info/SOURCES.txt +0 -0
  524. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt.egg-info/dependency_links.txt +0 -0
  525. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt.egg-info/requires.txt +0 -0
  526. {ccxt-4.3.63 → ccxt-4.3.65}/ccxt.egg-info/top_level.txt +0 -0
  527. {ccxt-4.3.63 → ccxt-4.3.65}/setup.cfg +0 -0
  528. {ccxt-4.3.63 → ccxt-4.3.65}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.3.63
3
+ Version: 4.3.65
4
4
  Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges
5
5
  Home-page: https://ccxt.com
6
6
  Author: Igor Kroitor
@@ -257,13 +257,13 @@ console.log(version, Object.keys(exchanges));
257
257
 
258
258
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
259
259
 
260
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.63/dist/ccxt.browser.min.js
261
- * unpkg: https://unpkg.com/ccxt@4.3.63/dist/ccxt.browser.min.js
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
262
262
 
263
263
  CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
264
264
 
265
265
  ```HTML
266
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.63/dist/ccxt.browser.min.js"></script>
266
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.65/dist/ccxt.browser.min.js"></script>
267
267
  ```
268
268
 
269
269
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.3.63'
25
+ __version__ = '4.3.65'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -18,6 +18,7 @@ class ImplicitAPI:
18
18
  public_get_timestamp = publicGetTimestamp = Entry('timestamp', 'public', 'GET', {'cost': 4.5})
19
19
  public_get_status = publicGetStatus = Entry('status', 'public', 'GET', {'cost': 4.5})
20
20
  public_get_mark_price_symbol_current = publicGetMarkPriceSymbolCurrent = Entry('mark-price/{symbol}/current', 'public', 'GET', {'cost': 3})
21
+ public_get_mark_price_all_symbols = publicGetMarkPriceAllSymbols = Entry('mark-price/all-symbols', 'public', 'GET', {'cost': 3})
21
22
  public_get_margin_config = publicGetMarginConfig = Entry('margin/config', 'public', 'GET', {'cost': 25})
22
23
  public_post_bullet_public = publicPostBulletPublic = Entry('bullet-public', 'public', 'POST', {'cost': 15})
23
24
  private_get_user_info = privateGetUserInfo = Entry('user-info', 'private', 'GET', {'cost': 30})
@@ -18,6 +18,7 @@ class ImplicitAPI:
18
18
  public_get_timestamp = publicGetTimestamp = Entry('timestamp', 'public', 'GET', {'cost': 4.5})
19
19
  public_get_status = publicGetStatus = Entry('status', 'public', 'GET', {'cost': 4.5})
20
20
  public_get_mark_price_symbol_current = publicGetMarkPriceSymbolCurrent = Entry('mark-price/{symbol}/current', 'public', 'GET', {'cost': 3})
21
+ public_get_mark_price_all_symbols = publicGetMarkPriceAllSymbols = Entry('mark-price/all-symbols', 'public', 'GET', {'cost': 3})
21
22
  public_get_margin_config = publicGetMarginConfig = Entry('margin/config', 'public', 'GET', {'cost': 25})
22
23
  public_post_bullet_public = publicPostBulletPublic = Entry('bullet-public', 'public', 'POST', {'cost': 15})
23
24
  private_get_user_info = privateGetUserInfo = Entry('user-info', 'private', 'GET', {'cost': 30})
@@ -1056,6 +1056,7 @@ class alpaca(Exchange, ImplicitAPI):
1056
1056
  url = self.implode_hostname(self.urls['api'][api[0]])
1057
1057
  headers = headers if (headers is not None) else {}
1058
1058
  if api[1] == 'private':
1059
+ self.check_required_credentials()
1059
1060
  headers['APCA-API-KEY-ID'] = self.apiKey
1060
1061
  headers['APCA-API-SECRET-KEY'] = self.secret
1061
1062
  query = self.omit(params, self.extract_params(path))
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.63'
7
+ __version__ = '4.3.65'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -1056,6 +1056,7 @@ class alpaca(Exchange, ImplicitAPI):
1056
1056
  url = self.implode_hostname(self.urls['api'][api[0]])
1057
1057
  headers = headers if (headers is not None) else {}
1058
1058
  if api[1] == 'private':
1059
+ self.check_required_credentials()
1059
1060
  headers['APCA-API-KEY-ID'] = self.apiKey
1060
1061
  headers['APCA-API-SECRET-KEY'] = self.secret
1061
1062
  query = self.omit(params, self.extract_params(path))
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.3.63'
5
+ __version__ = '4.3.65'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -1013,14 +1013,14 @@ class Exchange(BaseExchange):
1013
1013
  await self.load_markets()
1014
1014
  market = self.market(symbol)
1015
1015
  symbol = market['symbol']
1016
- tickers = await self.fetch_ticker_ws(symbol, params)
1016
+ tickers = await self.fetch_tickers_ws([symbol], params)
1017
1017
  ticker = self.safe_dict(tickers, symbol)
1018
1018
  if ticker is None:
1019
- raise NullResponse(self.id + ' fetchTickers() could not find a ticker for ' + symbol)
1019
+ raise NullResponse(self.id + ' fetchTickerWs() could not find a ticker for ' + symbol)
1020
1020
  else:
1021
1021
  return ticker
1022
1022
  else:
1023
- raise NotSupported(self.id + ' fetchTicker() is not supported yet')
1023
+ raise NotSupported(self.id + ' fetchTickerWs() is not supported yet')
1024
1024
 
1025
1025
  async def watch_ticker(self, symbol: str, params={}):
1026
1026
  raise NotSupported(self.id + ' watchTicker() is not supported yet')
@@ -8,7 +8,7 @@ from ccxt.abstract.bingx import ImplicitAPI
8
8
  import asyncio
9
9
  import hashlib
10
10
  import numbers
11
- from ccxt.base.types import Balances, Currencies, Currency, Int, Leverage, MarginMode, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry, TransferEntries
11
+ from ccxt.base.types import Balances, Currencies, Currency, Int, Leverage, MarginMode, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry, TransferEntries
12
12
  from typing import List
13
13
  from ccxt.base.errors import ExchangeError
14
14
  from ccxt.base.errors import AuthenticationError
@@ -95,6 +95,7 @@ class bingx(Exchange, ImplicitAPI):
95
95
  'fetchTickers': True,
96
96
  'fetchTime': True,
97
97
  'fetchTrades': True,
98
+ 'fetchTradingFee': True,
98
99
  'fetchTransfers': True,
99
100
  'fetchWithdrawals': True,
100
101
  'reduceMargin': True,
@@ -5011,6 +5012,87 @@ class bingx(Exchange, ImplicitAPI):
5011
5012
  'marginMode': marginType,
5012
5013
  }
5013
5014
 
5015
+ async def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
5016
+ """
5017
+ fetch the trading fees for a market
5018
+ :see: https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Query%20Trading%20Commission%20Rate
5019
+ :see: https://bingx-api.github.io/docs/#/en-us/swapV2/account-api.html#Query%20Trading%20Commission%20Rate
5020
+ :see: https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Query%20Trade%20Commission%20Rate
5021
+ :param str symbol: unified market symbol
5022
+ :param dict [params]: extra parameters specific to the exchange API endpoint
5023
+ :returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
5024
+ """
5025
+ await self.load_markets()
5026
+ market = self.market(symbol)
5027
+ request: dict = {
5028
+ 'symbol': market['id'],
5029
+ }
5030
+ response = None
5031
+ commission: dict = {}
5032
+ data = self.safe_dict(response, 'data', {})
5033
+ if market['spot']:
5034
+ response = await self.spotV1PrivateGetUserCommissionRate(self.extend(request, params))
5035
+ #
5036
+ # {
5037
+ # "code": 0,
5038
+ # "msg": "",
5039
+ # "debugMsg": "",
5040
+ # "data": {
5041
+ # "takerCommissionRate": 0.001,
5042
+ # "makerCommissionRate": 0.001
5043
+ # }
5044
+ # }
5045
+ #
5046
+ commission = data
5047
+ else:
5048
+ if market['inverse']:
5049
+ response = await self.cswapV1PrivateGetUserCommissionRate(params)
5050
+ #
5051
+ # {
5052
+ # "code": 0,
5053
+ # "msg": "",
5054
+ # "timestamp": 1721365261438,
5055
+ # "data": {
5056
+ # "takerCommissionRate": "0.0005",
5057
+ # "makerCommissionRate": "0.0002"
5058
+ # }
5059
+ # }
5060
+ #
5061
+ commission = data
5062
+ else:
5063
+ response = await self.swapV2PrivateGetUserCommissionRate(params)
5064
+ #
5065
+ # {
5066
+ # "code": 0,
5067
+ # "msg": "",
5068
+ # "data": {
5069
+ # "commission": {
5070
+ # "takerCommissionRate": 0.0005,
5071
+ # "makerCommissionRate": 0.0002
5072
+ # }
5073
+ # }
5074
+ # }
5075
+ #
5076
+ commission = self.safe_dict(data, 'commission', {})
5077
+ return self.parse_trading_fee(commission, market)
5078
+
5079
+ def parse_trading_fee(self, fee: dict, market: Market = None) -> TradingFeeInterface:
5080
+ #
5081
+ # {
5082
+ # "takerCommissionRate": 0.001,
5083
+ # "makerCommissionRate": 0.001
5084
+ # }
5085
+ #
5086
+ symbol = market['symbol'] if (market is not None) else None
5087
+ return {
5088
+ 'info': fee,
5089
+ 'symbol': symbol,
5090
+ 'maker': self.safe_number(fee, 'makerCommissionRate'),
5091
+ 'taker': self.safe_number(fee, 'takerCommissionRate'),
5092
+ 'percentage': False,
5093
+ 'tierBased': False,
5094
+ }
5095
+
5014
5096
  def sign(self, path, section='public', method='GET', params={}, headers=None, body=None):
5015
5097
  type = section[0]
5016
5098
  version = section[1]
@@ -1556,7 +1556,7 @@ class bitfinex(Exchange, ImplicitAPI):
1556
1556
  # ]
1557
1557
  #
1558
1558
  response = self.safe_value(responses, 0, {})
1559
- id = self.safe_number(response, 'withdrawal_id')
1559
+ id = self.safe_integer(response, 'withdrawal_id')
1560
1560
  message = self.safe_string(response, 'message')
1561
1561
  errorMessage = self.find_broadly_matched_key(self.exceptions['broad'], message)
1562
1562
  if id == 0:
@@ -2237,7 +2237,7 @@ class bitfinex2(Exchange, ImplicitAPI):
2237
2237
  if feeCost is not None:
2238
2238
  feeCost = Precise.string_abs(feeCost)
2239
2239
  amount = self.safe_number(data, 5)
2240
- id = self.safe_string(data, 0)
2240
+ id = self.safe_integer(data, 0)
2241
2241
  status = 'ok'
2242
2242
  if id == 0:
2243
2243
  id = None
@@ -2914,7 +2914,7 @@ class bybit(Exchange, ImplicitAPI):
2914
2914
  :see: https://bybit-exchange.github.io/docs/v5/asset/all-balance
2915
2915
  :see: https://bybit-exchange.github.io/docs/v5/account/wallet-balance
2916
2916
  :param dict [params]: extra parameters specific to the exchange API endpoint
2917
- :param str [params.type]: wallet type, ['spot', 'swap', 'fund']
2917
+ :param str [params.type]: wallet type, ['spot', 'swap', 'funding']
2918
2918
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
2919
2919
  """
2920
2920
  await self.load_markets()
@@ -2922,10 +2922,17 @@ class bybit(Exchange, ImplicitAPI):
2922
2922
  enableUnifiedMargin, enableUnifiedAccount = await self.is_unified_enabled()
2923
2923
  isUnifiedAccount = (enableUnifiedMargin or enableUnifiedAccount)
2924
2924
  type = None
2925
- type, params = self.get_bybit_type('fetchBalance', None, params)
2925
+ # don't use getBybitType here
2926
+ type, params = self.handle_market_type_and_params('fetchBalance', None, params)
2927
+ subType = None
2928
+ subType, params = self.handle_sub_type_and_params('fetchBalance', None, params)
2929
+ if (type == 'swap') or (type == 'future'):
2930
+ type = subType
2931
+ lowercaseRawType = type.lower() if (type is not None) else None
2926
2932
  isSpot = (type == 'spot')
2927
2933
  isLinear = (type == 'linear')
2928
2934
  isInverse = (type == 'inverse')
2935
+ isFunding = (lowercaseRawType == 'fund') or (lowercaseRawType == 'funding')
2929
2936
  if isUnifiedAccount:
2930
2937
  if isInverse:
2931
2938
  type = 'contract'
@@ -2941,10 +2948,10 @@ class bybit(Exchange, ImplicitAPI):
2941
2948
  response = None
2942
2949
  if isSpot and (marginMode is not None):
2943
2950
  response = await self.privateGetV5SpotCrossMarginTradeAccount(self.extend(request, params))
2944
- elif unifiedType == 'FUND':
2951
+ elif isFunding:
2945
2952
  # use self endpoint only we have no other choice
2946
2953
  # because it requires transfer permission
2947
- request['accountType'] = unifiedType
2954
+ request['accountType'] = 'FUND'
2948
2955
  response = await self.privateGetV5AssetTransferQueryAccountCoinsBalance(self.extend(request, params))
2949
2956
  else:
2950
2957
  request['accountType'] = unifiedType
@@ -6,8 +6,9 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.independentreserve import ImplicitAPI
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees
9
+ from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees, Transaction
10
10
  from typing import List
11
+ from ccxt.base.errors import BadRequest
11
12
  from ccxt.base.decimal_to_precision import TICK_SIZE
12
13
  from ccxt.base.precise import Precise
13
14
 
@@ -79,6 +80,7 @@ class independentreserve(Exchange, ImplicitAPI):
79
80
  'setLeverage': False,
80
81
  'setMarginMode': False,
81
82
  'setPositionMode': False,
83
+ 'withdraw': True,
82
84
  },
83
85
  'urls': {
84
86
  'logo': 'https://user-images.githubusercontent.com/51840849/87182090-1e9e9080-c2ec-11ea-8e49-563db9a38f37.jpg',
@@ -752,6 +754,106 @@ class independentreserve(Exchange, ImplicitAPI):
752
754
  'network': None,
753
755
  }
754
756
 
757
+ async def withdraw(self, code: str, amount: float, address: str, tag=None, params={}):
758
+ """
759
+ make a withdrawal
760
+ :see: https://www.independentreserve.com/features/api#WithdrawDigitalCurrency
761
+ :param str code: unified currency code
762
+ :param float amount: the amount to withdraw
763
+ :param str address: the address to withdraw to
764
+ :param str tag:
765
+ :param dict [params]: extra parameters specific to the exchange API endpoint
766
+ *
767
+ * EXCHANGE SPECIFIC PARAMETERS
768
+ :param dict [params.comment]: withdrawal comment, should not exceed 500 characters
769
+ :returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
770
+ """
771
+ tag, params = self.handle_withdraw_tag_and_params(tag, params)
772
+ await self.load_markets()
773
+ currency = self.currency(code)
774
+ request: dict = {
775
+ 'primaryCurrencyCode': currency['id'],
776
+ 'withdrawalAddress': address,
777
+ 'amount': self.currency_to_precision(code, amount),
778
+ }
779
+ if tag is not None:
780
+ request['destinationTag'] = tag
781
+ networkCode = None
782
+ networkCode, params = self.handle_network_code_and_params(params)
783
+ if networkCode is not None:
784
+ raise BadRequest(self.id + ' withdraw() does not accept params["networkCode"]')
785
+ response = await self.privatePostWithdrawDigitalCurrency(self.extend(request, params))
786
+ #
787
+ # {
788
+ # "TransactionGuid": "dc932e19-562b-4c50-821e-a73fd048b93b",
789
+ # "PrimaryCurrencyCode": "Bch",
790
+ # "CreatedTimestampUtc": "2020-04-01T05:26:30.5093622+00:00",
791
+ # "Amount": {
792
+ # "Total": 0.1231,
793
+ # "Fee": 0.0001
794
+ # },
795
+ # "Destination": {
796
+ # "Address": "bc1qhpqxkjpvgkckw530yfmxyr53c94q8f4273a7ez",
797
+ # "Tag": null
798
+ # },
799
+ # "Status": "Pending",
800
+ # "Transaction": null
801
+ # }
802
+ #
803
+ return self.parse_transaction(response, currency)
804
+
805
+ def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
806
+ #
807
+ # {
808
+ # "TransactionGuid": "dc932e19-562b-4c50-821e-a73fd048b93b",
809
+ # "PrimaryCurrencyCode": "Bch",
810
+ # "CreatedTimestampUtc": "2020-04-01T05:26:30.5093622+00:00",
811
+ # "Amount": {
812
+ # "Total": 0.1231,
813
+ # "Fee": 0.0001
814
+ # },
815
+ # "Destination": {
816
+ # "Address": "bc1qhpqxkjpvgkckw530yfmxyr53c94q8f4273a7ez",
817
+ # "Tag": null
818
+ # },
819
+ # "Status": "Pending",
820
+ # "Transaction": null
821
+ # }
822
+ #
823
+ amount = self.safe_dict(transaction, 'Amount')
824
+ destination = self.safe_dict(transaction, 'Destination')
825
+ currencyId = self.safe_string(transaction, 'PrimaryCurrencyCode')
826
+ datetime = self.safe_string(transaction, 'CreatedTimestampUtc')
827
+ address = self.safe_string(destination, 'Address')
828
+ tag = self.safe_string(destination, 'Tag')
829
+ code = self.safe_currency_code(currencyId, currency)
830
+ return {
831
+ 'info': transaction,
832
+ 'id': self.safe_string(transaction, 'TransactionGuid'),
833
+ 'txid': None,
834
+ 'type': 'withdraw',
835
+ 'currency': code,
836
+ 'network': None,
837
+ 'amount': self.safe_number(amount, 'Total'),
838
+ 'status': self.safe_string(transaction, 'Status'),
839
+ 'timestamp': self.parse8601(datetime),
840
+ 'datetime': datetime,
841
+ 'address': address,
842
+ 'addressFrom': None,
843
+ 'addressTo': address,
844
+ 'tag': tag,
845
+ 'tagFrom': None,
846
+ 'tagTo': tag,
847
+ 'updated': None,
848
+ 'comment': None,
849
+ 'fee': {
850
+ 'currency': code,
851
+ 'cost': self.safe_number(amount, 'Fee'),
852
+ 'rate': None,
853
+ },
854
+ 'internal': False,
855
+ }
856
+
755
857
  def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
756
858
  url = self.urls['api'][api] + '/' + path
757
859
  if api == 'public':
@@ -179,6 +179,7 @@ class kucoin(Exchange, ImplicitAPI):
179
179
  'status': 4.5, # 3PW
180
180
  # margin trading
181
181
  'mark-price/{symbol}/current': 3, # 2PW
182
+ 'mark-price/all-symbols': 3,
182
183
  'margin/config': 25, # 25SW
183
184
  },
184
185
  'post': {
@@ -664,6 +665,7 @@ class kucoin(Exchange, ImplicitAPI):
664
665
  'currencies': 'v3',
665
666
  'currencies/{currency}': 'v3',
666
667
  'symbols': 'v2',
668
+ 'mark-price/all-symbols': 'v3',
667
669
  },
668
670
  },
669
671
  'private': {
@@ -2404,7 +2404,7 @@ class whitebit(Exchange, ImplicitAPI):
2404
2404
  records = self.safe_list(response, 'records')
2405
2405
  return self.parse_transactions(records, currency, since, limit)
2406
2406
 
2407
- def is_fiat(self, currency):
2407
+ def is_fiat(self, currency: str):
2408
2408
  fiatCurrencies = self.safe_value(self.options, 'fiatCurrencies', [])
2409
2409
  return self.in_array(currency, fiatCurrencies)
2410
2410
 
@@ -2481,7 +2481,21 @@ class woo(Exchange, ImplicitAPI):
2481
2481
  }
2482
2482
 
2483
2483
  async def fetch_funding_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
2484
+ """
2485
+ fetch the history of funding payments paid and received on self account
2486
+ :see: https://docs.woo.org/#get-funding-fee-history
2487
+ :param str [symbol]: unified market symbol
2488
+ :param int [since]: the earliest time in ms to fetch funding history for
2489
+ :param int [limit]: the maximum number of funding history structures to retrieve
2490
+ :param dict [params]: extra parameters specific to the exchange API endpoint
2491
+ :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)
2492
+ :returns dict: a `funding history structure <https://docs.ccxt.com/#/?id=funding-history-structure>`
2493
+ """
2484
2494
  await self.load_markets()
2495
+ paginate = False
2496
+ paginate, params = self.handle_option_and_params(params, 'fetchFundingHistory', 'paginate')
2497
+ if paginate:
2498
+ return await self.fetch_paginated_call_cursor('fetchFundingHistory', symbol, since, limit, params, 'page', 'page', 1, 500)
2485
2499
  request: dict = {}
2486
2500
  market: Market = None
2487
2501
  if symbol is not None:
@@ -2489,6 +2503,10 @@ class woo(Exchange, ImplicitAPI):
2489
2503
  request['symbol'] = market['id']
2490
2504
  if since is not None:
2491
2505
  request['start_t'] = since
2506
+ if limit is not None:
2507
+ request['size'] = limit
2508
+ else:
2509
+ request['size'] = 5000
2492
2510
  response = await self.v1PrivateGetFundingFeeHistory(self.extend(request, params))
2493
2511
  #
2494
2512
  # {
@@ -2513,7 +2531,14 @@ class woo(Exchange, ImplicitAPI):
2513
2531
  # "success":true
2514
2532
  # }
2515
2533
  #
2534
+ meta = self.safe_dict(response, 'meta', {})
2535
+ cursor = self.safe_integer(meta, 'current_page')
2516
2536
  result = self.safe_list(response, 'rows', [])
2537
+ resultLength = len(result)
2538
+ if resultLength > 0:
2539
+ lastItem = result[resultLength - 1]
2540
+ lastItem['page'] = cursor
2541
+ result[resultLength - 1] = lastItem
2517
2542
  return self.parse_incomes(result, market, since, limit)
2518
2543
 
2519
2544
  def parse_funding_rate(self, fundingRate, market: Market = None):
@@ -558,7 +558,7 @@ class yobit(Exchange, ImplicitAPI):
558
558
  ids = self.ids
559
559
  else:
560
560
  ids = self.market_ids(symbols)
561
- idsLength = len(ids)
561
+ idsLength: number = len(ids)
562
562
  idsString = '-'.join(ids)
563
563
  maxLength = self.safe_integer(self.options, 'maxUrlLength', 2048)
564
564
  # max URL length is 2048 symbols, including http schema, hostname, tld, etc...
@@ -1467,7 +1467,7 @@ class zonda(Exchange, ImplicitAPI):
1467
1467
  # {status: "Ok", errors: []}
1468
1468
  return self.parse_order(response)
1469
1469
 
1470
- def is_fiat(self, currency):
1470
+ def is_fiat(self, currency: str):
1471
1471
  fiatCurrencies: dict = {
1472
1472
  'USD': True,
1473
1473
  'EUR': True,
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.63'
7
+ __version__ = '4.3.65'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -4182,14 +4182,14 @@ class Exchange(object):
4182
4182
  self.load_markets()
4183
4183
  market = self.market(symbol)
4184
4184
  symbol = market['symbol']
4185
- tickers = self.fetch_ticker_ws(symbol, params)
4185
+ tickers = self.fetch_tickers_ws([symbol], params)
4186
4186
  ticker = self.safe_dict(tickers, symbol)
4187
4187
  if ticker is None:
4188
- raise NullResponse(self.id + ' fetchTickers() could not find a ticker for ' + symbol)
4188
+ raise NullResponse(self.id + ' fetchTickerWs() could not find a ticker for ' + symbol)
4189
4189
  else:
4190
4190
  return ticker
4191
4191
  else:
4192
- raise NotSupported(self.id + ' fetchTicker() is not supported yet')
4192
+ raise NotSupported(self.id + ' fetchTickerWs() is not supported yet')
4193
4193
 
4194
4194
  def watch_ticker(self, symbol: str, params={}):
4195
4195
  raise NotSupported(self.id + ' watchTicker() is not supported yet')
@@ -7,7 +7,7 @@ from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.bingx import ImplicitAPI
8
8
  import hashlib
9
9
  import numbers
10
- from ccxt.base.types import Balances, Currencies, Currency, Int, Leverage, MarginMode, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry, TransferEntries
10
+ from ccxt.base.types import Balances, Currencies, Currency, Int, Leverage, MarginMode, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry, TransferEntries
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
13
13
  from ccxt.base.errors import AuthenticationError
@@ -94,6 +94,7 @@ class bingx(Exchange, ImplicitAPI):
94
94
  'fetchTickers': True,
95
95
  'fetchTime': True,
96
96
  'fetchTrades': True,
97
+ 'fetchTradingFee': True,
97
98
  'fetchTransfers': True,
98
99
  'fetchWithdrawals': True,
99
100
  'reduceMargin': True,
@@ -5010,6 +5011,87 @@ class bingx(Exchange, ImplicitAPI):
5010
5011
  'marginMode': marginType,
5011
5012
  }
5012
5013
 
5014
+ def fetch_trading_fee(self, symbol: str, params={}) -> TradingFeeInterface:
5015
+ """
5016
+ fetch the trading fees for a market
5017
+ :see: https://bingx-api.github.io/docs/#/en-us/spot/trade-api.html#Query%20Trading%20Commission%20Rate
5018
+ :see: https://bingx-api.github.io/docs/#/en-us/swapV2/account-api.html#Query%20Trading%20Commission%20Rate
5019
+ :see: https://bingx-api.github.io/docs/#/en-us/cswap/trade-api.html#Query%20Trade%20Commission%20Rate
5020
+ :param str symbol: unified market symbol
5021
+ :param dict [params]: extra parameters specific to the exchange API endpoint
5022
+ :returns dict: a `fee structure <https://docs.ccxt.com/#/?id=fee-structure>`
5023
+ """
5024
+ self.load_markets()
5025
+ market = self.market(symbol)
5026
+ request: dict = {
5027
+ 'symbol': market['id'],
5028
+ }
5029
+ response = None
5030
+ commission: dict = {}
5031
+ data = self.safe_dict(response, 'data', {})
5032
+ if market['spot']:
5033
+ response = self.spotV1PrivateGetUserCommissionRate(self.extend(request, params))
5034
+ #
5035
+ # {
5036
+ # "code": 0,
5037
+ # "msg": "",
5038
+ # "debugMsg": "",
5039
+ # "data": {
5040
+ # "takerCommissionRate": 0.001,
5041
+ # "makerCommissionRate": 0.001
5042
+ # }
5043
+ # }
5044
+ #
5045
+ commission = data
5046
+ else:
5047
+ if market['inverse']:
5048
+ response = self.cswapV1PrivateGetUserCommissionRate(params)
5049
+ #
5050
+ # {
5051
+ # "code": 0,
5052
+ # "msg": "",
5053
+ # "timestamp": 1721365261438,
5054
+ # "data": {
5055
+ # "takerCommissionRate": "0.0005",
5056
+ # "makerCommissionRate": "0.0002"
5057
+ # }
5058
+ # }
5059
+ #
5060
+ commission = data
5061
+ else:
5062
+ response = self.swapV2PrivateGetUserCommissionRate(params)
5063
+ #
5064
+ # {
5065
+ # "code": 0,
5066
+ # "msg": "",
5067
+ # "data": {
5068
+ # "commission": {
5069
+ # "takerCommissionRate": 0.0005,
5070
+ # "makerCommissionRate": 0.0002
5071
+ # }
5072
+ # }
5073
+ # }
5074
+ #
5075
+ commission = self.safe_dict(data, 'commission', {})
5076
+ return self.parse_trading_fee(commission, market)
5077
+
5078
+ def parse_trading_fee(self, fee: dict, market: Market = None) -> TradingFeeInterface:
5079
+ #
5080
+ # {
5081
+ # "takerCommissionRate": 0.001,
5082
+ # "makerCommissionRate": 0.001
5083
+ # }
5084
+ #
5085
+ symbol = market['symbol'] if (market is not None) else None
5086
+ return {
5087
+ 'info': fee,
5088
+ 'symbol': symbol,
5089
+ 'maker': self.safe_number(fee, 'makerCommissionRate'),
5090
+ 'taker': self.safe_number(fee, 'takerCommissionRate'),
5091
+ 'percentage': False,
5092
+ 'tierBased': False,
5093
+ }
5094
+
5013
5095
  def sign(self, path, section='public', method='GET', params={}, headers=None, body=None):
5014
5096
  type = section[0]
5015
5097
  version = section[1]
@@ -1556,7 +1556,7 @@ class bitfinex(Exchange, ImplicitAPI):
1556
1556
  # ]
1557
1557
  #
1558
1558
  response = self.safe_value(responses, 0, {})
1559
- id = self.safe_number(response, 'withdrawal_id')
1559
+ id = self.safe_integer(response, 'withdrawal_id')
1560
1560
  message = self.safe_string(response, 'message')
1561
1561
  errorMessage = self.find_broadly_matched_key(self.exceptions['broad'], message)
1562
1562
  if id == 0:
@@ -2237,7 +2237,7 @@ class bitfinex2(Exchange, ImplicitAPI):
2237
2237
  if feeCost is not None:
2238
2238
  feeCost = Precise.string_abs(feeCost)
2239
2239
  amount = self.safe_number(data, 5)
2240
- id = self.safe_string(data, 0)
2240
+ id = self.safe_integer(data, 0)
2241
2241
  status = 'ok'
2242
2242
  if id == 0:
2243
2243
  id = None