ccxt 4.3.65__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.65/ccxt.egg-info → ccxt-4.3.66}/PKG-INFO +5 -4
  2. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/__init__.py +1 -1
  3. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/__init__.py +1 -1
  4. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/base/exchange.py +1 -1
  5. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/base/ws/fast_client.py +2 -1
  6. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/base/ws/future.py +13 -2
  7. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/hyperliquid.py +60 -7
  8. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/kraken.py +25 -0
  9. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/base/exchange.py +1 -1
  10. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/hyperliquid.py +60 -7
  11. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/kraken.py +25 -0
  12. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/__init__.py +1 -1
  13. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/hyperliquid.py +102 -2
  14. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/okx.py +5 -5
  15. {ccxt-4.3.65 → ccxt-4.3.66/ccxt.egg-info}/PKG-INFO +5 -4
  16. {ccxt-4.3.65 → ccxt-4.3.66}/package.json +1 -1
  17. {ccxt-4.3.65 → ccxt-4.3.66}/LICENSE.txt +0 -0
  18. {ccxt-4.3.65 → ccxt-4.3.66}/MANIFEST.in +0 -0
  19. {ccxt-4.3.65 → ccxt-4.3.66}/README.rst +0 -0
  20. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/__init__.py +0 -0
  21. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/ace.py +0 -0
  22. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/alpaca.py +0 -0
  23. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/ascendex.py +0 -0
  24. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bequant.py +0 -0
  25. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bigone.py +0 -0
  26. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/binance.py +0 -0
  27. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/binancecoinm.py +0 -0
  28. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/binanceus.py +0 -0
  29. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/binanceusdm.py +0 -0
  30. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bingx.py +0 -0
  31. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bit2c.py +0 -0
  32. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bitbank.py +0 -0
  33. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bitbay.py +0 -0
  34. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bitbns.py +0 -0
  35. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bitcoincom.py +0 -0
  36. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bitfinex.py +0 -0
  37. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bitfinex2.py +0 -0
  38. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bitflyer.py +0 -0
  39. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bitget.py +0 -0
  40. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bithumb.py +0 -0
  41. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bitmart.py +0 -0
  42. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bitmex.py +0 -0
  43. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bitopro.py +0 -0
  44. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bitpanda.py +0 -0
  45. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bitrue.py +0 -0
  46. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bitso.py +0 -0
  47. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bitstamp.py +0 -0
  48. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bitteam.py +0 -0
  49. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bitvavo.py +0 -0
  50. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bl3p.py +0 -0
  51. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/blockchaincom.py +0 -0
  52. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/blofin.py +0 -0
  53. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/btcalpha.py +0 -0
  54. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/btcbox.py +0 -0
  55. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/btcmarkets.py +0 -0
  56. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/btcturk.py +0 -0
  57. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/bybit.py +0 -0
  58. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/cex.py +0 -0
  59. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/coinbase.py +0 -0
  60. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/coinbaseadvanced.py +0 -0
  61. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/coinbaseexchange.py +0 -0
  62. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/coinbaseinternational.py +0 -0
  63. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/coincheck.py +0 -0
  64. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/coinex.py +0 -0
  65. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/coinlist.py +0 -0
  66. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/coinmate.py +0 -0
  67. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/coinmetro.py +0 -0
  68. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/coinone.py +0 -0
  69. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/coinsph.py +0 -0
  70. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/coinspot.py +0 -0
  71. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/cryptocom.py +0 -0
  72. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/currencycom.py +0 -0
  73. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/delta.py +0 -0
  74. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/deribit.py +0 -0
  75. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/digifinex.py +0 -0
  76. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/exmo.py +0 -0
  77. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/fmfwio.py +0 -0
  78. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/gate.py +0 -0
  79. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/gateio.py +0 -0
  80. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/gemini.py +0 -0
  81. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/hitbtc.py +0 -0
  82. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/hitbtc3.py +0 -0
  83. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/hollaex.py +0 -0
  84. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/htx.py +0 -0
  85. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/huobi.py +0 -0
  86. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/huobijp.py +0 -0
  87. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/hyperliquid.py +0 -0
  88. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/idex.py +0 -0
  89. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/independentreserve.py +0 -0
  90. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/indodax.py +0 -0
  91. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/kraken.py +0 -0
  92. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/krakenfutures.py +0 -0
  93. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/kucoin.py +0 -0
  94. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/kucoinfutures.py +0 -0
  95. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/kuna.py +0 -0
  96. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/latoken.py +0 -0
  97. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/lbank.py +0 -0
  98. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/luno.py +0 -0
  99. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/lykke.py +0 -0
  100. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/mercado.py +0 -0
  101. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/mexc.py +0 -0
  102. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/ndax.py +0 -0
  103. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/novadax.py +0 -0
  104. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/oceanex.py +0 -0
  105. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/okcoin.py +0 -0
  106. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/okx.py +0 -0
  107. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/onetrading.py +0 -0
  108. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/oxfun.py +0 -0
  109. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/p2b.py +0 -0
  110. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/paymium.py +0 -0
  111. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/phemex.py +0 -0
  112. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/poloniex.py +0 -0
  113. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/poloniexfutures.py +0 -0
  114. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/probit.py +0 -0
  115. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/timex.py +0 -0
  116. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/tokocrypto.py +0 -0
  117. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/tradeogre.py +0 -0
  118. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/upbit.py +0 -0
  119. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/vertex.py +0 -0
  120. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/wavesexchange.py +0 -0
  121. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/wazirx.py +0 -0
  122. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/whitebit.py +0 -0
  123. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/woo.py +0 -0
  124. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/woofipro.py +0 -0
  125. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/xt.py +0 -0
  126. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/yobit.py +0 -0
  127. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/zaif.py +0 -0
  128. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/abstract/zonda.py +0 -0
  129. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/ace.py +0 -0
  130. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/alpaca.py +0 -0
  131. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/ascendex.py +0 -0
  132. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/ace.py +0 -0
  133. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/alpaca.py +0 -0
  134. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/ascendex.py +0 -0
  135. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/base/__init__.py +0 -0
  136. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/base/throttler.py +0 -0
  137. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/base/ws/__init__.py +0 -0
  138. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  139. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/base/ws/cache.py +0 -0
  140. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/base/ws/client.py +0 -0
  141. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/base/ws/functions.py +0 -0
  142. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/base/ws/order_book.py +0 -0
  143. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  144. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bequant.py +0 -0
  145. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bigone.py +0 -0
  146. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/binance.py +0 -0
  147. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/binancecoinm.py +0 -0
  148. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/binanceus.py +0 -0
  149. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/binanceusdm.py +0 -0
  150. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bingx.py +0 -0
  151. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bit2c.py +0 -0
  152. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bitbank.py +0 -0
  153. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bitbay.py +0 -0
  154. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bitbns.py +0 -0
  155. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bitcoincom.py +0 -0
  156. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bitfinex.py +0 -0
  157. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bitfinex2.py +0 -0
  158. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bitflyer.py +0 -0
  159. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bitget.py +0 -0
  160. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bithumb.py +0 -0
  161. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bitmart.py +0 -0
  162. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bitmex.py +0 -0
  163. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bitopro.py +0 -0
  164. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bitpanda.py +0 -0
  165. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bitrue.py +0 -0
  166. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bitso.py +0 -0
  167. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bitstamp.py +0 -0
  168. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bitteam.py +0 -0
  169. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bitvavo.py +0 -0
  170. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bl3p.py +0 -0
  171. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/blockchaincom.py +0 -0
  172. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/blofin.py +0 -0
  173. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/btcalpha.py +0 -0
  174. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/btcbox.py +0 -0
  175. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/btcmarkets.py +0 -0
  176. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/btcturk.py +0 -0
  177. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/bybit.py +0 -0
  178. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/cex.py +0 -0
  179. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/coinbase.py +0 -0
  180. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/coinbaseadvanced.py +0 -0
  181. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/coinbaseexchange.py +0 -0
  182. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/coinbaseinternational.py +0 -0
  183. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/coincheck.py +0 -0
  184. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/coinex.py +0 -0
  185. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/coinlist.py +0 -0
  186. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/coinmate.py +0 -0
  187. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/coinmetro.py +0 -0
  188. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/coinone.py +0 -0
  189. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/coinsph.py +0 -0
  190. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/coinspot.py +0 -0
  191. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/cryptocom.py +0 -0
  192. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/currencycom.py +0 -0
  193. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/delta.py +0 -0
  194. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/deribit.py +0 -0
  195. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/digifinex.py +0 -0
  196. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/exmo.py +0 -0
  197. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/fmfwio.py +0 -0
  198. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/gate.py +0 -0
  199. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/gateio.py +0 -0
  200. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/gemini.py +0 -0
  201. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/hitbtc.py +0 -0
  202. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/hitbtc3.py +0 -0
  203. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/hollaex.py +0 -0
  204. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/htx.py +0 -0
  205. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/huobi.py +0 -0
  206. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/huobijp.py +0 -0
  207. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/idex.py +0 -0
  208. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/independentreserve.py +0 -0
  209. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/indodax.py +0 -0
  210. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/krakenfutures.py +0 -0
  211. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/kucoin.py +0 -0
  212. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/kucoinfutures.py +0 -0
  213. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/kuna.py +0 -0
  214. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/latoken.py +0 -0
  215. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/lbank.py +0 -0
  216. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/luno.py +0 -0
  217. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/lykke.py +0 -0
  218. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/mercado.py +0 -0
  219. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/mexc.py +0 -0
  220. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/ndax.py +0 -0
  221. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/novadax.py +0 -0
  222. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/oceanex.py +0 -0
  223. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/okcoin.py +0 -0
  224. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/okx.py +0 -0
  225. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/onetrading.py +0 -0
  226. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/oxfun.py +0 -0
  227. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/p2b.py +0 -0
  228. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/paymium.py +0 -0
  229. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/phemex.py +0 -0
  230. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/poloniex.py +0 -0
  231. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/poloniexfutures.py +0 -0
  232. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/probit.py +0 -0
  233. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/timex.py +0 -0
  234. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/tokocrypto.py +0 -0
  235. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/tradeogre.py +0 -0
  236. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/upbit.py +0 -0
  237. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/vertex.py +0 -0
  238. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/wavesexchange.py +0 -0
  239. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/wazirx.py +0 -0
  240. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/whitebit.py +0 -0
  241. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/woo.py +0 -0
  242. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/woofipro.py +0 -0
  243. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/xt.py +0 -0
  244. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/yobit.py +0 -0
  245. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/zaif.py +0 -0
  246. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/async_support/zonda.py +0 -0
  247. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/base/__init__.py +0 -0
  248. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/base/decimal_to_precision.py +0 -0
  249. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/base/errors.py +0 -0
  250. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/base/precise.py +0 -0
  251. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/base/types.py +0 -0
  252. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bequant.py +0 -0
  253. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bigone.py +0 -0
  254. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/binance.py +0 -0
  255. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/binancecoinm.py +0 -0
  256. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/binanceus.py +0 -0
  257. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/binanceusdm.py +0 -0
  258. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bingx.py +0 -0
  259. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bit2c.py +0 -0
  260. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bitbank.py +0 -0
  261. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bitbay.py +0 -0
  262. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bitbns.py +0 -0
  263. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bitcoincom.py +0 -0
  264. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bitfinex.py +0 -0
  265. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bitfinex2.py +0 -0
  266. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bitflyer.py +0 -0
  267. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bitget.py +0 -0
  268. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bithumb.py +0 -0
  269. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bitmart.py +0 -0
  270. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bitmex.py +0 -0
  271. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bitopro.py +0 -0
  272. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bitpanda.py +0 -0
  273. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bitrue.py +0 -0
  274. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bitso.py +0 -0
  275. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bitstamp.py +0 -0
  276. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bitteam.py +0 -0
  277. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bitvavo.py +0 -0
  278. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bl3p.py +0 -0
  279. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/blockchaincom.py +0 -0
  280. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/blofin.py +0 -0
  281. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/btcalpha.py +0 -0
  282. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/btcbox.py +0 -0
  283. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/btcmarkets.py +0 -0
  284. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/btcturk.py +0 -0
  285. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/bybit.py +0 -0
  286. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/cex.py +0 -0
  287. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/coinbase.py +0 -0
  288. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/coinbaseadvanced.py +0 -0
  289. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/coinbaseexchange.py +0 -0
  290. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/coinbaseinternational.py +0 -0
  291. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/coincheck.py +0 -0
  292. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/coinex.py +0 -0
  293. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/coinlist.py +0 -0
  294. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/coinmate.py +0 -0
  295. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/coinmetro.py +0 -0
  296. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/coinone.py +0 -0
  297. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/coinsph.py +0 -0
  298. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/coinspot.py +0 -0
  299. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/cryptocom.py +0 -0
  300. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/currencycom.py +0 -0
  301. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/delta.py +0 -0
  302. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/deribit.py +0 -0
  303. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/digifinex.py +0 -0
  304. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/exmo.py +0 -0
  305. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/fmfwio.py +0 -0
  306. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/gate.py +0 -0
  307. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/gateio.py +0 -0
  308. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/gemini.py +0 -0
  309. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/hitbtc.py +0 -0
  310. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/hitbtc3.py +0 -0
  311. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/hollaex.py +0 -0
  312. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/htx.py +0 -0
  313. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/huobi.py +0 -0
  314. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/huobijp.py +0 -0
  315. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/idex.py +0 -0
  316. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/independentreserve.py +0 -0
  317. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/indodax.py +0 -0
  318. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/krakenfutures.py +0 -0
  319. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/kucoin.py +0 -0
  320. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/kucoinfutures.py +0 -0
  321. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/kuna.py +0 -0
  322. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/latoken.py +0 -0
  323. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/lbank.py +0 -0
  324. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/luno.py +0 -0
  325. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/lykke.py +0 -0
  326. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/mercado.py +0 -0
  327. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/mexc.py +0 -0
  328. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/ndax.py +0 -0
  329. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/novadax.py +0 -0
  330. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/oceanex.py +0 -0
  331. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/okcoin.py +0 -0
  332. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/okx.py +0 -0
  333. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/onetrading.py +0 -0
  334. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/oxfun.py +0 -0
  335. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/p2b.py +0 -0
  336. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/paymium.py +0 -0
  337. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/phemex.py +0 -0
  338. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/poloniex.py +0 -0
  339. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/poloniexfutures.py +0 -0
  340. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/alpaca.py +0 -0
  341. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/ascendex.py +0 -0
  342. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/bequant.py +0 -0
  343. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/binance.py +0 -0
  344. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/binancecoinm.py +0 -0
  345. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/binanceus.py +0 -0
  346. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/binanceusdm.py +0 -0
  347. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/bingx.py +0 -0
  348. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/bitcoincom.py +0 -0
  349. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/bitfinex.py +0 -0
  350. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/bitfinex2.py +0 -0
  351. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/bitget.py +0 -0
  352. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/bithumb.py +0 -0
  353. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/bitmart.py +0 -0
  354. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/bitmex.py +0 -0
  355. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/bitopro.py +0 -0
  356. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/bitpanda.py +0 -0
  357. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/bitrue.py +0 -0
  358. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/bitstamp.py +0 -0
  359. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/bitvavo.py +0 -0
  360. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/blockchaincom.py +0 -0
  361. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/bybit.py +0 -0
  362. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/cex.py +0 -0
  363. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/coinbase.py +0 -0
  364. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/coinbaseexchange.py +0 -0
  365. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/coinbaseinternational.py +0 -0
  366. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/coincheck.py +0 -0
  367. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/coinex.py +0 -0
  368. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/coinone.py +0 -0
  369. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/cryptocom.py +0 -0
  370. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/currencycom.py +0 -0
  371. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/deribit.py +0 -0
  372. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/exmo.py +0 -0
  373. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/gate.py +0 -0
  374. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/gateio.py +0 -0
  375. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/gemini.py +0 -0
  376. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/hitbtc.py +0 -0
  377. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/hollaex.py +0 -0
  378. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/htx.py +0 -0
  379. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/huobi.py +0 -0
  380. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/huobijp.py +0 -0
  381. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/idex.py +0 -0
  382. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/independentreserve.py +0 -0
  383. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/kraken.py +0 -0
  384. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/krakenfutures.py +0 -0
  385. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/kucoin.py +0 -0
  386. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/kucoinfutures.py +0 -0
  387. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/lbank.py +0 -0
  388. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/luno.py +0 -0
  389. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/mexc.py +0 -0
  390. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/ndax.py +0 -0
  391. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/okcoin.py +0 -0
  392. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/onetrading.py +0 -0
  393. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/oxfun.py +0 -0
  394. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/p2b.py +0 -0
  395. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/phemex.py +0 -0
  396. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/poloniex.py +0 -0
  397. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/poloniexfutures.py +0 -0
  398. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/probit.py +0 -0
  399. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/upbit.py +0 -0
  400. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/vertex.py +0 -0
  401. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/wazirx.py +0 -0
  402. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/whitebit.py +0 -0
  403. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/woo.py +0 -0
  404. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/woofipro.py +0 -0
  405. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/pro/xt.py +0 -0
  406. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/probit.py +0 -0
  407. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/__init__.py +0 -0
  408. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  409. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  410. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  411. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  412. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  413. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  414. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  415. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  416. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  417. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  418. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
  419. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
  420. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
  421. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
  422. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
  423. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
  424. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
  425. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
  426. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
  427. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
  428. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
  429. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  430. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
  431. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
  432. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
  433. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  434. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
  435. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
  436. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
  437. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
  438. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
  439. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
  440. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
  441. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
  442. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  443. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
  444. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
  445. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
  446. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  447. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
  448. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
  449. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
  450. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
  451. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
  452. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
  453. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
  454. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
  455. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
  456. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  457. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
  458. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
  459. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
  460. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
  461. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
  462. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
  463. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
  464. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
  465. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
  466. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
  467. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
  468. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
  469. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
  470. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
  471. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
  472. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
  473. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
  474. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  475. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
  476. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
  477. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
  478. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
  479. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
  480. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  481. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  482. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
  483. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
  484. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/msgpack/ext.py +0 -0
  485. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
  486. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
  487. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
  488. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
  489. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
  490. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
  491. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
  492. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/__init__.py +0 -0
  493. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
  494. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/_version.py +0 -0
  495. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
  496. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
  497. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
  498. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
  499. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
  500. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
  501. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
  502. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/recipes.py +0 -0
  503. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/static_dependencies/toolz/utils.py +0 -0
  504. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/test/__init__.py +0 -0
  505. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/test/tests_async.py +0 -0
  506. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/test/tests_helpers.py +0 -0
  507. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/test/tests_init.py +0 -0
  508. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/test/tests_sync.py +0 -0
  509. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/timex.py +0 -0
  510. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/tokocrypto.py +0 -0
  511. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/tradeogre.py +0 -0
  512. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/upbit.py +0 -0
  513. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/vertex.py +0 -0
  514. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/wavesexchange.py +0 -0
  515. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/wazirx.py +0 -0
  516. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/whitebit.py +0 -0
  517. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/woo.py +0 -0
  518. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/woofipro.py +0 -0
  519. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/xt.py +0 -0
  520. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/yobit.py +0 -0
  521. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/zaif.py +0 -0
  522. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt/zonda.py +0 -0
  523. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt.egg-info/SOURCES.txt +0 -0
  524. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt.egg-info/dependency_links.txt +0 -0
  525. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt.egg-info/requires.txt +0 -0
  526. {ccxt-4.3.65 → ccxt-4.3.66}/ccxt.egg-info/top_level.txt +0 -0
  527. {ccxt-4.3.65 → ccxt-4.3.66}/setup.cfg +0 -0
  528. {ccxt-4.3.65 → 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.65
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.65/dist/ccxt.browser.min.js
261
- * unpkg: https://unpkg.com/ccxt@4.3.65/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.65/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.65'
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.65'
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.65'
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):
@@ -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.65'
7
+ __version__ = '4.3.66'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -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.65'
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:
@@ -1528,7 +1528,7 @@ class okx(ccxt.async_support.okx):
1528
1528
  await self.load_markets()
1529
1529
  await self.authenticate()
1530
1530
  url = self.get_url('private', 'private')
1531
- messageHash = str(self.nonce())
1531
+ messageHash = str(self.milliseconds())
1532
1532
  op = None
1533
1533
  op, params = self.handle_option_and_params(params, 'createOrderWs', 'op', 'batch-orders')
1534
1534
  args = self.create_order_request(symbol, type, side, amount, price, params)
@@ -1593,7 +1593,7 @@ class okx(ccxt.async_support.okx):
1593
1593
  await self.load_markets()
1594
1594
  await self.authenticate()
1595
1595
  url = self.get_url('private', 'private')
1596
- messageHash = str(self.nonce())
1596
+ messageHash = str(self.milliseconds())
1597
1597
  op = None
1598
1598
  op, params = self.handle_option_and_params(params, 'editOrderWs', 'op', 'amend-order')
1599
1599
  args = self.edit_order_request(id, symbol, type, side, amount, price, params)
@@ -1619,7 +1619,7 @@ class okx(ccxt.async_support.okx):
1619
1619
  await self.load_markets()
1620
1620
  await self.authenticate()
1621
1621
  url = self.get_url('private', 'private')
1622
- messageHash = str(self.nonce())
1622
+ messageHash = str(self.milliseconds())
1623
1623
  clientOrderId = self.safe_string_2(params, 'clOrdId', 'clientOrderId')
1624
1624
  params = self.omit(params, ['clientOrderId', 'clOrdId'])
1625
1625
  arg: dict = {
@@ -1653,7 +1653,7 @@ class okx(ccxt.async_support.okx):
1653
1653
  await self.load_markets()
1654
1654
  await self.authenticate()
1655
1655
  url = self.get_url('private', 'private')
1656
- messageHash = str(self.nonce())
1656
+ messageHash = str(self.milliseconds())
1657
1657
  args = []
1658
1658
  for i in range(0, idsLength):
1659
1659
  arg: dict = {
@@ -1684,7 +1684,7 @@ class okx(ccxt.async_support.okx):
1684
1684
  if market['type'] != 'option':
1685
1685
  raise BadRequest(self.id + 'cancelAllOrdersWs is only applicable to Option in Portfolio Margin mode, and MMP privilege is required.')
1686
1686
  url = self.get_url('private', 'private')
1687
- messageHash = str(self.nonce())
1687
+ messageHash = str(self.milliseconds())
1688
1688
  request: dict = {
1689
1689
  'id': messageHash,
1690
1690
  'op': 'mass-cancel',
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.3.65
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.65/dist/ccxt.browser.min.js
261
- * unpkg: https://unpkg.com/ccxt@4.3.65/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.65/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:
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccxt",
3
- "version": "4.3.65",
3
+ "version": "4.3.66",
4
4
  "description": "A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges",
5
5
  "unpkg": "dist/ccxt.browser.min.js",
6
6
  "type": "module",