ccxt 4.3.64__tar.gz → 4.3.66__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 (528) hide show
  1. {ccxt-4.3.64/ccxt.egg-info → ccxt-4.3.66}/PKG-INFO +5 -4
  2. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/__init__.py +1 -1
  3. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/__init__.py +1 -1
  4. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/base/exchange.py +1 -1
  5. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/base/ws/fast_client.py +2 -1
  6. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/base/ws/future.py +13 -2
  7. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bybit.py +11 -4
  8. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/hyperliquid.py +60 -7
  9. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/kraken.py +25 -0
  10. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/base/exchange.py +1 -1
  11. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bybit.py +11 -4
  12. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/hyperliquid.py +60 -7
  13. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/kraken.py +25 -0
  14. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/__init__.py +1 -1
  15. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/hyperliquid.py +102 -2
  16. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/okx.py +5 -5
  17. {ccxt-4.3.64 → ccxt-4.3.66/ccxt.egg-info}/PKG-INFO +5 -4
  18. {ccxt-4.3.64 → ccxt-4.3.66}/package.json +1 -1
  19. {ccxt-4.3.64 → ccxt-4.3.66}/LICENSE.txt +0 -0
  20. {ccxt-4.3.64 → ccxt-4.3.66}/MANIFEST.in +0 -0
  21. {ccxt-4.3.64 → ccxt-4.3.66}/README.rst +0 -0
  22. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/__init__.py +0 -0
  23. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/ace.py +0 -0
  24. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/alpaca.py +0 -0
  25. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/ascendex.py +0 -0
  26. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bequant.py +0 -0
  27. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bigone.py +0 -0
  28. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/binance.py +0 -0
  29. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/binancecoinm.py +0 -0
  30. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/binanceus.py +0 -0
  31. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/binanceusdm.py +0 -0
  32. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bingx.py +0 -0
  33. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bit2c.py +0 -0
  34. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bitbank.py +0 -0
  35. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bitbay.py +0 -0
  36. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bitbns.py +0 -0
  37. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bitcoincom.py +0 -0
  38. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bitfinex.py +0 -0
  39. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bitfinex2.py +0 -0
  40. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bitflyer.py +0 -0
  41. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bitget.py +0 -0
  42. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bithumb.py +0 -0
  43. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bitmart.py +0 -0
  44. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bitmex.py +0 -0
  45. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bitopro.py +0 -0
  46. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bitpanda.py +0 -0
  47. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bitrue.py +0 -0
  48. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bitso.py +0 -0
  49. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bitstamp.py +0 -0
  50. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bitteam.py +0 -0
  51. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bitvavo.py +0 -0
  52. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bl3p.py +0 -0
  53. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/blockchaincom.py +0 -0
  54. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/blofin.py +0 -0
  55. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/btcalpha.py +0 -0
  56. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/btcbox.py +0 -0
  57. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/btcmarkets.py +0 -0
  58. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/btcturk.py +0 -0
  59. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/bybit.py +0 -0
  60. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/cex.py +0 -0
  61. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/coinbase.py +0 -0
  62. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/coinbaseadvanced.py +0 -0
  63. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/coinbaseexchange.py +0 -0
  64. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/coinbaseinternational.py +0 -0
  65. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/coincheck.py +0 -0
  66. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/coinex.py +0 -0
  67. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/coinlist.py +0 -0
  68. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/coinmate.py +0 -0
  69. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/coinmetro.py +0 -0
  70. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/coinone.py +0 -0
  71. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/coinsph.py +0 -0
  72. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/coinspot.py +0 -0
  73. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/cryptocom.py +0 -0
  74. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/currencycom.py +0 -0
  75. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/delta.py +0 -0
  76. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/deribit.py +0 -0
  77. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/digifinex.py +0 -0
  78. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/exmo.py +0 -0
  79. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/fmfwio.py +0 -0
  80. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/gate.py +0 -0
  81. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/gateio.py +0 -0
  82. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/gemini.py +0 -0
  83. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/hitbtc.py +0 -0
  84. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/hitbtc3.py +0 -0
  85. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/hollaex.py +0 -0
  86. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/htx.py +0 -0
  87. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/huobi.py +0 -0
  88. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/huobijp.py +0 -0
  89. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/hyperliquid.py +0 -0
  90. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/idex.py +0 -0
  91. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/independentreserve.py +0 -0
  92. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/indodax.py +0 -0
  93. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/kraken.py +0 -0
  94. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/krakenfutures.py +0 -0
  95. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/kucoin.py +0 -0
  96. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/kucoinfutures.py +0 -0
  97. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/kuna.py +0 -0
  98. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/latoken.py +0 -0
  99. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/lbank.py +0 -0
  100. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/luno.py +0 -0
  101. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/lykke.py +0 -0
  102. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/mercado.py +0 -0
  103. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/mexc.py +0 -0
  104. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/ndax.py +0 -0
  105. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/novadax.py +0 -0
  106. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/oceanex.py +0 -0
  107. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/okcoin.py +0 -0
  108. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/okx.py +0 -0
  109. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/onetrading.py +0 -0
  110. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/oxfun.py +0 -0
  111. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/p2b.py +0 -0
  112. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/paymium.py +0 -0
  113. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/phemex.py +0 -0
  114. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/poloniex.py +0 -0
  115. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/poloniexfutures.py +0 -0
  116. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/probit.py +0 -0
  117. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/timex.py +0 -0
  118. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/tokocrypto.py +0 -0
  119. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/tradeogre.py +0 -0
  120. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/upbit.py +0 -0
  121. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/vertex.py +0 -0
  122. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/wavesexchange.py +0 -0
  123. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/wazirx.py +0 -0
  124. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/whitebit.py +0 -0
  125. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/woo.py +0 -0
  126. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/woofipro.py +0 -0
  127. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/xt.py +0 -0
  128. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/yobit.py +0 -0
  129. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/zaif.py +0 -0
  130. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/abstract/zonda.py +0 -0
  131. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/ace.py +0 -0
  132. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/alpaca.py +0 -0
  133. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/ascendex.py +0 -0
  134. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/ace.py +0 -0
  135. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/alpaca.py +0 -0
  136. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/ascendex.py +0 -0
  137. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/base/__init__.py +0 -0
  138. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/base/throttler.py +0 -0
  139. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/base/ws/__init__.py +0 -0
  140. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  141. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/base/ws/cache.py +0 -0
  142. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/base/ws/client.py +0 -0
  143. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/base/ws/functions.py +0 -0
  144. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/base/ws/order_book.py +0 -0
  145. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  146. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bequant.py +0 -0
  147. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bigone.py +0 -0
  148. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/binance.py +0 -0
  149. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/binancecoinm.py +0 -0
  150. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/binanceus.py +0 -0
  151. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/binanceusdm.py +0 -0
  152. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bingx.py +0 -0
  153. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bit2c.py +0 -0
  154. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bitbank.py +0 -0
  155. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bitbay.py +0 -0
  156. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bitbns.py +0 -0
  157. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bitcoincom.py +0 -0
  158. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bitfinex.py +0 -0
  159. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bitfinex2.py +0 -0
  160. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bitflyer.py +0 -0
  161. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bitget.py +0 -0
  162. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bithumb.py +0 -0
  163. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bitmart.py +0 -0
  164. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bitmex.py +0 -0
  165. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bitopro.py +0 -0
  166. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bitpanda.py +0 -0
  167. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bitrue.py +0 -0
  168. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bitso.py +0 -0
  169. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bitstamp.py +0 -0
  170. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bitteam.py +0 -0
  171. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bitvavo.py +0 -0
  172. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/bl3p.py +0 -0
  173. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/blockchaincom.py +0 -0
  174. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/blofin.py +0 -0
  175. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/btcalpha.py +0 -0
  176. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/btcbox.py +0 -0
  177. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/btcmarkets.py +0 -0
  178. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/btcturk.py +0 -0
  179. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/cex.py +0 -0
  180. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/coinbase.py +0 -0
  181. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/coinbaseadvanced.py +0 -0
  182. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/coinbaseexchange.py +0 -0
  183. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/coinbaseinternational.py +0 -0
  184. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/coincheck.py +0 -0
  185. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/coinex.py +0 -0
  186. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/coinlist.py +0 -0
  187. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/coinmate.py +0 -0
  188. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/coinmetro.py +0 -0
  189. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/coinone.py +0 -0
  190. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/coinsph.py +0 -0
  191. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/coinspot.py +0 -0
  192. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/cryptocom.py +0 -0
  193. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/currencycom.py +0 -0
  194. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/delta.py +0 -0
  195. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/deribit.py +0 -0
  196. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/digifinex.py +0 -0
  197. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/exmo.py +0 -0
  198. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/fmfwio.py +0 -0
  199. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/gate.py +0 -0
  200. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/gateio.py +0 -0
  201. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/gemini.py +0 -0
  202. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/hitbtc.py +0 -0
  203. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/hitbtc3.py +0 -0
  204. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/hollaex.py +0 -0
  205. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/htx.py +0 -0
  206. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/huobi.py +0 -0
  207. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/huobijp.py +0 -0
  208. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/idex.py +0 -0
  209. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/independentreserve.py +0 -0
  210. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/indodax.py +0 -0
  211. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/krakenfutures.py +0 -0
  212. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/kucoin.py +0 -0
  213. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/kucoinfutures.py +0 -0
  214. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/kuna.py +0 -0
  215. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/latoken.py +0 -0
  216. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/lbank.py +0 -0
  217. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/luno.py +0 -0
  218. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/lykke.py +0 -0
  219. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/mercado.py +0 -0
  220. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/mexc.py +0 -0
  221. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/ndax.py +0 -0
  222. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/novadax.py +0 -0
  223. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/oceanex.py +0 -0
  224. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/okcoin.py +0 -0
  225. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/okx.py +0 -0
  226. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/onetrading.py +0 -0
  227. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/oxfun.py +0 -0
  228. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/p2b.py +0 -0
  229. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/paymium.py +0 -0
  230. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/phemex.py +0 -0
  231. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/poloniex.py +0 -0
  232. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/poloniexfutures.py +0 -0
  233. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/probit.py +0 -0
  234. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/timex.py +0 -0
  235. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/tokocrypto.py +0 -0
  236. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/tradeogre.py +0 -0
  237. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/upbit.py +0 -0
  238. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/vertex.py +0 -0
  239. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/wavesexchange.py +0 -0
  240. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/wazirx.py +0 -0
  241. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/whitebit.py +0 -0
  242. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/woo.py +0 -0
  243. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/woofipro.py +0 -0
  244. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/xt.py +0 -0
  245. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/yobit.py +0 -0
  246. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/zaif.py +0 -0
  247. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/async_support/zonda.py +0 -0
  248. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/base/__init__.py +0 -0
  249. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/base/decimal_to_precision.py +0 -0
  250. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/base/errors.py +0 -0
  251. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/base/precise.py +0 -0
  252. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/base/types.py +0 -0
  253. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bequant.py +0 -0
  254. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bigone.py +0 -0
  255. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/binance.py +0 -0
  256. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/binancecoinm.py +0 -0
  257. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/binanceus.py +0 -0
  258. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/binanceusdm.py +0 -0
  259. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bingx.py +0 -0
  260. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bit2c.py +0 -0
  261. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bitbank.py +0 -0
  262. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bitbay.py +0 -0
  263. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bitbns.py +0 -0
  264. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bitcoincom.py +0 -0
  265. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bitfinex.py +0 -0
  266. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bitfinex2.py +0 -0
  267. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bitflyer.py +0 -0
  268. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bitget.py +0 -0
  269. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bithumb.py +0 -0
  270. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bitmart.py +0 -0
  271. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bitmex.py +0 -0
  272. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bitopro.py +0 -0
  273. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bitpanda.py +0 -0
  274. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bitrue.py +0 -0
  275. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bitso.py +0 -0
  276. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bitstamp.py +0 -0
  277. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bitteam.py +0 -0
  278. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bitvavo.py +0 -0
  279. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/bl3p.py +0 -0
  280. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/blockchaincom.py +0 -0
  281. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/blofin.py +0 -0
  282. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/btcalpha.py +0 -0
  283. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/btcbox.py +0 -0
  284. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/btcmarkets.py +0 -0
  285. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/btcturk.py +0 -0
  286. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/cex.py +0 -0
  287. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/coinbase.py +0 -0
  288. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/coinbaseadvanced.py +0 -0
  289. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/coinbaseexchange.py +0 -0
  290. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/coinbaseinternational.py +0 -0
  291. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/coincheck.py +0 -0
  292. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/coinex.py +0 -0
  293. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/coinlist.py +0 -0
  294. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/coinmate.py +0 -0
  295. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/coinmetro.py +0 -0
  296. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/coinone.py +0 -0
  297. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/coinsph.py +0 -0
  298. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/coinspot.py +0 -0
  299. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/cryptocom.py +0 -0
  300. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/currencycom.py +0 -0
  301. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/delta.py +0 -0
  302. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/deribit.py +0 -0
  303. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/digifinex.py +0 -0
  304. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/exmo.py +0 -0
  305. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/fmfwio.py +0 -0
  306. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/gate.py +0 -0
  307. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/gateio.py +0 -0
  308. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/gemini.py +0 -0
  309. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/hitbtc.py +0 -0
  310. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/hitbtc3.py +0 -0
  311. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/hollaex.py +0 -0
  312. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/htx.py +0 -0
  313. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/huobi.py +0 -0
  314. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/huobijp.py +0 -0
  315. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/idex.py +0 -0
  316. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/independentreserve.py +0 -0
  317. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/indodax.py +0 -0
  318. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/krakenfutures.py +0 -0
  319. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/kucoin.py +0 -0
  320. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/kucoinfutures.py +0 -0
  321. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/kuna.py +0 -0
  322. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/latoken.py +0 -0
  323. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/lbank.py +0 -0
  324. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/luno.py +0 -0
  325. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/lykke.py +0 -0
  326. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/mercado.py +0 -0
  327. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/mexc.py +0 -0
  328. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/ndax.py +0 -0
  329. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/novadax.py +0 -0
  330. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/oceanex.py +0 -0
  331. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/okcoin.py +0 -0
  332. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/okx.py +0 -0
  333. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/onetrading.py +0 -0
  334. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/oxfun.py +0 -0
  335. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/p2b.py +0 -0
  336. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/paymium.py +0 -0
  337. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/phemex.py +0 -0
  338. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/poloniex.py +0 -0
  339. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/poloniexfutures.py +0 -0
  340. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/alpaca.py +0 -0
  341. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/ascendex.py +0 -0
  342. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/bequant.py +0 -0
  343. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/binance.py +0 -0
  344. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/binancecoinm.py +0 -0
  345. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/binanceus.py +0 -0
  346. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/binanceusdm.py +0 -0
  347. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/bingx.py +0 -0
  348. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/bitcoincom.py +0 -0
  349. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/bitfinex.py +0 -0
  350. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/bitfinex2.py +0 -0
  351. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/bitget.py +0 -0
  352. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/bithumb.py +0 -0
  353. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/bitmart.py +0 -0
  354. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/bitmex.py +0 -0
  355. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/bitopro.py +0 -0
  356. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/bitpanda.py +0 -0
  357. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/bitrue.py +0 -0
  358. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/bitstamp.py +0 -0
  359. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/bitvavo.py +0 -0
  360. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/blockchaincom.py +0 -0
  361. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/bybit.py +0 -0
  362. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/cex.py +0 -0
  363. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/coinbase.py +0 -0
  364. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/coinbaseexchange.py +0 -0
  365. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/coinbaseinternational.py +0 -0
  366. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/coincheck.py +0 -0
  367. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/coinex.py +0 -0
  368. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/coinone.py +0 -0
  369. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/cryptocom.py +0 -0
  370. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/currencycom.py +0 -0
  371. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/deribit.py +0 -0
  372. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/exmo.py +0 -0
  373. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/gate.py +0 -0
  374. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/gateio.py +0 -0
  375. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/gemini.py +0 -0
  376. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/hitbtc.py +0 -0
  377. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/hollaex.py +0 -0
  378. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/htx.py +0 -0
  379. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/huobi.py +0 -0
  380. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/huobijp.py +0 -0
  381. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/idex.py +0 -0
  382. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/independentreserve.py +0 -0
  383. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/kraken.py +0 -0
  384. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/krakenfutures.py +0 -0
  385. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/kucoin.py +0 -0
  386. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/kucoinfutures.py +0 -0
  387. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/lbank.py +0 -0
  388. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/luno.py +0 -0
  389. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/mexc.py +0 -0
  390. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/ndax.py +0 -0
  391. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/okcoin.py +0 -0
  392. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/onetrading.py +0 -0
  393. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/oxfun.py +0 -0
  394. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/p2b.py +0 -0
  395. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/phemex.py +0 -0
  396. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/poloniex.py +0 -0
  397. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/poloniexfutures.py +0 -0
  398. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/probit.py +0 -0
  399. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/upbit.py +0 -0
  400. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/vertex.py +0 -0
  401. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/wazirx.py +0 -0
  402. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/whitebit.py +0 -0
  403. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/woo.py +0 -0
  404. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/woofipro.py +0 -0
  405. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/pro/xt.py +0 -0
  406. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/probit.py +0 -0
  407. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/__init__.py +0 -0
  408. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  409. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  410. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  411. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  412. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  413. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  414. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  415. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  416. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  417. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  418. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
  419. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
  420. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
  421. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
  422. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
  423. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
  424. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
  425. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
  426. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
  427. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
  428. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
  429. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  430. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
  431. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
  432. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
  433. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  434. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
  435. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
  436. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
  437. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
  438. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
  439. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
  440. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
  441. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
  442. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  443. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
  444. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
  445. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
  446. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  447. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
  448. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
  449. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
  450. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
  451. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
  452. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
  453. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
  454. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
  455. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
  456. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  457. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
  458. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
  459. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
  460. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
  461. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
  462. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
  463. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
  464. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
  465. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
  466. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
  467. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
  468. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
  469. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
  470. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
  471. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
  472. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
  473. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
  474. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  475. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
  476. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
  477. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
  478. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
  479. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
  480. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  481. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  482. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
  483. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
  484. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/msgpack/ext.py +0 -0
  485. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
  486. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
  487. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
  488. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
  489. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
  490. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
  491. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
  492. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/__init__.py +0 -0
  493. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
  494. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/_version.py +0 -0
  495. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
  496. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
  497. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
  498. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
  499. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
  500. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
  501. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
  502. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/recipes.py +0 -0
  503. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/utils.py +0 -0
  504. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/test/__init__.py +0 -0
  505. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/test/tests_async.py +0 -0
  506. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/test/tests_helpers.py +0 -0
  507. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/test/tests_init.py +0 -0
  508. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/test/tests_sync.py +0 -0
  509. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/timex.py +0 -0
  510. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/tokocrypto.py +0 -0
  511. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/tradeogre.py +0 -0
  512. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/upbit.py +0 -0
  513. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/vertex.py +0 -0
  514. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/wavesexchange.py +0 -0
  515. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/wazirx.py +0 -0
  516. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/whitebit.py +0 -0
  517. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/woo.py +0 -0
  518. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/woofipro.py +0 -0
  519. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/xt.py +0 -0
  520. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/yobit.py +0 -0
  521. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/zaif.py +0 -0
  522. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt/zonda.py +0 -0
  523. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt.egg-info/SOURCES.txt +0 -0
  524. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt.egg-info/dependency_links.txt +0 -0
  525. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt.egg-info/requires.txt +0 -0
  526. {ccxt-4.3.64 → ccxt-4.3.66}/ccxt.egg-info/top_level.txt +0 -0
  527. {ccxt-4.3.64 → ccxt-4.3.66}/setup.cfg +0 -0
  528. {ccxt-4.3.64 → ccxt-4.3.66}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.3.64
3
+ Version: 4.3.66
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
@@ -59,6 +59,7 @@ Current feature list:
59
59
 
60
60
 
61
61
  ## Sponsored Promotion
62
+ [![bingx-campaign](https://github.com/user-attachments/assets/374fd5de-7d70-4281-85aa-d827afeb7270)](https://bingx.com/en/act/contestNew/7947320527/)
62
63
 
63
64
  ## See Also
64
65
 
@@ -257,13 +258,13 @@ console.log(version, Object.keys(exchanges));
257
258
 
258
259
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
259
260
 
260
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.64/dist/ccxt.browser.min.js
261
- * unpkg: https://unpkg.com/ccxt@4.3.64/dist/ccxt.browser.min.js
261
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.66/dist/ccxt.browser.min.js
262
+ * unpkg: https://unpkg.com/ccxt@4.3.66/dist/ccxt.browser.min.js
262
263
 
263
264
  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.
264
265
 
265
266
  ```HTML
266
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.64/dist/ccxt.browser.min.js"></script>
267
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.66/dist/ccxt.browser.min.js"></script>
267
268
  ```
268
269
 
269
270
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.3.64'
25
+ __version__ = '4.3.66'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.64'
7
+ __version__ = '4.3.66'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.3.64'
5
+ __version__ = '4.3.66'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -4,6 +4,7 @@ import asyncio
4
4
  import socket
5
5
  import collections
6
6
  from ccxt.async_support.base.ws.aiohttp_client import AiohttpClient
7
+ from ccxt.base.errors import NetworkError
7
8
 
8
9
 
9
10
  class FastClient(AiohttpClient):
@@ -38,7 +39,7 @@ class FastClient(AiohttpClient):
38
39
  if self.connection._close_code == 1000: # OK close
39
40
  self.on_close(1000)
40
41
  else:
41
- self.on_error(1006) # ABNORMAL_CLOSURE
42
+ self.on_error(NetworkError("Abnormal closure of client")) # ABNORMAL_CLOSURE
42
43
 
43
44
  def wrapper(func):
44
45
  def parse_frame(buf):
@@ -7,11 +7,22 @@ class Future(asyncio.Future):
7
7
 
8
8
  def resolve(self, result=None):
9
9
  if not self.done():
10
- self.set_result(result)
10
+ try:
11
+ self.set_result(result)
12
+ except BaseException as e:
13
+ print("Error in Future.resolve")
14
+ raise e
11
15
 
12
16
  def reject(self, error=None):
13
17
  if not self.done():
14
- self.set_exception(error)
18
+ # If not an exception, wrap it in a generic Exception
19
+ if not isinstance(error, BaseException):
20
+ error = Exception(error)
21
+ try:
22
+ self.set_exception(error)
23
+ except BaseException as e:
24
+ print("Error in Future.reject")
25
+ raise e
15
26
 
16
27
  @classmethod
17
28
  def race(cls, futures):
@@ -2914,7 +2914,7 @@ class bybit(Exchange, ImplicitAPI):
2914
2914
  :see: https://bybit-exchange.github.io/docs/v5/asset/all-balance
2915
2915
  :see: https://bybit-exchange.github.io/docs/v5/account/wallet-balance
2916
2916
  :param dict [params]: extra parameters specific to the exchange API endpoint
2917
- :param str [params.type]: wallet type, ['spot', 'swap', 'fund']
2917
+ :param str [params.type]: wallet type, ['spot', 'swap', 'funding']
2918
2918
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
2919
2919
  """
2920
2920
  await self.load_markets()
@@ -2922,10 +2922,17 @@ class bybit(Exchange, ImplicitAPI):
2922
2922
  enableUnifiedMargin, enableUnifiedAccount = await self.is_unified_enabled()
2923
2923
  isUnifiedAccount = (enableUnifiedMargin or enableUnifiedAccount)
2924
2924
  type = None
2925
- type, params = self.get_bybit_type('fetchBalance', None, params)
2925
+ # don't use getBybitType here
2926
+ type, params = self.handle_market_type_and_params('fetchBalance', None, params)
2927
+ subType = None
2928
+ subType, params = self.handle_sub_type_and_params('fetchBalance', None, params)
2929
+ if (type == 'swap') or (type == 'future'):
2930
+ type = subType
2931
+ lowercaseRawType = type.lower() if (type is not None) else None
2926
2932
  isSpot = (type == 'spot')
2927
2933
  isLinear = (type == 'linear')
2928
2934
  isInverse = (type == 'inverse')
2935
+ isFunding = (lowercaseRawType == 'fund') or (lowercaseRawType == 'funding')
2929
2936
  if isUnifiedAccount:
2930
2937
  if isInverse:
2931
2938
  type = 'contract'
@@ -2941,10 +2948,10 @@ class bybit(Exchange, ImplicitAPI):
2941
2948
  response = None
2942
2949
  if isSpot and (marginMode is not None):
2943
2950
  response = await self.privateGetV5SpotCrossMarginTradeAccount(self.extend(request, params))
2944
- elif unifiedType == 'FUND':
2951
+ elif isFunding:
2945
2952
  # use self endpoint only we have no other choice
2946
2953
  # because it requires transfer permission
2947
- request['accountType'] = unifiedType
2954
+ request['accountType'] = 'FUND'
2948
2955
  response = await self.privateGetV5AssetTransferQueryAccountCoinsBalance(self.extend(request, params))
2949
2956
  else:
2950
2957
  request['accountType'] = unifiedType
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.hyperliquid import ImplicitAPI
8
8
  import asyncio
9
- from ccxt.base.types import Balances, Currencies, Currency, Int, MarginModification, Market, Num, Order, OrderBook, OrderRequest, CancellationRequest, OrderSide, OrderType, Str, Strings, Trade, TradingFeeInterface, Transaction, TransferEntry
9
+ from ccxt.base.types import Balances, Currencies, Currency, Int, MarginModification, Market, Num, Order, OrderBook, OrderRequest, CancellationRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import ArgumentsRequired
@@ -102,8 +102,8 @@ class hyperliquid(Exchange, ImplicitAPI):
102
102
  'fetchPositions': True,
103
103
  'fetchPositionsRisk': False,
104
104
  'fetchPremiumIndexOHLCV': False,
105
- 'fetchTicker': False,
106
- 'fetchTickers': False,
105
+ 'fetchTicker': 'emulated',
106
+ 'fetchTickers': True,
107
107
  'fetchTime': False,
108
108
  'fetchTrades': True,
109
109
  'fetchTradingFee': True,
@@ -328,12 +328,12 @@ class hyperliquid(Exchange, ImplicitAPI):
328
328
  #
329
329
  #
330
330
  meta = self.safe_dict(response, 0, {})
331
- meta = self.safe_list(meta, 'universe', [])
331
+ universe = self.safe_list(meta, 'universe', [])
332
332
  assetCtxs = self.safe_dict(response, 1, {})
333
333
  result = []
334
- for i in range(0, len(meta)):
334
+ for i in range(0, len(universe)):
335
335
  data = self.extend(
336
- self.safe_dict(meta, i, {}),
336
+ self.safe_dict(universe, i, {}),
337
337
  self.safe_dict(assetCtxs, i, {})
338
338
  )
339
339
  data['baseId'] = i
@@ -447,11 +447,13 @@ class hyperliquid(Exchange, ImplicitAPI):
447
447
  #
448
448
  # response differs depending on the environment(mainnet vs sandbox)
449
449
  first = self.safe_dict(response, 0, {})
450
+ second = self.safe_list(response, 1, [])
450
451
  meta = self.safe_list_2(first, 'universe', 'spot_infos', [])
451
452
  tokens = self.safe_list_2(first, 'tokens', 'token_infos', [])
452
453
  markets = []
453
454
  for i in range(0, len(meta)):
454
455
  market = self.safe_dict(meta, i, {})
456
+ extraData = self.safe_dict(second, i, {})
455
457
  marketName = self.safe_string(market, 'name')
456
458
  # if marketName.find('/') < 0:
457
459
  # # there are some weird spot markets in testnet, eg @2
@@ -528,7 +530,7 @@ class hyperliquid(Exchange, ImplicitAPI):
528
530
  },
529
531
  },
530
532
  'created': None,
531
- 'info': market,
533
+ 'info': self.extend(extraData, market),
532
534
  }))
533
535
  return markets
534
536
 
@@ -747,6 +749,57 @@ class hyperliquid(Exchange, ImplicitAPI):
747
749
  timestamp = self.safe_integer(response, 'time')
748
750
  return self.parse_order_book(result, market['symbol'], timestamp, 'bids', 'asks', 'px', 'sz')
749
751
 
752
+ async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
753
+ """
754
+ fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
755
+ :see: https://www.bitmex.com/api/explorer/#not /Instrument/Instrument_getActiveAndIndices
756
+ :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
757
+ :param dict [params]: extra parameters specific to the exchange API endpoint
758
+ :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
759
+ """
760
+ await self.load_markets()
761
+ symbols = self.market_symbols(symbols)
762
+ # at self stage, to get tickers data, we use fetchMarkets endpoints
763
+ response = await self.fetch_markets(params)
764
+ # same response "fetchMarkets"
765
+ result: dict = {}
766
+ for i in range(0, len(response)):
767
+ market = response[i]
768
+ info = market['info']
769
+ ticker = self.parse_ticker(info, market)
770
+ symbol = self.safe_string(ticker, 'symbol')
771
+ result[symbol] = ticker
772
+ return self.filter_by_array_tickers(result, 'symbol', symbols)
773
+
774
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
775
+ #
776
+ # {
777
+ # "prevDayPx": "3400.5",
778
+ # "dayNtlVlm": "511297257.47936022",
779
+ # "markPx": "3464.7",
780
+ # "midPx": "3465.05",
781
+ # "oraclePx": "3460.1", # only in swap
782
+ # "openInterest": "64638.1108", # only in swap
783
+ # "premium": "0.00141614", # only in swap
784
+ # "funding": "0.00008727", # only in swap
785
+ # "impactPxs": ["3465.0", "3465.1"], # only in swap
786
+ # "coin": "PURR", # only in spot
787
+ # "circulatingSupply": "998949190.03400207", # only in spot
788
+ # },
789
+ #
790
+ bidAsk = self.safe_list(ticker, 'impactPxs')
791
+ return self.safe_ticker({
792
+ 'symbol': market['symbol'],
793
+ 'timestamp': None,
794
+ 'datetime': None,
795
+ 'previousClose': self.safe_number(ticker, 'prevDayPx'),
796
+ 'close': self.safe_number(ticker, 'midPx'),
797
+ 'bid': self.safe_number(bidAsk, 0),
798
+ 'ask': self.safe_number(bidAsk, 1),
799
+ 'quoteVolume': self.safe_number(ticker, 'dayNtlVlm'),
800
+ 'info': ticker,
801
+ }, market)
802
+
750
803
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
751
804
  """
752
805
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
@@ -98,6 +98,7 @@ class kraken(Exchange, ImplicitAPI):
98
98
  'fetchOrderTrades': 'emulated',
99
99
  'fetchPositions': True,
100
100
  'fetchPremiumIndexOHLCV': False,
101
+ 'fetchStatus': True,
101
102
  'fetchTicker': True,
102
103
  'fetchTickers': True,
103
104
  'fetchTime': True,
@@ -645,6 +646,30 @@ class kraken(Exchange, ImplicitAPI):
645
646
  result.append(self.extend(defaults, markets[i]))
646
647
  return result
647
648
 
649
+ async def fetch_status(self, params={}):
650
+ """
651
+ the latest known information on the availability of the exchange API
652
+ :see: https://docs.kraken.com/api/docs/rest-api/get-system-status/
653
+ :param dict [params]: extra parameters specific to the exchange API endpoint
654
+ :returns dict: a `status structure <https://docs.ccxt.com/#/?id=exchange-status-structure>`
655
+ """
656
+ response = await self.publicGetSystemStatus(params)
657
+ #
658
+ # {
659
+ # error: [],
660
+ # result: {status: 'online', timestamp: '2024-07-22T16:34:44Z'}
661
+ # }
662
+ #
663
+ result = self.safe_dict(response, 'result')
664
+ statusRaw = self.safe_string(result, 'status')
665
+ return {
666
+ 'status': 'ok' if (statusRaw == 'online') else 'maintenance',
667
+ 'updated': None,
668
+ 'eta': None,
669
+ 'url': None,
670
+ 'info': response,
671
+ }
672
+
648
673
  async def fetch_currencies(self, params={}) -> Currencies:
649
674
  """
650
675
  fetches all available currencies on an exchange
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.64'
7
+ __version__ = '4.3.66'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2913,7 +2913,7 @@ class bybit(Exchange, ImplicitAPI):
2913
2913
  :see: https://bybit-exchange.github.io/docs/v5/asset/all-balance
2914
2914
  :see: https://bybit-exchange.github.io/docs/v5/account/wallet-balance
2915
2915
  :param dict [params]: extra parameters specific to the exchange API endpoint
2916
- :param str [params.type]: wallet type, ['spot', 'swap', 'fund']
2916
+ :param str [params.type]: wallet type, ['spot', 'swap', 'funding']
2917
2917
  :returns dict: a `balance structure <https://docs.ccxt.com/#/?id=balance-structure>`
2918
2918
  """
2919
2919
  self.load_markets()
@@ -2921,10 +2921,17 @@ class bybit(Exchange, ImplicitAPI):
2921
2921
  enableUnifiedMargin, enableUnifiedAccount = self.is_unified_enabled()
2922
2922
  isUnifiedAccount = (enableUnifiedMargin or enableUnifiedAccount)
2923
2923
  type = None
2924
- type, params = self.get_bybit_type('fetchBalance', None, params)
2924
+ # don't use getBybitType here
2925
+ type, params = self.handle_market_type_and_params('fetchBalance', None, params)
2926
+ subType = None
2927
+ subType, params = self.handle_sub_type_and_params('fetchBalance', None, params)
2928
+ if (type == 'swap') or (type == 'future'):
2929
+ type = subType
2930
+ lowercaseRawType = type.lower() if (type is not None) else None
2925
2931
  isSpot = (type == 'spot')
2926
2932
  isLinear = (type == 'linear')
2927
2933
  isInverse = (type == 'inverse')
2934
+ isFunding = (lowercaseRawType == 'fund') or (lowercaseRawType == 'funding')
2928
2935
  if isUnifiedAccount:
2929
2936
  if isInverse:
2930
2937
  type = 'contract'
@@ -2940,10 +2947,10 @@ class bybit(Exchange, ImplicitAPI):
2940
2947
  response = None
2941
2948
  if isSpot and (marginMode is not None):
2942
2949
  response = self.privateGetV5SpotCrossMarginTradeAccount(self.extend(request, params))
2943
- elif unifiedType == 'FUND':
2950
+ elif isFunding:
2944
2951
  # use self endpoint only we have no other choice
2945
2952
  # because it requires transfer permission
2946
- request['accountType'] = unifiedType
2953
+ request['accountType'] = 'FUND'
2947
2954
  response = self.privateGetV5AssetTransferQueryAccountCoinsBalance(self.extend(request, params))
2948
2955
  else:
2949
2956
  request['accountType'] = unifiedType
@@ -5,7 +5,7 @@
5
5
 
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.hyperliquid import ImplicitAPI
8
- from ccxt.base.types import Balances, Currencies, Currency, Int, MarginModification, Market, Num, Order, OrderBook, OrderRequest, CancellationRequest, OrderSide, OrderType, Str, Strings, Trade, TradingFeeInterface, Transaction, TransferEntry
8
+ from ccxt.base.types import Balances, Currencies, Currency, Int, MarginModification, Market, Num, Order, OrderBook, OrderRequest, CancellationRequest, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction, TransferEntry
9
9
  from typing import List
10
10
  from ccxt.base.errors import ExchangeError
11
11
  from ccxt.base.errors import ArgumentsRequired
@@ -101,8 +101,8 @@ class hyperliquid(Exchange, ImplicitAPI):
101
101
  'fetchPositions': True,
102
102
  'fetchPositionsRisk': False,
103
103
  'fetchPremiumIndexOHLCV': False,
104
- 'fetchTicker': False,
105
- 'fetchTickers': False,
104
+ 'fetchTicker': 'emulated',
105
+ 'fetchTickers': True,
106
106
  'fetchTime': False,
107
107
  'fetchTrades': True,
108
108
  'fetchTradingFee': True,
@@ -327,12 +327,12 @@ class hyperliquid(Exchange, ImplicitAPI):
327
327
  #
328
328
  #
329
329
  meta = self.safe_dict(response, 0, {})
330
- meta = self.safe_list(meta, 'universe', [])
330
+ universe = self.safe_list(meta, 'universe', [])
331
331
  assetCtxs = self.safe_dict(response, 1, {})
332
332
  result = []
333
- for i in range(0, len(meta)):
333
+ for i in range(0, len(universe)):
334
334
  data = self.extend(
335
- self.safe_dict(meta, i, {}),
335
+ self.safe_dict(universe, i, {}),
336
336
  self.safe_dict(assetCtxs, i, {})
337
337
  )
338
338
  data['baseId'] = i
@@ -446,11 +446,13 @@ class hyperliquid(Exchange, ImplicitAPI):
446
446
  #
447
447
  # response differs depending on the environment(mainnet vs sandbox)
448
448
  first = self.safe_dict(response, 0, {})
449
+ second = self.safe_list(response, 1, [])
449
450
  meta = self.safe_list_2(first, 'universe', 'spot_infos', [])
450
451
  tokens = self.safe_list_2(first, 'tokens', 'token_infos', [])
451
452
  markets = []
452
453
  for i in range(0, len(meta)):
453
454
  market = self.safe_dict(meta, i, {})
455
+ extraData = self.safe_dict(second, i, {})
454
456
  marketName = self.safe_string(market, 'name')
455
457
  # if marketName.find('/') < 0:
456
458
  # # there are some weird spot markets in testnet, eg @2
@@ -527,7 +529,7 @@ class hyperliquid(Exchange, ImplicitAPI):
527
529
  },
528
530
  },
529
531
  'created': None,
530
- 'info': market,
532
+ 'info': self.extend(extraData, market),
531
533
  }))
532
534
  return markets
533
535
 
@@ -746,6 +748,57 @@ class hyperliquid(Exchange, ImplicitAPI):
746
748
  timestamp = self.safe_integer(response, 'time')
747
749
  return self.parse_order_book(result, market['symbol'], timestamp, 'bids', 'asks', 'px', 'sz')
748
750
 
751
+ def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
752
+ """
753
+ fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
754
+ :see: https://www.bitmex.com/api/explorer/#not /Instrument/Instrument_getActiveAndIndices
755
+ :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
756
+ :param dict [params]: extra parameters specific to the exchange API endpoint
757
+ :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
758
+ """
759
+ self.load_markets()
760
+ symbols = self.market_symbols(symbols)
761
+ # at self stage, to get tickers data, we use fetchMarkets endpoints
762
+ response = self.fetch_markets(params)
763
+ # same response "fetchMarkets"
764
+ result: dict = {}
765
+ for i in range(0, len(response)):
766
+ market = response[i]
767
+ info = market['info']
768
+ ticker = self.parse_ticker(info, market)
769
+ symbol = self.safe_string(ticker, 'symbol')
770
+ result[symbol] = ticker
771
+ return self.filter_by_array_tickers(result, 'symbol', symbols)
772
+
773
+ def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
774
+ #
775
+ # {
776
+ # "prevDayPx": "3400.5",
777
+ # "dayNtlVlm": "511297257.47936022",
778
+ # "markPx": "3464.7",
779
+ # "midPx": "3465.05",
780
+ # "oraclePx": "3460.1", # only in swap
781
+ # "openInterest": "64638.1108", # only in swap
782
+ # "premium": "0.00141614", # only in swap
783
+ # "funding": "0.00008727", # only in swap
784
+ # "impactPxs": ["3465.0", "3465.1"], # only in swap
785
+ # "coin": "PURR", # only in spot
786
+ # "circulatingSupply": "998949190.03400207", # only in spot
787
+ # },
788
+ #
789
+ bidAsk = self.safe_list(ticker, 'impactPxs')
790
+ return self.safe_ticker({
791
+ 'symbol': market['symbol'],
792
+ 'timestamp': None,
793
+ 'datetime': None,
794
+ 'previousClose': self.safe_number(ticker, 'prevDayPx'),
795
+ 'close': self.safe_number(ticker, 'midPx'),
796
+ 'bid': self.safe_number(bidAsk, 0),
797
+ 'ask': self.safe_number(bidAsk, 1),
798
+ 'quoteVolume': self.safe_number(ticker, 'dayNtlVlm'),
799
+ 'info': ticker,
800
+ }, market)
801
+
749
802
  def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
750
803
  """
751
804
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
@@ -98,6 +98,7 @@ class kraken(Exchange, ImplicitAPI):
98
98
  'fetchOrderTrades': 'emulated',
99
99
  'fetchPositions': True,
100
100
  'fetchPremiumIndexOHLCV': False,
101
+ 'fetchStatus': True,
101
102
  'fetchTicker': True,
102
103
  'fetchTickers': True,
103
104
  'fetchTime': True,
@@ -645,6 +646,30 @@ class kraken(Exchange, ImplicitAPI):
645
646
  result.append(self.extend(defaults, markets[i]))
646
647
  return result
647
648
 
649
+ def fetch_status(self, params={}):
650
+ """
651
+ the latest known information on the availability of the exchange API
652
+ :see: https://docs.kraken.com/api/docs/rest-api/get-system-status/
653
+ :param dict [params]: extra parameters specific to the exchange API endpoint
654
+ :returns dict: a `status structure <https://docs.ccxt.com/#/?id=exchange-status-structure>`
655
+ """
656
+ response = self.publicGetSystemStatus(params)
657
+ #
658
+ # {
659
+ # error: [],
660
+ # result: {status: 'online', timestamp: '2024-07-22T16:34:44Z'}
661
+ # }
662
+ #
663
+ result = self.safe_dict(response, 'result')
664
+ statusRaw = self.safe_string(result, 'status')
665
+ return {
666
+ 'status': 'ok' if (statusRaw == 'online') else 'maintenance',
667
+ 'updated': None,
668
+ 'eta': None,
669
+ 'url': None,
670
+ 'info': response,
671
+ }
672
+
648
673
  def fetch_currencies(self, params={}) -> Currencies:
649
674
  """
650
675
  fetches all available currencies on an exchange
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.64'
7
+ __version__ = '4.3.66'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
@@ -5,7 +5,7 @@
5
5
 
6
6
  import ccxt.async_support
7
7
  from ccxt.async_support.base.ws.cache import ArrayCache, ArrayCacheBySymbolById, ArrayCacheByTimestamp
8
- from ccxt.base.types import Int, Market, Order, OrderBook, Str, Trade
8
+ from ccxt.base.types import Int, Market, Order, OrderBook, Str, Strings, Ticker, Tickers, Trade
9
9
  from ccxt.async_support.base.ws.client import Client
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
@@ -23,7 +23,7 @@ class hyperliquid(ccxt.async_support.hyperliquid):
23
23
  'watchOrderBook': True,
24
24
  'watchOrders': True,
25
25
  'watchTicker': False,
26
- 'watchTickers': False,
26
+ 'watchTickers': True,
27
27
  'watchTrades': True,
28
28
  'watchPosition': False,
29
29
  },
@@ -123,6 +123,29 @@ class hyperliquid(ccxt.async_support.hyperliquid):
123
123
  messageHash = 'orderbook:' + symbol
124
124
  client.resolve(orderbook, messageHash)
125
125
 
126
+ async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
127
+ """
128
+ watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
129
+ :param str[] symbols: unified symbol of the market to fetch the ticker for
130
+ :param dict [params]: extra parameters specific to the exchange API endpoint
131
+ :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
132
+ """
133
+ await self.load_markets()
134
+ symbols = self.market_symbols(symbols, None, True)
135
+ messageHash = 'tickers'
136
+ url = self.urls['api']['ws']['public']
137
+ request: dict = {
138
+ 'method': 'subscribe',
139
+ 'subscription': {
140
+ 'type': 'webData2', # allMids
141
+ 'user': '0x0000000000000000000000000000000000000000',
142
+ },
143
+ }
144
+ tickers = await self.watch(url, messageHash, self.extend(request, params), messageHash)
145
+ if self.newUpdates:
146
+ return self.filter_by_array_tickers(tickers, 'symbol', symbols)
147
+ return self.tickers
148
+
126
149
  async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
127
150
  """
128
151
  watches information on multiple trades made by the user
@@ -154,6 +177,82 @@ class hyperliquid(ccxt.async_support.hyperliquid):
154
177
  limit = trades.getLimit(symbol, limit)
155
178
  return self.filter_by_symbol_since_limit(trades, symbol, since, limit, True)
156
179
 
180
+ def handle_ws_tickers(self, client: Client, message):
181
+ #
182
+ # {
183
+ # "channel": "webData2",
184
+ # "data": {
185
+ # "meta": {
186
+ # "universe": [
187
+ # {
188
+ # "szDecimals": 5,
189
+ # "name": "BTC",
190
+ # "maxLeverage": 50,
191
+ # "onlyIsolated": False
192
+ # },
193
+ # ...
194
+ # ],
195
+ # },
196
+ # "assetCtxs": [
197
+ # {
198
+ # "funding": "0.00003005",
199
+ # "openInterest": "2311.50778",
200
+ # "prevDayPx": "63475.0",
201
+ # "dayNtlVlm": "468043329.64289033",
202
+ # "premium": "0.00094264",
203
+ # "oraclePx": "64712.0",
204
+ # "markPx": "64774.0",
205
+ # "midPx": "64773.5",
206
+ # "impactPxs": [
207
+ # "64773.0",
208
+ # "64774.0"
209
+ # ]
210
+ # },
211
+ # ...
212
+ # ],
213
+ # "spotAssetCtxs": [
214
+ # {
215
+ # "prevDayPx": "0.20937",
216
+ # "dayNtlVlm": "11188888.61984999",
217
+ # "markPx": "0.19722",
218
+ # "midPx": "0.197145",
219
+ # "circulatingSupply": "598760557.12072003",
220
+ # "coin": "PURR/USDC"
221
+ # },
222
+ # ...
223
+ # ],
224
+ # }
225
+ # }
226
+ #
227
+ # spot
228
+ rawData = self.safe_dict(message, 'data', {})
229
+ spotAssets = self.safe_list(rawData, 'spotAssetCtxs', [])
230
+ parsedTickers = []
231
+ for i in range(0, len(spotAssets)):
232
+ assetObject = spotAssets[i]
233
+ marketId = self.safe_string(assetObject, 'coin')
234
+ market = self.safe_market(marketId, None, None, 'spot')
235
+ ticker = self.parse_ws_ticker(assetObject, market)
236
+ parsedTickers.append(ticker)
237
+ # perpetuals
238
+ meta = self.safe_dict(rawData, 'meta', {})
239
+ universe = self.safe_list(meta, 'universe', [])
240
+ assetCtxs = self.safe_list(rawData, 'assetCtxs', [])
241
+ for i in range(0, len(universe)):
242
+ data = self.extend(
243
+ self.safe_dict(universe, i, {}),
244
+ self.safe_dict(assetCtxs, i, {})
245
+ )
246
+ id = data['name'] + '/USDC:USDC'
247
+ market = self.safe_market(id, None, None, 'swap')
248
+ ticker = self.parse_ws_ticker(data, market)
249
+ parsedTickers.append(ticker)
250
+ tickers = self.index_by(parsedTickers, 'symbol')
251
+ client.resolve(tickers, 'tickers')
252
+
253
+ def parse_ws_ticker(self, rawTicker, market: Market = None) -> Ticker:
254
+ return self.parse_ticker(rawTicker, market)
255
+
157
256
  def handle_my_trades(self, client: Client, message):
158
257
  #
159
258
  # {
@@ -497,6 +596,7 @@ class hyperliquid(ccxt.async_support.hyperliquid):
497
596
  'candle': self.handle_ohlcv,
498
597
  'orderUpdates': self.handle_order,
499
598
  'userFills': self.handle_my_trades,
599
+ 'webData2': self.handle_ws_tickers,
500
600
  }
501
601
  exacMethod = self.safe_value(methods, topic)
502
602
  if exacMethod is not None: