ccxt 4.2.47__tar.gz → 4.2.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.
Files changed (449) hide show
  1. {ccxt-4.2.47/ccxt.egg-info → ccxt-4.2.49}/PKG-INFO +4 -4
  2. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/__init__.py +1 -1
  3. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bitstamp.py +8 -0
  4. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/indodax.py +9 -8
  5. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/__init__.py +1 -1
  6. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/base/exchange.py +1 -1
  7. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/binance.py +9 -4
  8. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bitmart.py +24 -2
  9. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bitstamp.py +8 -0
  10. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/btcalpha.py +4 -0
  11. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/btcmarkets.py +4 -0
  12. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/btcturk.py +4 -0
  13. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bybit.py +132 -6
  14. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/idex.py +48 -1
  15. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/independentreserve.py +47 -1
  16. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/indodax.py +115 -19
  17. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/latoken.py +16 -0
  18. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/luno.py +18 -0
  19. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/lykke.py +19 -0
  20. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/ndax.py +18 -0
  21. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/okx.py +32 -5
  22. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/upbit.py +92 -17
  23. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/base/exchange.py +2 -2
  24. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/binance.py +9 -4
  25. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bitmart.py +24 -2
  26. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bitstamp.py +8 -0
  27. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/btcalpha.py +4 -0
  28. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/btcmarkets.py +4 -0
  29. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/btcturk.py +4 -0
  30. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bybit.py +132 -6
  31. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/idex.py +48 -1
  32. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/independentreserve.py +47 -1
  33. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/indodax.py +115 -19
  34. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/latoken.py +16 -0
  35. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/luno.py +18 -0
  36. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/lykke.py +19 -0
  37. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/ndax.py +18 -0
  38. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/okx.py +32 -5
  39. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/__init__.py +1 -1
  40. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/ascendex.py +19 -7
  41. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/bitget.py +24 -7
  42. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/bitstamp.py +1 -1
  43. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/hitbtc.py +6 -11
  44. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/mexc.py +2 -1
  45. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/test_async.py +10 -10
  46. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/test_sync.py +10 -10
  47. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/upbit.py +92 -17
  48. {ccxt-4.2.47 → ccxt-4.2.49/ccxt.egg-info}/PKG-INFO +4 -4
  49. {ccxt-4.2.47 → ccxt-4.2.49}/package.json +3 -1
  50. {ccxt-4.2.47 → ccxt-4.2.49}/LICENSE.txt +0 -0
  51. {ccxt-4.2.47 → ccxt-4.2.49}/MANIFEST.in +0 -0
  52. {ccxt-4.2.47 → ccxt-4.2.49}/README.rst +0 -0
  53. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/__init__.py +0 -0
  54. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/ace.py +0 -0
  55. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/alpaca.py +0 -0
  56. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/ascendex.py +0 -0
  57. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bequant.py +0 -0
  58. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bigone.py +0 -0
  59. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/binance.py +0 -0
  60. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/binancecoinm.py +0 -0
  61. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/binanceus.py +0 -0
  62. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/binanceusdm.py +0 -0
  63. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bingx.py +0 -0
  64. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bit2c.py +0 -0
  65. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bitbank.py +0 -0
  66. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bitbay.py +0 -0
  67. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bitbns.py +0 -0
  68. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bitcoincom.py +0 -0
  69. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bitfinex.py +0 -0
  70. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bitfinex2.py +0 -0
  71. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bitflyer.py +0 -0
  72. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bitforex.py +0 -0
  73. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bitget.py +0 -0
  74. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bithumb.py +0 -0
  75. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bitmart.py +0 -0
  76. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bitmex.py +0 -0
  77. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bitopro.py +0 -0
  78. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bitpanda.py +0 -0
  79. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bitrue.py +0 -0
  80. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bitso.py +0 -0
  81. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bitteam.py +0 -0
  82. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bitvavo.py +0 -0
  83. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bl3p.py +0 -0
  84. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/blockchaincom.py +0 -0
  85. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/blofin.py +0 -0
  86. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/btcalpha.py +0 -0
  87. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/btcbox.py +0 -0
  88. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/btcmarkets.py +0 -0
  89. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/btcturk.py +0 -0
  90. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/bybit.py +0 -0
  91. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/cex.py +0 -0
  92. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/coinbase.py +0 -0
  93. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/coinbasepro.py +0 -0
  94. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/coincheck.py +0 -0
  95. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/coinex.py +0 -0
  96. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/coinlist.py +0 -0
  97. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/coinmate.py +0 -0
  98. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/coinmetro.py +0 -0
  99. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/coinone.py +0 -0
  100. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/coinsph.py +0 -0
  101. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/coinspot.py +0 -0
  102. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/cryptocom.py +0 -0
  103. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/currencycom.py +0 -0
  104. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/delta.py +0 -0
  105. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/deribit.py +0 -0
  106. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/digifinex.py +0 -0
  107. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/exmo.py +0 -0
  108. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/fmfwio.py +0 -0
  109. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/gate.py +0 -0
  110. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/gateio.py +0 -0
  111. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/gemini.py +0 -0
  112. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/hitbtc.py +0 -0
  113. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/hitbtc3.py +0 -0
  114. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/hollaex.py +0 -0
  115. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/htx.py +0 -0
  116. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/huobi.py +0 -0
  117. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/huobijp.py +0 -0
  118. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/idex.py +0 -0
  119. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/independentreserve.py +0 -0
  120. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/kraken.py +0 -0
  121. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/krakenfutures.py +0 -0
  122. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/kucoin.py +0 -0
  123. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/kucoinfutures.py +0 -0
  124. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/kuna.py +0 -0
  125. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/latoken.py +0 -0
  126. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/lbank.py +0 -0
  127. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/luno.py +0 -0
  128. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/lykke.py +0 -0
  129. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/mercado.py +0 -0
  130. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/mexc.py +0 -0
  131. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/ndax.py +0 -0
  132. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/novadax.py +0 -0
  133. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/oceanex.py +0 -0
  134. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/okcoin.py +0 -0
  135. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/okx.py +0 -0
  136. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/onetrading.py +0 -0
  137. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/p2b.py +0 -0
  138. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/paymium.py +0 -0
  139. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/phemex.py +0 -0
  140. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/poloniex.py +0 -0
  141. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/poloniexfutures.py +0 -0
  142. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/probit.py +0 -0
  143. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/timex.py +0 -0
  144. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/tokocrypto.py +0 -0
  145. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/upbit.py +0 -0
  146. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/wavesexchange.py +0 -0
  147. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/wazirx.py +0 -0
  148. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/whitebit.py +0 -0
  149. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/woo.py +0 -0
  150. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/yobit.py +0 -0
  151. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/zaif.py +0 -0
  152. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/abstract/zonda.py +0 -0
  153. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/ace.py +0 -0
  154. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/alpaca.py +0 -0
  155. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/ascendex.py +0 -0
  156. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/ace.py +0 -0
  157. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/alpaca.py +0 -0
  158. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/ascendex.py +0 -0
  159. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/base/__init__.py +0 -0
  160. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/base/throttler.py +0 -0
  161. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/base/ws/__init__.py +0 -0
  162. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  163. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/base/ws/cache.py +0 -0
  164. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/base/ws/client.py +0 -0
  165. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/base/ws/fast_client.py +0 -0
  166. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/base/ws/functions.py +0 -0
  167. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/base/ws/future.py +0 -0
  168. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/base/ws/order_book.py +0 -0
  169. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  170. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bequant.py +0 -0
  171. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bigone.py +0 -0
  172. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/binancecoinm.py +0 -0
  173. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/binanceus.py +0 -0
  174. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/binanceusdm.py +0 -0
  175. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bingx.py +0 -0
  176. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bit2c.py +0 -0
  177. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bitbank.py +0 -0
  178. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bitbay.py +0 -0
  179. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bitbns.py +0 -0
  180. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bitcoincom.py +0 -0
  181. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bitfinex.py +0 -0
  182. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bitfinex2.py +0 -0
  183. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bitflyer.py +0 -0
  184. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bitforex.py +0 -0
  185. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bitget.py +0 -0
  186. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bithumb.py +0 -0
  187. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bitmex.py +0 -0
  188. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bitopro.py +0 -0
  189. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bitpanda.py +0 -0
  190. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bitrue.py +0 -0
  191. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bitso.py +0 -0
  192. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bitteam.py +0 -0
  193. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bitvavo.py +0 -0
  194. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/bl3p.py +0 -0
  195. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/blockchaincom.py +0 -0
  196. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/blofin.py +0 -0
  197. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/btcbox.py +0 -0
  198. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/cex.py +0 -0
  199. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/coinbase.py +0 -0
  200. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/coinbasepro.py +0 -0
  201. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/coincheck.py +0 -0
  202. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/coinex.py +0 -0
  203. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/coinlist.py +0 -0
  204. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/coinmate.py +0 -0
  205. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/coinmetro.py +0 -0
  206. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/coinone.py +0 -0
  207. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/coinsph.py +0 -0
  208. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/coinspot.py +0 -0
  209. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/cryptocom.py +0 -0
  210. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/currencycom.py +0 -0
  211. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/delta.py +0 -0
  212. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/deribit.py +0 -0
  213. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/digifinex.py +0 -0
  214. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/exmo.py +0 -0
  215. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/flowbtc.py +0 -0
  216. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/fmfwio.py +0 -0
  217. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/gate.py +0 -0
  218. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/gateio.py +0 -0
  219. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/gemini.py +0 -0
  220. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/hitbtc.py +0 -0
  221. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/hitbtc3.py +0 -0
  222. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/hollaex.py +0 -0
  223. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/htx.py +0 -0
  224. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/huobi.py +0 -0
  225. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/huobijp.py +0 -0
  226. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/kraken.py +0 -0
  227. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/krakenfutures.py +0 -0
  228. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/kucoin.py +0 -0
  229. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/kucoinfutures.py +0 -0
  230. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/kuna.py +0 -0
  231. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/lbank.py +0 -0
  232. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/mercado.py +0 -0
  233. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/mexc.py +0 -0
  234. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/novadax.py +0 -0
  235. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/oceanex.py +0 -0
  236. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/okcoin.py +0 -0
  237. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/onetrading.py +0 -0
  238. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/p2b.py +0 -0
  239. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/paymium.py +0 -0
  240. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/phemex.py +0 -0
  241. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/poloniex.py +0 -0
  242. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/poloniexfutures.py +0 -0
  243. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/probit.py +0 -0
  244. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/timex.py +0 -0
  245. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/tokocrypto.py +0 -0
  246. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/wavesexchange.py +0 -0
  247. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/wazirx.py +0 -0
  248. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/whitebit.py +0 -0
  249. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/woo.py +0 -0
  250. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/yobit.py +0 -0
  251. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/zaif.py +0 -0
  252. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/async_support/zonda.py +0 -0
  253. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/base/__init__.py +0 -0
  254. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/base/decimal_to_precision.py +0 -0
  255. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/base/errors.py +0 -0
  256. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/base/precise.py +0 -0
  257. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/base/types.py +0 -0
  258. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bequant.py +0 -0
  259. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bigone.py +0 -0
  260. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/binancecoinm.py +0 -0
  261. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/binanceus.py +0 -0
  262. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/binanceusdm.py +0 -0
  263. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bingx.py +0 -0
  264. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bit2c.py +0 -0
  265. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bitbank.py +0 -0
  266. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bitbay.py +0 -0
  267. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bitbns.py +0 -0
  268. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bitcoincom.py +0 -0
  269. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bitfinex.py +0 -0
  270. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bitfinex2.py +0 -0
  271. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bitflyer.py +0 -0
  272. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bitforex.py +0 -0
  273. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bitget.py +0 -0
  274. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bithumb.py +0 -0
  275. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bitmex.py +0 -0
  276. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bitopro.py +0 -0
  277. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bitpanda.py +0 -0
  278. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bitrue.py +0 -0
  279. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bitso.py +0 -0
  280. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bitteam.py +0 -0
  281. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bitvavo.py +0 -0
  282. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/bl3p.py +0 -0
  283. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/blockchaincom.py +0 -0
  284. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/blofin.py +0 -0
  285. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/btcbox.py +0 -0
  286. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/cex.py +0 -0
  287. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/coinbase.py +0 -0
  288. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/coinbasepro.py +0 -0
  289. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/coincheck.py +0 -0
  290. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/coinex.py +0 -0
  291. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/coinlist.py +0 -0
  292. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/coinmate.py +0 -0
  293. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/coinmetro.py +0 -0
  294. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/coinone.py +0 -0
  295. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/coinsph.py +0 -0
  296. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/coinspot.py +0 -0
  297. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/cryptocom.py +0 -0
  298. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/currencycom.py +0 -0
  299. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/delta.py +0 -0
  300. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/deribit.py +0 -0
  301. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/digifinex.py +0 -0
  302. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/exmo.py +0 -0
  303. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/flowbtc.py +0 -0
  304. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/fmfwio.py +0 -0
  305. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/gate.py +0 -0
  306. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/gateio.py +0 -0
  307. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/gemini.py +0 -0
  308. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/hitbtc.py +0 -0
  309. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/hitbtc3.py +0 -0
  310. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/hollaex.py +0 -0
  311. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/htx.py +0 -0
  312. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/huobi.py +0 -0
  313. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/huobijp.py +0 -0
  314. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/kraken.py +0 -0
  315. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/krakenfutures.py +0 -0
  316. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/kucoin.py +0 -0
  317. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/kucoinfutures.py +0 -0
  318. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/kuna.py +0 -0
  319. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/lbank.py +0 -0
  320. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/mercado.py +0 -0
  321. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/mexc.py +0 -0
  322. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/novadax.py +0 -0
  323. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/oceanex.py +0 -0
  324. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/okcoin.py +0 -0
  325. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/onetrading.py +0 -0
  326. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/p2b.py +0 -0
  327. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/paymium.py +0 -0
  328. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/phemex.py +0 -0
  329. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/poloniex.py +0 -0
  330. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/poloniexfutures.py +0 -0
  331. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/alpaca.py +0 -0
  332. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/bequant.py +0 -0
  333. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/binance.py +0 -0
  334. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/binancecoinm.py +0 -0
  335. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/binanceus.py +0 -0
  336. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/binanceusdm.py +0 -0
  337. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/bingx.py +0 -0
  338. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/bitcoincom.py +0 -0
  339. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/bitfinex.py +0 -0
  340. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/bitfinex2.py +0 -0
  341. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/bitmart.py +0 -0
  342. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/bitmex.py +0 -0
  343. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/bitopro.py +0 -0
  344. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/bitpanda.py +0 -0
  345. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/bitrue.py +0 -0
  346. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/bitvavo.py +0 -0
  347. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/blockchaincom.py +0 -0
  348. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/bybit.py +0 -0
  349. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/cex.py +0 -0
  350. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/coinbase.py +0 -0
  351. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/coinbasepro.py +0 -0
  352. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/coincheck.py +0 -0
  353. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/coinex.py +0 -0
  354. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/coinone.py +0 -0
  355. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/cryptocom.py +0 -0
  356. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/currencycom.py +0 -0
  357. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/deribit.py +0 -0
  358. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/exmo.py +0 -0
  359. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/gate.py +0 -0
  360. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/gateio.py +0 -0
  361. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/gemini.py +0 -0
  362. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/hollaex.py +0 -0
  363. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/htx.py +0 -0
  364. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/huobi.py +0 -0
  365. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/huobijp.py +0 -0
  366. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/idex.py +0 -0
  367. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/independentreserve.py +0 -0
  368. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/kraken.py +0 -0
  369. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/krakenfutures.py +0 -0
  370. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/kucoin.py +0 -0
  371. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/kucoinfutures.py +0 -0
  372. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/lbank.py +0 -0
  373. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/luno.py +0 -0
  374. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/ndax.py +0 -0
  375. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/okcoin.py +0 -0
  376. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/okx.py +0 -0
  377. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/onetrading.py +0 -0
  378. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/p2b.py +0 -0
  379. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/phemex.py +0 -0
  380. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/poloniex.py +0 -0
  381. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/poloniexfutures.py +0 -0
  382. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/probit.py +0 -0
  383. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/upbit.py +0 -0
  384. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/wazirx.py +0 -0
  385. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/whitebit.py +0 -0
  386. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/pro/woo.py +0 -0
  387. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/probit.py +0 -0
  388. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/static_dependencies/__init__.py +0 -0
  389. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  390. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  391. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  392. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  393. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  394. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  395. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  396. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  397. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  398. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  399. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  400. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  401. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/__init__.py +0 -0
  402. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/__init__.py +0 -0
  403. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_account.py +0 -0
  404. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_balance.py +0 -0
  405. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_borrow_interest.py +0 -0
  406. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_borrow_rate.py +0 -0
  407. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_calculate_fee.py +0 -0
  408. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_crypto.py +0 -0
  409. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_currency.py +0 -0
  410. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_datetime.py +0 -0
  411. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_decimal_to_precision.py +0 -0
  412. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_deep_extend.py +0 -0
  413. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
  414. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
  415. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_funding_rate_history.py +0 -0
  416. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_last_price.py +0 -0
  417. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_ledger_entry.py +0 -0
  418. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_ledger_item.py +0 -0
  419. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_leverage_tier.py +0 -0
  420. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_margin_modification.py +0 -0
  421. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_market.py +0 -0
  422. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_number.py +0 -0
  423. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_ohlcv.py +0 -0
  424. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_open_interest.py +0 -0
  425. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_order.py +0 -0
  426. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_order_book.py +0 -0
  427. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_position.py +0 -0
  428. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_shared_methods.py +0 -0
  429. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_status.py +0 -0
  430. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_throttle.py +0 -0
  431. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_ticker.py +0 -0
  432. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_trade.py +0 -0
  433. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_trading_fee.py +0 -0
  434. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/test/base/test_transaction.py +0 -0
  435. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/timex.py +0 -0
  436. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/tokocrypto.py +0 -0
  437. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/wavesexchange.py +0 -0
  438. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/wazirx.py +0 -0
  439. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/whitebit.py +0 -0
  440. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/woo.py +0 -0
  441. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/yobit.py +0 -0
  442. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/zaif.py +0 -0
  443. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt/zonda.py +0 -0
  444. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt.egg-info/SOURCES.txt +0 -0
  445. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt.egg-info/dependency_links.txt +0 -0
  446. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt.egg-info/requires.txt +0 -0
  447. {ccxt-4.2.47 → ccxt-4.2.49}/ccxt.egg-info/top_level.txt +0 -0
  448. {ccxt-4.2.47 → ccxt-4.2.49}/setup.cfg +0 -0
  449. {ccxt-4.2.47 → ccxt-4.2.49}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.2.47
3
+ Version: 4.2.49
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
@@ -223,13 +223,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
223
223
 
224
224
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
225
225
 
226
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.47/dist/ccxt.browser.js
227
- * unpkg: https://unpkg.com/ccxt@4.2.47/dist/ccxt.browser.js
226
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.49/dist/ccxt.browser.js
227
+ * unpkg: https://unpkg.com/ccxt@4.2.49/dist/ccxt.browser.js
228
228
 
229
229
  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.
230
230
 
231
231
  ```HTML
232
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.47/dist/ccxt.browser.js"></script>
232
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.49/dist/ccxt.browser.js"></script>
233
233
  ```
234
234
 
235
235
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.2.47'
25
+ __version__ = '4.2.49'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -226,3 +226,11 @@ class ImplicitAPI:
226
226
  private_post_eurcv_address = privatePostEurcvAddress = Entry('eurcv_address/', 'private', 'POST', {'cost': 1})
227
227
  private_post_pyusd_withdrawal = privatePostPyusdWithdrawal = Entry('pyusd_withdrawal/', 'private', 'POST', {'cost': 1})
228
228
  private_post_pyusd_address = privatePostPyusdAddress = Entry('pyusd_address/', 'private', 'POST', {'cost': 1})
229
+ private_post_lmwr_withdrawal = privatePostLmwrWithdrawal = Entry('lmwr_withdrawal/', 'private', 'POST', {'cost': 1})
230
+ private_post_lmwr_address = privatePostLmwrAddress = Entry('lmwr_address/', 'private', 'POST', {'cost': 1})
231
+ private_post_pepe_withdrawal = privatePostPepeWithdrawal = Entry('pepe_withdrawal/', 'private', 'POST', {'cost': 1})
232
+ private_post_pepe_address = privatePostPepeAddress = Entry('pepe_address/', 'private', 'POST', {'cost': 1})
233
+ private_post_blur_withdrawal = privatePostBlurWithdrawal = Entry('blur_withdrawal/', 'private', 'POST', {'cost': 1})
234
+ private_post_blur_address = privatePostBlurAddress = Entry('blur_address/', 'private', 'POST', {'cost': 1})
235
+ private_post_vext_withdrawal = privatePostVextWithdrawal = Entry('vext_withdrawal/', 'private', 'POST', {'cost': 1})
236
+ private_post_vext_address = privatePostVextAddress = Entry('vext_address/', 'private', 'POST', {'cost': 1})
@@ -2,14 +2,15 @@ from ccxt.base.types import Entry
2
2
 
3
3
 
4
4
  class ImplicitAPI:
5
- public_get_server_time = publicGetServerTime = Entry('server_time', 'public', 'GET', {'cost': 5})
6
- public_get_pairs = publicGetPairs = Entry('pairs', 'public', 'GET', {'cost': 5})
7
- public_get_price_increments = publicGetPriceIncrements = Entry('price_increments', 'public', 'GET', {'cost': 5})
8
- public_get_summaries = publicGetSummaries = Entry('summaries', 'public', 'GET', {'cost': 5})
9
- public_get_ticker_all = publicGetTickerAll = Entry('ticker_all', 'public', 'GET', {'cost': 5})
10
- public_get_pair_ticker = publicGetPairTicker = Entry('{pair}/ticker', 'public', 'GET', {'cost': 5})
11
- public_get_pair_trades = publicGetPairTrades = Entry('{pair}/trades', 'public', 'GET', {'cost': 5})
12
- public_get_pair_depth = publicGetPairDepth = Entry('{pair}/depth', 'public', 'GET', {'cost': 5})
5
+ public_get_api_server_time = publicGetApiServerTime = Entry('api/server_time', 'public', 'GET', {'cost': 5})
6
+ public_get_api_pairs = publicGetApiPairs = Entry('api/pairs', 'public', 'GET', {'cost': 5})
7
+ public_get_api_price_increments = publicGetApiPriceIncrements = Entry('api/price_increments', 'public', 'GET', {'cost': 5})
8
+ public_get_api_summaries = publicGetApiSummaries = Entry('api/summaries', 'public', 'GET', {'cost': 5})
9
+ public_get_api_ticker_pair = publicGetApiTickerPair = Entry('api/ticker/{pair}', 'public', 'GET', {'cost': 5})
10
+ public_get_api_ticker_all = publicGetApiTickerAll = Entry('api/ticker_all', 'public', 'GET', {'cost': 5})
11
+ public_get_api_trades_pair = publicGetApiTradesPair = Entry('api/trades/{pair}', 'public', 'GET', {'cost': 5})
12
+ public_get_api_depth_pair = publicGetApiDepthPair = Entry('api/depth/{pair}', 'public', 'GET', {'cost': 5})
13
+ public_get_tradingview_history_v2 = publicGetTradingviewHistoryV2 = Entry('tradingview/history_v2', 'public', 'GET', {'cost': 5})
13
14
  private_post_getinfo = privatePostGetInfo = Entry('getInfo', 'private', 'POST', {'cost': 4})
14
15
  private_post_transhistory = privatePostTransHistory = Entry('transHistory', 'private', 'POST', {'cost': 4})
15
16
  private_post_trade = privatePostTrade = Entry('trade', 'private', 'POST', {'cost': 1})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.47'
7
+ __version__ = '4.2.49'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.2.47'
5
+ __version__ = '4.2.49'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -2986,7 +2986,7 @@ class binance(Exchange, ImplicitAPI):
2986
2986
  fees = self.fees
2987
2987
  linear = None
2988
2988
  inverse = None
2989
- strike = self.safe_integer(market, 'strikePrice')
2989
+ strike = self.safe_string(market, 'strikePrice')
2990
2990
  symbol = base + '/' + quote
2991
2991
  if contract:
2992
2992
  if swap:
@@ -2994,7 +2994,7 @@ class binance(Exchange, ImplicitAPI):
2994
2994
  elif future:
2995
2995
  symbol = symbol + ':' + settle + '-' + self.yymmdd(expiry)
2996
2996
  elif option:
2997
- symbol = symbol + ':' + settle + '-' + self.yymmdd(expiry) + '-' + self.number_to_string(strike) + '-' + self.safe_string(optionParts, 3)
2997
+ symbol = symbol + ':' + settle + '-' + self.yymmdd(expiry) + '-' + strike + '-' + self.safe_string(optionParts, 3)
2998
2998
  contractSize = self.safe_number_2(market, 'contractSize', 'unit', self.parse_number('1'))
2999
2999
  linear = settle == quote
3000
3000
  inverse = settle == base
@@ -3018,6 +3018,9 @@ class binance(Exchange, ImplicitAPI):
3018
3018
  elif option:
3019
3019
  unifiedType = 'option'
3020
3020
  active = None
3021
+ parsedStrike = None
3022
+ if strike is not None:
3023
+ parsedStrike = self.parse_to_numeric(strike)
3021
3024
  entry = {
3022
3025
  'id': id,
3023
3026
  'lowercaseId': lowercaseId,
@@ -3043,7 +3046,7 @@ class binance(Exchange, ImplicitAPI):
3043
3046
  'contractSize': contractSize,
3044
3047
  'expiry': expiry,
3045
3048
  'expiryDatetime': self.iso8601(expiry),
3046
- 'strike': strike,
3049
+ 'strike': parsedStrike,
3047
3050
  'optionType': self.safe_string_lower(market, 'side'),
3048
3051
  'precision': {
3049
3052
  'amount': self.safe_integer_2(market, 'quantityPrecision', 'quantityScale'),
@@ -5514,12 +5517,14 @@ class binance(Exchange, ImplicitAPI):
5514
5517
  trailingDelta = self.safe_string(params, 'trailingDelta')
5515
5518
  trailingTriggerPrice = self.safe_string_2(params, 'trailingTriggerPrice', 'activationPrice', self.number_to_string(price))
5516
5519
  trailingPercent = self.safe_string_2(params, 'trailingPercent', 'callbackRate')
5520
+ priceMatch = self.safe_string(params, 'priceMatch')
5517
5521
  isTrailingPercentOrder = trailingPercent is not None
5518
5522
  isStopLoss = stopLossPrice is not None or trailingDelta is not None
5519
5523
  isTakeProfit = takeProfitPrice is not None
5520
5524
  isTriggerOrder = triggerPrice is not None
5521
5525
  isConditional = isTriggerOrder or isTrailingPercentOrder or isStopLoss or isTakeProfit
5522
5526
  isPortfolioMarginConditional = (isPortfolioMargin and isConditional)
5527
+ isPriceMatch = priceMatch is not None
5523
5528
  uppercaseType = type.upper()
5524
5529
  stopPrice = None
5525
5530
  if isTrailingPercentOrder:
@@ -5656,7 +5661,7 @@ class binance(Exchange, ImplicitAPI):
5656
5661
  request['quantity'] = self.parse_to_numeric(amount)
5657
5662
  else:
5658
5663
  request['quantity'] = self.amount_to_precision(symbol, amount)
5659
- if priceIsRequired:
5664
+ if priceIsRequired and not isPriceMatch:
5660
5665
  if price is None:
5661
5666
  raise InvalidOrder(self.id + ' createOrder() requires a price argument for a ' + type + ' order')
5662
5667
  request['price'] = self.price_to_precision(symbol, price)
@@ -1121,7 +1121,7 @@ class bitmart(Exchange, ImplicitAPI):
1121
1121
 
1122
1122
  def parse_ticker(self, ticker, market: Market = None) -> Ticker:
1123
1123
  #
1124
- # spot
1124
+ # spot(REST)
1125
1125
  #
1126
1126
  # {
1127
1127
  # "symbol": "SOLAR_USDT",
@@ -1141,6 +1141,17 @@ class bitmart(Exchange, ImplicitAPI):
1141
1141
  # "timestamp": 1667403439367
1142
1142
  # }
1143
1143
  #
1144
+ # spot(WS)
1145
+ # {
1146
+ # "symbol":"BTC_USDT",
1147
+ # "last_price":"146.24",
1148
+ # "open_24h":"147.17",
1149
+ # "high_24h":"147.48",
1150
+ # "low_24h":"143.88",
1151
+ # "base_volume_24h":"117387.58", # NOT base, but quote currencynot !!
1152
+ # "s_t": 1610936002
1153
+ # }
1154
+ #
1144
1155
  # swap
1145
1156
  #
1146
1157
  # {
@@ -1157,6 +1168,9 @@ class bitmart(Exchange, ImplicitAPI):
1157
1168
  # }
1158
1169
  #
1159
1170
  timestamp = self.safe_integer(ticker, 'timestamp')
1171
+ if timestamp is None:
1172
+ # ticker from WS has a different field(in seconds)
1173
+ timestamp = self.safe_integer_product(ticker, 's_t', 1000)
1160
1174
  marketId = self.safe_string_2(ticker, 'symbol', 'contract_symbol')
1161
1175
  market = self.safe_market(marketId, market)
1162
1176
  symbol = market['symbol']
@@ -1171,7 +1185,15 @@ class bitmart(Exchange, ImplicitAPI):
1171
1185
  percentage = '0'
1172
1186
  baseVolume = self.safe_string(ticker, 'base_volume_24h')
1173
1187
  quoteVolume = self.safe_string(ticker, 'quote_volume_24h')
1174
- quoteVolume = self.safe_string(ticker, 'volume_24h', quoteVolume)
1188
+ if quoteVolume is None:
1189
+ if baseVolume is None:
1190
+ # self is swap
1191
+ quoteVolume = self.safe_string(ticker, 'volume_24h', quoteVolume)
1192
+ else:
1193
+ # self is a ticker from websockets
1194
+ # contrary to name and documentation, base_volume_24h is actually the quote volume
1195
+ quoteVolume = baseVolume
1196
+ baseVolume = None
1175
1197
  average = self.safe_string_2(ticker, 'avg_price', 'index_price')
1176
1198
  high = self.safe_string_2(ticker, 'high_24h', 'high_price')
1177
1199
  low = self.safe_string_2(ticker, 'low_24h', 'low_price')
@@ -361,6 +361,14 @@ class bitstamp(Exchange, ImplicitAPI):
361
361
  'eurcv_address/': 1,
362
362
  'pyusd_withdrawal/': 1,
363
363
  'pyusd_address/': 1,
364
+ 'lmwr_withdrawal/': 1,
365
+ 'lmwr_address/': 1,
366
+ 'pepe_withdrawal/': 1,
367
+ 'pepe_address/': 1,
368
+ 'blur_withdrawal/': 1,
369
+ 'blur_address/': 1,
370
+ 'vext_withdrawal/': 1,
371
+ 'vext_address/': 1,
364
372
  },
365
373
  },
366
374
  },
@@ -36,6 +36,7 @@ class btcalpha(Exchange, ImplicitAPI):
36
36
  'cancelOrder': True,
37
37
  'closeAllPositions': False,
38
38
  'closePosition': False,
39
+ 'createDepositAddress': False,
39
40
  'createOrder': True,
40
41
  'createReduceOnlyOrder': False,
41
42
  'createStopLimitOrder': False,
@@ -48,6 +49,9 @@ class btcalpha(Exchange, ImplicitAPI):
48
49
  'fetchCrossBorrowRate': False,
49
50
  'fetchCrossBorrowRates': False,
50
51
  'fetchDeposit': False,
52
+ 'fetchDepositAddress': False,
53
+ 'fetchDepositAddresses': False,
54
+ 'fetchDepositAddressesByNetwork': False,
51
55
  'fetchDeposits': True,
52
56
  'fetchFundingHistory': False,
53
57
  'fetchFundingRate': False,
@@ -40,6 +40,7 @@ class btcmarkets(Exchange, ImplicitAPI):
40
40
  'cancelOrders': True,
41
41
  'closeAllPositions': False,
42
42
  'closePosition': False,
43
+ 'createDepositAddress': False,
43
44
  'createOrder': True,
44
45
  'createReduceOnlyOrder': False,
45
46
  'fetchBalance': True,
@@ -48,6 +49,9 @@ class btcmarkets(Exchange, ImplicitAPI):
48
49
  'fetchClosedOrders': 'emulated',
49
50
  'fetchCrossBorrowRate': False,
50
51
  'fetchCrossBorrowRates': False,
52
+ 'fetchDepositAddress': False,
53
+ 'fetchDepositAddresses': False,
54
+ 'fetchDepositAddressesByNetwork': False,
51
55
  'fetchDeposits': True,
52
56
  'fetchDepositsWithdrawals': True,
53
57
  'fetchFundingHistory': False,
@@ -37,6 +37,7 @@ class btcturk(Exchange, ImplicitAPI):
37
37
  'cancelOrder': True,
38
38
  'closeAllPositions': False,
39
39
  'closePosition': False,
40
+ 'createDepositAddress': False,
40
41
  'createOrder': True,
41
42
  'createReduceOnlyOrder': False,
42
43
  'fetchBalance': True,
@@ -44,6 +45,9 @@ class btcturk(Exchange, ImplicitAPI):
44
45
  'fetchBorrowRateHistory': False,
45
46
  'fetchCrossBorrowRate': False,
46
47
  'fetchCrossBorrowRates': False,
48
+ 'fetchDepositAddress': False,
49
+ 'fetchDepositAddresses': False,
50
+ 'fetchDepositAddressesByNetwork': False,
47
51
  'fetchFundingHistory': False,
48
52
  'fetchFundingRate': False,
49
53
  'fetchFundingRateHistory': False,
@@ -96,6 +96,7 @@ class bybit(Exchange, ImplicitAPI):
96
96
  'fetchMarketLeverageTiers': True,
97
97
  'fetchMarkets': True,
98
98
  'fetchMarkOHLCV': True,
99
+ 'fetchMyLiquidations': True,
99
100
  'fetchMySettlementHistory': True,
100
101
  'fetchMyTrades': True,
101
102
  'fetchOHLCV': True,
@@ -4263,7 +4264,7 @@ class bybit(Exchange, ImplicitAPI):
4263
4264
  paginate = False
4264
4265
  paginate, params = self.handle_option_and_params(params, 'fetchOrders', 'paginate')
4265
4266
  if paginate:
4266
- return await self.fetch_paginated_call_cursor('fetchOrders', symbol, since, limit, params, 'nextPageCursor', 'nextPageCursor', None, 50)
4267
+ return await self.fetch_paginated_call_cursor('fetchOrders', symbol, since, limit, params, 'nextPageCursor', 'cursor', None, 50)
4267
4268
  enableUnifiedMargin, enableUnifiedAccount = await self.is_unified_enabled()
4268
4269
  isUnifiedAccount = (enableUnifiedMargin or enableUnifiedAccount)
4269
4270
  request = {}
@@ -4423,7 +4424,7 @@ class bybit(Exchange, ImplicitAPI):
4423
4424
  paginate = False
4424
4425
  paginate, params = self.handle_option_and_params(params, 'fetchCanceledAndClosedOrders', 'paginate')
4425
4426
  if paginate:
4426
- return await self.fetch_paginated_call_cursor('fetchCanceledAndClosedOrders', symbol, since, limit, params, 'nextPageCursor', 'nextPageCursor', None, 50)
4427
+ return await self.fetch_paginated_call_cursor('fetchCanceledAndClosedOrders', symbol, since, limit, params, 'nextPageCursor', 'cursor', None, 50)
4427
4428
  enableUnifiedMargin, enableUnifiedAccount = await self.is_unified_enabled()
4428
4429
  isUnifiedAccount = (enableUnifiedMargin or enableUnifiedAccount)
4429
4430
  request = {}
@@ -4767,7 +4768,7 @@ class bybit(Exchange, ImplicitAPI):
4767
4768
  paginate = False
4768
4769
  paginate, params = self.handle_option_and_params(params, 'fetchMyTrades', 'paginate')
4769
4770
  if paginate:
4770
- return await self.fetch_paginated_call_cursor('fetchMyTrades', symbol, since, limit, params, 'nextPageCursor', 'nextPageCursor', None, 100)
4771
+ return await self.fetch_paginated_call_cursor('fetchMyTrades', symbol, since, limit, params, 'nextPageCursor', 'cursor', None, 100)
4771
4772
  enableUnifiedMargin, enableUnifiedAccount = await self.is_unified_enabled()
4772
4773
  isUnifiedAccount = (enableUnifiedMargin or enableUnifiedAccount)
4773
4774
  request = {}
@@ -4957,7 +4958,7 @@ class bybit(Exchange, ImplicitAPI):
4957
4958
  paginate = False
4958
4959
  paginate, params = self.handle_option_and_params(params, 'fetchDeposits', 'paginate')
4959
4960
  if paginate:
4960
- return await self.fetch_paginated_call_cursor('fetchDeposits', code, since, limit, params, 'nextPageCursor', 'nextPageCursor', None, 50)
4961
+ return await self.fetch_paginated_call_cursor('fetchDeposits', code, since, limit, params, 'nextPageCursor', 'cursor', None, 50)
4961
4962
  request = {
4962
4963
  # 'coin': currency['id'],
4963
4964
  # 'limit': 20, # max 50
@@ -5019,7 +5020,7 @@ class bybit(Exchange, ImplicitAPI):
5019
5020
  paginate = False
5020
5021
  paginate, params = self.handle_option_and_params(params, 'fetchWithdrawals', 'paginate')
5021
5022
  if paginate:
5022
- return await self.fetch_paginated_call_cursor('fetchWithdrawals', code, since, limit, params, 'nextPageCursor', 'nextPageCursor', None, 50)
5023
+ return await self.fetch_paginated_call_cursor('fetchWithdrawals', code, since, limit, params, 'nextPageCursor', 'cursor', None, 50)
5023
5024
  request = {
5024
5025
  # 'coin': currency['id'],
5025
5026
  # 'limit': 20, # max 50
@@ -6420,7 +6421,7 @@ class bybit(Exchange, ImplicitAPI):
6420
6421
  paginate = False
6421
6422
  paginate, params = self.handle_option_and_params(params, 'fetchTransfers', 'paginate')
6422
6423
  if paginate:
6423
- return await self.fetch_paginated_call_cursor('fetchTransfers', code, since, limit, params, 'nextPageCursor', 'nextPageCursor', None, 50)
6424
+ return await self.fetch_paginated_call_cursor('fetchTransfers', code, since, limit, params, 'nextPageCursor', 'cursor', None, 50)
6424
6425
  currency = None
6425
6426
  request = {}
6426
6427
  if code is not None:
@@ -7213,6 +7214,131 @@ class bybit(Exchange, ImplicitAPI):
7213
7214
  'info': greeks,
7214
7215
  }
7215
7216
 
7217
+ async def fetch_my_liquidations(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
7218
+ """
7219
+ retrieves the users liquidated positions
7220
+ :see: https://bybit-exchange.github.io/docs/api-explorer/v5/position/execution
7221
+ :param str [symbol]: unified CCXT market symbol
7222
+ :param int [since]: the earliest time in ms to fetch liquidations for
7223
+ :param int [limit]: the maximum number of liquidation structures to retrieve
7224
+ :param dict [params]: exchange specific parameters for the exchange API endpoint
7225
+ :param str [params.type]: market type, ['swap', 'option', 'spot']
7226
+ :param str [params.subType]: market subType, ['linear', 'inverse']
7227
+ :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)
7228
+ :returns dict: an array of `liquidation structures <https://docs.ccxt.com/#/?id=liquidation-structure>`
7229
+ """
7230
+ await self.load_markets()
7231
+ paginate = False
7232
+ paginate, params = self.handle_option_and_params(params, 'fetchMyLiquidations', 'paginate')
7233
+ if paginate:
7234
+ return await self.fetch_paginated_call_cursor('fetchMyLiquidations', symbol, since, limit, params, 'nextPageCursor', 'cursor', None, 100)
7235
+ request = {
7236
+ 'execType': 'BustTrade',
7237
+ }
7238
+ market = None
7239
+ if symbol is not None:
7240
+ market = self.market(symbol)
7241
+ request['symbol'] = market['id']
7242
+ type = None
7243
+ type, params = self.get_bybit_type('fetchMyLiquidations', market, params)
7244
+ request['category'] = type
7245
+ if limit is not None:
7246
+ request['limit'] = limit
7247
+ if since is not None:
7248
+ request['startTime'] = since
7249
+ request, params = self.handle_until_option('endTime', request, params)
7250
+ response = await self.privateGetV5ExecutionList(self.extend(request, params))
7251
+ #
7252
+ # {
7253
+ # "retCode": 0,
7254
+ # "retMsg": "OK",
7255
+ # "result": {
7256
+ # "nextPageCursor": "132766%3A2%2C132766%3A2",
7257
+ # "category": "linear",
7258
+ # "list": [
7259
+ # {
7260
+ # "symbol": "ETHPERP",
7261
+ # "orderType": "Market",
7262
+ # "underlyingPrice": "",
7263
+ # "orderLinkId": "",
7264
+ # "side": "Buy",
7265
+ # "indexPrice": "",
7266
+ # "orderId": "8c065341-7b52-4ca9-ac2c-37e31ac55c94",
7267
+ # "stopOrderType": "UNKNOWN",
7268
+ # "leavesQty": "0",
7269
+ # "execTime": "1672282722429",
7270
+ # "isMaker": False,
7271
+ # "execFee": "0.071409",
7272
+ # "feeRate": "0.0006",
7273
+ # "execId": "e0cbe81d-0f18-5866-9415-cf319b5dab3b",
7274
+ # "tradeIv": "",
7275
+ # "blockTradeId": "",
7276
+ # "markPrice": "1183.54",
7277
+ # "execPrice": "1190.15",
7278
+ # "markIv": "",
7279
+ # "orderQty": "0.1",
7280
+ # "orderPrice": "1236.9",
7281
+ # "execValue": "119.015",
7282
+ # "execType": "Trade",
7283
+ # "execQty": "0.1"
7284
+ # }
7285
+ # ]
7286
+ # },
7287
+ # "retExtInfo": {},
7288
+ # "time": 1672283754510
7289
+ # }
7290
+ #
7291
+ liquidations = self.add_pagination_cursor_to_result(response)
7292
+ return self.parse_liquidations(liquidations, market, since, limit)
7293
+
7294
+ def parse_liquidation(self, liquidation, market: Market = None):
7295
+ #
7296
+ # {
7297
+ # "symbol": "ETHPERP",
7298
+ # "orderType": "Market",
7299
+ # "underlyingPrice": "",
7300
+ # "orderLinkId": "",
7301
+ # "side": "Buy",
7302
+ # "indexPrice": "",
7303
+ # "orderId": "8c065341-7b52-4ca9-ac2c-37e31ac55c94",
7304
+ # "stopOrderType": "UNKNOWN",
7305
+ # "leavesQty": "0",
7306
+ # "execTime": "1672282722429",
7307
+ # "isMaker": False,
7308
+ # "execFee": "0.071409",
7309
+ # "feeRate": "0.0006",
7310
+ # "execId": "e0cbe81d-0f18-5866-9415-cf319b5dab3b",
7311
+ # "tradeIv": "",
7312
+ # "blockTradeId": "",
7313
+ # "markPrice": "1183.54",
7314
+ # "execPrice": "1190.15",
7315
+ # "markIv": "",
7316
+ # "orderQty": "0.1",
7317
+ # "orderPrice": "1236.9",
7318
+ # "execValue": "119.015",
7319
+ # "execType": "Trade",
7320
+ # "execQty": "0.1"
7321
+ # }
7322
+ #
7323
+ marketId = self.safe_string(liquidation, 'symbol')
7324
+ timestamp = self.safe_integer(liquidation, 'execTime')
7325
+ contractsString = self.safe_string(liquidation, 'execQty')
7326
+ contractSizeString = self.safe_string(market, 'contractSize')
7327
+ priceString = self.safe_string(liquidation, 'execPrice')
7328
+ baseValueString = Precise.string_mul(contractsString, contractSizeString)
7329
+ quoteValueString = Precise.string_mul(baseValueString, priceString)
7330
+ return self.safe_liquidation({
7331
+ 'info': liquidation,
7332
+ 'symbol': self.safe_symbol(marketId, market),
7333
+ 'contracts': self.parse_number(contractsString),
7334
+ 'contractSize': self.parse_number(contractSizeString),
7335
+ 'price': self.parse_number(priceString),
7336
+ 'baseValue': self.parse_number(baseValueString),
7337
+ 'quoteValue': self.parse_number(quoteValueString),
7338
+ 'timestamp': timestamp,
7339
+ 'datetime': self.iso8601(timestamp),
7340
+ })
7341
+
7216
7342
  def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
7217
7343
  url = self.implode_hostname(self.urls['api'][api]) + '/' + path
7218
7344
  if api == 'public':