ccxt 4.0.48__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.48/ccxt.egg-info → ccxt-4.0.49}/PKG-INFO +7 -7
  2. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/__init__.py +1 -1
  3. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/binance.py +1 -0
  4. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/binancecoinm.py +1 -0
  5. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/binanceus.py +1 -0
  6. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/binanceusdm.py +1 -0
  7. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bitget.py +3 -0
  8. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/kraken.py +1 -0
  9. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/__init__.py +1 -1
  10. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/base/exchange.py +1 -1
  11. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/binance.py +1 -0
  12. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bitget.py +3 -0
  13. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/gate.py +2 -2
  14. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/huobijp.py +10 -12
  15. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/kraken.py +1 -0
  16. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/kucoin.py +2 -2
  17. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/okx.py +6 -7
  18. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/base/exchange.py +1 -1
  19. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/binance.py +1 -0
  20. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bitget.py +3 -0
  21. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/gate.py +2 -2
  22. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/huobijp.py +10 -12
  23. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/kraken.py +1 -0
  24. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/kucoin.py +2 -2
  25. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/okx.py +6 -7
  26. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/__init__.py +1 -1
  27. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/bitfinex.py +3 -3
  28. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/bitfinex2.py +13 -13
  29. {ccxt-4.0.48 → ccxt-4.0.49/ccxt.egg-info}/PKG-INFO +7 -7
  30. {ccxt-4.0.48 → ccxt-4.0.49}/package.json +1 -1
  31. {ccxt-4.0.48 → ccxt-4.0.49}/LICENSE.txt +0 -0
  32. {ccxt-4.0.48 → ccxt-4.0.49}/MANIFEST.in +0 -0
  33. {ccxt-4.0.48 → ccxt-4.0.49}/README.rst +0 -0
  34. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/__init__.py +0 -0
  35. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/ace.py +0 -0
  36. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/alpaca.py +0 -0
  37. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/ascendex.py +0 -0
  38. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bequant.py +0 -0
  39. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bigone.py +0 -0
  40. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bingx.py +0 -0
  41. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bit2c.py +0 -0
  42. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bitbank.py +0 -0
  43. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bitbay.py +0 -0
  44. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bitbns.py +0 -0
  45. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bitcoincom.py +0 -0
  46. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bitfinex.py +0 -0
  47. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bitfinex2.py +0 -0
  48. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bitflyer.py +0 -0
  49. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bitforex.py +0 -0
  50. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bithumb.py +0 -0
  51. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bitmart.py +0 -0
  52. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bitmex.py +0 -0
  53. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bitopro.py +0 -0
  54. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bitpanda.py +0 -0
  55. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bitrue.py +0 -0
  56. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bitso.py +0 -0
  57. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bitstamp.py +0 -0
  58. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bitstamp1.py +0 -0
  59. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bittrex.py +0 -0
  60. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bitvavo.py +0 -0
  61. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bkex.py +0 -0
  62. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bl3p.py +0 -0
  63. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/blockchaincom.py +0 -0
  64. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/btcalpha.py +0 -0
  65. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/btcbox.py +0 -0
  66. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/btcmarkets.py +0 -0
  67. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/btctradeua.py +0 -0
  68. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/btcturk.py +0 -0
  69. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/bybit.py +0 -0
  70. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/cex.py +0 -0
  71. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/coinbase.py +0 -0
  72. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/coinbaseprime.py +0 -0
  73. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/coinbasepro.py +0 -0
  74. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/coincheck.py +0 -0
  75. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/coinex.py +0 -0
  76. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/coinfalcon.py +0 -0
  77. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/coinmate.py +0 -0
  78. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/coinone.py +0 -0
  79. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/coinsph.py +0 -0
  80. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/coinspot.py +0 -0
  81. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/cryptocom.py +0 -0
  82. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/currencycom.py +0 -0
  83. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/delta.py +0 -0
  84. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/deribit.py +0 -0
  85. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/digifinex.py +0 -0
  86. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/exmo.py +0 -0
  87. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/fmfwio.py +0 -0
  88. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/gate.py +0 -0
  89. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/gateio.py +0 -0
  90. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/gemini.py +0 -0
  91. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/hitbtc.py +0 -0
  92. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/hitbtc3.py +0 -0
  93. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/hollaex.py +0 -0
  94. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/huobi.py +0 -0
  95. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/huobijp.py +0 -0
  96. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/huobipro.py +0 -0
  97. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/idex.py +0 -0
  98. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/independentreserve.py +0 -0
  99. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/indodax.py +0 -0
  100. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/krakenfutures.py +0 -0
  101. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/kucoin.py +0 -0
  102. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/kucoinfutures.py +0 -0
  103. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/kuna.py +0 -0
  104. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/latoken.py +0 -0
  105. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/lbank.py +0 -0
  106. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/lbank2.py +0 -0
  107. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/luno.py +0 -0
  108. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/lykke.py +0 -0
  109. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/mercado.py +0 -0
  110. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/mexc.py +0 -0
  111. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/mexc3.py +0 -0
  112. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/ndax.py +0 -0
  113. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/novadax.py +0 -0
  114. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/oceanex.py +0 -0
  115. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/okcoin.py +0 -0
  116. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/okex.py +0 -0
  117. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/okex5.py +0 -0
  118. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/okx.py +0 -0
  119. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/paymium.py +0 -0
  120. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/phemex.py +0 -0
  121. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/poloniex.py +0 -0
  122. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/poloniexfutures.py +0 -0
  123. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/probit.py +0 -0
  124. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/tidex.py +0 -0
  125. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/timex.py +0 -0
  126. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/tokocrypto.py +0 -0
  127. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/upbit.py +0 -0
  128. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/wavesexchange.py +0 -0
  129. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/wazirx.py +0 -0
  130. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/whitebit.py +0 -0
  131. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/woo.py +0 -0
  132. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/yobit.py +0 -0
  133. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/zaif.py +0 -0
  134. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/abstract/zonda.py +0 -0
  135. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/ace.py +0 -0
  136. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/alpaca.py +0 -0
  137. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/ascendex.py +0 -0
  138. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/ace.py +0 -0
  139. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/alpaca.py +0 -0
  140. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/ascendex.py +0 -0
  141. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/base/__init__.py +0 -0
  142. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/base/throttler.py +0 -0
  143. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/base/ws/__init__.py +0 -0
  144. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  145. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/base/ws/cache.py +0 -0
  146. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/base/ws/client.py +0 -0
  147. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/base/ws/fast_client.py +0 -0
  148. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/base/ws/functions.py +0 -0
  149. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/base/ws/future.py +0 -0
  150. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/base/ws/order_book.py +0 -0
  151. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  152. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bequant.py +0 -0
  153. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bigone.py +0 -0
  154. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/binancecoinm.py +0 -0
  155. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/binanceus.py +0 -0
  156. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/binanceusdm.py +0 -0
  157. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bingx.py +0 -0
  158. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bit2c.py +0 -0
  159. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bitbank.py +0 -0
  160. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bitbay.py +0 -0
  161. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bitbns.py +0 -0
  162. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bitcoincom.py +0 -0
  163. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bitfinex.py +0 -0
  164. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bitfinex2.py +0 -0
  165. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bitflyer.py +0 -0
  166. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bitforex.py +0 -0
  167. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bithumb.py +0 -0
  168. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bitmart.py +0 -0
  169. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bitmex.py +0 -0
  170. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bitopro.py +0 -0
  171. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bitpanda.py +0 -0
  172. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bitrue.py +0 -0
  173. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bitso.py +0 -0
  174. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bitstamp.py +0 -0
  175. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bitstamp1.py +0 -0
  176. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bittrex.py +0 -0
  177. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bitvavo.py +0 -0
  178. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bkex.py +0 -0
  179. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bl3p.py +0 -0
  180. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/blockchaincom.py +0 -0
  181. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/btcalpha.py +0 -0
  182. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/btcbox.py +0 -0
  183. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/btcmarkets.py +0 -0
  184. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/btctradeua.py +0 -0
  185. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/btcturk.py +0 -0
  186. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/bybit.py +0 -0
  187. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/cex.py +0 -0
  188. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/coinbase.py +0 -0
  189. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/coinbaseprime.py +0 -0
  190. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/coinbasepro.py +0 -0
  191. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/coincheck.py +0 -0
  192. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/coinex.py +0 -0
  193. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/coinfalcon.py +0 -0
  194. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/coinmate.py +0 -0
  195. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/coinone.py +0 -0
  196. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/coinsph.py +0 -0
  197. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/coinspot.py +0 -0
  198. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/cryptocom.py +0 -0
  199. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/currencycom.py +0 -0
  200. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/delta.py +0 -0
  201. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/deribit.py +0 -0
  202. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/digifinex.py +0 -0
  203. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/exmo.py +0 -0
  204. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/flowbtc.py +0 -0
  205. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/fmfwio.py +0 -0
  206. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/gateio.py +0 -0
  207. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/gemini.py +0 -0
  208. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/hitbtc.py +0 -0
  209. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/hitbtc3.py +0 -0
  210. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/hollaex.py +0 -0
  211. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/huobi.py +0 -0
  212. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/huobipro.py +0 -0
  213. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/idex.py +0 -0
  214. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/independentreserve.py +0 -0
  215. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/indodax.py +0 -0
  216. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/krakenfutures.py +0 -0
  217. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/kucoinfutures.py +0 -0
  218. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/kuna.py +0 -0
  219. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/latoken.py +0 -0
  220. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/lbank.py +0 -0
  221. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/lbank2.py +0 -0
  222. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/luno.py +0 -0
  223. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/lykke.py +0 -0
  224. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/mercado.py +0 -0
  225. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/mexc.py +0 -0
  226. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/mexc3.py +0 -0
  227. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/ndax.py +0 -0
  228. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/novadax.py +0 -0
  229. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/oceanex.py +0 -0
  230. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/okcoin.py +0 -0
  231. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/okex.py +0 -0
  232. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/okex5.py +0 -0
  233. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/paymium.py +0 -0
  234. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/phemex.py +0 -0
  235. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/poloniex.py +0 -0
  236. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/poloniexfutures.py +0 -0
  237. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/probit.py +0 -0
  238. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/tidex.py +0 -0
  239. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/timex.py +0 -0
  240. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/tokocrypto.py +0 -0
  241. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/upbit.py +0 -0
  242. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/wavesexchange.py +0 -0
  243. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/wazirx.py +0 -0
  244. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/whitebit.py +0 -0
  245. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/woo.py +0 -0
  246. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/yobit.py +0 -0
  247. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/zaif.py +0 -0
  248. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/async_support/zonda.py +0 -0
  249. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/base/__init__.py +0 -0
  250. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/base/decimal_to_precision.py +0 -0
  251. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/base/errors.py +0 -0
  252. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/base/precise.py +0 -0
  253. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/base/types.py +0 -0
  254. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bequant.py +0 -0
  255. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bigone.py +0 -0
  256. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/binancecoinm.py +0 -0
  257. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/binanceus.py +0 -0
  258. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/binanceusdm.py +0 -0
  259. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bingx.py +0 -0
  260. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bit2c.py +0 -0
  261. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bitbank.py +0 -0
  262. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bitbay.py +0 -0
  263. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bitbns.py +0 -0
  264. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bitcoincom.py +0 -0
  265. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bitfinex.py +0 -0
  266. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bitfinex2.py +0 -0
  267. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bitflyer.py +0 -0
  268. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bitforex.py +0 -0
  269. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bithumb.py +0 -0
  270. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bitmart.py +0 -0
  271. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bitmex.py +0 -0
  272. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bitopro.py +0 -0
  273. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bitpanda.py +0 -0
  274. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bitrue.py +0 -0
  275. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bitso.py +0 -0
  276. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bitstamp.py +0 -0
  277. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bitstamp1.py +0 -0
  278. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bittrex.py +0 -0
  279. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bitvavo.py +0 -0
  280. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bkex.py +0 -0
  281. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bl3p.py +0 -0
  282. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/blockchaincom.py +0 -0
  283. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/btcalpha.py +0 -0
  284. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/btcbox.py +0 -0
  285. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/btcmarkets.py +0 -0
  286. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/btctradeua.py +0 -0
  287. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/btcturk.py +0 -0
  288. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/bybit.py +0 -0
  289. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/cex.py +0 -0
  290. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/coinbase.py +0 -0
  291. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/coinbaseprime.py +0 -0
  292. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/coinbasepro.py +0 -0
  293. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/coincheck.py +0 -0
  294. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/coinex.py +0 -0
  295. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/coinfalcon.py +0 -0
  296. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/coinmate.py +0 -0
  297. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/coinone.py +0 -0
  298. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/coinsph.py +0 -0
  299. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/coinspot.py +0 -0
  300. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/cryptocom.py +0 -0
  301. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/currencycom.py +0 -0
  302. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/delta.py +0 -0
  303. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/deribit.py +0 -0
  304. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/digifinex.py +0 -0
  305. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/exmo.py +0 -0
  306. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/flowbtc.py +0 -0
  307. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/fmfwio.py +0 -0
  308. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/gateio.py +0 -0
  309. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/gemini.py +0 -0
  310. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/hitbtc.py +0 -0
  311. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/hitbtc3.py +0 -0
  312. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/hollaex.py +0 -0
  313. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/huobi.py +0 -0
  314. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/huobipro.py +0 -0
  315. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/idex.py +0 -0
  316. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/independentreserve.py +0 -0
  317. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/indodax.py +0 -0
  318. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/krakenfutures.py +0 -0
  319. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/kucoinfutures.py +0 -0
  320. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/kuna.py +0 -0
  321. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/latoken.py +0 -0
  322. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/lbank.py +0 -0
  323. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/lbank2.py +0 -0
  324. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/luno.py +0 -0
  325. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/lykke.py +0 -0
  326. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/mercado.py +0 -0
  327. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/mexc.py +0 -0
  328. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/mexc3.py +0 -0
  329. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/ndax.py +0 -0
  330. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/novadax.py +0 -0
  331. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/oceanex.py +0 -0
  332. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/okcoin.py +0 -0
  333. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/okex.py +0 -0
  334. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/okex5.py +0 -0
  335. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/paymium.py +0 -0
  336. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/phemex.py +0 -0
  337. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/poloniex.py +0 -0
  338. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/poloniexfutures.py +0 -0
  339. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/alpaca.py +0 -0
  340. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/ascendex.py +0 -0
  341. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/bequant.py +0 -0
  342. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/binance.py +0 -0
  343. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/binancecoinm.py +0 -0
  344. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/binanceus.py +0 -0
  345. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/binanceusdm.py +0 -0
  346. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/bitcoincom.py +0 -0
  347. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/bitget.py +0 -0
  348. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/bitmart.py +0 -0
  349. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/bitmex.py +0 -0
  350. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/bitopro.py +0 -0
  351. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/bitpanda.py +0 -0
  352. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/bitrue.py +0 -0
  353. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/bitstamp.py +0 -0
  354. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/bittrex.py +0 -0
  355. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/bitvavo.py +0 -0
  356. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/blockchaincom.py +0 -0
  357. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/btcex.py +0 -0
  358. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/bybit.py +0 -0
  359. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/cex.py +0 -0
  360. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/coinbase.py +0 -0
  361. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/coinbaseprime.py +0 -0
  362. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/coinbasepro.py +0 -0
  363. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/coinex.py +0 -0
  364. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/cryptocom.py +0 -0
  365. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/currencycom.py +0 -0
  366. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/deribit.py +0 -0
  367. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/exmo.py +0 -0
  368. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/gate.py +0 -0
  369. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/gateio.py +0 -0
  370. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/gemini.py +0 -0
  371. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/hitbtc.py +0 -0
  372. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/hollaex.py +0 -0
  373. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/huobi.py +0 -0
  374. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/huobijp.py +0 -0
  375. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/huobipro.py +0 -0
  376. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/idex.py +0 -0
  377. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/independentreserve.py +0 -0
  378. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/kraken.py +0 -0
  379. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/krakenfutures.py +0 -0
  380. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/kucoin.py +0 -0
  381. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/kucoinfutures.py +0 -0
  382. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/luno.py +0 -0
  383. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/mexc.py +0 -0
  384. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/mexc3.py +0 -0
  385. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/ndax.py +0 -0
  386. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/okcoin.py +0 -0
  387. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/okex.py +0 -0
  388. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/okx.py +0 -0
  389. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/phemex.py +0 -0
  390. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/poloniex.py +0 -0
  391. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/poloniexfutures.py +0 -0
  392. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/probit.py +0 -0
  393. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/ripio.py +0 -0
  394. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/upbit.py +0 -0
  395. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/wazirx.py +0 -0
  396. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/whitebit.py +0 -0
  397. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/woo.py +0 -0
  398. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/pro/zb.py +0 -0
  399. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/probit.py +0 -0
  400. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/static_dependencies/__init__.py +0 -0
  401. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  402. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  403. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  404. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  405. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  406. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  407. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  408. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  409. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  410. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  411. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  412. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  413. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/__init__.py +0 -0
  414. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/__init__.py +0 -0
  415. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_account.py +0 -0
  416. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_balance.py +0 -0
  417. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_borrow_interest.py +0 -0
  418. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_borrow_rate.py +0 -0
  419. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_calculate_fee.py +0 -0
  420. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_crypto.py +0 -0
  421. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_currency.py +0 -0
  422. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_datetime.py +0 -0
  423. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_decimal_to_precision.py +0 -0
  424. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_deep_extend.py +0 -0
  425. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
  426. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
  427. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_funding_rate_history.py +0 -0
  428. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_ledger_entry.py +0 -0
  429. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_ledger_item.py +0 -0
  430. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_leverage_tier.py +0 -0
  431. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_margin_modification.py +0 -0
  432. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_market.py +0 -0
  433. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_number.py +0 -0
  434. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_ohlcv.py +0 -0
  435. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_open_interest.py +0 -0
  436. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_order.py +0 -0
  437. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_order_book.py +0 -0
  438. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_position.py +0 -0
  439. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_shared_methods.py +0 -0
  440. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_status.py +0 -0
  441. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_throttle.py +0 -0
  442. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_ticker.py +0 -0
  443. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_trade.py +0 -0
  444. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_trading_fee.py +0 -0
  445. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/base/test_transaction.py +0 -0
  446. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/test_async.py +0 -0
  447. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/test/test_sync.py +0 -0
  448. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/tidex.py +0 -0
  449. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/timex.py +0 -0
  450. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/tokocrypto.py +0 -0
  451. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/upbit.py +0 -0
  452. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/wavesexchange.py +0 -0
  453. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/wazirx.py +0 -0
  454. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/whitebit.py +0 -0
  455. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/woo.py +0 -0
  456. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/yobit.py +0 -0
  457. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/zaif.py +0 -0
  458. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt/zonda.py +0 -0
  459. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt.egg-info/SOURCES.txt +0 -0
  460. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt.egg-info/dependency_links.txt +0 -0
  461. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt.egg-info/requires.txt +0 -0
  462. {ccxt-4.0.48 → ccxt-4.0.49}/ccxt.egg-info/top_level.txt +0 -0
  463. {ccxt-4.0.48 → ccxt-4.0.49}/setup.cfg +0 -0
  464. {ccxt-4.0.48 → 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.48
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.48/dist/ccxt.browser.js
236
- * unpkg: https://unpkg.com/ccxt@4.0.48/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.48/dist/ccxt.browser.js
239
- * unpkg: https://unpkg.com/ccxt@4.0.48/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.48/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.48/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.48'
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.48'
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.48'
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': {
@@ -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.48'
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': {
@@ -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.48'
7
+ __version__ = '4.0.49'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
@@ -325,13 +325,13 @@ class bitfinex(ccxt.async_support.bitfinex):
325
325
  orderbook = self.orderbooks[symbol]
326
326
  if isRaw:
327
327
  id = self.safe_string(message, 1)
328
- price = self.safe_float(message, 2)
328
+ price = self.safe_string(message, 2)
329
329
  size = -message[3] if (message[3] < 0) else message[3]
330
330
  side = 'asks' if (message[3] < 0) else 'bids'
331
331
  bookside = orderbook[side]
332
332
  # price = 0 means that you have to remove the order from your book
333
- amount = size if (price > 0) else 0
334
- bookside.store(price, amount, id)
333
+ amount = size if Precise.string_gt(price, '0') else '0'
334
+ bookside.store(self.parse_number(price), self.parse_number(amount), id)
335
335
  else:
336
336
  size = -message[3] if (message[3] < 0) else message[3]
337
337
  side = 'asks' if (message[3] < 0) else 'bids'
@@ -585,21 +585,21 @@ class bitfinex2(ccxt.async_support.bitfinex2):
585
585
  deltas = message[1]
586
586
  orderbook = self.orderbooks[symbol]
587
587
  if isRaw:
588
- price = self.safe_float(deltas, 1)
588
+ price = self.safe_string(deltas, 1)
589
589
  size = -deltas[2] if (deltas[2] < 0) else deltas[2]
590
590
  side = 'asks' if (deltas[2] < 0) else 'bids'
591
591
  bookside = orderbook[side]
592
592
  # price = 0 means that you have to remove the order from your book
593
- amount = size if (price > 0) else 0
594
- bookside.store(price, amount, id)
593
+ amount = size if Precise.string_gt(price, '0') else '0'
594
+ bookside.store(self.parse_number(price), self.parse_number(amount), id)
595
595
  else:
596
- amount = self.safe_number(deltas, 2)
597
- counter = self.safe_number(deltas, 1)
598
- price = self.safe_number(deltas, 0)
599
- size = -amount if (amount < 0) else amount
600
- side = 'asks' if (amount < 0) else 'bids'
596
+ amount = self.safe_string(deltas, 2)
597
+ counter = self.safe_string(deltas, 1)
598
+ price = self.safe_string(deltas, 0)
599
+ size = Precise.string_neg(amount) if Precise.string_lt(amount, '0') else amount
600
+ side = 'asks' if Precise.string_lt(amount, '0') else 'bids'
601
601
  bookside = orderbook[side]
602
- bookside.store(price, size, counter)
602
+ bookside.store(self.parse_number(price), self.parse_number(size), self.parse_number(counter))
603
603
  client.resolve(orderbook, messageHash)
604
604
 
605
605
  def handle_checksum(self, client: Client, message, subscription):
@@ -958,11 +958,11 @@ class bitfinex2(ccxt.async_support.bitfinex2):
958
958
  clientOrderId = self.safe_string(order, 1)
959
959
  marketId = self.safe_string(order, 3)
960
960
  symbol = self.safe_symbol(marketId)
961
- market = self.safe_market(marketId)
962
- amount = self.safe_number(order, 7)
961
+ market = self.safe_market(symbol)
962
+ amount = self.safe_string(order, 7)
963
963
  side = 'buy'
964
- if amount < 0:
965
- amount = abs(amount)
964
+ if Precise.string_lt(amount, '0'):
965
+ amount = Precise.string_abs(amount)
966
966
  side = 'sell'
967
967
  remaining = Precise.string_abs(self.safe_string(order, 6))
968
968
  type = self.safe_string(order, 8)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.0.48
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.48/dist/ccxt.browser.js
236
- * unpkg: https://unpkg.com/ccxt@4.0.48/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.48/dist/ccxt.browser.js
239
- * unpkg: https://unpkg.com/ccxt@4.0.48/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.48/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.48/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
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccxt",
3
- "version": "4.0.48",
3
+ "version": "4.0.49",
4
4
  "description": "A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges",
5
5
  "unpkg": "dist/ccxt.browser.js",
6
6
  "type": "module",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes