ccxt 4.0.47__tar.gz → 4.0.49__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 (464) hide show
  1. {ccxt-4.0.47/ccxt.egg-info → ccxt-4.0.49}/PKG-INFO +7 -7
  2. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/__init__.py +1 -1
  3. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/binance.py +1 -0
  4. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/binancecoinm.py +1 -0
  5. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/binanceus.py +1 -0
  6. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/binanceusdm.py +1 -0
  7. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bitget.py +3 -0
  8. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/kraken.py +1 -0
  9. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/__init__.py +1 -1
  10. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/base/exchange.py +1 -1
  11. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/binance.py +1 -0
  12. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bitget.py +3 -0
  13. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/gate.py +2 -2
  14. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/huobijp.py +10 -12
  15. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/kraken.py +1 -0
  16. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/kucoin.py +8 -9
  17. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/okx.py +6 -7
  18. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/base/exchange.py +1 -1
  19. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/binance.py +1 -0
  20. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bitget.py +3 -0
  21. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/gate.py +2 -2
  22. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/huobijp.py +10 -12
  23. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/kraken.py +1 -0
  24. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/kucoin.py +8 -9
  25. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/okx.py +6 -7
  26. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/__init__.py +1 -1
  27. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/bitfinex.py +10 -13
  28. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/bitfinex2.py +13 -13
  29. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/bitmex.py +3 -3
  30. {ccxt-4.0.47 → ccxt-4.0.49/ccxt.egg-info}/PKG-INFO +7 -7
  31. {ccxt-4.0.47 → ccxt-4.0.49}/package.json +1 -1
  32. {ccxt-4.0.47 → ccxt-4.0.49}/LICENSE.txt +0 -0
  33. {ccxt-4.0.47 → ccxt-4.0.49}/MANIFEST.in +0 -0
  34. {ccxt-4.0.47 → ccxt-4.0.49}/README.rst +0 -0
  35. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/__init__.py +0 -0
  36. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/ace.py +0 -0
  37. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/alpaca.py +0 -0
  38. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/ascendex.py +0 -0
  39. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bequant.py +0 -0
  40. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bigone.py +0 -0
  41. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bingx.py +0 -0
  42. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bit2c.py +0 -0
  43. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bitbank.py +0 -0
  44. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bitbay.py +0 -0
  45. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bitbns.py +0 -0
  46. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bitcoincom.py +0 -0
  47. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bitfinex.py +0 -0
  48. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bitfinex2.py +0 -0
  49. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bitflyer.py +0 -0
  50. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bitforex.py +0 -0
  51. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bithumb.py +0 -0
  52. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bitmart.py +0 -0
  53. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bitmex.py +0 -0
  54. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bitopro.py +0 -0
  55. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bitpanda.py +0 -0
  56. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bitrue.py +0 -0
  57. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bitso.py +0 -0
  58. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bitstamp.py +0 -0
  59. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bitstamp1.py +0 -0
  60. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bittrex.py +0 -0
  61. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bitvavo.py +0 -0
  62. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bkex.py +0 -0
  63. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bl3p.py +0 -0
  64. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/blockchaincom.py +0 -0
  65. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/btcalpha.py +0 -0
  66. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/btcbox.py +0 -0
  67. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/btcmarkets.py +0 -0
  68. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/btctradeua.py +0 -0
  69. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/btcturk.py +0 -0
  70. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/bybit.py +0 -0
  71. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/cex.py +0 -0
  72. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/coinbase.py +0 -0
  73. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/coinbaseprime.py +0 -0
  74. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/coinbasepro.py +0 -0
  75. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/coincheck.py +0 -0
  76. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/coinex.py +0 -0
  77. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/coinfalcon.py +0 -0
  78. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/coinmate.py +0 -0
  79. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/coinone.py +0 -0
  80. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/coinsph.py +0 -0
  81. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/coinspot.py +0 -0
  82. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/cryptocom.py +0 -0
  83. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/currencycom.py +0 -0
  84. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/delta.py +0 -0
  85. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/deribit.py +0 -0
  86. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/digifinex.py +0 -0
  87. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/exmo.py +0 -0
  88. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/fmfwio.py +0 -0
  89. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/gate.py +0 -0
  90. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/gateio.py +0 -0
  91. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/gemini.py +0 -0
  92. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/hitbtc.py +0 -0
  93. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/hitbtc3.py +0 -0
  94. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/hollaex.py +0 -0
  95. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/huobi.py +0 -0
  96. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/huobijp.py +0 -0
  97. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/huobipro.py +0 -0
  98. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/idex.py +0 -0
  99. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/independentreserve.py +0 -0
  100. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/indodax.py +0 -0
  101. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/krakenfutures.py +0 -0
  102. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/kucoin.py +0 -0
  103. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/kucoinfutures.py +0 -0
  104. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/kuna.py +0 -0
  105. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/latoken.py +0 -0
  106. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/lbank.py +0 -0
  107. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/lbank2.py +0 -0
  108. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/luno.py +0 -0
  109. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/lykke.py +0 -0
  110. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/mercado.py +0 -0
  111. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/mexc.py +0 -0
  112. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/mexc3.py +0 -0
  113. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/ndax.py +0 -0
  114. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/novadax.py +0 -0
  115. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/oceanex.py +0 -0
  116. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/okcoin.py +0 -0
  117. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/okex.py +0 -0
  118. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/okex5.py +0 -0
  119. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/okx.py +0 -0
  120. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/paymium.py +0 -0
  121. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/phemex.py +0 -0
  122. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/poloniex.py +0 -0
  123. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/poloniexfutures.py +0 -0
  124. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/probit.py +0 -0
  125. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/tidex.py +0 -0
  126. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/timex.py +0 -0
  127. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/tokocrypto.py +0 -0
  128. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/upbit.py +0 -0
  129. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/wavesexchange.py +0 -0
  130. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/wazirx.py +0 -0
  131. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/whitebit.py +0 -0
  132. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/woo.py +0 -0
  133. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/yobit.py +0 -0
  134. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/zaif.py +0 -0
  135. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/abstract/zonda.py +0 -0
  136. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/ace.py +0 -0
  137. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/alpaca.py +0 -0
  138. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/ascendex.py +0 -0
  139. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/ace.py +0 -0
  140. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/alpaca.py +0 -0
  141. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/ascendex.py +0 -0
  142. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/base/__init__.py +0 -0
  143. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/base/throttler.py +0 -0
  144. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/base/ws/__init__.py +0 -0
  145. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  146. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/base/ws/cache.py +0 -0
  147. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/base/ws/client.py +0 -0
  148. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/base/ws/fast_client.py +0 -0
  149. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/base/ws/functions.py +0 -0
  150. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/base/ws/future.py +0 -0
  151. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/base/ws/order_book.py +0 -0
  152. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  153. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bequant.py +0 -0
  154. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bigone.py +0 -0
  155. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/binancecoinm.py +0 -0
  156. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/binanceus.py +0 -0
  157. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/binanceusdm.py +0 -0
  158. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bingx.py +0 -0
  159. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bit2c.py +0 -0
  160. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bitbank.py +0 -0
  161. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bitbay.py +0 -0
  162. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bitbns.py +0 -0
  163. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bitcoincom.py +0 -0
  164. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bitfinex.py +0 -0
  165. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bitfinex2.py +0 -0
  166. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bitflyer.py +0 -0
  167. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bitforex.py +0 -0
  168. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bithumb.py +0 -0
  169. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bitmart.py +0 -0
  170. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bitmex.py +0 -0
  171. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bitopro.py +0 -0
  172. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bitpanda.py +0 -0
  173. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bitrue.py +0 -0
  174. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bitso.py +0 -0
  175. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bitstamp.py +0 -0
  176. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bitstamp1.py +0 -0
  177. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bittrex.py +0 -0
  178. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bitvavo.py +0 -0
  179. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bkex.py +0 -0
  180. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bl3p.py +0 -0
  181. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/blockchaincom.py +0 -0
  182. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/btcalpha.py +0 -0
  183. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/btcbox.py +0 -0
  184. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/btcmarkets.py +0 -0
  185. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/btctradeua.py +0 -0
  186. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/btcturk.py +0 -0
  187. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/bybit.py +0 -0
  188. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/cex.py +0 -0
  189. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/coinbase.py +0 -0
  190. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/coinbaseprime.py +0 -0
  191. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/coinbasepro.py +0 -0
  192. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/coincheck.py +0 -0
  193. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/coinex.py +0 -0
  194. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/coinfalcon.py +0 -0
  195. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/coinmate.py +0 -0
  196. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/coinone.py +0 -0
  197. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/coinsph.py +0 -0
  198. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/coinspot.py +0 -0
  199. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/cryptocom.py +0 -0
  200. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/currencycom.py +0 -0
  201. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/delta.py +0 -0
  202. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/deribit.py +0 -0
  203. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/digifinex.py +0 -0
  204. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/exmo.py +0 -0
  205. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/flowbtc.py +0 -0
  206. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/fmfwio.py +0 -0
  207. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/gateio.py +0 -0
  208. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/gemini.py +0 -0
  209. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/hitbtc.py +0 -0
  210. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/hitbtc3.py +0 -0
  211. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/hollaex.py +0 -0
  212. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/huobi.py +0 -0
  213. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/huobipro.py +0 -0
  214. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/idex.py +0 -0
  215. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/independentreserve.py +0 -0
  216. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/indodax.py +0 -0
  217. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/krakenfutures.py +0 -0
  218. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/kucoinfutures.py +0 -0
  219. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/kuna.py +0 -0
  220. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/latoken.py +0 -0
  221. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/lbank.py +0 -0
  222. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/lbank2.py +0 -0
  223. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/luno.py +0 -0
  224. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/lykke.py +0 -0
  225. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/mercado.py +0 -0
  226. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/mexc.py +0 -0
  227. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/mexc3.py +0 -0
  228. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/ndax.py +0 -0
  229. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/novadax.py +0 -0
  230. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/oceanex.py +0 -0
  231. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/okcoin.py +0 -0
  232. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/okex.py +0 -0
  233. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/okex5.py +0 -0
  234. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/paymium.py +0 -0
  235. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/phemex.py +0 -0
  236. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/poloniex.py +0 -0
  237. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/poloniexfutures.py +0 -0
  238. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/probit.py +0 -0
  239. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/tidex.py +0 -0
  240. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/timex.py +0 -0
  241. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/tokocrypto.py +0 -0
  242. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/upbit.py +0 -0
  243. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/wavesexchange.py +0 -0
  244. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/wazirx.py +0 -0
  245. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/whitebit.py +0 -0
  246. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/woo.py +0 -0
  247. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/yobit.py +0 -0
  248. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/zaif.py +0 -0
  249. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/async_support/zonda.py +0 -0
  250. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/base/__init__.py +0 -0
  251. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/base/decimal_to_precision.py +0 -0
  252. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/base/errors.py +0 -0
  253. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/base/precise.py +0 -0
  254. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/base/types.py +0 -0
  255. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bequant.py +0 -0
  256. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bigone.py +0 -0
  257. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/binancecoinm.py +0 -0
  258. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/binanceus.py +0 -0
  259. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/binanceusdm.py +0 -0
  260. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bingx.py +0 -0
  261. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bit2c.py +0 -0
  262. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bitbank.py +0 -0
  263. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bitbay.py +0 -0
  264. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bitbns.py +0 -0
  265. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bitcoincom.py +0 -0
  266. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bitfinex.py +0 -0
  267. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bitfinex2.py +0 -0
  268. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bitflyer.py +0 -0
  269. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bitforex.py +0 -0
  270. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bithumb.py +0 -0
  271. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bitmart.py +0 -0
  272. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bitmex.py +0 -0
  273. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bitopro.py +0 -0
  274. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bitpanda.py +0 -0
  275. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bitrue.py +0 -0
  276. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bitso.py +0 -0
  277. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bitstamp.py +0 -0
  278. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bitstamp1.py +0 -0
  279. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bittrex.py +0 -0
  280. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bitvavo.py +0 -0
  281. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bkex.py +0 -0
  282. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bl3p.py +0 -0
  283. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/blockchaincom.py +0 -0
  284. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/btcalpha.py +0 -0
  285. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/btcbox.py +0 -0
  286. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/btcmarkets.py +0 -0
  287. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/btctradeua.py +0 -0
  288. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/btcturk.py +0 -0
  289. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/bybit.py +0 -0
  290. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/cex.py +0 -0
  291. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/coinbase.py +0 -0
  292. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/coinbaseprime.py +0 -0
  293. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/coinbasepro.py +0 -0
  294. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/coincheck.py +0 -0
  295. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/coinex.py +0 -0
  296. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/coinfalcon.py +0 -0
  297. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/coinmate.py +0 -0
  298. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/coinone.py +0 -0
  299. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/coinsph.py +0 -0
  300. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/coinspot.py +0 -0
  301. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/cryptocom.py +0 -0
  302. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/currencycom.py +0 -0
  303. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/delta.py +0 -0
  304. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/deribit.py +0 -0
  305. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/digifinex.py +0 -0
  306. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/exmo.py +0 -0
  307. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/flowbtc.py +0 -0
  308. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/fmfwio.py +0 -0
  309. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/gateio.py +0 -0
  310. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/gemini.py +0 -0
  311. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/hitbtc.py +0 -0
  312. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/hitbtc3.py +0 -0
  313. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/hollaex.py +0 -0
  314. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/huobi.py +0 -0
  315. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/huobipro.py +0 -0
  316. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/idex.py +0 -0
  317. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/independentreserve.py +0 -0
  318. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/indodax.py +0 -0
  319. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/krakenfutures.py +0 -0
  320. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/kucoinfutures.py +0 -0
  321. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/kuna.py +0 -0
  322. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/latoken.py +0 -0
  323. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/lbank.py +0 -0
  324. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/lbank2.py +0 -0
  325. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/luno.py +0 -0
  326. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/lykke.py +0 -0
  327. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/mercado.py +0 -0
  328. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/mexc.py +0 -0
  329. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/mexc3.py +0 -0
  330. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/ndax.py +0 -0
  331. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/novadax.py +0 -0
  332. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/oceanex.py +0 -0
  333. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/okcoin.py +0 -0
  334. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/okex.py +0 -0
  335. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/okex5.py +0 -0
  336. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/paymium.py +0 -0
  337. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/phemex.py +0 -0
  338. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/poloniex.py +0 -0
  339. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/poloniexfutures.py +0 -0
  340. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/alpaca.py +0 -0
  341. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/ascendex.py +0 -0
  342. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/bequant.py +0 -0
  343. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/binance.py +0 -0
  344. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/binancecoinm.py +0 -0
  345. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/binanceus.py +0 -0
  346. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/binanceusdm.py +0 -0
  347. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/bitcoincom.py +0 -0
  348. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/bitget.py +0 -0
  349. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/bitmart.py +0 -0
  350. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/bitopro.py +0 -0
  351. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/bitpanda.py +0 -0
  352. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/bitrue.py +0 -0
  353. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/bitstamp.py +0 -0
  354. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/bittrex.py +0 -0
  355. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/bitvavo.py +0 -0
  356. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/blockchaincom.py +0 -0
  357. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/btcex.py +0 -0
  358. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/bybit.py +0 -0
  359. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/cex.py +0 -0
  360. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/coinbase.py +0 -0
  361. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/coinbaseprime.py +0 -0
  362. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/coinbasepro.py +0 -0
  363. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/coinex.py +0 -0
  364. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/cryptocom.py +0 -0
  365. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/currencycom.py +0 -0
  366. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/deribit.py +0 -0
  367. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/exmo.py +0 -0
  368. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/gate.py +0 -0
  369. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/gateio.py +0 -0
  370. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/gemini.py +0 -0
  371. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/hitbtc.py +0 -0
  372. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/hollaex.py +0 -0
  373. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/huobi.py +0 -0
  374. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/huobijp.py +0 -0
  375. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/huobipro.py +0 -0
  376. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/idex.py +0 -0
  377. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/independentreserve.py +0 -0
  378. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/kraken.py +0 -0
  379. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/krakenfutures.py +0 -0
  380. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/kucoin.py +0 -0
  381. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/kucoinfutures.py +0 -0
  382. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/luno.py +0 -0
  383. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/mexc.py +0 -0
  384. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/mexc3.py +0 -0
  385. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/ndax.py +0 -0
  386. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/okcoin.py +0 -0
  387. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/okex.py +0 -0
  388. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/okx.py +0 -0
  389. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/phemex.py +0 -0
  390. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/poloniex.py +0 -0
  391. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/poloniexfutures.py +0 -0
  392. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/probit.py +0 -0
  393. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/ripio.py +0 -0
  394. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/upbit.py +0 -0
  395. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/wazirx.py +0 -0
  396. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/whitebit.py +0 -0
  397. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/woo.py +0 -0
  398. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/pro/zb.py +0 -0
  399. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/probit.py +0 -0
  400. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/static_dependencies/__init__.py +0 -0
  401. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  402. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  403. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  404. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  405. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  406. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  407. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  408. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  409. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  410. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  411. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  412. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  413. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/__init__.py +0 -0
  414. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/__init__.py +0 -0
  415. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_account.py +0 -0
  416. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_balance.py +0 -0
  417. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_borrow_interest.py +0 -0
  418. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_borrow_rate.py +0 -0
  419. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_calculate_fee.py +0 -0
  420. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_crypto.py +0 -0
  421. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_currency.py +0 -0
  422. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_datetime.py +0 -0
  423. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_decimal_to_precision.py +0 -0
  424. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_deep_extend.py +0 -0
  425. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
  426. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
  427. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_funding_rate_history.py +0 -0
  428. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_ledger_entry.py +0 -0
  429. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_ledger_item.py +0 -0
  430. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_leverage_tier.py +0 -0
  431. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_margin_modification.py +0 -0
  432. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_market.py +0 -0
  433. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_number.py +0 -0
  434. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_ohlcv.py +0 -0
  435. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_open_interest.py +0 -0
  436. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_order.py +0 -0
  437. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_order_book.py +0 -0
  438. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_position.py +0 -0
  439. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_shared_methods.py +0 -0
  440. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_status.py +0 -0
  441. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_throttle.py +0 -0
  442. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_ticker.py +0 -0
  443. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_trade.py +0 -0
  444. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_trading_fee.py +0 -0
  445. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/base/test_transaction.py +0 -0
  446. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/test_async.py +0 -0
  447. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/test/test_sync.py +0 -0
  448. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/tidex.py +0 -0
  449. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/timex.py +0 -0
  450. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/tokocrypto.py +0 -0
  451. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/upbit.py +0 -0
  452. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/wavesexchange.py +0 -0
  453. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/wazirx.py +0 -0
  454. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/whitebit.py +0 -0
  455. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/woo.py +0 -0
  456. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/yobit.py +0 -0
  457. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/zaif.py +0 -0
  458. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt/zonda.py +0 -0
  459. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt.egg-info/SOURCES.txt +0 -0
  460. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt.egg-info/dependency_links.txt +0 -0
  461. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt.egg-info/requires.txt +0 -0
  462. {ccxt-4.0.47 → ccxt-4.0.49}/ccxt.egg-info/top_level.txt +0 -0
  463. {ccxt-4.0.47 → ccxt-4.0.49}/setup.cfg +0 -0
  464. {ccxt-4.0.47 → ccxt-4.0.49}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.0.47
3
+ Version: 4.0.49
4
4
  Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges
5
5
  Home-page: https://ccxt.com
6
6
  Author: Igor Kroitor
@@ -232,20 +232,20 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
232
232
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
233
233
 
234
234
  <<<<<<< HEAD
235
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.47/dist/ccxt.browser.js
236
- * unpkg: https://unpkg.com/ccxt@4.0.47/dist/ccxt.browser.js
235
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.49/dist/ccxt.browser.js
236
+ * unpkg: https://unpkg.com/ccxt@4.0.49/dist/ccxt.browser.js
237
237
  =======
238
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.47/dist/ccxt.browser.js
239
- * unpkg: https://unpkg.com/ccxt@4.0.47/dist/ccxt.browser.js
238
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.49/dist/ccxt.browser.js
239
+ * unpkg: https://unpkg.com/ccxt@4.0.49/dist/ccxt.browser.js
240
240
  >>>>>>> e74b18a3a8a8cbcfe45ce4c1d32b9c03d4fae41c
241
241
 
242
242
  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.
243
243
 
244
244
  ```HTML
245
245
  <<<<<<< HEAD
246
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.47/dist/ccxt.browser.js"></script>
246
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.49/dist/ccxt.browser.js"></script>
247
247
  =======
248
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.47/dist/ccxt.browser.js"></script>
248
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.49/dist/ccxt.browser.js"></script>
249
249
  >>>>>>> e74b18a3a8a8cbcfe45ce4c1d32b9c03d4fae41c
250
250
  ```
251
251
 
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.0.47'
25
+ __version__ = '4.0.49'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -595,6 +595,7 @@ class ImplicitAPI:
595
595
  papi_post_portfolio_repay_futures_switch = papiPostPortfolioRepayFuturesSwitch = Entry('portfolio/repay-futures-switch', 'papi', 'POST', {'cost': 150})
596
596
  papi_post_portfolio_repay_futures_negative_balance = papiPostPortfolioRepayFuturesNegativeBalance = Entry('portfolio/repay-futures-negative-balance', 'papi', 'POST', {'cost': 150})
597
597
  papi_post_listenkey = papiPostListenKey = Entry('listenKey', 'papi', 'POST', {'cost': 1})
598
+ papi_post_asset_collection = papiPostAssetCollection = Entry('asset-collection', 'papi', 'POST', {'cost': 3})
598
599
  papi_put_listenkey = papiPutListenKey = Entry('listenKey', 'papi', 'PUT', {'cost': 1})
599
600
  papi_delete_um_order = papiDeleteUmOrder = Entry('um/order', 'papi', 'DELETE', {'cost': 1})
600
601
  papi_delete_um_allopenorders = papiDeleteUmAllOpenOrders = Entry('um/allOpenOrders', 'papi', 'DELETE', {'cost': 1})
@@ -595,6 +595,7 @@ class ImplicitAPI:
595
595
  papi_post_portfolio_repay_futures_switch = papiPostPortfolioRepayFuturesSwitch = Entry('portfolio/repay-futures-switch', 'papi', 'POST', {'cost': 150})
596
596
  papi_post_portfolio_repay_futures_negative_balance = papiPostPortfolioRepayFuturesNegativeBalance = Entry('portfolio/repay-futures-negative-balance', 'papi', 'POST', {'cost': 150})
597
597
  papi_post_listenkey = papiPostListenKey = Entry('listenKey', 'papi', 'POST', {'cost': 1})
598
+ papi_post_asset_collection = papiPostAssetCollection = Entry('asset-collection', 'papi', 'POST', {'cost': 3})
598
599
  papi_put_listenkey = papiPutListenKey = Entry('listenKey', 'papi', 'PUT', {'cost': 1})
599
600
  papi_delete_um_order = papiDeleteUmOrder = Entry('um/order', 'papi', 'DELETE', {'cost': 1})
600
601
  papi_delete_um_allopenorders = papiDeleteUmAllOpenOrders = Entry('um/allOpenOrders', 'papi', 'DELETE', {'cost': 1})
@@ -595,6 +595,7 @@ class ImplicitAPI:
595
595
  papi_post_portfolio_repay_futures_switch = papiPostPortfolioRepayFuturesSwitch = Entry('portfolio/repay-futures-switch', 'papi', 'POST', {'cost': 150})
596
596
  papi_post_portfolio_repay_futures_negative_balance = papiPostPortfolioRepayFuturesNegativeBalance = Entry('portfolio/repay-futures-negative-balance', 'papi', 'POST', {'cost': 150})
597
597
  papi_post_listenkey = papiPostListenKey = Entry('listenKey', 'papi', 'POST', {'cost': 1})
598
+ papi_post_asset_collection = papiPostAssetCollection = Entry('asset-collection', 'papi', 'POST', {'cost': 3})
598
599
  papi_put_listenkey = papiPutListenKey = Entry('listenKey', 'papi', 'PUT', {'cost': 1})
599
600
  papi_delete_um_order = papiDeleteUmOrder = Entry('um/order', 'papi', 'DELETE', {'cost': 1})
600
601
  papi_delete_um_allopenorders = papiDeleteUmAllOpenOrders = Entry('um/allOpenOrders', 'papi', 'DELETE', {'cost': 1})
@@ -595,6 +595,7 @@ class ImplicitAPI:
595
595
  papi_post_portfolio_repay_futures_switch = papiPostPortfolioRepayFuturesSwitch = Entry('portfolio/repay-futures-switch', 'papi', 'POST', {'cost': 150})
596
596
  papi_post_portfolio_repay_futures_negative_balance = papiPostPortfolioRepayFuturesNegativeBalance = Entry('portfolio/repay-futures-negative-balance', 'papi', 'POST', {'cost': 150})
597
597
  papi_post_listenkey = papiPostListenKey = Entry('listenKey', 'papi', 'POST', {'cost': 1})
598
+ papi_post_asset_collection = papiPostAssetCollection = Entry('asset-collection', 'papi', 'POST', {'cost': 3})
598
599
  papi_put_listenkey = papiPutListenKey = Entry('listenKey', 'papi', 'PUT', {'cost': 1})
599
600
  papi_delete_um_order = papiDeleteUmOrder = Entry('um/order', 'papi', 'DELETE', {'cost': 1})
600
601
  papi_delete_um_allopenorders = papiDeleteUmAllOpenOrders = Entry('um/allOpenOrders', 'papi', 'DELETE', {'cost': 1})
@@ -94,6 +94,8 @@ class ImplicitAPI:
94
94
  private_spot_post_trace_profit_profithisdetaillist = privateSpotPostTraceProfitProfitHisDetailList = Entry('trace/profit/profitHisDetailList', ['private', 'spot'], 'POST', {'cost': 2})
95
95
  private_spot_post_trace_profit_waitprofitdetaillist = privateSpotPostTraceProfitWaitProfitDetailList = Entry('trace/profit/waitProfitDetailList', ['private', 'spot'], 'POST', {'cost': 2})
96
96
  private_spot_post_trace_user_gettraderinfo = privateSpotPostTraceUserGetTraderInfo = Entry('trace/user/getTraderInfo', ['private', 'spot'], 'POST', {'cost': 2})
97
+ private_spot_post_trace_getremovablefollower = privateSpotPostTraceGetRemovableFollower = Entry('trace/getRemovableFollower', ['private', 'spot'], 'POST', {'cost': 2})
98
+ private_spot_post_trace_user_removefollower = privateSpotPostTraceUserRemoveFollower = Entry('trace/user/removeFollower', ['private', 'spot'], 'POST', {'cost': 2})
97
99
  private_spot_post_convert_quoted_price = privateSpotPostConvertQuotedPrice = Entry('convert/quoted-price', ['private', 'spot'], 'POST', {'cost': 4})
98
100
  private_spot_post_convert_trade = privateSpotPostConvertTrade = Entry('convert/trade', ['private', 'spot'], 'POST', {'cost': 4})
99
101
  private_mix_get_account_account = privateMixGetAccountAccount = Entry('account/account', ['private', 'mix'], 'GET', {'cost': 2})
@@ -168,6 +170,7 @@ class ImplicitAPI:
168
170
  private_mix_post_trace_report_order_currentlist = privateMixPostTraceReportOrderCurrentList = Entry('trace/report/order/currentList', ['private', 'mix'], 'POST', {'cost': 2})
169
171
  private_mix_post_trace_querytradertpslratioconfig = privateMixPostTraceQueryTraderTpslRatioConfig = Entry('trace/queryTraderTpslRatioConfig', ['private', 'mix'], 'POST', {'cost': 2})
170
172
  private_mix_post_trace_traderupdatetpslratioconfig = privateMixPostTraceTraderUpdateTpslRatioConfig = Entry('trace/traderUpdateTpslRatioConfig', ['private', 'mix'], 'POST', {'cost': 2})
173
+ private_mix_post_trace_closetrackorderbysymbol = privateMixPostTraceCloseTrackOrderBySymbol = Entry('trace/closeTrackOrderBySymbol', ['private', 'mix'], 'POST', {'cost': 2})
171
174
  private_user_get_fee_query = privateUserGetFeeQuery = Entry('fee/query', ['private', 'user'], 'GET', {'cost': 2})
172
175
  private_user_get_sub_virtual_list = privateUserGetSubVirtualList = Entry('sub/virtual-list', ['private', 'user'], 'GET', {'cost': 2})
173
176
  private_user_get_sub_virtual_api_list = privateUserGetSubVirtualApiList = Entry('sub/virtual-api-list', ['private', 'user'], 'GET', {'cost': 2})
@@ -34,6 +34,7 @@ class ImplicitAPI:
34
34
  private_post_querytrades = privatePostQueryTrades = Entry('QueryTrades', 'private', 'POST', {'cost': 3})
35
35
  private_post_retrieveexport = privatePostRetrieveExport = Entry('RetrieveExport', 'private', 'POST', {'cost': 3})
36
36
  private_post_removeexport = privatePostRemoveExport = Entry('RemoveExport', 'private', 'POST', {'cost': 3})
37
+ private_post_balanceex = privatePostBalanceEx = Entry('BalanceEx', 'private', 'POST', {'cost': 3})
37
38
  private_post_tradebalance = privatePostTradeBalance = Entry('TradeBalance', 'private', 'POST', {'cost': 3})
38
39
  private_post_tradeshistory = privatePostTradesHistory = Entry('TradesHistory', 'private', 'POST', {'cost': 6})
39
40
  private_post_tradevolume = privatePostTradeVolume = Entry('TradeVolume', 'private', 'POST', {'cost': 3})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.0.47'
7
+ __version__ = '4.0.49'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.0.47'
5
+ __version__ = '4.0.49'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -952,6 +952,7 @@ class binance(Exchange, ImplicitAPI):
952
952
  'portfolio/repay-futures-switch': 150, # Weight(IP): 1500 => cost = 0.1 * 1500 = 150
953
953
  'portfolio/repay-futures-negative-balance': 150, # Weight(IP): 1500 => cost = 0.1 * 1500 = 150
954
954
  'listenKey': 1, # 1
955
+ 'asset-collection': 3,
955
956
  },
956
957
  'put': {
957
958
  'listenKey': 1, # 1
@@ -267,6 +267,8 @@ class bitget(Exchange, ImplicitAPI):
267
267
  'trace/profit/profitHisDetailList': 2, # 10 times/1s(UID) => 20/10 = 2
268
268
  'trace/profit/waitProfitDetailList': 2, # 10 times/1s(UID) => 20/10 = 2
269
269
  'trace/user/getTraderInfo': 2, # 10 times/1s(UID) => 20/10 = 2
270
+ 'trace/getRemovableFollower': 2,
271
+ 'trace/user/removeFollower': 2,
270
272
  'convert/quoted-price': 4,
271
273
  'convert/trade': 4,
272
274
  },
@@ -347,6 +349,7 @@ class bitget(Exchange, ImplicitAPI):
347
349
  'trace/report/order/currentList': 2, # 10 times/1s(IP) => 20/10 = 2
348
350
  'trace/queryTraderTpslRatioConfig': 2, # 10 times/1s(UID) => 20/10 = 2
349
351
  'trace/traderUpdateTpslRatioConfig': 2, # 10 times/1s(UID) => 20/10 = 2
352
+ 'trace/closeTrackOrderBySymbol': 2,
350
353
  },
351
354
  },
352
355
  'user': {
@@ -3797,8 +3797,8 @@ class gate(Exchange, ImplicitAPI):
3797
3797
  # "order_type": ""
3798
3798
  # }
3799
3799
  #
3800
- put = self.safe_value_2(order, 'put', 'initial')
3801
- trigger = self.safe_value(order, 'trigger')
3800
+ put = self.safe_value_2(order, 'put', 'initial', {})
3801
+ trigger = self.safe_value(order, 'trigger', {})
3802
3802
  contract = self.safe_string(put, 'contract')
3803
3803
  type = self.safe_string(put, 'type')
3804
3804
  timeInForce = self.safe_string_upper_2(put, 'time_in_force', 'tif')
@@ -761,17 +761,15 @@ class huobijp(Exchange, ImplicitAPI):
761
761
  side = typeParts[0]
762
762
  type = typeParts[1]
763
763
  takerOrMaker = self.safe_string(trade, 'role')
764
- priceString = self.safe_string(trade, 'price')
765
- amountString = self.safe_string_2(trade, 'filled-amount', 'amount')
766
- price = self.parse_number(priceString)
767
- amount = self.parse_number(amountString)
768
- cost = self.parse_number(Precise.string_mul(priceString, amountString))
764
+ price = self.safe_string(trade, 'price')
765
+ amount = self.safe_string_2(trade, 'filled-amount', 'amount')
766
+ cost = Precise.string_mul(price, amount)
769
767
  fee = None
770
- feeCost = self.safe_number(trade, 'filled-fees')
768
+ feeCost = self.safe_string(trade, 'filled-fees')
771
769
  feeCurrency = self.safe_currency_code(self.safe_string(trade, 'fee-currency'))
772
- filledPoints = self.safe_number(trade, 'filled-points')
770
+ filledPoints = self.safe_string(trade, 'filled-points')
773
771
  if filledPoints is not None:
774
- if (feeCost is None) or (feeCost == 0.0):
772
+ if (feeCost is None) or (Precise.string_eq(feeCost, '0.0')):
775
773
  feeCost = filledPoints
776
774
  feeCurrency = self.safe_currency_code(self.safe_string(trade, 'fee-deduct-currency'))
777
775
  if feeCost is not None:
@@ -781,13 +779,13 @@ class huobijp(Exchange, ImplicitAPI):
781
779
  }
782
780
  tradeId = self.safe_string_2(trade, 'trade-id', 'tradeId')
783
781
  id = self.safe_string(trade, 'id', tradeId)
784
- return {
785
- 'id': id,
782
+ return self.safe_trade({
786
783
  'info': trade,
784
+ 'id': id,
785
+ 'symbol': symbol,
787
786
  'order': order,
788
787
  'timestamp': timestamp,
789
788
  'datetime': self.iso8601(timestamp),
790
- 'symbol': symbol,
791
789
  'type': type,
792
790
  'side': side,
793
791
  'takerOrMaker': takerOrMaker,
@@ -795,7 +793,7 @@ class huobijp(Exchange, ImplicitAPI):
795
793
  'amount': amount,
796
794
  'cost': cost,
797
795
  'fee': fee,
798
- }
796
+ })
799
797
 
800
798
  async def fetch_order_trades(self, id: str, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
801
799
  """
@@ -203,6 +203,7 @@ class kraken(Exchange, ImplicitAPI):
203
203
  'QueryTrades': 3,
204
204
  'RetrieveExport': 3,
205
205
  'RemoveExport': 3,
206
+ 'BalanceEx': 3,
206
207
  'TradeBalance': 3,
207
208
  'TradesHistory': 6,
208
209
  'TradeVolume': 3,
@@ -489,8 +489,8 @@ class kucoin(Exchange, ImplicitAPI):
489
489
  'symbolSeparator': '-',
490
490
  'fetchMyTradesMethod': 'private_get_fills',
491
491
  'fetchCurrencies': {
492
- 'webApiEnable': False, # fetches from WEB
493
- 'webApiRetries': 5,
492
+ 'webApiEnable': True, # fetches from WEB
493
+ 'webApiRetries': 1,
494
494
  'webApiMuteFailure': True,
495
495
  },
496
496
  'fetchMarkets': {
@@ -1727,13 +1727,17 @@ class kucoin(Exchange, ImplicitAPI):
1727
1727
  :param float amount: the amount of currency to trade
1728
1728
  :param float price: *ignored in "market" orders* the price at which the order is to be fullfilled at in units of the quote currency
1729
1729
  :param dict [params]: Extra parameters specific to the exchange API endpoint
1730
+ :param float [params.triggerPrice]: The price at which a trigger order is triggered at
1731
+ :param str [params.marginMode]: 'cross', # cross(cross mode) and isolated(isolated mode), set to cross by default, the isolated mode will be released soon, stay tuned
1732
+ :param str [params.timeInForce]: GTC, GTT, IOC, or FOK, default is GTC, limit orders only
1733
+ :param str [params.postOnly]: Post only flag, invalid when timeInForce is IOC or FOK
1734
+ *
1735
+ * EXCHANGE SPECIFIC PARAMETERS
1730
1736
  :param str [params.clientOid]: client order id, defaults to uuid if not passed
1731
1737
  :param str [params.remark]: remark for the order, length cannot exceed 100 utf8 characters
1732
1738
  :param str [params.tradeType]: 'TRADE', # TRADE, MARGIN_TRADE # not used with margin orders
1733
1739
  * limit orders ---------------------------------------------------
1734
- :param str [params.timeInForce]: GTC, GTT, IOC, or FOK, default is GTC, limit orders only
1735
1740
  :param float [params.cancelAfter]: long, # cancel after n seconds, requires timeInForce to be GTT
1736
- :param str [params.postOnly]: Post only flag, invalid when timeInForce is IOC or FOK
1737
1741
  :param bool [params.hidden]: False, # Order will not be displayed in the order book
1738
1742
  :param bool [params.iceberg]: False, # Only a portion of the order is displayed in the order book
1739
1743
  :param str [params.visibleSize]: self.amount_to_precision(symbol, visibleSize), # The maximum visible size of an iceberg order
@@ -1741,11 +1745,9 @@ class kucoin(Exchange, ImplicitAPI):
1741
1745
  :param str [params.funds]: # Amount of quote currency to use
1742
1746
  * stop orders ----------------------------------------------------
1743
1747
  :param str [params.stop]: Either loss or entry, the default is loss. Requires stopPrice to be defined
1744
- :param float [params.stopPrice]: The price at which a trigger order is triggered at
1745
1748
  * margin orders --------------------------------------------------
1746
1749
  :param float [params.leverage]: Leverage size of the order
1747
1750
  :param str [params.stp]: '', # self trade prevention, CN, CO, CB or DC
1748
- :param str [params.marginMode]: 'cross', # cross(cross mode) and isolated(isolated mode), set to cross by default, the isolated mode will be released soon, stay tuned
1749
1751
  :param bool [params.autoBorrow]: False, # The system will first borrow you funds at the optimal interest rate and then place an order for you
1750
1752
  :param bool [params.hf]: False, # True for hf order
1751
1753
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1788,7 +1790,6 @@ class kucoin(Exchange, ImplicitAPI):
1788
1790
  method = 'privatePostHfOrders'
1789
1791
  elif triggerPrice or stopLossPrice or takeProfitPrice:
1790
1792
  if triggerPrice:
1791
- request['stop'] = 'up' if (side == 'buy') else 'down'
1792
1793
  request['stopPrice'] = self.price_to_precision(symbol, triggerPrice)
1793
1794
  elif stopLossPrice or takeProfitPrice:
1794
1795
  if stopLossPrice:
@@ -2286,8 +2287,6 @@ class kucoin(Exchange, ImplicitAPI):
2286
2287
  status = 'cancelled'
2287
2288
  if cancelExist:
2288
2289
  status = 'canceled'
2289
- if status is None:
2290
- status = 'closed'
2291
2290
  stopPrice = self.safe_number(order, 'stopPrice')
2292
2291
  return self.safe_order({
2293
2292
  'info': order,
@@ -1243,6 +1243,7 @@ class okx(Exchange, ImplicitAPI):
1243
1243
  async def fetch_markets(self, params={}):
1244
1244
  """
1245
1245
  retrieves data on all markets for okx
1246
+ see https://www.okx.com/docs-v5/en/#rest-api-public-data-get-instruments
1246
1247
  :param dict [params]: extra parameters specific to the exchange api endpoint
1247
1248
  :returns dict[]: an array of objects representing market data
1248
1249
  """
@@ -1350,12 +1351,10 @@ class okx(Exchange, ImplicitAPI):
1350
1351
  symbol = symbol + '-' + ymd + '-' + strikePrice + '-' + optionType
1351
1352
  optionType = 'put' if (optionType == 'P') else 'call'
1352
1353
  tickSize = self.safe_string(market, 'tickSz')
1353
- minAmountString = self.safe_string(market, 'minSz')
1354
- minAmount = self.parse_number(minAmountString)
1355
1354
  fees = self.safe_value_2(self.fees, type, 'trading', {})
1356
- precisionPrice = self.parse_number(tickSize)
1357
1355
  maxLeverage = self.safe_string(market, 'lever', '1')
1358
1356
  maxLeverage = Precise.string_max(maxLeverage, '1')
1357
+ maxSpotCost = self.safe_number(market, 'maxMktSz')
1359
1358
  return self.extend(fees, {
1360
1359
  'id': id,
1361
1360
  'symbol': symbol,
@@ -1382,7 +1381,7 @@ class okx(Exchange, ImplicitAPI):
1382
1381
  'optionType': optionType,
1383
1382
  'precision': {
1384
1383
  'amount': self.safe_number(market, 'lotSz'),
1385
- 'price': precisionPrice,
1384
+ 'price': self.parse_number(tickSize),
1386
1385
  },
1387
1386
  'limits': {
1388
1387
  'leverage': {
@@ -1390,16 +1389,16 @@ class okx(Exchange, ImplicitAPI):
1390
1389
  'max': self.parse_number(maxLeverage),
1391
1390
  },
1392
1391
  'amount': {
1393
- 'min': minAmount,
1392
+ 'min': self.safe_number(market, 'minSz'),
1394
1393
  'max': None,
1395
1394
  },
1396
1395
  'price': {
1397
- 'min': precisionPrice,
1396
+ 'min': None,
1398
1397
  'max': None,
1399
1398
  },
1400
1399
  'cost': {
1401
1400
  'min': None,
1402
- 'max': None,
1401
+ 'max': None if contract else maxSpotCost,
1403
1402
  },
1404
1403
  },
1405
1404
  'info': market,
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.0.47'
7
+ __version__ = '4.0.49'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -951,6 +951,7 @@ class binance(Exchange, ImplicitAPI):
951
951
  'portfolio/repay-futures-switch': 150, # Weight(IP): 1500 => cost = 0.1 * 1500 = 150
952
952
  'portfolio/repay-futures-negative-balance': 150, # Weight(IP): 1500 => cost = 0.1 * 1500 = 150
953
953
  'listenKey': 1, # 1
954
+ 'asset-collection': 3,
954
955
  },
955
956
  'put': {
956
957
  'listenKey': 1, # 1
@@ -266,6 +266,8 @@ class bitget(Exchange, ImplicitAPI):
266
266
  'trace/profit/profitHisDetailList': 2, # 10 times/1s(UID) => 20/10 = 2
267
267
  'trace/profit/waitProfitDetailList': 2, # 10 times/1s(UID) => 20/10 = 2
268
268
  'trace/user/getTraderInfo': 2, # 10 times/1s(UID) => 20/10 = 2
269
+ 'trace/getRemovableFollower': 2,
270
+ 'trace/user/removeFollower': 2,
269
271
  'convert/quoted-price': 4,
270
272
  'convert/trade': 4,
271
273
  },
@@ -346,6 +348,7 @@ class bitget(Exchange, ImplicitAPI):
346
348
  'trace/report/order/currentList': 2, # 10 times/1s(IP) => 20/10 = 2
347
349
  'trace/queryTraderTpslRatioConfig': 2, # 10 times/1s(UID) => 20/10 = 2
348
350
  'trace/traderUpdateTpslRatioConfig': 2, # 10 times/1s(UID) => 20/10 = 2
351
+ 'trace/closeTrackOrderBySymbol': 2,
349
352
  },
350
353
  },
351
354
  'user': {
@@ -3796,8 +3796,8 @@ class gate(Exchange, ImplicitAPI):
3796
3796
  # "order_type": ""
3797
3797
  # }
3798
3798
  #
3799
- put = self.safe_value_2(order, 'put', 'initial')
3800
- trigger = self.safe_value(order, 'trigger')
3799
+ put = self.safe_value_2(order, 'put', 'initial', {})
3800
+ trigger = self.safe_value(order, 'trigger', {})
3801
3801
  contract = self.safe_string(put, 'contract')
3802
3802
  type = self.safe_string(put, 'type')
3803
3803
  timeInForce = self.safe_string_upper_2(put, 'time_in_force', 'tif')
@@ -761,17 +761,15 @@ class huobijp(Exchange, ImplicitAPI):
761
761
  side = typeParts[0]
762
762
  type = typeParts[1]
763
763
  takerOrMaker = self.safe_string(trade, 'role')
764
- priceString = self.safe_string(trade, 'price')
765
- amountString = self.safe_string_2(trade, 'filled-amount', 'amount')
766
- price = self.parse_number(priceString)
767
- amount = self.parse_number(amountString)
768
- cost = self.parse_number(Precise.string_mul(priceString, amountString))
764
+ price = self.safe_string(trade, 'price')
765
+ amount = self.safe_string_2(trade, 'filled-amount', 'amount')
766
+ cost = Precise.string_mul(price, amount)
769
767
  fee = None
770
- feeCost = self.safe_number(trade, 'filled-fees')
768
+ feeCost = self.safe_string(trade, 'filled-fees')
771
769
  feeCurrency = self.safe_currency_code(self.safe_string(trade, 'fee-currency'))
772
- filledPoints = self.safe_number(trade, 'filled-points')
770
+ filledPoints = self.safe_string(trade, 'filled-points')
773
771
  if filledPoints is not None:
774
- if (feeCost is None) or (feeCost == 0.0):
772
+ if (feeCost is None) or (Precise.string_eq(feeCost, '0.0')):
775
773
  feeCost = filledPoints
776
774
  feeCurrency = self.safe_currency_code(self.safe_string(trade, 'fee-deduct-currency'))
777
775
  if feeCost is not None:
@@ -781,13 +779,13 @@ class huobijp(Exchange, ImplicitAPI):
781
779
  }
782
780
  tradeId = self.safe_string_2(trade, 'trade-id', 'tradeId')
783
781
  id = self.safe_string(trade, 'id', tradeId)
784
- return {
785
- 'id': id,
782
+ return self.safe_trade({
786
783
  'info': trade,
784
+ 'id': id,
785
+ 'symbol': symbol,
787
786
  'order': order,
788
787
  'timestamp': timestamp,
789
788
  'datetime': self.iso8601(timestamp),
790
- 'symbol': symbol,
791
789
  'type': type,
792
790
  'side': side,
793
791
  'takerOrMaker': takerOrMaker,
@@ -795,7 +793,7 @@ class huobijp(Exchange, ImplicitAPI):
795
793
  'amount': amount,
796
794
  'cost': cost,
797
795
  'fee': fee,
798
- }
796
+ })
799
797
 
800
798
  def fetch_order_trades(self, id: str, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
801
799
  """
@@ -203,6 +203,7 @@ class kraken(Exchange, ImplicitAPI):
203
203
  'QueryTrades': 3,
204
204
  'RetrieveExport': 3,
205
205
  'RemoveExport': 3,
206
+ 'BalanceEx': 3,
206
207
  'TradeBalance': 3,
207
208
  'TradesHistory': 6,
208
209
  'TradeVolume': 3,
@@ -488,8 +488,8 @@ class kucoin(Exchange, ImplicitAPI):
488
488
  'symbolSeparator': '-',
489
489
  'fetchMyTradesMethod': 'private_get_fills',
490
490
  'fetchCurrencies': {
491
- 'webApiEnable': False, # fetches from WEB
492
- 'webApiRetries': 5,
491
+ 'webApiEnable': True, # fetches from WEB
492
+ 'webApiRetries': 1,
493
493
  'webApiMuteFailure': True,
494
494
  },
495
495
  'fetchMarkets': {
@@ -1726,13 +1726,17 @@ class kucoin(Exchange, ImplicitAPI):
1726
1726
  :param float amount: the amount of currency to trade
1727
1727
  :param float price: *ignored in "market" orders* the price at which the order is to be fullfilled at in units of the quote currency
1728
1728
  :param dict [params]: Extra parameters specific to the exchange API endpoint
1729
+ :param float [params.triggerPrice]: The price at which a trigger order is triggered at
1730
+ :param str [params.marginMode]: 'cross', # cross(cross mode) and isolated(isolated mode), set to cross by default, the isolated mode will be released soon, stay tuned
1731
+ :param str [params.timeInForce]: GTC, GTT, IOC, or FOK, default is GTC, limit orders only
1732
+ :param str [params.postOnly]: Post only flag, invalid when timeInForce is IOC or FOK
1733
+ *
1734
+ * EXCHANGE SPECIFIC PARAMETERS
1729
1735
  :param str [params.clientOid]: client order id, defaults to uuid if not passed
1730
1736
  :param str [params.remark]: remark for the order, length cannot exceed 100 utf8 characters
1731
1737
  :param str [params.tradeType]: 'TRADE', # TRADE, MARGIN_TRADE # not used with margin orders
1732
1738
  * limit orders ---------------------------------------------------
1733
- :param str [params.timeInForce]: GTC, GTT, IOC, or FOK, default is GTC, limit orders only
1734
1739
  :param float [params.cancelAfter]: long, # cancel after n seconds, requires timeInForce to be GTT
1735
- :param str [params.postOnly]: Post only flag, invalid when timeInForce is IOC or FOK
1736
1740
  :param bool [params.hidden]: False, # Order will not be displayed in the order book
1737
1741
  :param bool [params.iceberg]: False, # Only a portion of the order is displayed in the order book
1738
1742
  :param str [params.visibleSize]: self.amount_to_precision(symbol, visibleSize), # The maximum visible size of an iceberg order
@@ -1740,11 +1744,9 @@ class kucoin(Exchange, ImplicitAPI):
1740
1744
  :param str [params.funds]: # Amount of quote currency to use
1741
1745
  * stop orders ----------------------------------------------------
1742
1746
  :param str [params.stop]: Either loss or entry, the default is loss. Requires stopPrice to be defined
1743
- :param float [params.stopPrice]: The price at which a trigger order is triggered at
1744
1747
  * margin orders --------------------------------------------------
1745
1748
  :param float [params.leverage]: Leverage size of the order
1746
1749
  :param str [params.stp]: '', # self trade prevention, CN, CO, CB or DC
1747
- :param str [params.marginMode]: 'cross', # cross(cross mode) and isolated(isolated mode), set to cross by default, the isolated mode will be released soon, stay tuned
1748
1750
  :param bool [params.autoBorrow]: False, # The system will first borrow you funds at the optimal interest rate and then place an order for you
1749
1751
  :param bool [params.hf]: False, # True for hf order
1750
1752
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
@@ -1787,7 +1789,6 @@ class kucoin(Exchange, ImplicitAPI):
1787
1789
  method = 'privatePostHfOrders'
1788
1790
  elif triggerPrice or stopLossPrice or takeProfitPrice:
1789
1791
  if triggerPrice:
1790
- request['stop'] = 'up' if (side == 'buy') else 'down'
1791
1792
  request['stopPrice'] = self.price_to_precision(symbol, triggerPrice)
1792
1793
  elif stopLossPrice or takeProfitPrice:
1793
1794
  if stopLossPrice:
@@ -2285,8 +2286,6 @@ class kucoin(Exchange, ImplicitAPI):
2285
2286
  status = 'cancelled'
2286
2287
  if cancelExist:
2287
2288
  status = 'canceled'
2288
- if status is None:
2289
- status = 'closed'
2290
2289
  stopPrice = self.safe_number(order, 'stopPrice')
2291
2290
  return self.safe_order({
2292
2291
  'info': order,
@@ -1242,6 +1242,7 @@ class okx(Exchange, ImplicitAPI):
1242
1242
  def fetch_markets(self, params={}):
1243
1243
  """
1244
1244
  retrieves data on all markets for okx
1245
+ see https://www.okx.com/docs-v5/en/#rest-api-public-data-get-instruments
1245
1246
  :param dict [params]: extra parameters specific to the exchange api endpoint
1246
1247
  :returns dict[]: an array of objects representing market data
1247
1248
  """
@@ -1349,12 +1350,10 @@ class okx(Exchange, ImplicitAPI):
1349
1350
  symbol = symbol + '-' + ymd + '-' + strikePrice + '-' + optionType
1350
1351
  optionType = 'put' if (optionType == 'P') else 'call'
1351
1352
  tickSize = self.safe_string(market, 'tickSz')
1352
- minAmountString = self.safe_string(market, 'minSz')
1353
- minAmount = self.parse_number(minAmountString)
1354
1353
  fees = self.safe_value_2(self.fees, type, 'trading', {})
1355
- precisionPrice = self.parse_number(tickSize)
1356
1354
  maxLeverage = self.safe_string(market, 'lever', '1')
1357
1355
  maxLeverage = Precise.string_max(maxLeverage, '1')
1356
+ maxSpotCost = self.safe_number(market, 'maxMktSz')
1358
1357
  return self.extend(fees, {
1359
1358
  'id': id,
1360
1359
  'symbol': symbol,
@@ -1381,7 +1380,7 @@ class okx(Exchange, ImplicitAPI):
1381
1380
  'optionType': optionType,
1382
1381
  'precision': {
1383
1382
  'amount': self.safe_number(market, 'lotSz'),
1384
- 'price': precisionPrice,
1383
+ 'price': self.parse_number(tickSize),
1385
1384
  },
1386
1385
  'limits': {
1387
1386
  'leverage': {
@@ -1389,16 +1388,16 @@ class okx(Exchange, ImplicitAPI):
1389
1388
  'max': self.parse_number(maxLeverage),
1390
1389
  },
1391
1390
  'amount': {
1392
- 'min': minAmount,
1391
+ 'min': self.safe_number(market, 'minSz'),
1393
1392
  'max': None,
1394
1393
  },
1395
1394
  'price': {
1396
- 'min': precisionPrice,
1395
+ 'min': None,
1397
1396
  'max': None,
1398
1397
  },
1399
1398
  'cost': {
1400
1399
  'min': None,
1401
- 'max': None,
1400
+ 'max': None if contract else maxSpotCost,
1402
1401
  },
1403
1402
  },
1404
1403
  'info': market,
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.0.47'
7
+ __version__ = '4.0.49'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10