ccxt 4.2.93__tar.gz → 4.2.95__tar.gz

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

Potentially problematic release.


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

Files changed (543) hide show
  1. {ccxt-4.2.93/ccxt.egg-info → ccxt-4.2.95}/PKG-INFO +4 -4
  2. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/__init__.py +2 -2
  3. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/binance.py +1 -0
  4. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/binancecoinm.py +1 -0
  5. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/binanceus.py +1 -0
  6. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/binanceusdm.py +1 -0
  7. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bitstamp.py +6 -0
  8. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/__init__.py +2 -2
  9. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/base/exchange.py +7 -1
  10. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/binance.py +63 -5
  11. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bitget.py +136 -2
  12. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bitstamp.py +7 -1
  13. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/coinex.py +62 -56
  14. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/gemini.py +3 -2
  15. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/htx.py +117 -116
  16. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/okx.py +191 -43
  17. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/woo.py +136 -2
  18. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/base/errors.py +7 -7
  19. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/base/exchange.py +18 -1
  20. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/base/types.py +13 -0
  21. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/binance.py +63 -5
  22. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bitget.py +136 -2
  23. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bitstamp.py +7 -1
  24. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/coinex.py +62 -56
  25. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/gemini.py +3 -2
  26. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/htx.py +117 -116
  27. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/okx.py +191 -43
  28. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/__init__.py +1 -1
  29. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/coinbase.py +12 -0
  30. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/kraken.py +97 -19
  31. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/krakenfutures.py +105 -40
  32. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/kucoin.py +25 -16
  33. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/woo.py +136 -2
  34. {ccxt-4.2.93 → ccxt-4.2.95/ccxt.egg-info}/PKG-INFO +4 -4
  35. {ccxt-4.2.93 → ccxt-4.2.95}/package.json +1 -1
  36. {ccxt-4.2.93 → ccxt-4.2.95}/LICENSE.txt +0 -0
  37. {ccxt-4.2.93 → ccxt-4.2.95}/MANIFEST.in +0 -0
  38. {ccxt-4.2.93 → ccxt-4.2.95}/README.rst +0 -0
  39. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/__init__.py +0 -0
  40. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/ace.py +0 -0
  41. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/alpaca.py +0 -0
  42. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/ascendex.py +0 -0
  43. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bequant.py +0 -0
  44. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bigone.py +0 -0
  45. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bingx.py +0 -0
  46. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bit2c.py +0 -0
  47. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bitbank.py +0 -0
  48. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bitbay.py +0 -0
  49. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bitbns.py +0 -0
  50. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bitcoincom.py +0 -0
  51. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bitfinex.py +0 -0
  52. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bitfinex2.py +0 -0
  53. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bitflyer.py +0 -0
  54. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bitget.py +0 -0
  55. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bithumb.py +0 -0
  56. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bitmart.py +0 -0
  57. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bitmex.py +0 -0
  58. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bitopro.py +0 -0
  59. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bitpanda.py +0 -0
  60. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bitrue.py +0 -0
  61. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bitso.py +0 -0
  62. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bitteam.py +0 -0
  63. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bitvavo.py +0 -0
  64. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bl3p.py +0 -0
  65. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/blockchaincom.py +0 -0
  66. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/blofin.py +0 -0
  67. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/btcalpha.py +0 -0
  68. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/btcbox.py +0 -0
  69. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/btcmarkets.py +0 -0
  70. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/btcturk.py +0 -0
  71. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/bybit.py +0 -0
  72. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/cex.py +0 -0
  73. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/coinbase.py +0 -0
  74. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/coinbaseinternational.py +0 -0
  75. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/coinbasepro.py +0 -0
  76. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/coincheck.py +0 -0
  77. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/coinex.py +0 -0
  78. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/coinlist.py +0 -0
  79. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/coinmate.py +0 -0
  80. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/coinmetro.py +0 -0
  81. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/coinone.py +0 -0
  82. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/coinsph.py +0 -0
  83. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/coinspot.py +0 -0
  84. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/cryptocom.py +0 -0
  85. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/currencycom.py +0 -0
  86. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/delta.py +0 -0
  87. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/deribit.py +0 -0
  88. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/digifinex.py +0 -0
  89. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/exmo.py +0 -0
  90. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/fmfwio.py +0 -0
  91. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/gate.py +0 -0
  92. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/gateio.py +0 -0
  93. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/gemini.py +0 -0
  94. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/hitbtc.py +0 -0
  95. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/hitbtc3.py +0 -0
  96. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/hollaex.py +0 -0
  97. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/htx.py +0 -0
  98. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/huobi.py +0 -0
  99. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/huobijp.py +0 -0
  100. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/hyperliquid.py +0 -0
  101. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/idex.py +0 -0
  102. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/independentreserve.py +0 -0
  103. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/indodax.py +0 -0
  104. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/kraken.py +0 -0
  105. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/krakenfutures.py +0 -0
  106. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/kucoin.py +0 -0
  107. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/kucoinfutures.py +0 -0
  108. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/kuna.py +0 -0
  109. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/latoken.py +0 -0
  110. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/lbank.py +0 -0
  111. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/luno.py +0 -0
  112. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/lykke.py +0 -0
  113. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/mercado.py +0 -0
  114. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/mexc.py +0 -0
  115. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/ndax.py +0 -0
  116. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/novadax.py +0 -0
  117. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/oceanex.py +0 -0
  118. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/okcoin.py +0 -0
  119. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/okx.py +0 -0
  120. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/onetrading.py +0 -0
  121. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/p2b.py +0 -0
  122. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/paymium.py +0 -0
  123. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/phemex.py +0 -0
  124. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/poloniex.py +0 -0
  125. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/poloniexfutures.py +0 -0
  126. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/probit.py +0 -0
  127. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/timex.py +0 -0
  128. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/tokocrypto.py +0 -0
  129. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/tradeogre.py +0 -0
  130. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/upbit.py +0 -0
  131. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/wavesexchange.py +0 -0
  132. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/wazirx.py +0 -0
  133. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/whitebit.py +0 -0
  134. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/woo.py +0 -0
  135. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/yobit.py +0 -0
  136. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/zaif.py +0 -0
  137. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/abstract/zonda.py +0 -0
  138. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/ace.py +1 -1
  139. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/alpaca.py +0 -0
  140. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/ascendex.py +1 -1
  141. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/ace.py +1 -1
  142. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/alpaca.py +0 -0
  143. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/ascendex.py +1 -1
  144. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/base/__init__.py +0 -0
  145. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/base/throttler.py +0 -0
  146. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/base/ws/__init__.py +0 -0
  147. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  148. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/base/ws/cache.py +0 -0
  149. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/base/ws/client.py +0 -0
  150. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/base/ws/fast_client.py +0 -0
  151. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/base/ws/functions.py +0 -0
  152. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/base/ws/future.py +0 -0
  153. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/base/ws/order_book.py +0 -0
  154. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  155. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bequant.py +0 -0
  156. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bigone.py +1 -1
  157. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/binancecoinm.py +0 -0
  158. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/binanceus.py +0 -0
  159. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/binanceusdm.py +0 -0
  160. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bingx.py +1 -1
  161. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bit2c.py +1 -1
  162. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bitbank.py +1 -1
  163. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bitbay.py +0 -0
  164. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bitbns.py +0 -0
  165. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bitcoincom.py +0 -0
  166. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bitfinex.py +1 -1
  167. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bitfinex2.py +1 -1
  168. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bitflyer.py +0 -0
  169. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bithumb.py +1 -1
  170. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bitmart.py +1 -1
  171. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bitmex.py +1 -1
  172. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bitopro.py +1 -1
  173. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bitpanda.py +0 -0
  174. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bitrue.py +1 -1
  175. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bitso.py +1 -1
  176. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bitteam.py +1 -1
  177. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bitvavo.py +1 -1
  178. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bl3p.py +0 -0
  179. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/blockchaincom.py +1 -1
  180. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/blofin.py +1 -1
  181. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/btcalpha.py +1 -1
  182. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/btcbox.py +1 -1
  183. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/btcmarkets.py +0 -0
  184. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/btcturk.py +0 -0
  185. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/bybit.py +2 -2
  186. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/cex.py +1 -1
  187. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/coinbase.py +1 -1
  188. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/coinbaseinternational.py +1 -1
  189. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/coinbasepro.py +1 -1
  190. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/coincheck.py +1 -1
  191. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/coinlist.py +1 -1
  192. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/coinmate.py +1 -1
  193. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/coinmetro.py +0 -0
  194. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/coinone.py +0 -0
  195. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/coinsph.py +1 -1
  196. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/coinspot.py +0 -0
  197. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/cryptocom.py +1 -1
  198. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/currencycom.py +1 -1
  199. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/delta.py +1 -1
  200. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/deribit.py +1 -1
  201. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/digifinex.py +1 -1
  202. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/exmo.py +1 -1
  203. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/flowbtc.py +0 -0
  204. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/fmfwio.py +0 -0
  205. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/gate.py +1 -1
  206. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/gateio.py +0 -0
  207. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/hitbtc.py +1 -1
  208. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/hitbtc3.py +0 -0
  209. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/hollaex.py +1 -1
  210. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/huobi.py +0 -0
  211. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/huobijp.py +1 -1
  212. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/hyperliquid.py +0 -0
  213. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/idex.py +1 -1
  214. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/independentreserve.py +0 -0
  215. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/indodax.py +1 -1
  216. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/kraken.py +1 -1
  217. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/krakenfutures.py +2 -2
  218. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/kucoin.py +1 -1
  219. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/kucoinfutures.py +1 -1
  220. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/kuna.py +0 -0
  221. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/latoken.py +1 -1
  222. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/lbank.py +1 -1
  223. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/luno.py +0 -0
  224. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/lykke.py +0 -0
  225. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/mercado.py +0 -0
  226. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/mexc.py +1 -1
  227. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/ndax.py +1 -1
  228. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/novadax.py +1 -1
  229. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/oceanex.py +1 -1
  230. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/okcoin.py +1 -1
  231. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/onetrading.py +1 -1
  232. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/p2b.py +1 -1
  233. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/paymium.py +0 -0
  234. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/phemex.py +1 -1
  235. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/poloniex.py +1 -1
  236. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/poloniexfutures.py +1 -1
  237. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/probit.py +1 -1
  238. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/timex.py +1 -1
  239. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/tokocrypto.py +1 -1
  240. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/tradeogre.py +1 -1
  241. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/upbit.py +2 -2
  242. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/wavesexchange.py +1 -1
  243. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/wazirx.py +0 -0
  244. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/whitebit.py +1 -1
  245. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/yobit.py +1 -1
  246. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/zaif.py +0 -0
  247. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/async_support/zonda.py +1 -1
  248. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/base/__init__.py +0 -0
  249. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/base/decimal_to_precision.py +0 -0
  250. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/base/precise.py +0 -0
  251. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bequant.py +0 -0
  252. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bigone.py +1 -1
  253. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/binancecoinm.py +0 -0
  254. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/binanceus.py +0 -0
  255. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/binanceusdm.py +0 -0
  256. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bingx.py +1 -1
  257. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bit2c.py +1 -1
  258. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bitbank.py +1 -1
  259. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bitbay.py +0 -0
  260. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bitbns.py +0 -0
  261. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bitcoincom.py +0 -0
  262. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bitfinex.py +1 -1
  263. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bitfinex2.py +1 -1
  264. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bitflyer.py +0 -0
  265. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bithumb.py +1 -1
  266. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bitmart.py +1 -1
  267. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bitmex.py +1 -1
  268. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bitopro.py +1 -1
  269. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bitpanda.py +0 -0
  270. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bitrue.py +1 -1
  271. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bitso.py +1 -1
  272. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bitteam.py +1 -1
  273. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bitvavo.py +1 -1
  274. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bl3p.py +0 -0
  275. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/blockchaincom.py +1 -1
  276. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/blofin.py +1 -1
  277. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/btcalpha.py +1 -1
  278. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/btcbox.py +1 -1
  279. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/btcmarkets.py +0 -0
  280. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/btcturk.py +0 -0
  281. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/bybit.py +2 -2
  282. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/cex.py +1 -1
  283. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/coinbase.py +1 -1
  284. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/coinbaseinternational.py +1 -1
  285. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/coinbasepro.py +1 -1
  286. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/coincheck.py +1 -1
  287. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/coinlist.py +1 -1
  288. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/coinmate.py +1 -1
  289. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/coinmetro.py +0 -0
  290. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/coinone.py +0 -0
  291. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/coinsph.py +1 -1
  292. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/coinspot.py +0 -0
  293. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/cryptocom.py +1 -1
  294. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/currencycom.py +1 -1
  295. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/delta.py +1 -1
  296. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/deribit.py +1 -1
  297. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/digifinex.py +1 -1
  298. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/exmo.py +1 -1
  299. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/flowbtc.py +0 -0
  300. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/fmfwio.py +0 -0
  301. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/gate.py +1 -1
  302. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/gateio.py +0 -0
  303. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/hitbtc.py +1 -1
  304. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/hitbtc3.py +0 -0
  305. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/hollaex.py +1 -1
  306. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/huobi.py +0 -0
  307. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/huobijp.py +1 -1
  308. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/hyperliquid.py +0 -0
  309. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/idex.py +1 -1
  310. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/independentreserve.py +0 -0
  311. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/indodax.py +1 -1
  312. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/kraken.py +1 -1
  313. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/krakenfutures.py +2 -2
  314. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/kucoin.py +1 -1
  315. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/kucoinfutures.py +1 -1
  316. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/kuna.py +0 -0
  317. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/latoken.py +1 -1
  318. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/lbank.py +1 -1
  319. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/luno.py +0 -0
  320. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/lykke.py +0 -0
  321. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/mercado.py +0 -0
  322. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/mexc.py +1 -1
  323. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/ndax.py +1 -1
  324. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/novadax.py +1 -1
  325. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/oceanex.py +1 -1
  326. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/okcoin.py +1 -1
  327. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/onetrading.py +1 -1
  328. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/p2b.py +1 -1
  329. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/paymium.py +0 -0
  330. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/phemex.py +1 -1
  331. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/poloniex.py +1 -1
  332. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/poloniexfutures.py +1 -1
  333. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/alpaca.py +0 -0
  334. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/ascendex.py +1 -1
  335. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/bequant.py +0 -0
  336. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/binance.py +0 -0
  337. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/binancecoinm.py +0 -0
  338. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/binanceus.py +0 -0
  339. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/binanceusdm.py +0 -0
  340. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/bingx.py +0 -0
  341. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/bitcoincom.py +0 -0
  342. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/bitfinex.py +0 -0
  343. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/bitfinex2.py +1 -1
  344. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/bitget.py +1 -1
  345. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/bithumb.py +0 -0
  346. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/bitmart.py +1 -1
  347. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/bitmex.py +1 -1
  348. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/bitopro.py +0 -0
  349. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/bitpanda.py +0 -0
  350. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/bitrue.py +0 -0
  351. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/bitstamp.py +1 -1
  352. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/bitvavo.py +1 -1
  353. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/blockchaincom.py +1 -1
  354. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/bybit.py +1 -1
  355. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/cex.py +0 -0
  356. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/coinbaseinternational.py +1 -1
  357. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/coinbasepro.py +1 -1
  358. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/coincheck.py +0 -0
  359. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/coinex.py +1 -1
  360. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/coinone.py +0 -0
  361. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/cryptocom.py +1 -1
  362. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/currencycom.py +0 -0
  363. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/deribit.py +0 -0
  364. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/exmo.py +0 -0
  365. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/gate.py +1 -1
  366. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/gateio.py +0 -0
  367. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/gemini.py +0 -0
  368. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/hitbtc.py +1 -1
  369. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/hollaex.py +1 -1
  370. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/htx.py +1 -1
  371. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/huobi.py +0 -0
  372. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/huobijp.py +0 -0
  373. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/hyperliquid.py +0 -0
  374. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/idex.py +0 -0
  375. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/independentreserve.py +0 -0
  376. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/kucoinfutures.py +0 -0
  377. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/lbank.py +0 -0
  378. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/luno.py +0 -0
  379. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/mexc.py +0 -0
  380. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/ndax.py +0 -0
  381. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/okcoin.py +1 -1
  382. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/okx.py +1 -1
  383. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/onetrading.py +0 -0
  384. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/p2b.py +0 -0
  385. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/phemex.py +0 -0
  386. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/poloniex.py +1 -1
  387. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/poloniexfutures.py +1 -1
  388. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/probit.py +0 -0
  389. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/upbit.py +0 -0
  390. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/wazirx.py +0 -0
  391. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/whitebit.py +1 -1
  392. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/pro/woo.py +0 -0
  393. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/probit.py +1 -1
  394. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/__init__.py +0 -0
  395. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  396. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  397. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  398. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  399. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  400. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  401. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  402. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  403. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  404. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  405. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
  406. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
  407. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
  408. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
  409. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
  410. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
  411. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
  412. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
  413. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
  414. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
  415. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
  416. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  417. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
  418. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
  419. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
  420. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  421. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
  422. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
  423. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
  424. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
  425. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
  426. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
  427. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
  428. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
  429. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  430. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
  431. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
  432. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
  433. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  434. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
  435. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
  436. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
  437. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
  438. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
  439. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
  440. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
  441. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
  442. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
  443. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  444. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
  445. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
  446. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
  447. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
  448. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
  449. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
  450. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
  451. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
  452. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
  453. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
  454. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
  455. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
  456. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
  457. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
  458. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
  459. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
  460. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
  461. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  462. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
  463. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
  464. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
  465. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
  466. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
  467. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  468. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  469. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
  470. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
  471. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/msgpack/ext.py +0 -0
  472. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
  473. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
  474. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
  475. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
  476. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
  477. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
  478. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
  479. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/toolz/__init__.py +0 -0
  480. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
  481. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/toolz/_version.py +0 -0
  482. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
  483. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
  484. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
  485. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
  486. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
  487. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
  488. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
  489. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/toolz/recipes.py +0 -0
  490. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/static_dependencies/toolz/utils.py +0 -0
  491. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/__init__.py +0 -0
  492. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/__init__.py +0 -0
  493. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_account.py +0 -0
  494. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_balance.py +0 -0
  495. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_borrow_interest.py +0 -0
  496. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_borrow_rate.py +0 -0
  497. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_calculate_fee.py +0 -0
  498. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_crypto.py +0 -0
  499. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_currency.py +0 -0
  500. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_datetime.py +0 -0
  501. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_decimal_to_precision.py +0 -0
  502. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_deep_extend.py +0 -0
  503. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
  504. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
  505. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_funding_rate_history.py +0 -0
  506. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_last_price.py +0 -0
  507. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_ledger_entry.py +0 -0
  508. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_ledger_item.py +0 -0
  509. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_leverage_tier.py +0 -0
  510. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_margin_mode.py +0 -0
  511. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_margin_modification.py +0 -0
  512. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_market.py +0 -0
  513. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_number.py +0 -0
  514. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_ohlcv.py +0 -0
  515. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_open_interest.py +0 -0
  516. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_order.py +0 -0
  517. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_order_book.py +0 -0
  518. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_position.py +0 -0
  519. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_shared_methods.py +0 -0
  520. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_status.py +0 -0
  521. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_throttle.py +0 -0
  522. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_ticker.py +0 -0
  523. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_trade.py +0 -0
  524. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_trading_fee.py +0 -0
  525. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/base/test_transaction.py +0 -0
  526. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/test_async.py +0 -0
  527. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/test/test_sync.py +0 -0
  528. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/timex.py +1 -1
  529. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/tokocrypto.py +1 -1
  530. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/tradeogre.py +1 -1
  531. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/upbit.py +2 -2
  532. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/wavesexchange.py +1 -1
  533. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/wazirx.py +0 -0
  534. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/whitebit.py +1 -1
  535. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/yobit.py +1 -1
  536. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/zaif.py +0 -0
  537. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt/zonda.py +1 -1
  538. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt.egg-info/SOURCES.txt +0 -0
  539. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt.egg-info/dependency_links.txt +0 -0
  540. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt.egg-info/requires.txt +0 -0
  541. {ccxt-4.2.93 → ccxt-4.2.95}/ccxt.egg-info/top_level.txt +0 -0
  542. {ccxt-4.2.93 → ccxt-4.2.95}/setup.cfg +0 -0
  543. {ccxt-4.2.93 → ccxt-4.2.95}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.2.93
3
+ Version: 4.2.95
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
@@ -225,13 +225,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
225
225
 
226
226
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
227
227
 
228
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.93/dist/ccxt.browser.js
229
- * unpkg: https://unpkg.com/ccxt@4.2.93/dist/ccxt.browser.js
228
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.95/dist/ccxt.browser.js
229
+ * unpkg: https://unpkg.com/ccxt@4.2.95/dist/ccxt.browser.js
230
230
 
231
231
  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.
232
232
 
233
233
  ```HTML
234
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.93/dist/ccxt.browser.js"></script>
234
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.95/dist/ccxt.browser.js"></script>
235
235
  ```
236
236
 
237
237
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.2.93'
25
+ __version__ = '4.2.95'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -68,6 +68,7 @@ from ccxt.base.errors import DuplicateOrderId # noqa: F4
68
68
  from ccxt.base.errors import ContractUnavailable # noqa: F401
69
69
  from ccxt.base.errors import NotSupported # noqa: F401
70
70
  from ccxt.base.errors import ProxyError # noqa: F401
71
+ from ccxt.base.errors import ExchangeClosedByUser # noqa: F401
71
72
  from ccxt.base.errors import OperationFailed # noqa: F401
72
73
  from ccxt.base.errors import NetworkError # noqa: F401
73
74
  from ccxt.base.errors import DDoSProtection # noqa: F401
@@ -76,7 +77,6 @@ from ccxt.base.errors import ExchangeNotAvailable # noqa: F4
76
77
  from ccxt.base.errors import OnMaintenance # noqa: F401
77
78
  from ccxt.base.errors import InvalidNonce # noqa: F401
78
79
  from ccxt.base.errors import RequestTimeout # noqa: F401
79
- from ccxt.base.errors import ExchangeClosedByUser # noqa: F401
80
80
  from ccxt.base.errors import error_hierarchy # noqa: F401
81
81
 
82
82
  from ccxt.ace import ace # noqa: F401
@@ -608,6 +608,7 @@ class ImplicitAPI:
608
608
  private_get_myallocations = privateGetMyAllocations = Entry('myAllocations', 'private', 'GET', {'cost': 4})
609
609
  private_get_account_commission = privateGetAccountCommission = Entry('account/commission', 'private', 'GET', {'cost': 4})
610
610
  private_post_order_oco = privatePostOrderOco = Entry('order/oco', 'private', 'POST', {'cost': 0.2})
611
+ private_post_orderlist_oco = privatePostOrderListOco = Entry('orderList/oco', 'private', 'POST', {'cost': 0.2})
611
612
  private_post_sor_order = privatePostSorOrder = Entry('sor/order', 'private', 'POST', {'cost': 0.2})
612
613
  private_post_sor_order_test = privatePostSorOrderTest = Entry('sor/order/test', 'private', 'POST', {'cost': 0.2})
613
614
  private_post_order = privatePostOrder = Entry('order', 'private', 'POST', {'cost': 0.2})
@@ -608,6 +608,7 @@ class ImplicitAPI:
608
608
  private_get_myallocations = privateGetMyAllocations = Entry('myAllocations', 'private', 'GET', {'cost': 4})
609
609
  private_get_account_commission = privateGetAccountCommission = Entry('account/commission', 'private', 'GET', {'cost': 4})
610
610
  private_post_order_oco = privatePostOrderOco = Entry('order/oco', 'private', 'POST', {'cost': 0.2})
611
+ private_post_orderlist_oco = privatePostOrderListOco = Entry('orderList/oco', 'private', 'POST', {'cost': 0.2})
611
612
  private_post_sor_order = privatePostSorOrder = Entry('sor/order', 'private', 'POST', {'cost': 0.2})
612
613
  private_post_sor_order_test = privatePostSorOrderTest = Entry('sor/order/test', 'private', 'POST', {'cost': 0.2})
613
614
  private_post_order = privatePostOrder = Entry('order', 'private', 'POST', {'cost': 0.2})
@@ -660,6 +660,7 @@ class ImplicitAPI:
660
660
  private_get_myallocations = privateGetMyAllocations = Entry('myAllocations', 'private', 'GET', {'cost': 4})
661
661
  private_get_account_commission = privateGetAccountCommission = Entry('account/commission', 'private', 'GET', {'cost': 4})
662
662
  private_post_order_oco = privatePostOrderOco = Entry('order/oco', 'private', 'POST', {'cost': 0.2})
663
+ private_post_orderlist_oco = privatePostOrderListOco = Entry('orderList/oco', 'private', 'POST', {'cost': 0.2})
663
664
  private_post_sor_order = privatePostSorOrder = Entry('sor/order', 'private', 'POST', {'cost': 0.2})
664
665
  private_post_sor_order_test = privatePostSorOrderTest = Entry('sor/order/test', 'private', 'POST', {'cost': 0.2})
665
666
  private_post_order = privatePostOrder = Entry('order', 'private', 'POST', {'cost': 0.2})
@@ -608,6 +608,7 @@ class ImplicitAPI:
608
608
  private_get_myallocations = privateGetMyAllocations = Entry('myAllocations', 'private', 'GET', {'cost': 4})
609
609
  private_get_account_commission = privateGetAccountCommission = Entry('account/commission', 'private', 'GET', {'cost': 4})
610
610
  private_post_order_oco = privatePostOrderOco = Entry('order/oco', 'private', 'POST', {'cost': 0.2})
611
+ private_post_orderlist_oco = privatePostOrderListOco = Entry('orderList/oco', 'private', 'POST', {'cost': 0.2})
611
612
  private_post_sor_order = privatePostSorOrder = Entry('sor/order', 'private', 'POST', {'cost': 0.2})
612
613
  private_post_sor_order_test = privatePostSorOrderTest = Entry('sor/order/test', 'private', 'POST', {'cost': 0.2})
613
614
  private_post_order = privatePostOrder = Entry('order', 'private', 'POST', {'cost': 0.2})
@@ -234,3 +234,9 @@ class ImplicitAPI:
234
234
  private_post_blur_address = privatePostBlurAddress = Entry('blur_address/', 'private', 'POST', {'cost': 1})
235
235
  private_post_vext_withdrawal = privatePostVextWithdrawal = Entry('vext_withdrawal/', 'private', 'POST', {'cost': 1})
236
236
  private_post_vext_address = privatePostVextAddress = Entry('vext_address/', 'private', 'POST', {'cost': 1})
237
+ private_post_cspr_withdrawal = privatePostCsprWithdrawal = Entry('cspr_withdrawal/', 'private', 'POST', {'cost': 1})
238
+ private_post_cspr_address = privatePostCsprAddress = Entry('cspr_address/', 'private', 'POST', {'cost': 1})
239
+ private_post_vchf_withdrawal = privatePostVchfWithdrawal = Entry('vchf_withdrawal/', 'private', 'POST', {'cost': 1})
240
+ private_post_vchf_address = privatePostVchfAddress = Entry('vchf_address/', 'private', 'POST', {'cost': 1})
241
+ private_post_veur_withdrawal = privatePostVeurWithdrawal = Entry('veur_withdrawal/', 'private', 'POST', {'cost': 1})
242
+ private_post_veur_address = privatePostVeurAddress = Entry('veur_address/', 'private', 'POST', {'cost': 1})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.93'
7
+ __version__ = '4.2.95'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -47,6 +47,7 @@ from ccxt.base.errors import DuplicateOrderId # noqa: F4
47
47
  from ccxt.base.errors import ContractUnavailable # noqa: F401
48
48
  from ccxt.base.errors import NotSupported # noqa: F401
49
49
  from ccxt.base.errors import ProxyError # noqa: F401
50
+ from ccxt.base.errors import ExchangeClosedByUser # noqa: F401
50
51
  from ccxt.base.errors import OperationFailed # noqa: F401
51
52
  from ccxt.base.errors import NetworkError # noqa: F401
52
53
  from ccxt.base.errors import DDoSProtection # noqa: F401
@@ -55,7 +56,6 @@ from ccxt.base.errors import ExchangeNotAvailable # noqa: F4
55
56
  from ccxt.base.errors import OnMaintenance # noqa: F401
56
57
  from ccxt.base.errors import InvalidNonce # noqa: F401
57
58
  from ccxt.base.errors import RequestTimeout # noqa: F401
58
- from ccxt.base.errors import ExchangeClosedByUser # noqa: F401
59
59
  from ccxt.base.errors import error_hierarchy # noqa: F401
60
60
 
61
61
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.2.93'
5
+ __version__ = '4.2.95'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -1281,6 +1281,9 @@ class Exchange(BaseExchange):
1281
1281
  async def fetch_option(self, symbol: str, params={}):
1282
1282
  raise NotSupported(self.id + ' fetchOption() is not supported yet')
1283
1283
 
1284
+ async def fetch_convert_quote(self, fromCode: str, toCode: str, amount: Num = None, params={}):
1285
+ raise NotSupported(self.id + ' fetchConvertQuote() is not supported yet')
1286
+
1284
1287
  async def fetch_deposits_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
1285
1288
  """
1286
1289
  fetch history of deposits and withdrawals
@@ -1421,6 +1424,9 @@ class Exchange(BaseExchange):
1421
1424
  fees = await self.fetch_trading_fees(params)
1422
1425
  return self.safe_dict(fees, symbol)
1423
1426
 
1427
+ async def fetch_convert_currencies(self, params={}):
1428
+ raise NotSupported(self.id + ' fetchConvertCurrencies() is not supported yet')
1429
+
1424
1430
  async def fetch_funding_rate(self, symbol: str, params={}):
1425
1431
  if self.has['fetchFundingRates']:
1426
1432
  await self.load_markets()
@@ -11,11 +11,13 @@ import json
11
11
  from ccxt.base.types import Balances, Currencies, Currency, Greeks, Int, Leverage, Leverages, MarginMode, MarginModes, MarginModification, Market, MarketInterface, Num, Option, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
12
12
  from typing import List
13
13
  from ccxt.base.errors import ExchangeError
14
+ from ccxt.base.errors import AuthenticationError
14
15
  from ccxt.base.errors import PermissionDenied
15
16
  from ccxt.base.errors import AccountSuspended
16
17
  from ccxt.base.errors import ArgumentsRequired
17
18
  from ccxt.base.errors import BadRequest
18
19
  from ccxt.base.errors import BadSymbol
20
+ from ccxt.base.errors import OperationRejected
19
21
  from ccxt.base.errors import MarginModeAlreadySet
20
22
  from ccxt.base.errors import BadResponse
21
23
  from ccxt.base.errors import InsufficientFunds
@@ -24,14 +26,12 @@ from ccxt.base.errors import OrderNotFound
24
26
  from ccxt.base.errors import OrderImmediatelyFillable
25
27
  from ccxt.base.errors import OrderNotFillable
26
28
  from ccxt.base.errors import NotSupported
29
+ from ccxt.base.errors import OperationFailed
27
30
  from ccxt.base.errors import DDoSProtection
28
31
  from ccxt.base.errors import RateLimitExceeded
29
32
  from ccxt.base.errors import OnMaintenance
30
33
  from ccxt.base.errors import InvalidNonce
31
34
  from ccxt.base.errors import RequestTimeout
32
- from ccxt.base.errors import AuthenticationError
33
- from ccxt.base.errors import OperationRejected
34
- from ccxt.base.errors import OperationFailed
35
35
  from ccxt.base.decimal_to_precision import TRUNCATE
36
36
  from ccxt.base.decimal_to_precision import DECIMAL_PLACES
37
37
  from ccxt.base.precise import Precise
@@ -94,6 +94,8 @@ class binance(Exchange, ImplicitAPI):
94
94
  'fetchCanceledOrders': 'emulated',
95
95
  'fetchClosedOrder': False,
96
96
  'fetchClosedOrders': 'emulated',
97
+ 'fetchConvertCurrencies': True,
98
+ 'fetchConvertQuote': False,
97
99
  'fetchCrossBorrowRate': True,
98
100
  'fetchCrossBorrowRates': False,
99
101
  'fetchCurrencies': True,
@@ -993,6 +995,7 @@ class binance(Exchange, ImplicitAPI):
993
995
  },
994
996
  'post': {
995
997
  'order/oco': 0.2,
998
+ 'orderList/oco': 0.2,
996
999
  'sor/order': 0.2,
997
1000
  'sor/order/test': 0.2,
998
1001
  'order': 0.2,
@@ -4109,10 +4112,13 @@ class binance(Exchange, ImplicitAPI):
4109
4112
  'interval': self.safe_string(self.timeframes, timeframe, timeframe),
4110
4113
  'limit': limit,
4111
4114
  }
4115
+ marketId = market['id']
4112
4116
  if price == 'index':
4113
- request['pair'] = market['id'] # Index price takes self argument instead of symbol
4117
+ parts = marketId.split('_')
4118
+ pair = self.safe_string(parts, 0)
4119
+ request['pair'] = pair # Index price takes self argument instead of symbol
4114
4120
  else:
4115
- request['symbol'] = market['id']
4121
+ request['symbol'] = marketId
4116
4122
  # duration = self.parse_timeframe(timeframe)
4117
4123
  if since is not None:
4118
4124
  request['startTime'] = since
@@ -11578,3 +11584,55 @@ class binance(Exchange, ImplicitAPI):
11578
11584
  #
11579
11585
  modifications = self.parse_margin_modifications(response)
11580
11586
  return self.filter_by_symbol_since_limit(modifications, symbol, since, limit)
11587
+
11588
+ async def fetch_convert_currencies(self, params={}) -> Currencies:
11589
+ """
11590
+ fetches all available currencies that can be converted
11591
+ :see: https://binance-docs.github.io/apidocs/spot/en/#query-order-quantity-precision-per-asset-user_data
11592
+ :param dict [params]: extra parameters specific to the exchange API endpoint
11593
+ :returns dict: an associative dictionary of currencies
11594
+ """
11595
+ await self.load_markets()
11596
+ response = await self.sapiGetConvertAssetInfo(params)
11597
+ #
11598
+ # [
11599
+ # {
11600
+ # "asset": "BTC",
11601
+ # "fraction": 8
11602
+ # },
11603
+ # ]
11604
+ #
11605
+ result = {}
11606
+ for i in range(0, len(response)):
11607
+ entry = response[i]
11608
+ id = self.safe_string(entry, 'asset')
11609
+ code = self.safe_currency_code(id)
11610
+ result[code] = {
11611
+ 'info': entry,
11612
+ 'id': id,
11613
+ 'code': code,
11614
+ 'networks': None,
11615
+ 'type': None,
11616
+ 'name': None,
11617
+ 'active': None,
11618
+ 'deposit': None,
11619
+ 'withdraw': None,
11620
+ 'fee': None,
11621
+ 'precision': self.safe_integer(entry, 'fraction'),
11622
+ 'limits': {
11623
+ 'amount': {
11624
+ 'min': None,
11625
+ 'max': None,
11626
+ },
11627
+ 'withdraw': {
11628
+ 'min': None,
11629
+ 'max': None,
11630
+ },
11631
+ 'deposit': {
11632
+ 'min': None,
11633
+ 'max': None,
11634
+ },
11635
+ },
11636
+ 'created': None,
11637
+ }
11638
+ return result
@@ -8,9 +8,10 @@ from ccxt.abstract.bitget import ImplicitAPI
8
8
  import asyncio
9
9
  import hashlib
10
10
  import json
11
- from ccxt.base.types import Balances, Currencies, Currency, FundingHistory, Int, Liquidation, Leverage, MarginMode, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
11
+ from ccxt.base.types import Balances, Conversion, Currencies, Currency, FundingHistory, Int, Liquidation, Leverage, MarginMode, MarginModification, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
12
12
  from typing import List
13
13
  from ccxt.base.errors import ExchangeError
14
+ from ccxt.base.errors import AuthenticationError
14
15
  from ccxt.base.errors import PermissionDenied
15
16
  from ccxt.base.errors import AccountSuspended
16
17
  from ccxt.base.errors import ArgumentsRequired
@@ -28,7 +29,6 @@ from ccxt.base.errors import ExchangeNotAvailable
28
29
  from ccxt.base.errors import OnMaintenance
29
30
  from ccxt.base.errors import InvalidNonce
30
31
  from ccxt.base.errors import RequestTimeout
31
- from ccxt.base.errors import AuthenticationError
32
32
  from ccxt.base.decimal_to_precision import TICK_SIZE
33
33
  from ccxt.base.precise import Precise
34
34
 
@@ -85,6 +85,8 @@ class bitget(Exchange, ImplicitAPI):
85
85
  'fetchCanceledAndClosedOrders': True,
86
86
  'fetchCanceledOrders': True,
87
87
  'fetchClosedOrders': True,
88
+ 'fetchConvertCurrencies': True,
89
+ 'fetchConvertQuote': True,
88
90
  'fetchCrossBorrowRate': True,
89
91
  'fetchCrossBorrowRates': False,
90
92
  'fetchCurrencies': True,
@@ -7853,6 +7855,138 @@ class bitget(Exchange, ImplicitAPI):
7853
7855
  'marginMode': marginType,
7854
7856
  }
7855
7857
 
7858
+ async def fetch_convert_quote(self, fromCode: str, toCode: str, amount: Num = None, params={}) -> Conversion:
7859
+ """
7860
+ fetch a quote for converting from one currency to another
7861
+ :see: https://www.bitget.com/api-doc/common/convert/Get-Quoted-Price
7862
+ :param str fromCode: the currency that you want to sell and convert from
7863
+ :param str toCode: the currency that you want to buy and convert into
7864
+ :param float [amount]: how much you want to trade in units of the from currency
7865
+ :param dict [params]: extra parameters specific to the exchange API endpoint
7866
+ :returns dict: a `conversion structure <https://docs.ccxt.com/#/?id=conversion-structure>`
7867
+ """
7868
+ await self.load_markets()
7869
+ request = {
7870
+ 'fromCoin': fromCode.upper(),
7871
+ 'toCoin': toCode.upper(),
7872
+ 'fromCoinSize': self.number_to_string(amount),
7873
+ }
7874
+ response = await self.privateConvertGetV2ConvertQuotedPrice(self.extend(request, params))
7875
+ #
7876
+ # {
7877
+ # "code": "00000",
7878
+ # "msg": "success",
7879
+ # "requestTime": 1712121940158,
7880
+ # "data": {
7881
+ # "fromCoin": "USDT",
7882
+ # "fromCoinSize": "5",
7883
+ # "cnvtPrice": "0.9993007892377704",
7884
+ # "toCoin": "USDC",
7885
+ # "toCoinSize": "4.99650394",
7886
+ # "traceId": "1159288930228187140",
7887
+ # "fee": "0"
7888
+ # }
7889
+ # }
7890
+ #
7891
+ data = self.safe_dict(response, 'data', {})
7892
+ fromCurrencyId = self.safe_string(data, 'fromCoin', fromCode)
7893
+ fromCurrency = self.currency(fromCurrencyId)
7894
+ toCurrencyId = self.safe_string(data, 'toCoin', toCode)
7895
+ toCurrency = self.currency(toCurrencyId)
7896
+ return self.parse_conversion(data, fromCurrency, toCurrency)
7897
+
7898
+ def parse_conversion(self, conversion, fromCurrency: Currency = None, toCurrency: Currency = None) -> Conversion:
7899
+ #
7900
+ # fetchConvertQuote
7901
+ #
7902
+ # {
7903
+ # "fromCoin": "USDT",
7904
+ # "fromCoinSize": "5",
7905
+ # "cnvtPrice": "0.9993007892377704",
7906
+ # "toCoin": "USDC",
7907
+ # "toCoinSize": "4.99650394",
7908
+ # "traceId": "1159288930228187140",
7909
+ # "fee": "0"
7910
+ # }
7911
+ #
7912
+ timestamp = self.safe_integer(conversion, 'ts')
7913
+ fromCoin = self.safe_string(conversion, 'fromCoin')
7914
+ fromCode = self.safe_currency_code(fromCoin, fromCurrency)
7915
+ to = self.safe_string(conversion, 'toCoin')
7916
+ toCode = self.safe_currency_code(to, toCurrency)
7917
+ return {
7918
+ 'info': conversion,
7919
+ 'timestamp': timestamp,
7920
+ 'datetime': self.iso8601(timestamp),
7921
+ 'id': self.safe_string(conversion, 'traceId'),
7922
+ 'fromCurrency': fromCode,
7923
+ 'fromAmount': self.safe_number(conversion, 'fromCoinSize'),
7924
+ 'toCurrency': toCode,
7925
+ 'toAmount': self.safe_number(conversion, 'toCoinSize'),
7926
+ 'price': self.safe_number(conversion, 'cnvtPrice'),
7927
+ 'fee': self.safe_number(conversion, 'fee'),
7928
+ }
7929
+
7930
+ async def fetch_convert_currencies(self, params={}) -> Currencies:
7931
+ """
7932
+ fetches all available currencies that can be converted
7933
+ :see: https://www.bitget.com/api-doc/common/convert/Get-Convert-Currencies
7934
+ :param dict [params]: extra parameters specific to the exchange API endpoint
7935
+ :returns dict: an associative dictionary of currencies
7936
+ """
7937
+ await self.load_markets()
7938
+ response = await self.privateConvertGetV2ConvertCurrencies(params)
7939
+ #
7940
+ # {
7941
+ # "code": "00000",
7942
+ # "msg": "success",
7943
+ # "requestTime": 1712121755897,
7944
+ # "data": [
7945
+ # {
7946
+ # "coin": "BTC",
7947
+ # "available": "0.00009850",
7948
+ # "maxAmount": "0.756266",
7949
+ # "minAmount": "0.00001"
7950
+ # },
7951
+ # ]
7952
+ # }
7953
+ #
7954
+ result = {}
7955
+ data = self.safe_list(response, 'data', [])
7956
+ for i in range(0, len(data)):
7957
+ entry = data[i]
7958
+ id = self.safe_string(entry, 'coin')
7959
+ code = self.safe_currency_code(id)
7960
+ result[code] = {
7961
+ 'info': entry,
7962
+ 'id': id,
7963
+ 'code': code,
7964
+ 'networks': None,
7965
+ 'type': None,
7966
+ 'name': None,
7967
+ 'active': None,
7968
+ 'deposit': None,
7969
+ 'withdraw': self.safe_number(entry, 'available'),
7970
+ 'fee': None,
7971
+ 'precision': None,
7972
+ 'limits': {
7973
+ 'amount': {
7974
+ 'min': self.safe_number(entry, 'minAmount'),
7975
+ 'max': self.safe_number(entry, 'maxAmount'),
7976
+ },
7977
+ 'withdraw': {
7978
+ 'min': None,
7979
+ 'max': None,
7980
+ },
7981
+ 'deposit': {
7982
+ 'min': None,
7983
+ 'max': None,
7984
+ },
7985
+ },
7986
+ 'created': None,
7987
+ }
7988
+ return result
7989
+
7856
7990
  def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
7857
7991
  if not response:
7858
7992
  return None # fallback to default error handler
@@ -9,6 +9,7 @@ import hashlib
9
9
  from ccxt.base.types import Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import PermissionDenied
13
14
  from ccxt.base.errors import BadRequest
14
15
  from ccxt.base.errors import InsufficientFunds
@@ -19,7 +20,6 @@ from ccxt.base.errors import NotSupported
19
20
  from ccxt.base.errors import ExchangeNotAvailable
20
21
  from ccxt.base.errors import OnMaintenance
21
22
  from ccxt.base.errors import InvalidNonce
22
- from ccxt.base.errors import AuthenticationError
23
23
  from ccxt.base.decimal_to_precision import TICK_SIZE
24
24
  from ccxt.base.precise import Precise
25
25
 
@@ -370,6 +370,12 @@ class bitstamp(Exchange, ImplicitAPI):
370
370
  'blur_address/': 1,
371
371
  'vext_withdrawal/': 1,
372
372
  'vext_address/': 1,
373
+ 'cspr_withdrawal/': 1,
374
+ 'cspr_address/': 1,
375
+ 'vchf_withdrawal/': 1,
376
+ 'vchf_address/': 1,
377
+ 'veur_withdrawal/': 1,
378
+ 'veur_address/': 1,
373
379
  },
374
380
  },
375
381
  },
@@ -9,6 +9,7 @@ import asyncio
9
9
  from ccxt.base.types import Balances, Currencies, Currency, Int, Leverage, Leverages, MarginModification, Market, Num, Order, OrderRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import AuthenticationError
12
13
  from ccxt.base.errors import PermissionDenied
13
14
  from ccxt.base.errors import ArgumentsRequired
14
15
  from ccxt.base.errors import BadRequest
@@ -20,7 +21,6 @@ from ccxt.base.errors import NotSupported
20
21
  from ccxt.base.errors import RateLimitExceeded
21
22
  from ccxt.base.errors import ExchangeNotAvailable
22
23
  from ccxt.base.errors import RequestTimeout
23
- from ccxt.base.errors import AuthenticationError
24
24
  from ccxt.base.decimal_to_precision import TICK_SIZE
25
25
  from ccxt.base.precise import Precise
26
26
 
@@ -1076,8 +1076,8 @@ class coinex(Exchange, ImplicitAPI):
1076
1076
  async def fetch_order_book(self, symbol: str, limit: Int = 20, params={}):
1077
1077
  """
1078
1078
  fetches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
1079
- :see: https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot001_market004_market_depth
1080
- :see: https://viabtc.github.io/coinex_api_en_doc/futures/#docsfutures001_http010_market_depth
1079
+ :see: https://docs.coinex.com/api/v2/spot/market/http/list-market-depth
1080
+ :see: https://docs.coinex.com/api/v2/futures/market/http/list-market-depth
1081
1081
  :param str symbol: unified symbol of the market to fetch the order book for
1082
1082
  :param int [limit]: the maximum amount of order book entries to return
1083
1083
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -1088,63 +1088,69 @@ class coinex(Exchange, ImplicitAPI):
1088
1088
  if limit is None:
1089
1089
  limit = 20 # default
1090
1090
  request = {
1091
- 'market': self.market_id(symbol),
1092
- 'merge': '0',
1093
- 'limit': str(limit),
1091
+ 'market': market['id'],
1092
+ 'limit': limit,
1093
+ 'interval': '0',
1094
1094
  }
1095
1095
  response = None
1096
1096
  if market['swap']:
1097
- response = await self.v1PerpetualPublicGetMarketDepth(self.extend(request, params))
1097
+ response = await self.v2PublicGetFuturesDepth(self.extend(request, params))
1098
+ #
1099
+ # {
1100
+ # "code": 0,
1101
+ # "data": {
1102
+ # "depth": {
1103
+ # "asks": [
1104
+ # ["70851.94", "0.2119"],
1105
+ # ["70851.95", "0.0004"],
1106
+ # ["70851.96", "0.0004"]
1107
+ # ],
1108
+ # "bids": [
1109
+ # ["70851.93", "1.0314"],
1110
+ # ["70850.93", "0.0021"],
1111
+ # ["70850.42", "0.0306"]
1112
+ # ],
1113
+ # "checksum": 2956436260,
1114
+ # "last": "70851.94",
1115
+ # "updated_at": 1712824003252
1116
+ # },
1117
+ # "is_full": True,
1118
+ # "market": "BTCUSDT"
1119
+ # },
1120
+ # "message": "OK"
1121
+ # }
1122
+ #
1098
1123
  else:
1099
- response = await self.v1PublicGetMarketDepth(self.extend(request, params))
1100
- #
1101
- # Spot
1102
- #
1103
- # {
1104
- # "code": 0,
1105
- # "data": {
1106
- # "asks": [
1107
- # ["41056.33", "0.31727613"],
1108
- # ["41056.34", "1.05657294"],
1109
- # ["41056.35", "0.02346648"]
1110
- # ],
1111
- # "bids": [
1112
- # ["41050.61", "0.40618608"],
1113
- # ["41046.98", "0.13800000"],
1114
- # ["41046.56", "0.22579234"]
1115
- # ],
1116
- # "last": "41050.61",
1117
- # "time": 1650573220346
1118
- # },
1119
- # "message": "OK"
1120
- # }
1121
- #
1122
- # Swap
1123
- #
1124
- # {
1125
- # "code": 0,
1126
- # "data": {
1127
- # "asks": [
1128
- # ["40620.90", "0.0384"],
1129
- # ["40625.50", "0.0219"],
1130
- # ["40625.90", "0.3506"]
1131
- # ],
1132
- # "bids": [
1133
- # ["40620.89", "19.6861"],
1134
- # ["40620.80", "0.0012"],
1135
- # ["40619.87", "0.0365"]
1136
- # ],
1137
- # "last": "40620.89",
1138
- # "time": 1650587672406,
1139
- # "sign_price": "40619.32",
1140
- # "index_price": "40609.93"
1141
- # },
1142
- # "message": "OK"
1143
- # }
1144
- #
1145
- result = self.safe_value(response, 'data', {})
1146
- timestamp = self.safe_integer(result, 'time')
1147
- return self.parse_order_book(result, symbol, timestamp)
1124
+ response = await self.v2PublicGetSpotDepth(self.extend(request, params))
1125
+ #
1126
+ # {
1127
+ # "code": 0,
1128
+ # "data": {
1129
+ # "depth": {
1130
+ # "asks": [
1131
+ # ["70875.31", "0.28670282"],
1132
+ # ["70875.32", "0.31008114"],
1133
+ # ["70875.42", "0.05876653"]
1134
+ # ],
1135
+ # "bids": [
1136
+ # ["70855.3", "0.00632222"],
1137
+ # ["70855.29", "0.36216834"],
1138
+ # ["70855.17", "0.10166802"]
1139
+ # ],
1140
+ # "checksum": 2313816665,
1141
+ # "last": "70857.19",
1142
+ # "updated_at": 1712823790987
1143
+ # },
1144
+ # "is_full": True,
1145
+ # "market": "BTCUSDT"
1146
+ # },
1147
+ # "message": "OK"
1148
+ # }
1149
+ #
1150
+ data = self.safe_dict(response, 'data', {})
1151
+ depth = self.safe_dict(data, 'depth', {})
1152
+ timestamp = self.safe_integer(depth, 'updated_at')
1153
+ return self.parse_order_book(depth, symbol, timestamp)
1148
1154
 
1149
1155
  def parse_trade(self, trade, market: Market = None) -> Trade:
1150
1156
  #
@@ -10,6 +10,7 @@ import hashlib
10
10
  from ccxt.base.types import Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees, Transaction
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
13
+ from ccxt.base.errors import AuthenticationError
13
14
  from ccxt.base.errors import PermissionDenied
14
15
  from ccxt.base.errors import ArgumentsRequired
15
16
  from ccxt.base.errors import BadRequest
@@ -21,7 +22,6 @@ from ccxt.base.errors import RateLimitExceeded
21
22
  from ccxt.base.errors import ExchangeNotAvailable
22
23
  from ccxt.base.errors import OnMaintenance
23
24
  from ccxt.base.errors import InvalidNonce
24
- from ccxt.base.errors import AuthenticationError
25
25
  from ccxt.base.decimal_to_precision import TICK_SIZE
26
26
  from ccxt.base.precise import Precise
27
27
 
@@ -666,7 +666,8 @@ class gemini(Exchange, ImplicitAPI):
666
666
  for i in range(0, len(quoteQurrencies)):
667
667
  quoteCurrency = quoteQurrencies[i]
668
668
  if marketIdWithoutPerp.endswith(quoteCurrency):
669
- baseId = marketIdWithoutPerp.replace(quoteCurrency, '')
669
+ quoteLength = self.parse_to_int(-1 * len(quoteCurrency))
670
+ baseId = marketIdWithoutPerp[0:quoteLength]
670
671
  quoteId = quoteCurrency
671
672
  if isPerp:
672
673
  settleId = quoteCurrency # always same