ccxt 4.3.71__tar.gz → 4.3.73__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 (664) hide show
  1. {ccxt-4.3.71/ccxt.egg-info → ccxt-4.3.73}/PKG-INFO +5 -5
  2. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/__init__.py +1 -1
  3. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/__init__.py +1 -1
  4. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/base/exchange.py +1 -1
  5. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/base/ws/client.py +1 -1
  6. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/paradex.py +1 -1
  7. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/base/exchange.py +1 -1
  8. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/paradex.py +1 -1
  9. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/__init__.py +1 -1
  10. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/binance.py +16 -1
  11. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/kucoin.py +4 -0
  12. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/woo.py +111 -12
  13. ccxt-4.3.73/ccxt/static_dependencies/starknet/models/typed_data.py +45 -0
  14. ccxt-4.3.73/ccxt/static_dependencies/starkware/crypto/fast_pedersen_hash.py +50 -0
  15. ccxt-4.3.73/ccxt/static_dependencies/starkware/crypto/math_utils.py +78 -0
  16. ccxt-4.3.73/ccxt/static_dependencies/starkware/crypto/signature.py +2344 -0
  17. ccxt-4.3.73/ccxt/static_dependencies/starkware/crypto/utils.py +58 -0
  18. ccxt-4.3.73/ccxt/static_dependencies/sympy/core/__init__.py +0 -0
  19. ccxt-4.3.73/ccxt/static_dependencies/sympy/core/intfunc.py +35 -0
  20. ccxt-4.3.73/ccxt/static_dependencies/sympy/external/__init__.py +0 -0
  21. ccxt-4.3.73/ccxt/static_dependencies/typing_extensions/__init__.py +0 -0
  22. ccxt-4.3.73/ccxt/static_dependencies/typing_inspect/__init__.py +0 -0
  23. {ccxt-4.3.71 → ccxt-4.3.73/ccxt.egg-info}/PKG-INFO +5 -5
  24. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt.egg-info/SOURCES.txt +10 -0
  25. {ccxt-4.3.71 → ccxt-4.3.73}/package.json +1 -1
  26. {ccxt-4.3.71 → ccxt-4.3.73}/LICENSE.txt +0 -0
  27. {ccxt-4.3.71 → ccxt-4.3.73}/MANIFEST.in +0 -0
  28. {ccxt-4.3.71 → ccxt-4.3.73}/README.rst +0 -0
  29. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/__init__.py +0 -0
  30. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/ace.py +0 -0
  31. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/alpaca.py +0 -0
  32. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/ascendex.py +0 -0
  33. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bequant.py +0 -0
  34. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bigone.py +0 -0
  35. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/binance.py +0 -0
  36. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/binancecoinm.py +0 -0
  37. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/binanceus.py +0 -0
  38. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/binanceusdm.py +0 -0
  39. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bingx.py +0 -0
  40. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bit2c.py +0 -0
  41. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bitbank.py +0 -0
  42. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bitbay.py +0 -0
  43. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bitbns.py +0 -0
  44. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bitcoincom.py +0 -0
  45. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bitfinex.py +0 -0
  46. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bitfinex2.py +0 -0
  47. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bitflyer.py +0 -0
  48. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bitget.py +0 -0
  49. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bithumb.py +0 -0
  50. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bitmart.py +0 -0
  51. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bitmex.py +0 -0
  52. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bitopro.py +0 -0
  53. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bitpanda.py +0 -0
  54. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bitrue.py +0 -0
  55. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bitso.py +0 -0
  56. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bitstamp.py +0 -0
  57. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bitteam.py +0 -0
  58. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bitvavo.py +0 -0
  59. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bl3p.py +0 -0
  60. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/blockchaincom.py +0 -0
  61. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/blofin.py +0 -0
  62. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/btcalpha.py +0 -0
  63. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/btcbox.py +0 -0
  64. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/btcmarkets.py +0 -0
  65. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/btcturk.py +0 -0
  66. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/bybit.py +0 -0
  67. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/cex.py +0 -0
  68. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/coinbase.py +0 -0
  69. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/coinbaseadvanced.py +0 -0
  70. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/coinbaseexchange.py +0 -0
  71. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/coinbaseinternational.py +0 -0
  72. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/coincheck.py +0 -0
  73. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/coinex.py +0 -0
  74. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/coinlist.py +0 -0
  75. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/coinmate.py +0 -0
  76. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/coinmetro.py +0 -0
  77. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/coinone.py +0 -0
  78. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/coinsph.py +0 -0
  79. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/coinspot.py +0 -0
  80. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/cryptocom.py +0 -0
  81. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/currencycom.py +0 -0
  82. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/delta.py +0 -0
  83. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/deribit.py +0 -0
  84. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/digifinex.py +0 -0
  85. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/exmo.py +0 -0
  86. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/fmfwio.py +0 -0
  87. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/gate.py +0 -0
  88. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/gateio.py +0 -0
  89. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/gemini.py +0 -0
  90. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/hitbtc.py +0 -0
  91. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/hitbtc3.py +0 -0
  92. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/hollaex.py +0 -0
  93. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/htx.py +0 -0
  94. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/huobi.py +0 -0
  95. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/huobijp.py +0 -0
  96. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/hyperliquid.py +0 -0
  97. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/idex.py +0 -0
  98. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/independentreserve.py +0 -0
  99. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/indodax.py +0 -0
  100. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/kraken.py +0 -0
  101. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/krakenfutures.py +0 -0
  102. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/kucoin.py +0 -0
  103. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/kucoinfutures.py +0 -0
  104. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/kuna.py +0 -0
  105. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/latoken.py +0 -0
  106. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/lbank.py +0 -0
  107. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/luno.py +0 -0
  108. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/lykke.py +0 -0
  109. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/mercado.py +0 -0
  110. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/mexc.py +0 -0
  111. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/ndax.py +0 -0
  112. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/novadax.py +0 -0
  113. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/oceanex.py +0 -0
  114. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/okcoin.py +0 -0
  115. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/okx.py +0 -0
  116. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/onetrading.py +0 -0
  117. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/oxfun.py +0 -0
  118. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/p2b.py +0 -0
  119. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/paradex.py +0 -0
  120. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/paymium.py +0 -0
  121. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/phemex.py +0 -0
  122. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/poloniex.py +0 -0
  123. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/poloniexfutures.py +0 -0
  124. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/probit.py +0 -0
  125. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/timex.py +0 -0
  126. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/tokocrypto.py +0 -0
  127. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/tradeogre.py +0 -0
  128. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/upbit.py +0 -0
  129. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/vertex.py +0 -0
  130. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/wavesexchange.py +0 -0
  131. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/wazirx.py +0 -0
  132. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/whitebit.py +0 -0
  133. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/woo.py +0 -0
  134. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/woofipro.py +0 -0
  135. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/xt.py +0 -0
  136. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/yobit.py +0 -0
  137. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/zaif.py +0 -0
  138. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/abstract/zonda.py +0 -0
  139. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/ace.py +0 -0
  140. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/alpaca.py +0 -0
  141. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/ascendex.py +0 -0
  142. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/ace.py +0 -0
  143. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/alpaca.py +0 -0
  144. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/ascendex.py +0 -0
  145. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/base/__init__.py +0 -0
  146. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/base/throttler.py +0 -0
  147. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/base/ws/__init__.py +0 -0
  148. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  149. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/base/ws/cache.py +0 -0
  150. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/base/ws/fast_client.py +0 -0
  151. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/base/ws/functions.py +0 -0
  152. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/base/ws/future.py +0 -0
  153. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/base/ws/order_book.py +0 -0
  154. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  155. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bequant.py +0 -0
  156. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bigone.py +0 -0
  157. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/binance.py +0 -0
  158. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/binancecoinm.py +0 -0
  159. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/binanceus.py +0 -0
  160. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/binanceusdm.py +0 -0
  161. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bingx.py +0 -0
  162. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bit2c.py +0 -0
  163. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bitbank.py +0 -0
  164. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bitbay.py +0 -0
  165. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bitbns.py +0 -0
  166. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bitcoincom.py +0 -0
  167. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bitfinex.py +0 -0
  168. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bitfinex2.py +0 -0
  169. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bitflyer.py +0 -0
  170. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bitget.py +0 -0
  171. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bithumb.py +0 -0
  172. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bitmart.py +0 -0
  173. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bitmex.py +0 -0
  174. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bitopro.py +0 -0
  175. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bitpanda.py +0 -0
  176. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bitrue.py +0 -0
  177. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bitso.py +0 -0
  178. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bitstamp.py +0 -0
  179. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bitteam.py +0 -0
  180. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bitvavo.py +0 -0
  181. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bl3p.py +0 -0
  182. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/blockchaincom.py +0 -0
  183. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/blofin.py +0 -0
  184. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/btcalpha.py +0 -0
  185. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/btcbox.py +0 -0
  186. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/btcmarkets.py +0 -0
  187. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/btcturk.py +0 -0
  188. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/bybit.py +0 -0
  189. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/cex.py +0 -0
  190. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/coinbase.py +0 -0
  191. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/coinbaseadvanced.py +0 -0
  192. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/coinbaseexchange.py +0 -0
  193. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/coinbaseinternational.py +0 -0
  194. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/coincheck.py +0 -0
  195. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/coinex.py +0 -0
  196. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/coinlist.py +0 -0
  197. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/coinmate.py +0 -0
  198. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/coinmetro.py +0 -0
  199. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/coinone.py +0 -0
  200. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/coinsph.py +0 -0
  201. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/coinspot.py +0 -0
  202. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/cryptocom.py +0 -0
  203. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/currencycom.py +0 -0
  204. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/delta.py +0 -0
  205. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/deribit.py +0 -0
  206. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/digifinex.py +0 -0
  207. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/exmo.py +0 -0
  208. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/fmfwio.py +0 -0
  209. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/gate.py +0 -0
  210. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/gateio.py +0 -0
  211. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/gemini.py +0 -0
  212. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/hitbtc.py +0 -0
  213. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/hitbtc3.py +0 -0
  214. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/hollaex.py +0 -0
  215. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/htx.py +0 -0
  216. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/huobi.py +0 -0
  217. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/huobijp.py +0 -0
  218. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/hyperliquid.py +0 -0
  219. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/idex.py +0 -0
  220. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/independentreserve.py +0 -0
  221. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/indodax.py +0 -0
  222. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/kraken.py +0 -0
  223. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/krakenfutures.py +0 -0
  224. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/kucoin.py +0 -0
  225. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/kucoinfutures.py +0 -0
  226. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/kuna.py +0 -0
  227. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/latoken.py +0 -0
  228. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/lbank.py +0 -0
  229. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/luno.py +0 -0
  230. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/lykke.py +0 -0
  231. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/mercado.py +0 -0
  232. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/mexc.py +0 -0
  233. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/ndax.py +0 -0
  234. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/novadax.py +0 -0
  235. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/oceanex.py +0 -0
  236. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/okcoin.py +0 -0
  237. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/okx.py +0 -0
  238. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/onetrading.py +0 -0
  239. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/oxfun.py +0 -0
  240. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/p2b.py +0 -0
  241. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/paymium.py +0 -0
  242. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/phemex.py +0 -0
  243. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/poloniex.py +0 -0
  244. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/poloniexfutures.py +0 -0
  245. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/probit.py +0 -0
  246. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/timex.py +0 -0
  247. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/tokocrypto.py +0 -0
  248. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/tradeogre.py +0 -0
  249. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/upbit.py +0 -0
  250. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/vertex.py +0 -0
  251. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/wavesexchange.py +0 -0
  252. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/wazirx.py +0 -0
  253. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/whitebit.py +0 -0
  254. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/woo.py +0 -0
  255. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/woofipro.py +0 -0
  256. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/xt.py +0 -0
  257. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/yobit.py +0 -0
  258. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/zaif.py +0 -0
  259. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/async_support/zonda.py +0 -0
  260. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/base/__init__.py +0 -0
  261. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/base/decimal_to_precision.py +0 -0
  262. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/base/errors.py +0 -0
  263. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/base/precise.py +0 -0
  264. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/base/types.py +0 -0
  265. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bequant.py +0 -0
  266. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bigone.py +0 -0
  267. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/binance.py +0 -0
  268. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/binancecoinm.py +0 -0
  269. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/binanceus.py +0 -0
  270. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/binanceusdm.py +0 -0
  271. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bingx.py +0 -0
  272. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bit2c.py +0 -0
  273. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bitbank.py +0 -0
  274. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bitbay.py +0 -0
  275. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bitbns.py +0 -0
  276. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bitcoincom.py +0 -0
  277. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bitfinex.py +0 -0
  278. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bitfinex2.py +0 -0
  279. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bitflyer.py +0 -0
  280. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bitget.py +0 -0
  281. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bithumb.py +0 -0
  282. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bitmart.py +0 -0
  283. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bitmex.py +0 -0
  284. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bitopro.py +0 -0
  285. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bitpanda.py +0 -0
  286. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bitrue.py +0 -0
  287. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bitso.py +0 -0
  288. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bitstamp.py +0 -0
  289. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bitteam.py +0 -0
  290. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bitvavo.py +0 -0
  291. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bl3p.py +0 -0
  292. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/blockchaincom.py +0 -0
  293. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/blofin.py +0 -0
  294. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/btcalpha.py +0 -0
  295. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/btcbox.py +0 -0
  296. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/btcmarkets.py +0 -0
  297. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/btcturk.py +0 -0
  298. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/bybit.py +0 -0
  299. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/cex.py +0 -0
  300. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/coinbase.py +0 -0
  301. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/coinbaseadvanced.py +0 -0
  302. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/coinbaseexchange.py +0 -0
  303. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/coinbaseinternational.py +0 -0
  304. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/coincheck.py +0 -0
  305. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/coinex.py +0 -0
  306. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/coinlist.py +0 -0
  307. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/coinmate.py +0 -0
  308. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/coinmetro.py +0 -0
  309. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/coinone.py +0 -0
  310. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/coinsph.py +0 -0
  311. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/coinspot.py +0 -0
  312. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/cryptocom.py +0 -0
  313. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/currencycom.py +0 -0
  314. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/delta.py +0 -0
  315. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/deribit.py +0 -0
  316. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/digifinex.py +0 -0
  317. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/exmo.py +0 -0
  318. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/fmfwio.py +0 -0
  319. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/gate.py +0 -0
  320. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/gateio.py +0 -0
  321. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/gemini.py +0 -0
  322. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/hitbtc.py +0 -0
  323. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/hitbtc3.py +0 -0
  324. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/hollaex.py +0 -0
  325. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/htx.py +0 -0
  326. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/huobi.py +0 -0
  327. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/huobijp.py +0 -0
  328. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/hyperliquid.py +0 -0
  329. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/idex.py +0 -0
  330. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/independentreserve.py +0 -0
  331. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/indodax.py +0 -0
  332. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/kraken.py +0 -0
  333. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/krakenfutures.py +0 -0
  334. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/kucoin.py +0 -0
  335. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/kucoinfutures.py +0 -0
  336. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/kuna.py +0 -0
  337. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/latoken.py +0 -0
  338. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/lbank.py +0 -0
  339. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/luno.py +0 -0
  340. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/lykke.py +0 -0
  341. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/mercado.py +0 -0
  342. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/mexc.py +0 -0
  343. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/ndax.py +0 -0
  344. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/novadax.py +0 -0
  345. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/oceanex.py +0 -0
  346. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/okcoin.py +0 -0
  347. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/okx.py +0 -0
  348. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/onetrading.py +0 -0
  349. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/oxfun.py +0 -0
  350. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/p2b.py +0 -0
  351. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/paymium.py +0 -0
  352. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/phemex.py +0 -0
  353. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/poloniex.py +0 -0
  354. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/poloniexfutures.py +0 -0
  355. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/alpaca.py +0 -0
  356. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/ascendex.py +0 -0
  357. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/bequant.py +0 -0
  358. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/binancecoinm.py +0 -0
  359. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/binanceus.py +0 -0
  360. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/binanceusdm.py +0 -0
  361. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/bingx.py +0 -0
  362. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/bitcoincom.py +0 -0
  363. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/bitfinex.py +0 -0
  364. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/bitfinex2.py +0 -0
  365. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/bitget.py +0 -0
  366. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/bithumb.py +0 -0
  367. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/bitmart.py +0 -0
  368. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/bitmex.py +0 -0
  369. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/bitopro.py +0 -0
  370. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/bitpanda.py +0 -0
  371. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/bitrue.py +0 -0
  372. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/bitstamp.py +0 -0
  373. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/bitvavo.py +0 -0
  374. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/blockchaincom.py +0 -0
  375. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/blofin.py +0 -0
  376. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/bybit.py +0 -0
  377. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/cex.py +0 -0
  378. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/coinbase.py +0 -0
  379. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/coinbaseexchange.py +0 -0
  380. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/coinbaseinternational.py +0 -0
  381. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/coincheck.py +0 -0
  382. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/coinex.py +0 -0
  383. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/coinone.py +0 -0
  384. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/cryptocom.py +0 -0
  385. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/currencycom.py +0 -0
  386. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/deribit.py +0 -0
  387. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/exmo.py +0 -0
  388. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/gate.py +0 -0
  389. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/gateio.py +0 -0
  390. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/gemini.py +0 -0
  391. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/hitbtc.py +0 -0
  392. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/hollaex.py +0 -0
  393. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/htx.py +0 -0
  394. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/huobi.py +0 -0
  395. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/huobijp.py +0 -0
  396. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/hyperliquid.py +0 -0
  397. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/idex.py +0 -0
  398. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/independentreserve.py +0 -0
  399. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/kraken.py +0 -0
  400. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/krakenfutures.py +0 -0
  401. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/kucoinfutures.py +0 -0
  402. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/lbank.py +0 -0
  403. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/luno.py +0 -0
  404. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/mexc.py +0 -0
  405. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/ndax.py +0 -0
  406. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/okcoin.py +0 -0
  407. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/okx.py +0 -0
  408. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/onetrading.py +0 -0
  409. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/oxfun.py +0 -0
  410. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/p2b.py +0 -0
  411. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/paradex.py +0 -0
  412. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/phemex.py +0 -0
  413. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/poloniex.py +0 -0
  414. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/poloniexfutures.py +0 -0
  415. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/probit.py +0 -0
  416. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/upbit.py +0 -0
  417. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/vertex.py +0 -0
  418. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/wazirx.py +0 -0
  419. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/whitebit.py +0 -0
  420. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/woofipro.py +0 -0
  421. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/pro/xt.py +0 -0
  422. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/probit.py +0 -0
  423. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/__init__.py +0 -0
  424. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  425. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  426. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  427. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  428. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  429. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  430. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  431. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  432. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  433. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  434. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
  435. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
  436. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
  437. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
  438. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
  439. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
  440. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
  441. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
  442. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
  443. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
  444. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
  445. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  446. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
  447. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
  448. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
  449. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  450. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
  451. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
  452. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
  453. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
  454. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
  455. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
  456. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
  457. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
  458. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  459. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
  460. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
  461. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
  462. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  463. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
  464. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
  465. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
  466. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
  467. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
  468. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
  469. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
  470. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
  471. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
  472. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  473. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
  474. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
  475. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
  476. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
  477. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
  478. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
  479. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
  480. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
  481. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
  482. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
  483. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
  484. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
  485. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
  486. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
  487. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
  488. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
  489. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
  490. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  491. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
  492. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
  493. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
  494. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
  495. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
  496. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  497. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  498. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/__init__.py +0 -0
  499. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/__pyinstaller/__init__.py +0 -0
  500. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/__pyinstaller/hook-lark.py +0 -0
  501. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/ast_utils.py +0 -0
  502. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/common.py +0 -0
  503. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/exceptions.py +0 -0
  504. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/grammar.py +0 -0
  505. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/grammars/__init__.py +0 -0
  506. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/indenter.py +0 -0
  507. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/lark.py +0 -0
  508. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/lexer.py +0 -0
  509. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/load_grammar.py +0 -0
  510. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/parse_tree_builder.py +0 -0
  511. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/parser_frontends.py +0 -0
  512. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/parsers/__init__.py +0 -0
  513. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/parsers/cyk.py +0 -0
  514. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/parsers/earley.py +0 -0
  515. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/parsers/earley_common.py +0 -0
  516. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/parsers/earley_forest.py +0 -0
  517. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/parsers/grammar_analysis.py +0 -0
  518. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/parsers/lalr_analysis.py +0 -0
  519. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/parsers/lalr_interactive_parser.py +0 -0
  520. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/parsers/lalr_parser.py +0 -0
  521. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/parsers/lalr_parser_state.py +0 -0
  522. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/parsers/xearley.py +0 -0
  523. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/py.typed +0 -0
  524. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/reconstruct.py +0 -0
  525. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/tools/__init__.py +0 -0
  526. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/tools/nearley.py +0 -0
  527. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/tools/serialize.py +0 -0
  528. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/tools/standalone.py +0 -0
  529. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/tree.py +0 -0
  530. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/tree_matcher.py +0 -0
  531. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/tree_templates.py +0 -0
  532. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/utils.py +0 -0
  533. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/lark/visitors.py +0 -0
  534. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow/__init__.py +0 -0
  535. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow/base.py +0 -0
  536. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow/class_registry.py +0 -0
  537. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow/decorators.py +0 -0
  538. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow/error_store.py +0 -0
  539. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow/exceptions.py +0 -0
  540. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow/fields.py +0 -0
  541. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow/orderedset.py +0 -0
  542. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow/py.typed +0 -0
  543. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow/schema.py +0 -0
  544. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow/types.py +0 -0
  545. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow/utils.py +0 -0
  546. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow/validate.py +0 -0
  547. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow/warnings.py +0 -0
  548. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow_dataclass/__init__.py +0 -0
  549. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow_dataclass/collection_field.py +0 -0
  550. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow_dataclass/lazy_class_attribute.py +0 -0
  551. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow_dataclass/mypy.py +0 -0
  552. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow_dataclass/py.typed +0 -0
  553. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow_dataclass/typing.py +0 -0
  554. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow_dataclass/union_field.py +0 -0
  555. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow_oneofschema/__init__.py +0 -0
  556. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow_oneofschema/one_of_schema.py +0 -0
  557. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/marshmallow_oneofschema/py.typed +0 -0
  558. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
  559. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
  560. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/msgpack/ext.py +0 -0
  561. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
  562. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
  563. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
  564. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
  565. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
  566. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
  567. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
  568. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/__init__.py +0 -0
  569. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/cairo/__init__.py +0 -0
  570. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/cairo/data_types.py +0 -0
  571. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/__init__.py +0 -0
  572. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/cairo_types.py +0 -0
  573. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser.py +0 -0
  574. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/cairo/deprecated_parse/parser_transformer.py +0 -0
  575. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/cairo/felt.py +0 -0
  576. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/cairo/type_parser.py +0 -0
  577. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/cairo/v1/__init__.py +0 -0
  578. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/cairo/v1/type_parser.py +0 -0
  579. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/cairo/v2/__init__.py +0 -0
  580. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/cairo/v2/type_parser.py +0 -0
  581. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/ccxt_utils.py +0 -0
  582. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/common.py +0 -0
  583. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/constants.py +0 -0
  584. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/hash/__init__.py +0 -0
  585. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/hash/address.py +0 -0
  586. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/hash/compiled_class_hash_objects.py +0 -0
  587. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/hash/selector.py +0 -0
  588. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/hash/storage.py +0 -0
  589. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/hash/utils.py +0 -0
  590. {ccxt-4.3.71/ccxt/static_dependencies/starknet/utils → ccxt-4.3.73/ccxt/static_dependencies/starknet/models}/__init__.py +0 -0
  591. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/__init__.py +0 -0
  592. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/_calldata_reader.py +0 -0
  593. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/_context.py +0 -0
  594. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/data_serializers/__init__.py +0 -0
  595. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/data_serializers/_common.py +0 -0
  596. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/data_serializers/array_serializer.py +0 -0
  597. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/data_serializers/bool_serializer.py +0 -0
  598. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/data_serializers/byte_array_serializer.py +0 -0
  599. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/data_serializers/cairo_data_serializer.py +0 -0
  600. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/data_serializers/enum_serializer.py +0 -0
  601. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/data_serializers/felt_serializer.py +0 -0
  602. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/data_serializers/named_tuple_serializer.py +0 -0
  603. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/data_serializers/option_serializer.py +0 -0
  604. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/data_serializers/output_serializer.py +0 -0
  605. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/data_serializers/payload_serializer.py +0 -0
  606. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/data_serializers/struct_serializer.py +0 -0
  607. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/data_serializers/tuple_serializer.py +0 -0
  608. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/data_serializers/uint256_serializer.py +0 -0
  609. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/data_serializers/uint_serializer.py +0 -0
  610. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/data_serializers/unit_serializer.py +0 -0
  611. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/errors.py +0 -0
  612. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/factory.py +0 -0
  613. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/function_serialization_adapter.py +0 -0
  614. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/serialization/tuple_dataclass.py +0 -0
  615. {ccxt-4.3.71/ccxt/static_dependencies/sympy → ccxt-4.3.73/ccxt/static_dependencies/starknet/utils}/__init__.py +0 -0
  616. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/utils/constructor_args_translator.py +0 -0
  617. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/utils/iterable.py +0 -0
  618. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/utils/schema.py +0 -0
  619. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/starknet/utils/typed_data.py +0 -0
  620. {ccxt-4.3.71/ccxt/static_dependencies/sympy/external → ccxt-4.3.73/ccxt/static_dependencies/starkware}/__init__.py +0 -0
  621. {ccxt-4.3.71/ccxt/static_dependencies/typing_extensions → ccxt-4.3.73/ccxt/static_dependencies/starkware/crypto}/__init__.py +0 -0
  622. {ccxt-4.3.71/ccxt/static_dependencies/typing_inspect → ccxt-4.3.73/ccxt/static_dependencies/sympy}/__init__.py +0 -0
  623. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/sympy/external/gmpy.py +0 -0
  624. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/sympy/external/importtools.py +0 -0
  625. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/sympy/external/ntheory.py +0 -0
  626. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/sympy/external/pythonmpq.py +0 -0
  627. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/toolz/__init__.py +0 -0
  628. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
  629. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/toolz/_version.py +0 -0
  630. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
  631. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
  632. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
  633. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
  634. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
  635. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
  636. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
  637. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/toolz/recipes.py +0 -0
  638. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/toolz/utils.py +0 -0
  639. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/typing_extensions/typing_extensions.py +0 -0
  640. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/static_dependencies/typing_inspect/typing_inspect.py +0 -0
  641. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/test/__init__.py +0 -0
  642. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/test/tests_async.py +0 -0
  643. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/test/tests_helpers.py +0 -0
  644. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/test/tests_init.py +0 -0
  645. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/test/tests_sync.py +0 -0
  646. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/timex.py +0 -0
  647. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/tokocrypto.py +0 -0
  648. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/tradeogre.py +0 -0
  649. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/upbit.py +0 -0
  650. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/vertex.py +0 -0
  651. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/wavesexchange.py +0 -0
  652. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/wazirx.py +0 -0
  653. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/whitebit.py +0 -0
  654. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/woo.py +0 -0
  655. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/woofipro.py +0 -0
  656. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/xt.py +0 -0
  657. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/yobit.py +0 -0
  658. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/zaif.py +0 -0
  659. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt/zonda.py +0 -0
  660. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt.egg-info/dependency_links.txt +0 -0
  661. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt.egg-info/requires.txt +0 -0
  662. {ccxt-4.3.71 → ccxt-4.3.73}/ccxt.egg-info/top_level.txt +0 -0
  663. {ccxt-4.3.71 → ccxt-4.3.73}/setup.cfg +0 -0
  664. {ccxt-4.3.71 → ccxt-4.3.73}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.3.71
3
+ Version: 4.3.73
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
@@ -182,7 +182,7 @@ The CCXT library currently supports the following 102 cryptocurrency exchange ma
182
182
  | [![onetrading](https://github.com/ccxt/ccxt/assets/43336371/bdbc26fd-02f2-4ca7-9f1e-17333690bb1c)](https://onetrading.com/) | onetrading | [One Trading](https://onetrading.com/) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs.onetrading.com) | cex | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
183
183
  | [![oxfun](https://github.com/ccxt/ccxt/assets/43336371/6a196124-c1ee-4fae-8573-962071b61a85)](https://ox.fun/register?shareAccountId=5ZUD4a7G) | oxfun | [OXFUN](https://ox.fun/register?shareAccountId=5ZUD4a7G) | [![API Version 3](https://img.shields.io/badge/3-lightgray)](https://docs.ox.fun/) | cex | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
184
184
  | [![p2b](https://github.com/ccxt/ccxt/assets/43336371/8da13a80-1f0a-49be-bb90-ff8b25164755)](https://p2pb2b.com?referral=ee784c53) | p2b | [p2b](https://p2pb2b.com?referral=ee784c53) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://github.com/P2B-team/p2b-api-docs/blob/master/api-doc.md) | cex | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
185
- | [![paradex](https://github.com/user-attachments/assets/5dadc09a-74ba-466a-a8f2-3f55c7e4654a)](https://app.paradex.trade/r/ccxt24) | paradex | [Paradex](https://app.paradex.trade/r/ccxt24) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs.api.testnet.paradex.trade/) | dex | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
185
+ | [![paradex](https://github.com/user-attachments/assets/84628770-784e-4ec4-a759-ec2fbb2244ea)](https://app.paradex.trade/r/ccxt24) | paradex | [Paradex](https://app.paradex.trade/r/ccxt24) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs.api.testnet.paradex.trade/) | dex | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
186
186
  | [![paymium](https://user-images.githubusercontent.com/51840849/87153930-f0f02200-c2c0-11ea-9c0a-40337375ae89.jpg)](https://www.paymium.com/page/sign-up?referral=eDAzPoRQFMvaAB8sf-qj) | paymium | [Paymium](https://www.paymium.com/page/sign-up?referral=eDAzPoRQFMvaAB8sf-qj) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://github.com/Paymium/api-documentation) | cex | | |
187
187
  | [![phemex](https://user-images.githubusercontent.com/1294454/85225056-221eb600-b3d7-11ea-930d-564d2690e3f6.jpg)](https://phemex.com/register?referralCode=EDNVJ) | phemex | [Phemex](https://phemex.com/register?referralCode=EDNVJ) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://github.com/phemex/phemex-api-docs) | cex | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
188
188
  | [![poloniex](https://user-images.githubusercontent.com/1294454/27766817-e9456312-5ee6-11e7-9b3c-b628ca5626a5.jpg)](https://poloniex.com/signup?c=UBFZJRPJ) | poloniex | [Poloniex](https://poloniex.com/signup?c=UBFZJRPJ) | [![API Version *](https://img.shields.io/badge/*-lightgray)](https://api-docs.poloniex.com/spot/) | cex | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
@@ -259,13 +259,13 @@ console.log(version, Object.keys(exchanges));
259
259
 
260
260
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
261
261
 
262
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.71/dist/ccxt.browser.min.js
263
- * unpkg: https://unpkg.com/ccxt@4.3.71/dist/ccxt.browser.min.js
262
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.73/dist/ccxt.browser.min.js
263
+ * unpkg: https://unpkg.com/ccxt@4.3.73/dist/ccxt.browser.min.js
264
264
 
265
265
  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.
266
266
 
267
267
  ```HTML
268
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.71/dist/ccxt.browser.min.js"></script>
268
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.73/dist/ccxt.browser.min.js"></script>
269
269
  ```
270
270
 
271
271
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.3.71'
25
+ __version__ = '4.3.73'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.71'
7
+ __version__ = '4.3.73'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.3.71'
5
+ __version__ = '4.3.73'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -15,7 +15,7 @@ class Client(object):
15
15
  subscriptions = {}
16
16
  rejections = {}
17
17
  message_queue = {}
18
- useMessageQueue = True
18
+ useMessageQueue = False
19
19
  on_message_callback = None
20
20
  on_error_callback = None
21
21
  on_close_callback = None
@@ -130,7 +130,7 @@ class paradex(Exchange, ImplicitAPI):
130
130
  },
131
131
  'hostname': 'paradex.trade',
132
132
  'urls': {
133
- 'logo': 'https://github.com/user-attachments/assets/5dadc09a-74ba-466a-a8f2-3f55c7e4654a',
133
+ 'logo': 'https://github.com/user-attachments/assets/84628770-784e-4ec4-a759-ec2fbb2244ea',
134
134
  'api': {
135
135
  'v1': 'https://api.prod.{hostname}/v1',
136
136
  },
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.71'
7
+ __version__ = '4.3.73'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -130,7 +130,7 @@ class paradex(Exchange, ImplicitAPI):
130
130
  },
131
131
  'hostname': 'paradex.trade',
132
132
  'urls': {
133
- 'logo': 'https://github.com/user-attachments/assets/5dadc09a-74ba-466a-a8f2-3f55c7e4654a',
133
+ 'logo': 'https://github.com/user-attachments/assets/84628770-784e-4ec4-a759-ec2fbb2244ea',
134
134
  'api': {
135
135
  'v1': 'https://api.prod.{hostname}/v1',
136
136
  },
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.71'
7
+ __version__ = '4.3.73'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
@@ -1098,11 +1098,15 @@ class binance(ccxt.async_support.binance):
1098
1098
  async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
1099
1099
  """
1100
1100
  watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1101
+ :see: https://binance-docs.github.io/apidocs/spot/en/#kline-candlestick-data
1102
+ :see: https://binance-docs.github.io/apidocs/futures/en/#kline-candlestick-data
1103
+ :see: https://binance-docs.github.io/apidocs/delivery/en/#kline-candlestick-data
1101
1104
  :param str symbol: unified symbol of the market to fetch OHLCV data for
1102
1105
  :param str timeframe: the length of time each candle represents
1103
1106
  :param int [since]: timestamp in ms of the earliest candle to fetch
1104
1107
  :param int [limit]: the maximum amount of candles to fetch
1105
1108
  :param dict [params]: extra parameters specific to the exchange API endpoint
1109
+ :param dict [params.timezone]: if provided, kline intervals are interpreted in that timezone instead of UTC, example '+08:00'
1106
1110
  :returns int[][]: A list of candles ordered, open, high, low, close, volume
1107
1111
  """
1108
1112
  params['callerMethodName'] = 'watchOHLCV'
@@ -1112,10 +1116,14 @@ class binance(ccxt.async_support.binance):
1112
1116
  async def watch_ohlcv_for_symbols(self, symbolsAndTimeframes: List[List[str]], since: Int = None, limit: Int = None, params={}):
1113
1117
  """
1114
1118
  watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1119
+ :see: https://binance-docs.github.io/apidocs/spot/en/#kline-candlestick-data
1120
+ :see: https://binance-docs.github.io/apidocs/futures/en/#kline-candlestick-data
1121
+ :see: https://binance-docs.github.io/apidocs/delivery/en/#kline-candlestick-data
1115
1122
  :param str[][] symbolsAndTimeframes: array of arrays containing unified symbols and timeframes to fetch OHLCV data for, example [['BTC/USDT', '1m'], ['LTC/USDT', '5m']]
1116
1123
  :param int [since]: timestamp in ms of the earliest candle to fetch
1117
1124
  :param int [limit]: the maximum amount of candles to fetch
1118
1125
  :param dict [params]: extra parameters specific to the exchange API endpoint
1126
+ :param dict [params.timezone]: if provided, kline intervals are interpreted in that timezone instead of UTC, example '+08:00'
1119
1127
  :returns int[][]: A list of candles ordered, open, high, low, close, volume
1120
1128
  """
1121
1129
  await self.load_markets()
@@ -1127,6 +1135,10 @@ class binance(ccxt.async_support.binance):
1127
1135
  type = firstMarket['type']
1128
1136
  if firstMarket['contract']:
1129
1137
  type = 'future' if firstMarket['linear'] else 'delivery'
1138
+ isSpot = (type == 'spot')
1139
+ timezone = None
1140
+ timezone, params = self.handle_param_string(params, 'timezone', None)
1141
+ isUtc8 = (timezone is not None) and ((timezone == '+08:00') or Precise.string_eq(timezone, '8'))
1130
1142
  rawHashes = []
1131
1143
  messageHashes = []
1132
1144
  for i in range(0, len(symbolsAndTimeframes)):
@@ -1139,7 +1151,10 @@ class binance(ccxt.async_support.binance):
1139
1151
  if klineType == 'indexPriceKline':
1140
1152
  # weird behavior for index price kline we can't use the perp suffix
1141
1153
  marketId = marketId.replace('_perp', '')
1142
- rawHashes.append(marketId + '@' + klineType + '_' + interval)
1154
+ shouldUseUTC8 = (isUtc8 and isSpot)
1155
+ suffix = '@+08:00'
1156
+ utcSuffix = suffix if shouldUseUTC8 else ''
1157
+ rawHashes.append(marketId + '@' + klineType + '_' + interval + utcSuffix)
1143
1158
  messageHashes.append('ohlcv::' + symbolString + '::' + timeframeString)
1144
1159
  url = self.urls['api']['ws'][type] + '/' + self.stream(type, 'multipleOHLCV')
1145
1160
  requestId = self.request_id(url)
@@ -1024,6 +1024,10 @@ class kucoin(ccxt.async_support.kucoin):
1024
1024
  tradeId = self.safe_string(trade, 'tradeId')
1025
1025
  price = self.safe_string(trade, 'matchPrice')
1026
1026
  amount = self.safe_string(trade, 'matchSize')
1027
+ if price is None:
1028
+ # /spot/tradeFills
1029
+ price = self.safe_string(trade, 'price')
1030
+ amount = self.safe_string(trade, 'size')
1027
1031
  order = self.safe_string(trade, 'orderId')
1028
1032
  timestamp = self.safe_integer_product_2(trade, 'ts', 'time', 0.000001)
1029
1033
  feeCurrency = market['quote']
@@ -90,32 +90,48 @@ class woo(ccxt.async_support.woo):
90
90
 
91
91
  async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
92
92
  """
93
+ :see: https://docs.woo.org/#orderbookupdate
93
94
  :see: https://docs.woo.org/#orderbook
94
95
  watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
95
96
  :param str symbol: unified symbol of the market to fetch the order book for
96
97
  :param int [limit]: the maximum amount of order book entries to return.
97
98
  :param dict [params]: extra parameters specific to the exchange API endpoint
99
+ :param str [params.method]: either(default) 'orderbook' or 'orderbookupdate', default is 'orderbook'
98
100
  :returns dict: A dictionary of `order book structures <https://docs.ccxt.com/#/?id=order-book-structure>` indexed by market symbols
99
101
  """
100
102
  await self.load_markets()
101
- name = 'orderbook'
103
+ method = None
104
+ method, params = self.handle_option_and_params(params, 'watchOrderBook', 'method', 'orderbook')
102
105
  market = self.market(symbol)
103
- topic = market['id'] + '@' + name
106
+ topic = market['id'] + '@' + method
107
+ urlUid = '/' + self.uid if (self.uid) else ''
108
+ url = self.urls['api']['ws']['public'] + urlUid
109
+ requestId = self.request_id(url)
104
110
  request: dict = {
105
111
  'event': 'subscribe',
106
112
  'topic': topic,
113
+ 'id': requestId,
107
114
  }
108
- message = self.extend(request, params)
109
- orderbook = await self.watch_public(topic, message)
115
+ subscription: dict = {
116
+ 'id': str(requestId),
117
+ 'name': method,
118
+ 'symbol': symbol,
119
+ 'limit': limit,
120
+ 'params': params,
121
+ }
122
+ if method == 'orderbookupdate':
123
+ subscription['method'] = self.handle_order_book_subscription
124
+ orderbook = await self.watch(url, topic, self.extend(request, params), topic, subscription)
110
125
  return orderbook.limit()
111
126
 
112
127
  def handle_order_book(self, client: Client, message):
113
128
  #
114
129
  # {
115
- # "topic": "PERP_BTC_USDT@orderbook",
116
- # "ts": 1650121915308,
130
+ # "topic": "PERP_BTC_USDT@orderbookupdate",
131
+ # "ts": 1722500373999,
117
132
  # "data": {
118
133
  # "symbol": "PERP_BTC_USDT",
134
+ # "prevTs": 1722500373799,
119
135
  # "bids": [
120
136
  # [
121
137
  # 0.30891,
@@ -136,13 +152,89 @@ class woo(ccxt.async_support.woo):
136
152
  market = self.safe_market(marketId)
137
153
  symbol = market['symbol']
138
154
  topic = self.safe_string(message, 'topic')
139
- if not (symbol in self.orderbooks):
140
- self.orderbooks[symbol] = self.order_book({})
141
- orderbook = self.orderbooks[symbol]
155
+ method = self.safe_string(topic.split('@'), 1)
156
+ if method == 'orderbookupdate':
157
+ if not (symbol in self.orderbooks):
158
+ return
159
+ orderbook = self.orderbooks[symbol]
160
+ timestamp = self.safe_integer(orderbook, 'timestamp')
161
+ if timestamp is None:
162
+ orderbook.cache.append(message)
163
+ else:
164
+ try:
165
+ ts = self.safe_integer(message, 'ts')
166
+ if ts > timestamp:
167
+ self.handle_order_book_message(client, message, orderbook)
168
+ client.resolve(orderbook, topic)
169
+ except Exception as e:
170
+ del self.orderbooks[symbol]
171
+ del client.subscriptions[topic]
172
+ client.reject(e, topic)
173
+ else:
174
+ if not (symbol in self.orderbooks):
175
+ defaultLimit = self.safe_integer(self.options, 'watchOrderBookLimit', 1000)
176
+ subscription = client.subscriptions[topic]
177
+ limit = self.safe_integer(subscription, 'limit', defaultLimit)
178
+ self.orderbooks[symbol] = self.order_book({}, limit)
179
+ orderbook = self.orderbooks[symbol]
180
+ timestamp = self.safe_integer(message, 'ts')
181
+ snapshot = self.parse_order_book(data, symbol, timestamp, 'bids', 'asks')
182
+ orderbook.reset(snapshot)
183
+ client.resolve(orderbook, topic)
184
+
185
+ def handle_order_book_subscription(self, client: Client, message, subscription):
186
+ defaultLimit = self.safe_integer(self.options, 'watchOrderBookLimit', 1000)
187
+ limit = self.safe_integer(subscription, 'limit', defaultLimit)
188
+ symbol = self.safe_string(subscription, 'symbol') # watchOrderBook
189
+ if symbol in self.orderbooks:
190
+ del self.orderbooks[symbol]
191
+ self.orderbooks[symbol] = self.order_book({}, limit)
192
+ self.spawn(self.fetch_order_book_snapshot, client, message, subscription)
193
+
194
+ async def fetch_order_book_snapshot(self, client, message, subscription):
195
+ symbol = self.safe_string(subscription, 'symbol')
196
+ messageHash = self.safe_string(message, 'topic')
197
+ try:
198
+ defaultLimit = self.safe_integer(self.options, 'watchOrderBookLimit', 1000)
199
+ limit = self.safe_integer(subscription, 'limit', defaultLimit)
200
+ params = self.safe_value(subscription, 'params')
201
+ snapshot = await self.fetch_rest_order_book_safe(symbol, limit, params)
202
+ if self.safe_value(self.orderbooks, symbol) is None:
203
+ # if the orderbook is dropped before the snapshot is received
204
+ return
205
+ orderbook = self.orderbooks[symbol]
206
+ orderbook.reset(snapshot)
207
+ messages = orderbook.cache
208
+ for i in range(0, len(messages)):
209
+ messageItem = messages[i]
210
+ ts = self.safe_integer(messageItem, 'ts')
211
+ if ts < orderbook['timestamp']:
212
+ continue
213
+ else:
214
+ self.handle_order_book_message(client, messageItem, orderbook)
215
+ self.orderbooks[symbol] = orderbook
216
+ client.resolve(orderbook, messageHash)
217
+ except Exception as e:
218
+ del client.subscriptions[messageHash]
219
+ client.reject(e, messageHash)
220
+
221
+ def handle_order_book_message(self, client: Client, message, orderbook):
222
+ data = self.safe_dict(message, 'data')
223
+ self.handle_deltas(orderbook['asks'], self.safe_value(data, 'asks', []))
224
+ self.handle_deltas(orderbook['bids'], self.safe_value(data, 'bids', []))
142
225
  timestamp = self.safe_integer(message, 'ts')
143
- snapshot = self.parse_order_book(data, symbol, timestamp, 'bids', 'asks')
144
- orderbook.reset(snapshot)
145
- client.resolve(orderbook, topic)
226
+ orderbook['timestamp'] = timestamp
227
+ orderbook['datetime'] = self.iso8601(timestamp)
228
+ return orderbook
229
+
230
+ def handle_delta(self, bookside, delta):
231
+ price = self.safe_float_2(delta, 'price', 0)
232
+ amount = self.safe_float_2(delta, 'quantity', 1)
233
+ bookside.store(price, amount)
234
+
235
+ def handle_deltas(self, bookside, deltas):
236
+ for i in range(0, len(deltas)):
237
+ self.handle_delta(bookside, deltas[i])
146
238
 
147
239
  async def watch_ticker(self, symbol: str, params={}) -> Ticker:
148
240
  """
@@ -998,6 +1090,7 @@ class woo(ccxt.async_support.woo):
998
1090
  'pong': self.handle_pong,
999
1091
  'subscribe': self.handle_subscribe,
1000
1092
  'orderbook': self.handle_order_book,
1093
+ 'orderbookupdate': self.handle_order_book,
1001
1094
  'ticker': self.handle_ticker,
1002
1095
  'tickers': self.handle_tickers,
1003
1096
  'kline': self.handle_ohlcv,
@@ -1056,6 +1149,12 @@ class woo(ccxt.async_support.woo):
1056
1149
  # "ts": 1657117712212
1057
1150
  # }
1058
1151
  #
1152
+ id = self.safe_string(message, 'id')
1153
+ subscriptionsById = self.index_by(client.subscriptions, 'id')
1154
+ subscription = self.safe_value(subscriptionsById, id, {})
1155
+ method = self.safe_value(subscription, 'method')
1156
+ if method is not None:
1157
+ method(client, message, subscription)
1059
1158
  return message
1060
1159
 
1061
1160
  def handle_auth(self, client: Client, message):
@@ -0,0 +1,45 @@
1
+ """
2
+ TypedDict structures for TypedData
3
+ """
4
+
5
+ from enum import Enum
6
+ from typing import Any, Dict, List, Optional, TypedDict
7
+
8
+ class Revision(Enum):
9
+ """
10
+ Enum representing the revision of the specification to be used.
11
+ """
12
+
13
+ V0 = 0
14
+ V1 = 1
15
+
16
+
17
+ class ParameterDict(TypedDict):
18
+ """
19
+ TypedDict representing a Parameter object
20
+ """
21
+
22
+ name: str
23
+ type: str
24
+
25
+
26
+ class StarkNetDomainDict(TypedDict):
27
+ """
28
+ TypedDict representing a domain object (both StarkNetDomain, StarknetDomain).
29
+ """
30
+
31
+ name: str
32
+ version: str
33
+ chainId: str
34
+ revision: Optional[Revision]
35
+
36
+
37
+ class TypedDataDict(TypedDict):
38
+ """
39
+ TypedDict representing a TypedData object
40
+ """
41
+
42
+ types: Dict[str, List[ParameterDict]]
43
+ primaryType: str
44
+ domain: StarkNetDomainDict
45
+ message: Dict[str, Any]
@@ -0,0 +1,50 @@
1
+ from ...ecdsa.curves import Curve
2
+ from ...ecdsa.ellipticcurve import CurveFp, Point
3
+
4
+ from .signature import (
5
+ ALPHA,
6
+ BETA,
7
+ CONSTANT_POINTS,
8
+ EC_ORDER,
9
+ FIELD_PRIME,
10
+ N_ELEMENT_BITS_HASH,
11
+ SHIFT_POINT,
12
+ )
13
+ from .utils import from_bytes, to_bytes
14
+
15
+ curve_stark = CurveFp(FIELD_PRIME, ALPHA, BETA)
16
+ LOW_PART_BITS = 248
17
+ LOW_PART_MASK = 2**248 - 1
18
+ HASH_SHIFT_POINT = Point(curve_stark, SHIFT_POINT[0], SHIFT_POINT[1], EC_ORDER)
19
+ P_0 = Point(curve_stark, CONSTANT_POINTS[2][0], CONSTANT_POINTS[2][1], EC_ORDER)
20
+ P_1 = Point(curve_stark, CONSTANT_POINTS[2 + LOW_PART_BITS][0], CONSTANT_POINTS[2 + LOW_PART_BITS][1], EC_ORDER)
21
+ P_2 = Point(curve_stark, CONSTANT_POINTS[2 + N_ELEMENT_BITS_HASH][0], CONSTANT_POINTS[2 + N_ELEMENT_BITS_HASH][1], EC_ORDER)
22
+ P_3 = Point(curve_stark, CONSTANT_POINTS[2 + N_ELEMENT_BITS_HASH + LOW_PART_BITS][0], CONSTANT_POINTS[2 + N_ELEMENT_BITS_HASH + LOW_PART_BITS][1], EC_ORDER)
23
+
24
+ def process_single_element(element: int, p1, p2) -> Point:
25
+ assert 0 <= element < FIELD_PRIME, "Element integer value is out of range"
26
+
27
+ high_nibble = element >> LOW_PART_BITS
28
+ low_part = element & LOW_PART_MASK
29
+ return low_part * p1 + high_nibble * p2
30
+
31
+
32
+ def pedersen_hash(x: int, y: int) -> int:
33
+ """
34
+ Computes the Starkware version of the Pedersen hash of x and y.
35
+ The hash is defined by:
36
+ shift_point + x_low * P_0 + x_high * P1 + y_low * P2 + y_high * P3
37
+ where x_low is the 248 low bits of x, x_high is the 4 high bits of x and similarly for y.
38
+ shift_point, P_0, P_1, P_2, P_3 are constant points generated from the digits of pi.
39
+ """
40
+ return (
41
+ HASH_SHIFT_POINT + process_single_element(x, P_0, P_1) + process_single_element(y, P_2, P_3)
42
+ ).x()
43
+
44
+
45
+ def pedersen_hash_func(x: bytes, y: bytes) -> bytes:
46
+ """
47
+ A variant of 'pedersen_hash', where the elements and their resulting hash are in bytes.
48
+ """
49
+ assert len(x) == len(y) == 32, "Unexpected element length."
50
+ return to_bytes(pedersen_hash(*(from_bytes(element) for element in (x, y))))
@@ -0,0 +1,78 @@
1
+ ###############################################################################
2
+ # Copyright 2019 StarkWare Industries Ltd. #
3
+ # #
4
+ # Licensed under the Apache License, Version 2.0 (the "License"). #
5
+ # You may not use this file except in compliance with the License. #
6
+ # You may obtain a copy of the License at #
7
+ # #
8
+ # https://www.starkware.co/open-source-license/ #
9
+ # #
10
+ # Unless required by applicable law or agreed to in writing, #
11
+ # software distributed under the License is distributed on an "AS IS" BASIS, #
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
13
+ # See the License for the specific language governing permissions #
14
+ # and limitations under the License. #
15
+ ###############################################################################
16
+
17
+
18
+ from typing import Tuple
19
+
20
+ from ...sympy.core.intfunc import igcdex
21
+
22
+ # A type that represents a point (x,y) on an elliptic curve.
23
+ ECPoint = Tuple[int, int]
24
+
25
+ def div_mod(n: int, m: int, p: int) -> int:
26
+ """
27
+ Finds a nonnegative integer 0 <= x < p such that (m * x) % p == n
28
+ """
29
+ a, b, c = igcdex(m, p)
30
+ assert c == 1
31
+ return (n * a) % p
32
+
33
+ def div_ceil(x, y):
34
+ assert isinstance(x, int) and isinstance(y, int)
35
+ return -((-x) // y)
36
+
37
+ def ec_add(point1: ECPoint, point2: ECPoint, p: int) -> ECPoint:
38
+ """
39
+ Gets two points on an elliptic curve mod p and returns their sum.
40
+ Assumes the points are given in affine form (x, y) and have different x coordinates.
41
+ """
42
+ assert (point1[0] - point2[0]) % p != 0
43
+ m = div_mod(point1[1] - point2[1], point1[0] - point2[0], p)
44
+ x = (m * m - point1[0] - point2[0]) % p
45
+ y = (m * (point1[0] - x) - point1[1]) % p
46
+ return x, y
47
+
48
+
49
+ def ec_neg(point: ECPoint, p: int) -> ECPoint:
50
+ """
51
+ Given a point (x,y) return (x, -y)
52
+ """
53
+ x, y = point
54
+ return (x, (-y) % p)
55
+
56
+
57
+ def ec_double(point: ECPoint, alpha: int, p: int) -> ECPoint:
58
+ """
59
+ Doubles a point on an elliptic curve with the equation y^2 = x^3 + alpha*x + beta mod p.
60
+ Assumes the point is given in affine form (x, y) and has y != 0.
61
+ """
62
+ assert point[1] % p != 0
63
+ m = div_mod(3 * point[0] * point[0] + alpha, 2 * point[1], p)
64
+ x = (m * m - 2 * point[0]) % p
65
+ y = (m * (point[0] - x) - point[1]) % p
66
+ return x, y
67
+
68
+
69
+ def ec_mult(m: int, point: ECPoint, alpha: int, p: int) -> ECPoint:
70
+ """
71
+ Multiplies by m a point on the elliptic curve with equation y^2 = x^3 + alpha*x + beta mod p.
72
+ Assumes the point is given in affine form (x, y) and that 0 < m < order(point).
73
+ """
74
+ if m == 1:
75
+ return point
76
+ if m % 2 == 0:
77
+ return ec_mult(m // 2, ec_double(point, alpha, p), alpha, p)
78
+ return ec_add(ec_mult(m - 1, point, alpha, p), point, p)