ccxt 4.3.19__tar.gz → 4.3.20__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (545) hide show
  1. {ccxt-4.3.19/ccxt.egg-info → ccxt-4.3.20}/PKG-INFO +4 -4
  2. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/__init__.py +1 -1
  3. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bitget.py +3 -0
  4. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/__init__.py +1 -1
  5. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/base/exchange.py +3 -1
  6. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bitget.py +3 -0
  7. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bybit.py +35 -9
  8. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/coinex.py +38 -23
  9. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/phemex.py +14 -6
  10. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/base/exchange.py +3 -1
  11. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bitget.py +3 -0
  12. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bybit.py +35 -9
  13. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/coinex.py +38 -23
  14. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/phemex.py +14 -6
  15. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/__init__.py +1 -1
  16. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/htx.py +12 -6
  17. {ccxt-4.3.19 → ccxt-4.3.20/ccxt.egg-info}/PKG-INFO +4 -4
  18. {ccxt-4.3.19 → ccxt-4.3.20}/package.json +1 -1
  19. {ccxt-4.3.19 → ccxt-4.3.20}/LICENSE.txt +0 -0
  20. {ccxt-4.3.19 → ccxt-4.3.20}/MANIFEST.in +0 -0
  21. {ccxt-4.3.19 → ccxt-4.3.20}/README.rst +0 -0
  22. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/__init__.py +0 -0
  23. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/ace.py +0 -0
  24. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/alpaca.py +0 -0
  25. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/ascendex.py +0 -0
  26. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bequant.py +0 -0
  27. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bigone.py +0 -0
  28. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/binance.py +0 -0
  29. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/binancecoinm.py +0 -0
  30. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/binanceus.py +0 -0
  31. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/binanceusdm.py +0 -0
  32. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bingx.py +0 -0
  33. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bit2c.py +0 -0
  34. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bitbank.py +0 -0
  35. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bitbay.py +0 -0
  36. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bitbns.py +0 -0
  37. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bitcoincom.py +0 -0
  38. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bitfinex.py +0 -0
  39. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bitfinex2.py +0 -0
  40. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bitflyer.py +0 -0
  41. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bithumb.py +0 -0
  42. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bitmart.py +0 -0
  43. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bitmex.py +0 -0
  44. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bitopro.py +0 -0
  45. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bitpanda.py +0 -0
  46. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bitrue.py +0 -0
  47. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bitso.py +0 -0
  48. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bitstamp.py +0 -0
  49. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bitteam.py +0 -0
  50. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bitvavo.py +0 -0
  51. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bl3p.py +0 -0
  52. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/blockchaincom.py +0 -0
  53. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/blofin.py +0 -0
  54. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/btcalpha.py +0 -0
  55. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/btcbox.py +0 -0
  56. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/btcmarkets.py +0 -0
  57. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/btcturk.py +0 -0
  58. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/bybit.py +0 -0
  59. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/cex.py +0 -0
  60. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/coinbase.py +0 -0
  61. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/coinbaseinternational.py +0 -0
  62. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/coinbasepro.py +0 -0
  63. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/coincheck.py +0 -0
  64. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/coinex.py +0 -0
  65. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/coinlist.py +0 -0
  66. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/coinmate.py +0 -0
  67. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/coinmetro.py +0 -0
  68. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/coinone.py +0 -0
  69. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/coinsph.py +0 -0
  70. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/coinspot.py +0 -0
  71. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/cryptocom.py +0 -0
  72. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/currencycom.py +0 -0
  73. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/delta.py +0 -0
  74. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/deribit.py +0 -0
  75. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/digifinex.py +0 -0
  76. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/exmo.py +0 -0
  77. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/fmfwio.py +0 -0
  78. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/gate.py +0 -0
  79. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/gateio.py +0 -0
  80. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/gemini.py +0 -0
  81. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/hitbtc.py +0 -0
  82. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/hitbtc3.py +0 -0
  83. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/hollaex.py +0 -0
  84. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/htx.py +0 -0
  85. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/huobi.py +0 -0
  86. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/huobijp.py +0 -0
  87. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/hyperliquid.py +0 -0
  88. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/idex.py +0 -0
  89. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/independentreserve.py +0 -0
  90. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/indodax.py +0 -0
  91. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/kraken.py +0 -0
  92. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/krakenfutures.py +0 -0
  93. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/kucoin.py +0 -0
  94. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/kucoinfutures.py +0 -0
  95. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/kuna.py +0 -0
  96. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/latoken.py +0 -0
  97. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/lbank.py +0 -0
  98. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/luno.py +0 -0
  99. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/lykke.py +0 -0
  100. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/mercado.py +0 -0
  101. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/mexc.py +0 -0
  102. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/ndax.py +0 -0
  103. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/novadax.py +0 -0
  104. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/oceanex.py +0 -0
  105. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/okcoin.py +0 -0
  106. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/okx.py +0 -0
  107. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/onetrading.py +0 -0
  108. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/p2b.py +0 -0
  109. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/paymium.py +0 -0
  110. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/phemex.py +0 -0
  111. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/poloniex.py +0 -0
  112. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/poloniexfutures.py +0 -0
  113. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/probit.py +0 -0
  114. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/timex.py +0 -0
  115. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/tokocrypto.py +0 -0
  116. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/tradeogre.py +0 -0
  117. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/upbit.py +0 -0
  118. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/wavesexchange.py +0 -0
  119. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/wazirx.py +0 -0
  120. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/whitebit.py +0 -0
  121. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/woo.py +0 -0
  122. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/woofipro.py +0 -0
  123. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/yobit.py +0 -0
  124. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/zaif.py +0 -0
  125. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/abstract/zonda.py +0 -0
  126. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/ace.py +0 -0
  127. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/alpaca.py +0 -0
  128. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/ascendex.py +0 -0
  129. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/ace.py +0 -0
  130. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/alpaca.py +0 -0
  131. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/ascendex.py +0 -0
  132. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/base/__init__.py +0 -0
  133. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/base/throttler.py +0 -0
  134. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/base/ws/__init__.py +0 -0
  135. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  136. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/base/ws/cache.py +0 -0
  137. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/base/ws/client.py +0 -0
  138. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/base/ws/fast_client.py +0 -0
  139. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/base/ws/functions.py +0 -0
  140. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/base/ws/future.py +0 -0
  141. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/base/ws/order_book.py +0 -0
  142. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  143. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bequant.py +0 -0
  144. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bigone.py +0 -0
  145. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/binance.py +0 -0
  146. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/binancecoinm.py +0 -0
  147. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/binanceus.py +0 -0
  148. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/binanceusdm.py +0 -0
  149. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bingx.py +0 -0
  150. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bit2c.py +0 -0
  151. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bitbank.py +0 -0
  152. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bitbay.py +0 -0
  153. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bitbns.py +0 -0
  154. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bitcoincom.py +0 -0
  155. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bitfinex.py +0 -0
  156. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bitfinex2.py +0 -0
  157. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bitflyer.py +0 -0
  158. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bithumb.py +0 -0
  159. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bitmart.py +0 -0
  160. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bitmex.py +0 -0
  161. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bitopro.py +0 -0
  162. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bitpanda.py +0 -0
  163. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bitrue.py +0 -0
  164. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bitso.py +0 -0
  165. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bitstamp.py +0 -0
  166. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bitteam.py +0 -0
  167. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bitvavo.py +0 -0
  168. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/bl3p.py +0 -0
  169. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/blockchaincom.py +0 -0
  170. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/blofin.py +0 -0
  171. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/btcalpha.py +0 -0
  172. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/btcbox.py +0 -0
  173. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/btcmarkets.py +0 -0
  174. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/btcturk.py +0 -0
  175. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/cex.py +0 -0
  176. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/coinbase.py +0 -0
  177. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/coinbaseinternational.py +0 -0
  178. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/coinbasepro.py +0 -0
  179. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/coincheck.py +0 -0
  180. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/coinlist.py +0 -0
  181. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/coinmate.py +0 -0
  182. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/coinmetro.py +0 -0
  183. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/coinone.py +0 -0
  184. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/coinsph.py +0 -0
  185. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/coinspot.py +0 -0
  186. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/cryptocom.py +0 -0
  187. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/currencycom.py +0 -0
  188. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/delta.py +0 -0
  189. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/deribit.py +0 -0
  190. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/digifinex.py +0 -0
  191. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/exmo.py +0 -0
  192. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/fmfwio.py +0 -0
  193. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/gate.py +0 -0
  194. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/gateio.py +0 -0
  195. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/gemini.py +0 -0
  196. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/hitbtc.py +0 -0
  197. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/hitbtc3.py +0 -0
  198. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/hollaex.py +0 -0
  199. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/htx.py +0 -0
  200. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/huobi.py +0 -0
  201. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/huobijp.py +0 -0
  202. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/hyperliquid.py +0 -0
  203. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/idex.py +0 -0
  204. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/independentreserve.py +0 -0
  205. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/indodax.py +0 -0
  206. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/kraken.py +0 -0
  207. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/krakenfutures.py +0 -0
  208. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/kucoin.py +0 -0
  209. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/kucoinfutures.py +0 -0
  210. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/kuna.py +0 -0
  211. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/latoken.py +0 -0
  212. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/lbank.py +0 -0
  213. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/luno.py +0 -0
  214. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/lykke.py +0 -0
  215. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/mercado.py +0 -0
  216. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/mexc.py +0 -0
  217. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/ndax.py +0 -0
  218. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/novadax.py +0 -0
  219. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/oceanex.py +0 -0
  220. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/okcoin.py +0 -0
  221. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/okx.py +0 -0
  222. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/onetrading.py +0 -0
  223. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/p2b.py +0 -0
  224. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/paymium.py +0 -0
  225. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/poloniex.py +0 -0
  226. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/poloniexfutures.py +0 -0
  227. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/probit.py +0 -0
  228. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/timex.py +0 -0
  229. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/tokocrypto.py +0 -0
  230. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/tradeogre.py +0 -0
  231. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/upbit.py +0 -0
  232. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/wavesexchange.py +0 -0
  233. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/wazirx.py +0 -0
  234. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/whitebit.py +0 -0
  235. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/woo.py +0 -0
  236. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/woofipro.py +0 -0
  237. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/yobit.py +0 -0
  238. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/zaif.py +0 -0
  239. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/async_support/zonda.py +0 -0
  240. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/base/__init__.py +0 -0
  241. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/base/decimal_to_precision.py +0 -0
  242. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/base/errors.py +0 -0
  243. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/base/precise.py +0 -0
  244. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/base/types.py +0 -0
  245. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bequant.py +0 -0
  246. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bigone.py +0 -0
  247. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/binance.py +0 -0
  248. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/binancecoinm.py +0 -0
  249. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/binanceus.py +0 -0
  250. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/binanceusdm.py +0 -0
  251. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bingx.py +0 -0
  252. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bit2c.py +0 -0
  253. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bitbank.py +0 -0
  254. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bitbay.py +0 -0
  255. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bitbns.py +0 -0
  256. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bitcoincom.py +0 -0
  257. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bitfinex.py +0 -0
  258. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bitfinex2.py +0 -0
  259. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bitflyer.py +0 -0
  260. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bithumb.py +0 -0
  261. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bitmart.py +0 -0
  262. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bitmex.py +0 -0
  263. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bitopro.py +0 -0
  264. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bitpanda.py +0 -0
  265. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bitrue.py +0 -0
  266. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bitso.py +0 -0
  267. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bitstamp.py +0 -0
  268. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bitteam.py +0 -0
  269. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bitvavo.py +0 -0
  270. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/bl3p.py +0 -0
  271. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/blockchaincom.py +0 -0
  272. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/blofin.py +0 -0
  273. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/btcalpha.py +0 -0
  274. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/btcbox.py +0 -0
  275. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/btcmarkets.py +0 -0
  276. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/btcturk.py +0 -0
  277. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/cex.py +0 -0
  278. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/coinbase.py +0 -0
  279. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/coinbaseinternational.py +0 -0
  280. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/coinbasepro.py +0 -0
  281. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/coincheck.py +0 -0
  282. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/coinlist.py +0 -0
  283. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/coinmate.py +0 -0
  284. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/coinmetro.py +0 -0
  285. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/coinone.py +0 -0
  286. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/coinsph.py +0 -0
  287. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/coinspot.py +0 -0
  288. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/cryptocom.py +0 -0
  289. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/currencycom.py +0 -0
  290. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/delta.py +0 -0
  291. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/deribit.py +0 -0
  292. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/digifinex.py +0 -0
  293. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/exmo.py +0 -0
  294. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/fmfwio.py +0 -0
  295. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/gate.py +0 -0
  296. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/gateio.py +0 -0
  297. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/gemini.py +0 -0
  298. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/hitbtc.py +0 -0
  299. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/hitbtc3.py +0 -0
  300. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/hollaex.py +0 -0
  301. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/htx.py +0 -0
  302. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/huobi.py +0 -0
  303. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/huobijp.py +0 -0
  304. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/hyperliquid.py +0 -0
  305. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/idex.py +0 -0
  306. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/independentreserve.py +0 -0
  307. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/indodax.py +0 -0
  308. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/kraken.py +0 -0
  309. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/krakenfutures.py +0 -0
  310. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/kucoin.py +0 -0
  311. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/kucoinfutures.py +0 -0
  312. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/kuna.py +0 -0
  313. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/latoken.py +0 -0
  314. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/lbank.py +0 -0
  315. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/luno.py +0 -0
  316. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/lykke.py +0 -0
  317. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/mercado.py +0 -0
  318. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/mexc.py +0 -0
  319. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/ndax.py +0 -0
  320. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/novadax.py +0 -0
  321. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/oceanex.py +0 -0
  322. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/okcoin.py +0 -0
  323. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/okx.py +0 -0
  324. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/onetrading.py +0 -0
  325. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/p2b.py +0 -0
  326. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/paymium.py +0 -0
  327. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/poloniex.py +0 -0
  328. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/poloniexfutures.py +0 -0
  329. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/alpaca.py +0 -0
  330. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/ascendex.py +0 -0
  331. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/bequant.py +0 -0
  332. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/binance.py +0 -0
  333. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/binancecoinm.py +0 -0
  334. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/binanceus.py +0 -0
  335. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/binanceusdm.py +0 -0
  336. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/bingx.py +0 -0
  337. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/bitcoincom.py +0 -0
  338. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/bitfinex.py +0 -0
  339. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/bitfinex2.py +0 -0
  340. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/bitget.py +0 -0
  341. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/bithumb.py +0 -0
  342. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/bitmart.py +0 -0
  343. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/bitmex.py +0 -0
  344. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/bitopro.py +0 -0
  345. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/bitpanda.py +0 -0
  346. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/bitrue.py +0 -0
  347. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/bitstamp.py +0 -0
  348. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/bitvavo.py +0 -0
  349. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/blockchaincom.py +0 -0
  350. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/bybit.py +0 -0
  351. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/cex.py +0 -0
  352. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/coinbase.py +0 -0
  353. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/coinbaseinternational.py +0 -0
  354. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/coinbasepro.py +0 -0
  355. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/coincheck.py +0 -0
  356. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/coinex.py +0 -0
  357. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/coinone.py +0 -0
  358. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/cryptocom.py +0 -0
  359. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/currencycom.py +0 -0
  360. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/deribit.py +0 -0
  361. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/exmo.py +0 -0
  362. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/gate.py +0 -0
  363. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/gateio.py +0 -0
  364. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/gemini.py +0 -0
  365. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/hitbtc.py +0 -0
  366. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/hollaex.py +0 -0
  367. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/huobi.py +0 -0
  368. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/huobijp.py +0 -0
  369. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/hyperliquid.py +0 -0
  370. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/idex.py +0 -0
  371. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/independentreserve.py +0 -0
  372. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/kraken.py +0 -0
  373. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/krakenfutures.py +0 -0
  374. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/kucoin.py +0 -0
  375. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/kucoinfutures.py +0 -0
  376. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/lbank.py +0 -0
  377. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/luno.py +0 -0
  378. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/mexc.py +0 -0
  379. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/ndax.py +0 -0
  380. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/okcoin.py +0 -0
  381. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/okx.py +0 -0
  382. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/onetrading.py +0 -0
  383. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/p2b.py +0 -0
  384. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/phemex.py +0 -0
  385. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/poloniex.py +0 -0
  386. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/poloniexfutures.py +0 -0
  387. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/probit.py +0 -0
  388. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/upbit.py +0 -0
  389. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/wazirx.py +0 -0
  390. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/whitebit.py +0 -0
  391. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/woo.py +0 -0
  392. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/pro/woofipro.py +0 -0
  393. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/probit.py +0 -0
  394. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/__init__.py +0 -0
  395. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  396. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  397. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  398. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  399. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  400. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  401. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  402. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  403. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  404. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  405. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
  406. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
  407. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
  408. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
  409. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
  410. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
  411. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
  412. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
  413. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
  414. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
  415. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
  416. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  417. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
  418. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
  419. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
  420. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  421. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
  422. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
  423. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
  424. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
  425. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
  426. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
  427. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
  428. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
  429. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  430. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
  431. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
  432. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
  433. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  434. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
  435. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
  436. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
  437. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
  438. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
  439. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
  440. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
  441. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
  442. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
  443. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  444. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
  445. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
  446. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
  447. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
  448. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
  449. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
  450. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
  451. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
  452. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
  453. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
  454. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
  455. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
  456. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
  457. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
  458. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
  459. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
  460. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
  461. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  462. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
  463. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
  464. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
  465. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
  466. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
  467. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  468. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  469. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
  470. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
  471. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/msgpack/ext.py +0 -0
  472. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
  473. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
  474. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
  475. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
  476. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
  477. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
  478. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
  479. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/toolz/__init__.py +0 -0
  480. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
  481. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/toolz/_version.py +0 -0
  482. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
  483. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
  484. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
  485. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
  486. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
  487. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
  488. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
  489. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/toolz/recipes.py +0 -0
  490. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/static_dependencies/toolz/utils.py +0 -0
  491. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/__init__.py +0 -0
  492. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/__init__.py +0 -0
  493. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_account.py +0 -0
  494. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_balance.py +0 -0
  495. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_borrow_interest.py +0 -0
  496. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_borrow_rate.py +0 -0
  497. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_calculate_fee.py +0 -0
  498. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_crypto.py +0 -0
  499. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_currency.py +0 -0
  500. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_datetime.py +0 -0
  501. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_decimal_to_precision.py +0 -0
  502. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_deep_extend.py +0 -0
  503. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
  504. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
  505. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_funding_rate_history.py +0 -0
  506. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_last_price.py +0 -0
  507. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_ledger_entry.py +0 -0
  508. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_ledger_item.py +0 -0
  509. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_leverage_tier.py +0 -0
  510. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_margin_mode.py +0 -0
  511. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_margin_modification.py +0 -0
  512. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_market.py +0 -0
  513. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_number.py +0 -0
  514. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_ohlcv.py +0 -0
  515. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_open_interest.py +0 -0
  516. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_order.py +0 -0
  517. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_order_book.py +0 -0
  518. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_position.py +0 -0
  519. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_shared_methods.py +0 -0
  520. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_status.py +0 -0
  521. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_throttle.py +0 -0
  522. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_ticker.py +0 -0
  523. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_trade.py +0 -0
  524. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_trading_fee.py +0 -0
  525. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/base/test_transaction.py +0 -0
  526. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/test_async.py +0 -0
  527. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/test/test_sync.py +0 -0
  528. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/timex.py +0 -0
  529. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/tokocrypto.py +0 -0
  530. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/tradeogre.py +0 -0
  531. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/upbit.py +0 -0
  532. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/wavesexchange.py +0 -0
  533. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/wazirx.py +0 -0
  534. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/whitebit.py +0 -0
  535. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/woo.py +0 -0
  536. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/woofipro.py +0 -0
  537. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/yobit.py +0 -0
  538. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/zaif.py +0 -0
  539. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt/zonda.py +0 -0
  540. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt.egg-info/SOURCES.txt +0 -0
  541. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt.egg-info/dependency_links.txt +0 -0
  542. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt.egg-info/requires.txt +0 -0
  543. {ccxt-4.3.19 → ccxt-4.3.20}/ccxt.egg-info/top_level.txt +0 -0
  544. {ccxt-4.3.19 → ccxt-4.3.20}/setup.cfg +0 -0
  545. {ccxt-4.3.19 → ccxt-4.3.20}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.3.19
3
+ Version: 4.3.20
4
4
  Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges
5
5
  Home-page: https://ccxt.com
6
6
  Author: Igor Kroitor
@@ -228,13 +228,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
228
228
 
229
229
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
230
230
 
231
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.19/dist/ccxt.browser.js
232
- * unpkg: https://unpkg.com/ccxt@4.3.19/dist/ccxt.browser.js
231
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.20/dist/ccxt.browser.js
232
+ * unpkg: https://unpkg.com/ccxt@4.3.20/dist/ccxt.browser.js
233
233
 
234
234
  CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
235
235
 
236
236
  ```HTML
237
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.19/dist/ccxt.browser.js"></script>
237
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.20/dist/ccxt.browser.js"></script>
238
238
  ```
239
239
 
240
240
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.3.19'
25
+ __version__ = '4.3.20'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -101,6 +101,9 @@ class ImplicitAPI:
101
101
  private_spot_get_v2_spot_account_subaccount_assets = privateSpotGetV2SpotAccountSubaccountAssets = Entry('v2/spot/account/subaccount-assets', ['private', 'spot'], 'GET', {'cost': 2})
102
102
  private_spot_get_v2_spot_account_bills = privateSpotGetV2SpotAccountBills = Entry('v2/spot/account/bills', ['private', 'spot'], 'GET', {'cost': 2})
103
103
  private_spot_get_v2_spot_account_transferrecords = privateSpotGetV2SpotAccountTransferRecords = Entry('v2/spot/account/transferRecords', ['private', 'spot'], 'GET', {'cost': 1})
104
+ private_spot_get_v2_account_funding_assets = privateSpotGetV2AccountFundingAssets = Entry('v2/account/funding-assets', ['private', 'spot'], 'GET', {'cost': 2})
105
+ private_spot_get_v2_account_bot_assets = privateSpotGetV2AccountBotAssets = Entry('v2/account/bot-assets', ['private', 'spot'], 'GET', {'cost': 2})
106
+ private_spot_get_v2_account_all_account_balance = privateSpotGetV2AccountAllAccountBalance = Entry('v2/account/all-account-balance', ['private', 'spot'], 'GET', {'cost': 20})
104
107
  private_spot_get_v2_spot_wallet_deposit_address = privateSpotGetV2SpotWalletDepositAddress = Entry('v2/spot/wallet/deposit-address', ['private', 'spot'], 'GET', {'cost': 2})
105
108
  private_spot_get_v2_spot_wallet_deposit_records = privateSpotGetV2SpotWalletDepositRecords = Entry('v2/spot/wallet/deposit-records', ['private', 'spot'], 'GET', {'cost': 2})
106
109
  private_spot_get_v2_spot_wallet_withdrawal_records = privateSpotGetV2SpotWalletWithdrawalRecords = Entry('v2/spot/wallet/withdrawal-records', ['private', 'spot'], 'GET', {'cost': 2})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.19'
7
+ __version__ = '4.3.20'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.3.19'
5
+ __version__ = '4.3.20'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -1841,6 +1841,8 @@ class Exchange(BaseExchange):
1841
1841
  response = None
1842
1842
  if method == 'fetchAccounts':
1843
1843
  response = await getattr(self, method)(params)
1844
+ elif method == 'getLeverageTiersPaginated':
1845
+ response = await getattr(self, method)(symbol, params)
1844
1846
  else:
1845
1847
  response = await getattr(self, method)(symbol, since, maxEntriesPerRequest, params)
1846
1848
  errors = 0
@@ -332,6 +332,9 @@ class bitget(Exchange, ImplicitAPI):
332
332
  'v2/spot/account/subaccount-assets': 2,
333
333
  'v2/spot/account/bills': 2,
334
334
  'v2/spot/account/transferRecords': 1,
335
+ 'v2/account/funding-assets': 2,
336
+ 'v2/account/bot-assets': 2,
337
+ 'v2/account/all-account-balance': 20,
335
338
  'v2/spot/wallet/deposit-address': 2,
336
339
  'v2/spot/wallet/deposit-records': 2,
337
340
  'v2/spot/wallet/withdrawal-records': 2,
@@ -7582,6 +7582,33 @@ class bybit(Exchange, ImplicitAPI):
7582
7582
  'datetime': self.iso8601(timestamp),
7583
7583
  })
7584
7584
 
7585
+ async def get_leverage_tiers_paginated(self, symbol: Str = None, params={}):
7586
+ await self.load_markets()
7587
+ market = None
7588
+ if symbol is not None:
7589
+ market = self.market(symbol)
7590
+ paginate = False
7591
+ paginate, params = self.handle_option_and_params(params, 'getLeverageTiersPaginated', 'paginate')
7592
+ if paginate:
7593
+ return await self.fetch_paginated_call_cursor('getLeverageTiersPaginated', symbol, None, None, params, 'nextPageCursor', 'cursor', None, 100)
7594
+ subType = None
7595
+ subType, params = self.handle_sub_type_and_params('getLeverageTiersPaginated', market, params, 'linear')
7596
+ request = {
7597
+ 'category': subType,
7598
+ }
7599
+ response = await self.publicGetV5MarketRiskLimit(self.extend(request, params))
7600
+ result = self.add_pagination_cursor_to_result(response)
7601
+ first = self.safe_dict(result, 0)
7602
+ total = len(result)
7603
+ lastIndex = total - 1
7604
+ last = self.safe_dict(result, lastIndex)
7605
+ cursorValue = self.safe_string(first, 'nextPageCursor')
7606
+ last['info'] = {
7607
+ 'nextPageCursor': cursorValue,
7608
+ }
7609
+ result[lastIndex] = last
7610
+ return result
7611
+
7585
7612
  async def fetch_leverage_tiers(self, symbols: Strings = None, params={}):
7586
7613
  """
7587
7614
  :see: https://bybit-exchange.github.io/docs/v5/market/risk-limit
@@ -7589,22 +7616,18 @@ class bybit(Exchange, ImplicitAPI):
7589
7616
  :param str[] [symbols]: a list of unified market symbols
7590
7617
  :param dict [params]: extra parameters specific to the exchange API endpoint
7591
7618
  :param str [params.subType]: market subType, ['linear', 'inverse'], default is 'linear'
7619
+ :param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
7592
7620
  :returns dict: a dictionary of `leverage tiers structures <https://docs.ccxt.com/#/?id=leverage-tiers-structure>`, indexed by market symbols
7593
7621
  """
7594
7622
  await self.load_markets()
7595
7623
  market = None
7624
+ symbol = None
7596
7625
  if symbols is not None:
7597
7626
  market = self.market(symbols[0])
7598
7627
  if market['spot']:
7599
7628
  raise NotSupported(self.id + ' fetchLeverageTiers() is not supported for spot market')
7600
- subType = None
7601
- subType, params = self.handle_sub_type_and_params('fetchTickers', market, params, 'linear')
7602
- request = {
7603
- 'category': subType,
7604
- }
7605
- response = await self.publicGetV5MarketRiskLimit(self.extend(request, params))
7606
- result = self.safe_dict(response, 'result', {})
7607
- data = self.safe_list(result, 'list', [])
7629
+ symbol = market['symbol']
7630
+ data = await self.get_leverage_tiers_paginated(symbol, self.extend({'paginate': True, 'paginationCalls': 20}, params))
7608
7631
  symbols = self.market_symbols(symbols)
7609
7632
  return self.parse_leverage_tiers(data, symbols, 'symbol')
7610
7633
 
@@ -7630,9 +7653,12 @@ class bybit(Exchange, ImplicitAPI):
7630
7653
  for i in range(0, len(keys)):
7631
7654
  marketId = keys[i]
7632
7655
  entry = grouped[marketId]
7656
+ for j in range(0, len(entry)):
7657
+ id = self.safe_integer(entry[j], 'id')
7658
+ entry[j]['id'] = id
7633
7659
  market = self.safe_market(marketId, None, None, 'contract')
7634
7660
  symbol = market['symbol']
7635
- tiers[symbol] = self.parse_market_leverage_tiers(entry, market)
7661
+ tiers[symbol] = self.parse_market_leverage_tiers(self.sort_by(entry, 'id'), market)
7636
7662
  return tiers
7637
7663
 
7638
7664
  def parse_market_leverage_tiers(self, info, market: Market = None):
@@ -3925,47 +3925,62 @@ class coinex(Exchange, ImplicitAPI):
3925
3925
  async def fetch_leverage_tiers(self, symbols: Strings = None, params={}):
3926
3926
  """
3927
3927
  retrieve information on the maximum leverage, and maintenance margin for trades of varying trade sizes
3928
- :see: https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http007_market_limit
3928
+ :see: https://docs.coinex.com/api/v2/futures/market/http/list-market-position-level
3929
3929
  :param str[]|None symbols: list of unified market symbols
3930
3930
  :param dict [params]: extra parameters specific to the exchange API endpoint
3931
3931
  :returns dict: a dictionary of `leverage tiers structures <https://docs.ccxt.com/#/?id=leverage-tiers-structure>`, indexed by market symbols
3932
3932
  """
3933
3933
  await self.load_markets()
3934
- response = await self.v1PerpetualPublicGetMarketLimitConfig(params)
3934
+ request = {}
3935
+ if symbols is not None:
3936
+ marketIds = self.market_ids(symbols)
3937
+ request['market'] = ','.join(marketIds)
3938
+ response = await self.v2PublicGetFuturesPositionLevel(self.extend(request, params))
3935
3939
  #
3936
3940
  # {
3937
3941
  # "code": 0,
3938
- # "data": {
3939
- # "BTCUSD": [
3940
- # ["500001", "100", "0.005"],
3941
- # ["1000001", "50", "0.01"],
3942
- # ["2000001", "30", "0.015"],
3943
- # ["5000001", "20", "0.02"],
3944
- # ["10000001", "15", "0.025"],
3945
- # ["20000001", "10", "0.03"]
3946
- # ],
3947
- # ...
3948
- # },
3942
+ # "data": [
3943
+ # {
3944
+ # "level": [
3945
+ # {
3946
+ # "amount": "20001",
3947
+ # "leverage": "20",
3948
+ # "maintenance_margin_rate": "0.02",
3949
+ # "min_initial_margin_rate": "0.05"
3950
+ # },
3951
+ # {
3952
+ # "amount": "50001",
3953
+ # "leverage": "10",
3954
+ # "maintenance_margin_rate": "0.04",
3955
+ # "min_initial_margin_rate": "0.1"
3956
+ # },
3957
+ # ],
3958
+ # "market": "MINAUSDT"
3959
+ # },
3960
+ # ],
3949
3961
  # "message": "OK"
3950
3962
  # }
3951
3963
  #
3952
- data = self.safe_value(response, 'data', {})
3953
- return self.parse_leverage_tiers(data, symbols, None)
3964
+ data = self.safe_list(response, 'data', [])
3965
+ return self.parse_leverage_tiers(data, symbols, 'market')
3954
3966
 
3955
- def parse_market_leverage_tiers(self, item, market: Market = None):
3967
+ def parse_market_leverage_tiers(self, info, market: Market = None):
3956
3968
  tiers = []
3969
+ brackets = self.safe_list(info, 'level', [])
3957
3970
  minNotional = 0
3958
- for j in range(0, len(item)):
3959
- bracket = item[j]
3960
- maxNotional = self.safe_number(bracket, 0)
3971
+ for i in range(0, len(brackets)):
3972
+ tier = brackets[i]
3973
+ marketId = self.safe_string(info, 'market')
3974
+ market = self.safe_market(marketId, market, None, 'swap')
3975
+ maxNotional = self.safe_number(tier, 'amount')
3961
3976
  tiers.append({
3962
- 'tier': j + 1,
3977
+ 'tier': self.sum(i, 1),
3963
3978
  'currency': market['base'] if market['linear'] else market['quote'],
3964
3979
  'minNotional': minNotional,
3965
3980
  'maxNotional': maxNotional,
3966
- 'maintenanceMarginRate': self.safe_number(bracket, 2),
3967
- 'maxLeverage': self.safe_integer(bracket, 1),
3968
- 'info': bracket,
3981
+ 'maintenanceMarginRate': self.safe_number(tier, 'maintenance_margin_rate'),
3982
+ 'maxLeverage': self.safe_integer(tier, 'leverage'),
3983
+ 'info': tier,
3969
3984
  })
3970
3985
  minNotional = maxNotional
3971
3986
  return tiers
@@ -2347,12 +2347,14 @@ class phemex(Exchange, ImplicitAPI):
2347
2347
  """
2348
2348
  create a trade order
2349
2349
  :see: https://github.com/phemex/phemex-api-docs/blob/master/Public-Hedged-Perpetual-API.md#place-order
2350
+ :see: https://phemex-docs.github.io/#place-order-http-put-prefered-3
2350
2351
  :param str symbol: unified symbol of the market to create an order in
2351
2352
  :param str type: 'market' or 'limit'
2352
2353
  :param str side: 'buy' or 'sell'
2353
2354
  :param float amount: how much of currency you want to trade in units of base currency
2354
2355
  :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
2355
2356
  :param dict [params]: extra parameters specific to the exchange API endpoint
2357
+ :param float [params.trigger]: trigger price for conditional orders
2356
2358
  :param dict [params.takeProfit]: *swap only* *takeProfit object in params* containing the triggerPrice at which the attached take profit order will be triggered(perpetual swap markets only)
2357
2359
  :param float [params.takeProfit.triggerPrice]: take profit trigger price
2358
2360
  :param dict [params.stopLoss]: *swap only* *stopLoss object in params* containing the triggerPrice at which the attached stop loss order will be triggered(perpetual swap markets only)
@@ -2363,7 +2365,7 @@ class phemex(Exchange, ImplicitAPI):
2363
2365
  market = self.market(symbol)
2364
2366
  requestSide = self.capitalize(side)
2365
2367
  type = self.capitalize(type)
2366
- reduceOnly = self.safe_value(params, 'reduceOnly')
2368
+ reduceOnly = self.safe_bool(params, 'reduceOnly')
2367
2369
  request = {
2368
2370
  # common
2369
2371
  'symbol': market['id'],
@@ -2404,18 +2406,24 @@ class phemex(Exchange, ImplicitAPI):
2404
2406
  else:
2405
2407
  request['clOrdID'] = clientOrderId
2406
2408
  params = self.omit(params, ['clOrdID', 'clientOrderId'])
2407
- stopPrice = self.safe_string_n(params, ['stopPx', 'stopPrice', 'triggerPrice'])
2408
- if stopPrice is not None:
2409
+ triggerPrice = self.safe_string_n(params, ['stopPx', 'stopPrice', 'triggerPrice'])
2410
+ if triggerPrice is not None:
2409
2411
  if market['settle'] == 'USDT':
2410
- request['stopPxRp'] = self.price_to_precision(symbol, stopPrice)
2412
+ request['stopPxRp'] = self.price_to_precision(symbol, triggerPrice)
2411
2413
  else:
2412
- request['stopPxEp'] = self.to_ep(stopPrice, market)
2414
+ request['stopPxEp'] = self.to_ep(triggerPrice, market)
2413
2415
  params = self.omit(params, ['stopPx', 'stopPrice', 'stopLoss', 'takeProfit', 'triggerPrice'])
2414
2416
  if market['spot']:
2415
2417
  qtyType = self.safe_value(params, 'qtyType', 'ByBase')
2416
2418
  if (type == 'Market') or (type == 'Stop') or (type == 'MarketIfTouched'):
2417
2419
  if price is not None:
2418
2420
  qtyType = 'ByQuote'
2421
+ if triggerPrice is not None:
2422
+ if type == 'Limit':
2423
+ request['ordType'] = 'StopLimit'
2424
+ elif type == 'Market':
2425
+ request['ordType'] = 'Stop'
2426
+ request['trigger'] = 'ByLastPrice'
2419
2427
  request['qtyType'] = qtyType
2420
2428
  if qtyType == 'ByQuote':
2421
2429
  cost = self.safe_number(params, 'cost')
@@ -2446,7 +2454,7 @@ class phemex(Exchange, ImplicitAPI):
2446
2454
  request['orderQtyRq'] = amount
2447
2455
  else:
2448
2456
  request['orderQty'] = self.parse_to_int(amount)
2449
- if stopPrice is not None:
2457
+ if triggerPrice is not None:
2450
2458
  triggerType = self.safe_string(params, 'triggerType', 'ByMarkPrice')
2451
2459
  request['triggerType'] = triggerType
2452
2460
  if stopLossDefined or takeProfitDefined:
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.19'
7
+ __version__ = '4.3.20'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -5559,6 +5559,8 @@ class Exchange(object):
5559
5559
  response = None
5560
5560
  if method == 'fetchAccounts':
5561
5561
  response = getattr(self, method)(params)
5562
+ elif method == 'getLeverageTiersPaginated':
5563
+ response = getattr(self, method)(symbol, params)
5562
5564
  else:
5563
5565
  response = getattr(self, method)(symbol, since, maxEntriesPerRequest, params)
5564
5566
  errors = 0
@@ -331,6 +331,9 @@ class bitget(Exchange, ImplicitAPI):
331
331
  'v2/spot/account/subaccount-assets': 2,
332
332
  'v2/spot/account/bills': 2,
333
333
  'v2/spot/account/transferRecords': 1,
334
+ 'v2/account/funding-assets': 2,
335
+ 'v2/account/bot-assets': 2,
336
+ 'v2/account/all-account-balance': 20,
334
337
  'v2/spot/wallet/deposit-address': 2,
335
338
  'v2/spot/wallet/deposit-records': 2,
336
339
  'v2/spot/wallet/withdrawal-records': 2,
@@ -7581,6 +7581,33 @@ class bybit(Exchange, ImplicitAPI):
7581
7581
  'datetime': self.iso8601(timestamp),
7582
7582
  })
7583
7583
 
7584
+ def get_leverage_tiers_paginated(self, symbol: Str = None, params={}):
7585
+ self.load_markets()
7586
+ market = None
7587
+ if symbol is not None:
7588
+ market = self.market(symbol)
7589
+ paginate = False
7590
+ paginate, params = self.handle_option_and_params(params, 'getLeverageTiersPaginated', 'paginate')
7591
+ if paginate:
7592
+ return self.fetch_paginated_call_cursor('getLeverageTiersPaginated', symbol, None, None, params, 'nextPageCursor', 'cursor', None, 100)
7593
+ subType = None
7594
+ subType, params = self.handle_sub_type_and_params('getLeverageTiersPaginated', market, params, 'linear')
7595
+ request = {
7596
+ 'category': subType,
7597
+ }
7598
+ response = self.publicGetV5MarketRiskLimit(self.extend(request, params))
7599
+ result = self.add_pagination_cursor_to_result(response)
7600
+ first = self.safe_dict(result, 0)
7601
+ total = len(result)
7602
+ lastIndex = total - 1
7603
+ last = self.safe_dict(result, lastIndex)
7604
+ cursorValue = self.safe_string(first, 'nextPageCursor')
7605
+ last['info'] = {
7606
+ 'nextPageCursor': cursorValue,
7607
+ }
7608
+ result[lastIndex] = last
7609
+ return result
7610
+
7584
7611
  def fetch_leverage_tiers(self, symbols: Strings = None, params={}):
7585
7612
  """
7586
7613
  :see: https://bybit-exchange.github.io/docs/v5/market/risk-limit
@@ -7588,22 +7615,18 @@ class bybit(Exchange, ImplicitAPI):
7588
7615
  :param str[] [symbols]: a list of unified market symbols
7589
7616
  :param dict [params]: extra parameters specific to the exchange API endpoint
7590
7617
  :param str [params.subType]: market subType, ['linear', 'inverse'], default is 'linear'
7618
+ :param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
7591
7619
  :returns dict: a dictionary of `leverage tiers structures <https://docs.ccxt.com/#/?id=leverage-tiers-structure>`, indexed by market symbols
7592
7620
  """
7593
7621
  self.load_markets()
7594
7622
  market = None
7623
+ symbol = None
7595
7624
  if symbols is not None:
7596
7625
  market = self.market(symbols[0])
7597
7626
  if market['spot']:
7598
7627
  raise NotSupported(self.id + ' fetchLeverageTiers() is not supported for spot market')
7599
- subType = None
7600
- subType, params = self.handle_sub_type_and_params('fetchTickers', market, params, 'linear')
7601
- request = {
7602
- 'category': subType,
7603
- }
7604
- response = self.publicGetV5MarketRiskLimit(self.extend(request, params))
7605
- result = self.safe_dict(response, 'result', {})
7606
- data = self.safe_list(result, 'list', [])
7628
+ symbol = market['symbol']
7629
+ data = self.get_leverage_tiers_paginated(symbol, self.extend({'paginate': True, 'paginationCalls': 20}, params))
7607
7630
  symbols = self.market_symbols(symbols)
7608
7631
  return self.parse_leverage_tiers(data, symbols, 'symbol')
7609
7632
 
@@ -7629,9 +7652,12 @@ class bybit(Exchange, ImplicitAPI):
7629
7652
  for i in range(0, len(keys)):
7630
7653
  marketId = keys[i]
7631
7654
  entry = grouped[marketId]
7655
+ for j in range(0, len(entry)):
7656
+ id = self.safe_integer(entry[j], 'id')
7657
+ entry[j]['id'] = id
7632
7658
  market = self.safe_market(marketId, None, None, 'contract')
7633
7659
  symbol = market['symbol']
7634
- tiers[symbol] = self.parse_market_leverage_tiers(entry, market)
7660
+ tiers[symbol] = self.parse_market_leverage_tiers(self.sort_by(entry, 'id'), market)
7635
7661
  return tiers
7636
7662
 
7637
7663
  def parse_market_leverage_tiers(self, info, market: Market = None):
@@ -3924,47 +3924,62 @@ class coinex(Exchange, ImplicitAPI):
3924
3924
  def fetch_leverage_tiers(self, symbols: Strings = None, params={}):
3925
3925
  """
3926
3926
  retrieve information on the maximum leverage, and maintenance margin for trades of varying trade sizes
3927
- :see: https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http007_market_limit
3927
+ :see: https://docs.coinex.com/api/v2/futures/market/http/list-market-position-level
3928
3928
  :param str[]|None symbols: list of unified market symbols
3929
3929
  :param dict [params]: extra parameters specific to the exchange API endpoint
3930
3930
  :returns dict: a dictionary of `leverage tiers structures <https://docs.ccxt.com/#/?id=leverage-tiers-structure>`, indexed by market symbols
3931
3931
  """
3932
3932
  self.load_markets()
3933
- response = self.v1PerpetualPublicGetMarketLimitConfig(params)
3933
+ request = {}
3934
+ if symbols is not None:
3935
+ marketIds = self.market_ids(symbols)
3936
+ request['market'] = ','.join(marketIds)
3937
+ response = self.v2PublicGetFuturesPositionLevel(self.extend(request, params))
3934
3938
  #
3935
3939
  # {
3936
3940
  # "code": 0,
3937
- # "data": {
3938
- # "BTCUSD": [
3939
- # ["500001", "100", "0.005"],
3940
- # ["1000001", "50", "0.01"],
3941
- # ["2000001", "30", "0.015"],
3942
- # ["5000001", "20", "0.02"],
3943
- # ["10000001", "15", "0.025"],
3944
- # ["20000001", "10", "0.03"]
3945
- # ],
3946
- # ...
3947
- # },
3941
+ # "data": [
3942
+ # {
3943
+ # "level": [
3944
+ # {
3945
+ # "amount": "20001",
3946
+ # "leverage": "20",
3947
+ # "maintenance_margin_rate": "0.02",
3948
+ # "min_initial_margin_rate": "0.05"
3949
+ # },
3950
+ # {
3951
+ # "amount": "50001",
3952
+ # "leverage": "10",
3953
+ # "maintenance_margin_rate": "0.04",
3954
+ # "min_initial_margin_rate": "0.1"
3955
+ # },
3956
+ # ],
3957
+ # "market": "MINAUSDT"
3958
+ # },
3959
+ # ],
3948
3960
  # "message": "OK"
3949
3961
  # }
3950
3962
  #
3951
- data = self.safe_value(response, 'data', {})
3952
- return self.parse_leverage_tiers(data, symbols, None)
3963
+ data = self.safe_list(response, 'data', [])
3964
+ return self.parse_leverage_tiers(data, symbols, 'market')
3953
3965
 
3954
- def parse_market_leverage_tiers(self, item, market: Market = None):
3966
+ def parse_market_leverage_tiers(self, info, market: Market = None):
3955
3967
  tiers = []
3968
+ brackets = self.safe_list(info, 'level', [])
3956
3969
  minNotional = 0
3957
- for j in range(0, len(item)):
3958
- bracket = item[j]
3959
- maxNotional = self.safe_number(bracket, 0)
3970
+ for i in range(0, len(brackets)):
3971
+ tier = brackets[i]
3972
+ marketId = self.safe_string(info, 'market')
3973
+ market = self.safe_market(marketId, market, None, 'swap')
3974
+ maxNotional = self.safe_number(tier, 'amount')
3960
3975
  tiers.append({
3961
- 'tier': j + 1,
3976
+ 'tier': self.sum(i, 1),
3962
3977
  'currency': market['base'] if market['linear'] else market['quote'],
3963
3978
  'minNotional': minNotional,
3964
3979
  'maxNotional': maxNotional,
3965
- 'maintenanceMarginRate': self.safe_number(bracket, 2),
3966
- 'maxLeverage': self.safe_integer(bracket, 1),
3967
- 'info': bracket,
3980
+ 'maintenanceMarginRate': self.safe_number(tier, 'maintenance_margin_rate'),
3981
+ 'maxLeverage': self.safe_integer(tier, 'leverage'),
3982
+ 'info': tier,
3968
3983
  })
3969
3984
  minNotional = maxNotional
3970
3985
  return tiers
@@ -2347,12 +2347,14 @@ class phemex(Exchange, ImplicitAPI):
2347
2347
  """
2348
2348
  create a trade order
2349
2349
  :see: https://github.com/phemex/phemex-api-docs/blob/master/Public-Hedged-Perpetual-API.md#place-order
2350
+ :see: https://phemex-docs.github.io/#place-order-http-put-prefered-3
2350
2351
  :param str symbol: unified symbol of the market to create an order in
2351
2352
  :param str type: 'market' or 'limit'
2352
2353
  :param str side: 'buy' or 'sell'
2353
2354
  :param float amount: how much of currency you want to trade in units of base currency
2354
2355
  :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
2355
2356
  :param dict [params]: extra parameters specific to the exchange API endpoint
2357
+ :param float [params.trigger]: trigger price for conditional orders
2356
2358
  :param dict [params.takeProfit]: *swap only* *takeProfit object in params* containing the triggerPrice at which the attached take profit order will be triggered(perpetual swap markets only)
2357
2359
  :param float [params.takeProfit.triggerPrice]: take profit trigger price
2358
2360
  :param dict [params.stopLoss]: *swap only* *stopLoss object in params* containing the triggerPrice at which the attached stop loss order will be triggered(perpetual swap markets only)
@@ -2363,7 +2365,7 @@ class phemex(Exchange, ImplicitAPI):
2363
2365
  market = self.market(symbol)
2364
2366
  requestSide = self.capitalize(side)
2365
2367
  type = self.capitalize(type)
2366
- reduceOnly = self.safe_value(params, 'reduceOnly')
2368
+ reduceOnly = self.safe_bool(params, 'reduceOnly')
2367
2369
  request = {
2368
2370
  # common
2369
2371
  'symbol': market['id'],
@@ -2404,18 +2406,24 @@ class phemex(Exchange, ImplicitAPI):
2404
2406
  else:
2405
2407
  request['clOrdID'] = clientOrderId
2406
2408
  params = self.omit(params, ['clOrdID', 'clientOrderId'])
2407
- stopPrice = self.safe_string_n(params, ['stopPx', 'stopPrice', 'triggerPrice'])
2408
- if stopPrice is not None:
2409
+ triggerPrice = self.safe_string_n(params, ['stopPx', 'stopPrice', 'triggerPrice'])
2410
+ if triggerPrice is not None:
2409
2411
  if market['settle'] == 'USDT':
2410
- request['stopPxRp'] = self.price_to_precision(symbol, stopPrice)
2412
+ request['stopPxRp'] = self.price_to_precision(symbol, triggerPrice)
2411
2413
  else:
2412
- request['stopPxEp'] = self.to_ep(stopPrice, market)
2414
+ request['stopPxEp'] = self.to_ep(triggerPrice, market)
2413
2415
  params = self.omit(params, ['stopPx', 'stopPrice', 'stopLoss', 'takeProfit', 'triggerPrice'])
2414
2416
  if market['spot']:
2415
2417
  qtyType = self.safe_value(params, 'qtyType', 'ByBase')
2416
2418
  if (type == 'Market') or (type == 'Stop') or (type == 'MarketIfTouched'):
2417
2419
  if price is not None:
2418
2420
  qtyType = 'ByQuote'
2421
+ if triggerPrice is not None:
2422
+ if type == 'Limit':
2423
+ request['ordType'] = 'StopLimit'
2424
+ elif type == 'Market':
2425
+ request['ordType'] = 'Stop'
2426
+ request['trigger'] = 'ByLastPrice'
2419
2427
  request['qtyType'] = qtyType
2420
2428
  if qtyType == 'ByQuote':
2421
2429
  cost = self.safe_number(params, 'cost')
@@ -2446,7 +2454,7 @@ class phemex(Exchange, ImplicitAPI):
2446
2454
  request['orderQtyRq'] = amount
2447
2455
  else:
2448
2456
  request['orderQty'] = self.parse_to_int(amount)
2449
- if stopPrice is not None:
2457
+ if triggerPrice is not None:
2450
2458
  triggerType = self.safe_string(params, 'triggerType', 'ByMarkPrice')
2451
2459
  request['triggerType'] = triggerType
2452
2460
  if stopLossDefined or takeProfitDefined:
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.19'
7
+ __version__ = '4.3.20'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10