ccxt 4.2.97__tar.gz → 4.2.99__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 (543) hide show
  1. {ccxt-4.2.97/ccxt.egg-info → ccxt-4.2.99}/PKG-INFO +4 -4
  2. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/__init__.py +1 -1
  3. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/__init__.py +1 -1
  4. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/base/exchange.py +1 -1
  5. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/coinbase.py +47 -20
  6. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/kraken.py +5 -4
  7. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/base/exchange.py +1 -1
  8. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/coinbase.py +47 -20
  9. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/kraken.py +5 -4
  10. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/__init__.py +1 -1
  11. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/coinbase.py +21 -3
  12. {ccxt-4.2.97 → ccxt-4.2.99/ccxt.egg-info}/PKG-INFO +4 -4
  13. {ccxt-4.2.97 → ccxt-4.2.99}/package.json +1 -1
  14. {ccxt-4.2.97 → ccxt-4.2.99}/LICENSE.txt +0 -0
  15. {ccxt-4.2.97 → ccxt-4.2.99}/MANIFEST.in +0 -0
  16. {ccxt-4.2.97 → ccxt-4.2.99}/README.rst +0 -0
  17. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/__init__.py +0 -0
  18. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/ace.py +0 -0
  19. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/alpaca.py +0 -0
  20. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/ascendex.py +0 -0
  21. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bequant.py +0 -0
  22. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bigone.py +0 -0
  23. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/binance.py +0 -0
  24. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/binancecoinm.py +0 -0
  25. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/binanceus.py +0 -0
  26. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/binanceusdm.py +0 -0
  27. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bingx.py +0 -0
  28. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bit2c.py +0 -0
  29. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bitbank.py +0 -0
  30. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bitbay.py +0 -0
  31. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bitbns.py +0 -0
  32. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bitcoincom.py +0 -0
  33. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bitfinex.py +0 -0
  34. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bitfinex2.py +0 -0
  35. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bitflyer.py +0 -0
  36. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bitget.py +0 -0
  37. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bithumb.py +0 -0
  38. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bitmart.py +0 -0
  39. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bitmex.py +0 -0
  40. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bitopro.py +0 -0
  41. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bitpanda.py +0 -0
  42. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bitrue.py +0 -0
  43. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bitso.py +0 -0
  44. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bitstamp.py +0 -0
  45. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bitteam.py +0 -0
  46. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bitvavo.py +0 -0
  47. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bl3p.py +0 -0
  48. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/blockchaincom.py +0 -0
  49. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/blofin.py +0 -0
  50. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/btcalpha.py +0 -0
  51. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/btcbox.py +0 -0
  52. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/btcmarkets.py +0 -0
  53. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/btcturk.py +0 -0
  54. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/bybit.py +0 -0
  55. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/cex.py +0 -0
  56. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/coinbase.py +0 -0
  57. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/coinbaseinternational.py +0 -0
  58. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/coinbasepro.py +0 -0
  59. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/coincheck.py +0 -0
  60. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/coinex.py +0 -0
  61. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/coinlist.py +0 -0
  62. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/coinmate.py +0 -0
  63. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/coinmetro.py +0 -0
  64. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/coinone.py +0 -0
  65. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/coinsph.py +0 -0
  66. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/coinspot.py +0 -0
  67. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/cryptocom.py +0 -0
  68. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/currencycom.py +0 -0
  69. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/delta.py +0 -0
  70. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/deribit.py +0 -0
  71. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/digifinex.py +0 -0
  72. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/exmo.py +0 -0
  73. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/fmfwio.py +0 -0
  74. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/gate.py +0 -0
  75. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/gateio.py +0 -0
  76. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/gemini.py +0 -0
  77. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/hitbtc.py +0 -0
  78. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/hitbtc3.py +0 -0
  79. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/hollaex.py +0 -0
  80. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/htx.py +0 -0
  81. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/huobi.py +0 -0
  82. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/huobijp.py +0 -0
  83. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/hyperliquid.py +0 -0
  84. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/idex.py +0 -0
  85. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/independentreserve.py +0 -0
  86. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/indodax.py +0 -0
  87. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/kraken.py +0 -0
  88. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/krakenfutures.py +0 -0
  89. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/kucoin.py +0 -0
  90. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/kucoinfutures.py +0 -0
  91. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/kuna.py +0 -0
  92. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/latoken.py +0 -0
  93. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/lbank.py +0 -0
  94. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/luno.py +0 -0
  95. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/lykke.py +0 -0
  96. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/mercado.py +0 -0
  97. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/mexc.py +0 -0
  98. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/ndax.py +0 -0
  99. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/novadax.py +0 -0
  100. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/oceanex.py +0 -0
  101. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/okcoin.py +0 -0
  102. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/okx.py +0 -0
  103. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/onetrading.py +0 -0
  104. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/p2b.py +0 -0
  105. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/paymium.py +0 -0
  106. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/phemex.py +0 -0
  107. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/poloniex.py +0 -0
  108. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/poloniexfutures.py +0 -0
  109. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/probit.py +0 -0
  110. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/timex.py +0 -0
  111. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/tokocrypto.py +0 -0
  112. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/tradeogre.py +0 -0
  113. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/upbit.py +0 -0
  114. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/wavesexchange.py +0 -0
  115. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/wazirx.py +0 -0
  116. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/whitebit.py +0 -0
  117. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/woo.py +0 -0
  118. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/yobit.py +0 -0
  119. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/zaif.py +0 -0
  120. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/abstract/zonda.py +0 -0
  121. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/ace.py +0 -0
  122. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/alpaca.py +0 -0
  123. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/ascendex.py +0 -0
  124. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/ace.py +0 -0
  125. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/alpaca.py +0 -0
  126. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/ascendex.py +0 -0
  127. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/base/__init__.py +0 -0
  128. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/base/throttler.py +0 -0
  129. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/base/ws/__init__.py +0 -0
  130. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  131. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/base/ws/cache.py +0 -0
  132. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/base/ws/client.py +0 -0
  133. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/base/ws/fast_client.py +0 -0
  134. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/base/ws/functions.py +0 -0
  135. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/base/ws/future.py +0 -0
  136. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/base/ws/order_book.py +0 -0
  137. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  138. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bequant.py +0 -0
  139. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bigone.py +0 -0
  140. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/binance.py +0 -0
  141. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/binancecoinm.py +0 -0
  142. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/binanceus.py +0 -0
  143. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/binanceusdm.py +0 -0
  144. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bingx.py +0 -0
  145. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bit2c.py +0 -0
  146. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bitbank.py +0 -0
  147. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bitbay.py +0 -0
  148. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bitbns.py +0 -0
  149. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bitcoincom.py +0 -0
  150. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bitfinex.py +0 -0
  151. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bitfinex2.py +0 -0
  152. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bitflyer.py +0 -0
  153. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bitget.py +0 -0
  154. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bithumb.py +0 -0
  155. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bitmart.py +0 -0
  156. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bitmex.py +0 -0
  157. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bitopro.py +0 -0
  158. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bitpanda.py +0 -0
  159. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bitrue.py +0 -0
  160. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bitso.py +0 -0
  161. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bitstamp.py +0 -0
  162. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bitteam.py +0 -0
  163. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bitvavo.py +0 -0
  164. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bl3p.py +0 -0
  165. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/blockchaincom.py +0 -0
  166. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/blofin.py +0 -0
  167. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/btcalpha.py +0 -0
  168. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/btcbox.py +0 -0
  169. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/btcmarkets.py +0 -0
  170. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/btcturk.py +0 -0
  171. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/bybit.py +0 -0
  172. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/cex.py +0 -0
  173. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/coinbaseinternational.py +0 -0
  174. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/coinbasepro.py +0 -0
  175. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/coincheck.py +0 -0
  176. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/coinex.py +0 -0
  177. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/coinlist.py +0 -0
  178. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/coinmate.py +0 -0
  179. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/coinmetro.py +0 -0
  180. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/coinone.py +0 -0
  181. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/coinsph.py +0 -0
  182. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/coinspot.py +0 -0
  183. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/cryptocom.py +0 -0
  184. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/currencycom.py +0 -0
  185. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/delta.py +0 -0
  186. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/deribit.py +0 -0
  187. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/digifinex.py +0 -0
  188. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/exmo.py +0 -0
  189. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/flowbtc.py +0 -0
  190. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/fmfwio.py +0 -0
  191. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/gate.py +0 -0
  192. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/gateio.py +0 -0
  193. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/gemini.py +0 -0
  194. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/hitbtc.py +0 -0
  195. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/hitbtc3.py +0 -0
  196. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/hollaex.py +0 -0
  197. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/htx.py +0 -0
  198. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/huobi.py +0 -0
  199. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/huobijp.py +0 -0
  200. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/hyperliquid.py +0 -0
  201. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/idex.py +0 -0
  202. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/independentreserve.py +0 -0
  203. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/indodax.py +0 -0
  204. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/krakenfutures.py +0 -0
  205. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/kucoin.py +0 -0
  206. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/kucoinfutures.py +0 -0
  207. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/kuna.py +0 -0
  208. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/latoken.py +0 -0
  209. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/lbank.py +0 -0
  210. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/luno.py +0 -0
  211. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/lykke.py +0 -0
  212. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/mercado.py +0 -0
  213. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/mexc.py +0 -0
  214. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/ndax.py +0 -0
  215. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/novadax.py +0 -0
  216. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/oceanex.py +0 -0
  217. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/okcoin.py +0 -0
  218. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/okx.py +0 -0
  219. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/onetrading.py +0 -0
  220. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/p2b.py +0 -0
  221. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/paymium.py +0 -0
  222. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/phemex.py +0 -0
  223. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/poloniex.py +0 -0
  224. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/poloniexfutures.py +0 -0
  225. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/probit.py +0 -0
  226. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/timex.py +0 -0
  227. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/tokocrypto.py +0 -0
  228. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/tradeogre.py +0 -0
  229. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/upbit.py +0 -0
  230. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/wavesexchange.py +0 -0
  231. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/wazirx.py +0 -0
  232. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/whitebit.py +0 -0
  233. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/woo.py +0 -0
  234. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/yobit.py +0 -0
  235. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/zaif.py +0 -0
  236. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/async_support/zonda.py +0 -0
  237. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/base/__init__.py +0 -0
  238. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/base/decimal_to_precision.py +0 -0
  239. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/base/errors.py +0 -0
  240. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/base/precise.py +0 -0
  241. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/base/types.py +0 -0
  242. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bequant.py +0 -0
  243. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bigone.py +0 -0
  244. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/binance.py +0 -0
  245. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/binancecoinm.py +0 -0
  246. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/binanceus.py +0 -0
  247. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/binanceusdm.py +0 -0
  248. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bingx.py +0 -0
  249. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bit2c.py +0 -0
  250. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bitbank.py +0 -0
  251. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bitbay.py +0 -0
  252. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bitbns.py +0 -0
  253. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bitcoincom.py +0 -0
  254. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bitfinex.py +0 -0
  255. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bitfinex2.py +0 -0
  256. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bitflyer.py +0 -0
  257. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bitget.py +0 -0
  258. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bithumb.py +0 -0
  259. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bitmart.py +0 -0
  260. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bitmex.py +0 -0
  261. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bitopro.py +0 -0
  262. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bitpanda.py +0 -0
  263. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bitrue.py +0 -0
  264. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bitso.py +0 -0
  265. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bitstamp.py +0 -0
  266. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bitteam.py +0 -0
  267. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bitvavo.py +0 -0
  268. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bl3p.py +0 -0
  269. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/blockchaincom.py +0 -0
  270. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/blofin.py +0 -0
  271. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/btcalpha.py +0 -0
  272. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/btcbox.py +0 -0
  273. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/btcmarkets.py +0 -0
  274. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/btcturk.py +0 -0
  275. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/bybit.py +0 -0
  276. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/cex.py +0 -0
  277. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/coinbaseinternational.py +0 -0
  278. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/coinbasepro.py +0 -0
  279. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/coincheck.py +0 -0
  280. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/coinex.py +0 -0
  281. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/coinlist.py +0 -0
  282. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/coinmate.py +0 -0
  283. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/coinmetro.py +0 -0
  284. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/coinone.py +0 -0
  285. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/coinsph.py +0 -0
  286. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/coinspot.py +0 -0
  287. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/cryptocom.py +0 -0
  288. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/currencycom.py +0 -0
  289. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/delta.py +0 -0
  290. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/deribit.py +0 -0
  291. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/digifinex.py +0 -0
  292. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/exmo.py +0 -0
  293. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/flowbtc.py +0 -0
  294. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/fmfwio.py +0 -0
  295. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/gate.py +0 -0
  296. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/gateio.py +0 -0
  297. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/gemini.py +0 -0
  298. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/hitbtc.py +0 -0
  299. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/hitbtc3.py +0 -0
  300. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/hollaex.py +0 -0
  301. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/htx.py +0 -0
  302. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/huobi.py +0 -0
  303. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/huobijp.py +0 -0
  304. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/hyperliquid.py +0 -0
  305. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/idex.py +0 -0
  306. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/independentreserve.py +0 -0
  307. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/indodax.py +0 -0
  308. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/krakenfutures.py +0 -0
  309. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/kucoin.py +0 -0
  310. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/kucoinfutures.py +0 -0
  311. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/kuna.py +0 -0
  312. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/latoken.py +0 -0
  313. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/lbank.py +0 -0
  314. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/luno.py +0 -0
  315. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/lykke.py +0 -0
  316. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/mercado.py +0 -0
  317. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/mexc.py +0 -0
  318. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/ndax.py +0 -0
  319. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/novadax.py +0 -0
  320. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/oceanex.py +0 -0
  321. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/okcoin.py +0 -0
  322. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/okx.py +0 -0
  323. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/onetrading.py +0 -0
  324. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/p2b.py +0 -0
  325. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/paymium.py +0 -0
  326. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/phemex.py +0 -0
  327. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/poloniex.py +0 -0
  328. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/poloniexfutures.py +0 -0
  329. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/alpaca.py +0 -0
  330. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/ascendex.py +0 -0
  331. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/bequant.py +0 -0
  332. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/binance.py +0 -0
  333. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/binancecoinm.py +0 -0
  334. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/binanceus.py +0 -0
  335. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/binanceusdm.py +0 -0
  336. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/bingx.py +0 -0
  337. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/bitcoincom.py +0 -0
  338. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/bitfinex.py +0 -0
  339. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/bitfinex2.py +0 -0
  340. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/bitget.py +0 -0
  341. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/bithumb.py +0 -0
  342. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/bitmart.py +0 -0
  343. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/bitmex.py +0 -0
  344. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/bitopro.py +0 -0
  345. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/bitpanda.py +0 -0
  346. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/bitrue.py +0 -0
  347. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/bitstamp.py +0 -0
  348. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/bitvavo.py +0 -0
  349. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/blockchaincom.py +0 -0
  350. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/bybit.py +0 -0
  351. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/cex.py +0 -0
  352. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/coinbaseinternational.py +0 -0
  353. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/coinbasepro.py +0 -0
  354. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/coincheck.py +0 -0
  355. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/coinex.py +0 -0
  356. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/coinone.py +0 -0
  357. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/cryptocom.py +0 -0
  358. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/currencycom.py +0 -0
  359. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/deribit.py +0 -0
  360. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/exmo.py +0 -0
  361. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/gate.py +0 -0
  362. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/gateio.py +0 -0
  363. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/gemini.py +0 -0
  364. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/hitbtc.py +0 -0
  365. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/hollaex.py +0 -0
  366. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/htx.py +0 -0
  367. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/huobi.py +0 -0
  368. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/huobijp.py +0 -0
  369. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/hyperliquid.py +0 -0
  370. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/idex.py +0 -0
  371. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/independentreserve.py +0 -0
  372. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/kraken.py +0 -0
  373. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/krakenfutures.py +0 -0
  374. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/kucoin.py +0 -0
  375. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/kucoinfutures.py +0 -0
  376. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/lbank.py +0 -0
  377. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/luno.py +0 -0
  378. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/mexc.py +0 -0
  379. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/ndax.py +0 -0
  380. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/okcoin.py +0 -0
  381. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/okx.py +0 -0
  382. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/onetrading.py +0 -0
  383. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/p2b.py +0 -0
  384. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/phemex.py +0 -0
  385. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/poloniex.py +0 -0
  386. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/poloniexfutures.py +0 -0
  387. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/probit.py +0 -0
  388. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/upbit.py +0 -0
  389. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/wazirx.py +0 -0
  390. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/whitebit.py +0 -0
  391. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/pro/woo.py +0 -0
  392. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/probit.py +0 -0
  393. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/__init__.py +0 -0
  394. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  395. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  396. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  397. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  398. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  399. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  400. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  401. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  402. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  403. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  404. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
  405. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
  406. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
  407. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
  408. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
  409. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
  410. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
  411. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
  412. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
  413. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
  414. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
  415. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  416. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
  417. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
  418. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
  419. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  420. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
  421. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
  422. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
  423. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
  424. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
  425. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
  426. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
  427. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
  428. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  429. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
  430. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
  431. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
  432. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  433. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
  434. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
  435. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
  436. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
  437. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
  438. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
  439. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
  440. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
  441. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
  442. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  443. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
  444. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
  445. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
  446. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
  447. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
  448. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
  449. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
  450. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
  451. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
  452. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
  453. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
  454. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
  455. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
  456. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
  457. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
  458. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
  459. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
  460. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  461. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
  462. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
  463. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
  464. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
  465. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
  466. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  467. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  468. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
  469. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
  470. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/msgpack/ext.py +0 -0
  471. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
  472. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
  473. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
  474. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
  475. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
  476. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
  477. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
  478. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/toolz/__init__.py +0 -0
  479. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
  480. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/toolz/_version.py +0 -0
  481. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
  482. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
  483. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
  484. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
  485. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
  486. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
  487. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
  488. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/toolz/recipes.py +0 -0
  489. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/static_dependencies/toolz/utils.py +0 -0
  490. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/__init__.py +0 -0
  491. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/__init__.py +0 -0
  492. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_account.py +0 -0
  493. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_balance.py +0 -0
  494. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_borrow_interest.py +0 -0
  495. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_borrow_rate.py +0 -0
  496. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_calculate_fee.py +0 -0
  497. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_crypto.py +0 -0
  498. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_currency.py +0 -0
  499. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_datetime.py +0 -0
  500. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_decimal_to_precision.py +0 -0
  501. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_deep_extend.py +0 -0
  502. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
  503. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
  504. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_funding_rate_history.py +0 -0
  505. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_last_price.py +0 -0
  506. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_ledger_entry.py +0 -0
  507. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_ledger_item.py +0 -0
  508. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_leverage_tier.py +0 -0
  509. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_margin_mode.py +0 -0
  510. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_margin_modification.py +0 -0
  511. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_market.py +0 -0
  512. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_number.py +0 -0
  513. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_ohlcv.py +0 -0
  514. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_open_interest.py +0 -0
  515. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_order.py +0 -0
  516. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_order_book.py +0 -0
  517. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_position.py +0 -0
  518. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_shared_methods.py +0 -0
  519. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_status.py +0 -0
  520. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_throttle.py +0 -0
  521. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_ticker.py +0 -0
  522. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_trade.py +0 -0
  523. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_trading_fee.py +0 -0
  524. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/base/test_transaction.py +0 -0
  525. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/test_async.py +0 -0
  526. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/test/test_sync.py +0 -0
  527. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/timex.py +0 -0
  528. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/tokocrypto.py +0 -0
  529. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/tradeogre.py +0 -0
  530. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/upbit.py +0 -0
  531. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/wavesexchange.py +0 -0
  532. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/wazirx.py +0 -0
  533. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/whitebit.py +0 -0
  534. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/woo.py +0 -0
  535. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/yobit.py +0 -0
  536. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/zaif.py +0 -0
  537. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt/zonda.py +0 -0
  538. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt.egg-info/SOURCES.txt +0 -0
  539. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt.egg-info/dependency_links.txt +0 -0
  540. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt.egg-info/requires.txt +0 -0
  541. {ccxt-4.2.97 → ccxt-4.2.99}/ccxt.egg-info/top_level.txt +0 -0
  542. {ccxt-4.2.97 → ccxt-4.2.99}/setup.cfg +0 -0
  543. {ccxt-4.2.97 → ccxt-4.2.99}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.2.97
3
+ Version: 4.2.99
4
4
  Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges
5
5
  Home-page: https://ccxt.com
6
6
  Author: Igor Kroitor
@@ -225,13 +225,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
225
225
 
226
226
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
227
227
 
228
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.97/dist/ccxt.browser.js
229
- * unpkg: https://unpkg.com/ccxt@4.2.97/dist/ccxt.browser.js
228
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.99/dist/ccxt.browser.js
229
+ * unpkg: https://unpkg.com/ccxt@4.2.99/dist/ccxt.browser.js
230
230
 
231
231
  CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
232
232
 
233
233
  ```HTML
234
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.97/dist/ccxt.browser.js"></script>
234
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.99/dist/ccxt.browser.js"></script>
235
235
  ```
236
236
 
237
237
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.2.97'
25
+ __version__ = '4.2.99'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.97'
7
+ __version__ = '4.2.99'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.2.97'
5
+ __version__ = '4.2.99'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -1416,6 +1416,7 @@ class coinbase(Exchange, ImplicitAPI):
1416
1416
  contractExpiryType = self.safe_string(futureProductDetails, 'contract_expiry_type')
1417
1417
  contractSize = self.safe_number(futureProductDetails, 'contract_size')
1418
1418
  contractExpire = self.safe_string(futureProductDetails, 'contract_expiry')
1419
+ expireTimestamp = self.parse8601(contractExpire)
1419
1420
  isSwap = (contractExpiryType == 'PERPETUAL')
1420
1421
  baseId = self.safe_string(futureProductDetails, 'contract_root_unit')
1421
1422
  quoteId = self.safe_string(market, 'quote_currency_id')
@@ -1429,7 +1430,7 @@ class coinbase(Exchange, ImplicitAPI):
1429
1430
  symbol = symbol + ':' + quote
1430
1431
  else:
1431
1432
  type = 'future'
1432
- symbol = symbol + ':' + quote + '-' + self.yymmdd(contractExpire)
1433
+ symbol = symbol + ':' + quote + '-' + self.yymmdd(expireTimestamp)
1433
1434
  takerFeeRate = self.safe_number(feeTier, 'taker_fee_rate')
1434
1435
  makerFeeRate = self.safe_number(feeTier, 'maker_fee_rate')
1435
1436
  taker = takerFeeRate if takerFeeRate else self.parse_number('0.06')
@@ -1456,7 +1457,7 @@ class coinbase(Exchange, ImplicitAPI):
1456
1457
  'taker': taker,
1457
1458
  'maker': maker,
1458
1459
  'contractSize': contractSize,
1459
- 'expiry': self.parse8601(contractExpire),
1460
+ 'expiry': expireTimestamp,
1460
1461
  'expiryDatetime': contractExpire,
1461
1462
  'strike': None,
1462
1463
  'optionType': None,
@@ -4048,6 +4049,30 @@ class coinbase(Exchange, ImplicitAPI):
4048
4049
  'takeProfitPrice': None,
4049
4050
  })
4050
4051
 
4052
+ def create_auth_token(self, seconds: Int, method: Str = None, url: Str = None):
4053
+ # it may not work for v2
4054
+ uri = None
4055
+ if url is not None:
4056
+ uri = method + ' ' + url.replace('https://', '')
4057
+ quesPos = uri.find('?')
4058
+ # Due to we use mb_strpos, quesPos could be False in php. In that case, the quesPos >= 0 is True
4059
+ # Also it's not possible that the question mark is first character, only check > 0 here.
4060
+ if quesPos > 0:
4061
+ uri = uri[0:quesPos]
4062
+ nonce = self.random_bytes(16)
4063
+ request = {
4064
+ 'aud': ['retail_rest_api_proxy'],
4065
+ 'iss': 'coinbase-cloud',
4066
+ 'nbf': seconds,
4067
+ 'exp': seconds + 120,
4068
+ 'sub': self.apiKey,
4069
+ 'iat': seconds,
4070
+ }
4071
+ if uri is not None:
4072
+ request['uri'] = uri
4073
+ token = self.jwt(request, self.encode(self.secret), 'sha256', False, {'kid': self.apiKey, 'nonce': nonce, 'alg': 'ES256'})
4074
+ return token
4075
+
4051
4076
  def sign(self, path, api=[], method='GET', params={}, headers=None, body=None):
4052
4077
  version = api[0]
4053
4078
  signed = api[1] == 'private'
@@ -4087,24 +4112,26 @@ class coinbase(Exchange, ImplicitAPI):
4087
4112
  if isCloudAPiKey:
4088
4113
  if self.apiKey.startswith('-----BEGIN'):
4089
4114
  raise ArgumentsRequired(self.id + ' apiKey should contain the name(eg: organizations/3b910e93....) and not the public key')
4090
- # it may not work for v2
4091
- uri = method + ' ' + url.replace('https://', '')
4092
- quesPos = uri.find('?')
4093
- # Due to we use mb_strpos, quesPos could be False in php. In that case, the quesPos >= 0 is True
4094
- # Also it's not possible that the question mark is first character, only check > 0 here.
4095
- if quesPos > 0:
4096
- uri = uri[0:quesPos]
4097
- nonce = self.random_bytes(16)
4098
- request = {
4099
- 'aud': ['retail_rest_api_proxy'],
4100
- 'iss': 'coinbase-cloud',
4101
- 'nbf': seconds,
4102
- 'exp': seconds + 120,
4103
- 'sub': self.apiKey,
4104
- 'uri': uri,
4105
- 'iat': seconds,
4106
- }
4107
- token = self.jwt(request, self.encode(self.secret), 'sha256', False, {'kid': self.apiKey, 'nonce': nonce, 'alg': 'ES256'})
4115
+ # # it may not work for v2
4116
+ # uri = method + ' ' + url.replace('https://', '')
4117
+ # quesPos = uri.find('?')
4118
+ # # Due to we use mb_strpos, quesPos could be False in php. In that case, the quesPos >= 0 is True
4119
+ # # Also it's not possible that the question mark is first character, only check > 0 here.
4120
+ # if quesPos > 0:
4121
+ # uri = uri[0:quesPos]
4122
+ # }
4123
+ # nonce = self.random_bytes(16)
4124
+ # request = {
4125
+ # 'aud': ['retail_rest_api_proxy'],
4126
+ # 'iss': 'coinbase-cloud',
4127
+ # 'nbf': seconds,
4128
+ # 'exp': seconds + 120,
4129
+ # 'sub': self.apiKey,
4130
+ # 'uri': uri,
4131
+ # 'iat': seconds,
4132
+ # }
4133
+ token = self.create_auth_token(seconds, method, url)
4134
+ # token = self.jwt(request, self.encode(self.secret), 'sha256', False, {'kid': self.apiKey, 'nonce': nonce, 'alg': 'ES256'})
4108
4135
  authorizationString = 'Bearer ' + token
4109
4136
  else:
4110
4137
  timestampString = str(self.seconds())
@@ -1501,9 +1501,10 @@ class kraken(Exchange, ImplicitAPI):
1501
1501
  # }
1502
1502
  #
1503
1503
  description = self.safe_dict(order, 'descr', {})
1504
+ orderDescriptionObj = self.safe_dict(order, 'descr') # can be null
1504
1505
  orderDescription = None
1505
- if description is not None:
1506
- orderDescription = self.safe_string(description, 'order')
1506
+ if orderDescriptionObj is not None:
1507
+ orderDescription = self.safe_string(orderDescriptionObj, 'order')
1507
1508
  else:
1508
1509
  orderDescription = self.safe_string(order, 'descr')
1509
1510
  side = None
@@ -1564,8 +1565,8 @@ class kraken(Exchange, ImplicitAPI):
1564
1565
  fee['currency'] = market['base']
1565
1566
  status = self.parse_order_status(self.safe_string(order, 'status'))
1566
1567
  id = self.safe_string_2(order, 'id', 'txid')
1567
- if (id is None) or (id[0:1] == '['):
1568
- txid = self.safe_value(order, 'txid')
1568
+ if (id is None) or (id.startswith('[')):
1569
+ txid = self.safe_list(order, 'txid')
1569
1570
  id = self.safe_string(txid, 0)
1570
1571
  clientOrderId = self.safe_string(order, 'userref')
1571
1572
  rawTrades = self.safe_value(order, 'trades', [])
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.97'
7
+ __version__ = '4.2.99'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -1415,6 +1415,7 @@ class coinbase(Exchange, ImplicitAPI):
1415
1415
  contractExpiryType = self.safe_string(futureProductDetails, 'contract_expiry_type')
1416
1416
  contractSize = self.safe_number(futureProductDetails, 'contract_size')
1417
1417
  contractExpire = self.safe_string(futureProductDetails, 'contract_expiry')
1418
+ expireTimestamp = self.parse8601(contractExpire)
1418
1419
  isSwap = (contractExpiryType == 'PERPETUAL')
1419
1420
  baseId = self.safe_string(futureProductDetails, 'contract_root_unit')
1420
1421
  quoteId = self.safe_string(market, 'quote_currency_id')
@@ -1428,7 +1429,7 @@ class coinbase(Exchange, ImplicitAPI):
1428
1429
  symbol = symbol + ':' + quote
1429
1430
  else:
1430
1431
  type = 'future'
1431
- symbol = symbol + ':' + quote + '-' + self.yymmdd(contractExpire)
1432
+ symbol = symbol + ':' + quote + '-' + self.yymmdd(expireTimestamp)
1432
1433
  takerFeeRate = self.safe_number(feeTier, 'taker_fee_rate')
1433
1434
  makerFeeRate = self.safe_number(feeTier, 'maker_fee_rate')
1434
1435
  taker = takerFeeRate if takerFeeRate else self.parse_number('0.06')
@@ -1455,7 +1456,7 @@ class coinbase(Exchange, ImplicitAPI):
1455
1456
  'taker': taker,
1456
1457
  'maker': maker,
1457
1458
  'contractSize': contractSize,
1458
- 'expiry': self.parse8601(contractExpire),
1459
+ 'expiry': expireTimestamp,
1459
1460
  'expiryDatetime': contractExpire,
1460
1461
  'strike': None,
1461
1462
  'optionType': None,
@@ -4047,6 +4048,30 @@ class coinbase(Exchange, ImplicitAPI):
4047
4048
  'takeProfitPrice': None,
4048
4049
  })
4049
4050
 
4051
+ def create_auth_token(self, seconds: Int, method: Str = None, url: Str = None):
4052
+ # it may not work for v2
4053
+ uri = None
4054
+ if url is not None:
4055
+ uri = method + ' ' + url.replace('https://', '')
4056
+ quesPos = uri.find('?')
4057
+ # Due to we use mb_strpos, quesPos could be False in php. In that case, the quesPos >= 0 is True
4058
+ # Also it's not possible that the question mark is first character, only check > 0 here.
4059
+ if quesPos > 0:
4060
+ uri = uri[0:quesPos]
4061
+ nonce = self.random_bytes(16)
4062
+ request = {
4063
+ 'aud': ['retail_rest_api_proxy'],
4064
+ 'iss': 'coinbase-cloud',
4065
+ 'nbf': seconds,
4066
+ 'exp': seconds + 120,
4067
+ 'sub': self.apiKey,
4068
+ 'iat': seconds,
4069
+ }
4070
+ if uri is not None:
4071
+ request['uri'] = uri
4072
+ token = self.jwt(request, self.encode(self.secret), 'sha256', False, {'kid': self.apiKey, 'nonce': nonce, 'alg': 'ES256'})
4073
+ return token
4074
+
4050
4075
  def sign(self, path, api=[], method='GET', params={}, headers=None, body=None):
4051
4076
  version = api[0]
4052
4077
  signed = api[1] == 'private'
@@ -4086,24 +4111,26 @@ class coinbase(Exchange, ImplicitAPI):
4086
4111
  if isCloudAPiKey:
4087
4112
  if self.apiKey.startswith('-----BEGIN'):
4088
4113
  raise ArgumentsRequired(self.id + ' apiKey should contain the name(eg: organizations/3b910e93....) and not the public key')
4089
- # it may not work for v2
4090
- uri = method + ' ' + url.replace('https://', '')
4091
- quesPos = uri.find('?')
4092
- # Due to we use mb_strpos, quesPos could be False in php. In that case, the quesPos >= 0 is True
4093
- # Also it's not possible that the question mark is first character, only check > 0 here.
4094
- if quesPos > 0:
4095
- uri = uri[0:quesPos]
4096
- nonce = self.random_bytes(16)
4097
- request = {
4098
- 'aud': ['retail_rest_api_proxy'],
4099
- 'iss': 'coinbase-cloud',
4100
- 'nbf': seconds,
4101
- 'exp': seconds + 120,
4102
- 'sub': self.apiKey,
4103
- 'uri': uri,
4104
- 'iat': seconds,
4105
- }
4106
- token = self.jwt(request, self.encode(self.secret), 'sha256', False, {'kid': self.apiKey, 'nonce': nonce, 'alg': 'ES256'})
4114
+ # # it may not work for v2
4115
+ # uri = method + ' ' + url.replace('https://', '')
4116
+ # quesPos = uri.find('?')
4117
+ # # Due to we use mb_strpos, quesPos could be False in php. In that case, the quesPos >= 0 is True
4118
+ # # Also it's not possible that the question mark is first character, only check > 0 here.
4119
+ # if quesPos > 0:
4120
+ # uri = uri[0:quesPos]
4121
+ # }
4122
+ # nonce = self.random_bytes(16)
4123
+ # request = {
4124
+ # 'aud': ['retail_rest_api_proxy'],
4125
+ # 'iss': 'coinbase-cloud',
4126
+ # 'nbf': seconds,
4127
+ # 'exp': seconds + 120,
4128
+ # 'sub': self.apiKey,
4129
+ # 'uri': uri,
4130
+ # 'iat': seconds,
4131
+ # }
4132
+ token = self.create_auth_token(seconds, method, url)
4133
+ # token = self.jwt(request, self.encode(self.secret), 'sha256', False, {'kid': self.apiKey, 'nonce': nonce, 'alg': 'ES256'})
4107
4134
  authorizationString = 'Bearer ' + token
4108
4135
  else:
4109
4136
  timestampString = str(self.seconds())
@@ -1501,9 +1501,10 @@ class kraken(Exchange, ImplicitAPI):
1501
1501
  # }
1502
1502
  #
1503
1503
  description = self.safe_dict(order, 'descr', {})
1504
+ orderDescriptionObj = self.safe_dict(order, 'descr') # can be null
1504
1505
  orderDescription = None
1505
- if description is not None:
1506
- orderDescription = self.safe_string(description, 'order')
1506
+ if orderDescriptionObj is not None:
1507
+ orderDescription = self.safe_string(orderDescriptionObj, 'order')
1507
1508
  else:
1508
1509
  orderDescription = self.safe_string(order, 'descr')
1509
1510
  side = None
@@ -1564,8 +1565,8 @@ class kraken(Exchange, ImplicitAPI):
1564
1565
  fee['currency'] = market['base']
1565
1566
  status = self.parse_order_status(self.safe_string(order, 'status'))
1566
1567
  id = self.safe_string_2(order, 'id', 'txid')
1567
- if (id is None) or (id[0:1] == '['):
1568
- txid = self.safe_value(order, 'txid')
1568
+ if (id is None) or (id.startswith('[')):
1569
+ txid = self.safe_list(order, 'txid')
1569
1570
  id = self.safe_string(txid, 0)
1570
1571
  clientOrderId = self.safe_string(order, 'userref')
1571
1572
  rawTrades = self.safe_value(order, 'trades', [])
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.97'
7
+ __version__ = '4.2.99'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
@@ -9,6 +9,7 @@ import hashlib
9
9
  from ccxt.base.types import Int, Order, OrderBook, Str, Strings, Ticker, Tickers, Trade
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
+ from ccxt.base.errors import ArgumentsRequired
12
13
 
13
14
 
14
15
  class coinbase(ccxt.async_support.coinbase):
@@ -77,15 +78,32 @@ class coinbase(ccxt.async_support.coinbase):
77
78
  productIds = [market['id']]
78
79
  url = self.urls['api']['ws']
79
80
  timestamp = self.number_to_string(self.seconds())
81
+ isCloudAPiKey = (self.apiKey.find('organizations/') >= 0) or (self.secret.startswith('-----BEGIN'))
80
82
  auth = timestamp + name + ','.join(productIds)
81
83
  subscribe = {
82
84
  'type': 'subscribe',
83
85
  'product_ids': productIds,
84
86
  'channel': name,
85
- 'api_key': self.apiKey,
86
- 'timestamp': timestamp,
87
- 'signature': self.hmac(self.encode(auth), self.encode(self.secret), hashlib.sha256),
87
+ # 'api_key': self.apiKey,
88
+ # 'timestamp': timestamp,
89
+ # 'signature': self.hmac(self.encode(auth), self.encode(self.secret), hashlib.sha256),
88
90
  }
91
+ if not isCloudAPiKey:
92
+ subscribe['api_key'] = self.apiKey
93
+ subscribe['timestamp'] = timestamp
94
+ subscribe['signature'] = self.hmac(self.encode(auth), self.encode(self.secret), hashlib.sha256)
95
+ else:
96
+ if self.apiKey.startswith('-----BEGIN'):
97
+ raise ArgumentsRequired(self.id + ' apiKey should contain the name(eg: organizations/3b910e93....) and not the public key')
98
+ currentToken = self.safe_string(self.options, 'wsToken')
99
+ tokenTimestamp = self.safe_integer(self.options, 'wsTokenTimestamp', 0)
100
+ seconds = self.seconds()
101
+ if currentToken is None or tokenTimestamp + 120 < seconds:
102
+ # we should generate new token
103
+ token = self.create_auth_token(seconds)
104
+ self.options['wsToken'] = token
105
+ self.options['wsTokenTimestamp'] = seconds
106
+ subscribe['jwt'] = self.safe_string(self.options, 'wsToken')
89
107
  return await self.watch(url, messageHash, subscribe, messageHash)
90
108
 
91
109
  async def watch_ticker(self, symbol: str, params={}) -> Ticker:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.2.97
3
+ Version: 4.2.99
4
4
  Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges
5
5
  Home-page: https://ccxt.com
6
6
  Author: Igor Kroitor
@@ -225,13 +225,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
225
225
 
226
226
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
227
227
 
228
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.97/dist/ccxt.browser.js
229
- * unpkg: https://unpkg.com/ccxt@4.2.97/dist/ccxt.browser.js
228
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.99/dist/ccxt.browser.js
229
+ * unpkg: https://unpkg.com/ccxt@4.2.99/dist/ccxt.browser.js
230
230
 
231
231
  CDNs are not updated in real-time and may have delays. Defaulting to the most recent version without specifying the version number is not recommended. Please, keep in mind that we are not responsible for the correct operation of those CDN servers.
232
232
 
233
233
  ```HTML
234
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.97/dist/ccxt.browser.js"></script>
234
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.99/dist/ccxt.browser.js"></script>
235
235
  ```
236
236
 
237
237
  Creates a global `ccxt` object:
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccxt",
3
- "version": "4.2.97",
3
+ "version": "4.2.99",
4
4
  "description": "A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges",
5
5
  "unpkg": "dist/ccxt.browser.js",
6
6
  "type": "module",
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes