ccxt 4.2.98__tar.gz → 4.2.100__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.98/ccxt.egg-info → ccxt-4.2.100}/PKG-INFO +4 -4
  2. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/__init__.py +1 -1
  3. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/ascendex.py +2 -1
  4. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/__init__.py +1 -1
  5. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/ascendex.py +2 -1
  6. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/base/exchange.py +1 -1
  7. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/coinbase.py +47 -20
  8. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/kraken.py +5 -4
  9. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/kucoin.py +6 -6
  10. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/base/exchange.py +1 -1
  11. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/coinbase.py +47 -20
  12. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/kraken.py +5 -4
  13. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/kucoin.py +6 -6
  14. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/__init__.py +1 -1
  15. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/coinbase.py +21 -3
  16. {ccxt-4.2.98 → ccxt-4.2.100/ccxt.egg-info}/PKG-INFO +4 -4
  17. {ccxt-4.2.98 → ccxt-4.2.100}/package.json +1 -1
  18. {ccxt-4.2.98 → ccxt-4.2.100}/LICENSE.txt +0 -0
  19. {ccxt-4.2.98 → ccxt-4.2.100}/MANIFEST.in +0 -0
  20. {ccxt-4.2.98 → ccxt-4.2.100}/README.rst +0 -0
  21. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/__init__.py +0 -0
  22. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/ace.py +0 -0
  23. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/alpaca.py +0 -0
  24. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/ascendex.py +0 -0
  25. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bequant.py +0 -0
  26. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bigone.py +0 -0
  27. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/binance.py +0 -0
  28. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/binancecoinm.py +0 -0
  29. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/binanceus.py +0 -0
  30. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/binanceusdm.py +0 -0
  31. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bingx.py +0 -0
  32. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bit2c.py +0 -0
  33. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bitbank.py +0 -0
  34. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bitbay.py +0 -0
  35. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bitbns.py +0 -0
  36. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bitcoincom.py +0 -0
  37. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bitfinex.py +0 -0
  38. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bitfinex2.py +0 -0
  39. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bitflyer.py +0 -0
  40. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bitget.py +0 -0
  41. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bithumb.py +0 -0
  42. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bitmart.py +0 -0
  43. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bitmex.py +0 -0
  44. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bitopro.py +0 -0
  45. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bitpanda.py +0 -0
  46. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bitrue.py +0 -0
  47. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bitso.py +0 -0
  48. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bitstamp.py +0 -0
  49. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bitteam.py +0 -0
  50. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bitvavo.py +0 -0
  51. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bl3p.py +0 -0
  52. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/blockchaincom.py +0 -0
  53. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/blofin.py +0 -0
  54. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/btcalpha.py +0 -0
  55. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/btcbox.py +0 -0
  56. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/btcmarkets.py +0 -0
  57. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/btcturk.py +0 -0
  58. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/bybit.py +0 -0
  59. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/cex.py +0 -0
  60. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/coinbase.py +0 -0
  61. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/coinbaseinternational.py +0 -0
  62. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/coinbasepro.py +0 -0
  63. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/coincheck.py +0 -0
  64. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/coinex.py +0 -0
  65. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/coinlist.py +0 -0
  66. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/coinmate.py +0 -0
  67. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/coinmetro.py +0 -0
  68. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/coinone.py +0 -0
  69. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/coinsph.py +0 -0
  70. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/coinspot.py +0 -0
  71. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/cryptocom.py +0 -0
  72. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/currencycom.py +0 -0
  73. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/delta.py +0 -0
  74. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/deribit.py +0 -0
  75. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/digifinex.py +0 -0
  76. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/exmo.py +0 -0
  77. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/fmfwio.py +0 -0
  78. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/gate.py +0 -0
  79. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/gateio.py +0 -0
  80. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/gemini.py +0 -0
  81. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/hitbtc.py +0 -0
  82. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/hitbtc3.py +0 -0
  83. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/hollaex.py +0 -0
  84. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/htx.py +0 -0
  85. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/huobi.py +0 -0
  86. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/huobijp.py +0 -0
  87. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/hyperliquid.py +0 -0
  88. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/idex.py +0 -0
  89. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/independentreserve.py +0 -0
  90. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/indodax.py +0 -0
  91. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/kraken.py +0 -0
  92. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/krakenfutures.py +0 -0
  93. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/kucoin.py +0 -0
  94. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/kucoinfutures.py +0 -0
  95. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/kuna.py +0 -0
  96. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/latoken.py +0 -0
  97. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/lbank.py +0 -0
  98. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/luno.py +0 -0
  99. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/lykke.py +0 -0
  100. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/mercado.py +0 -0
  101. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/mexc.py +0 -0
  102. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/ndax.py +0 -0
  103. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/novadax.py +0 -0
  104. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/oceanex.py +0 -0
  105. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/okcoin.py +0 -0
  106. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/okx.py +0 -0
  107. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/onetrading.py +0 -0
  108. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/p2b.py +0 -0
  109. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/paymium.py +0 -0
  110. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/phemex.py +0 -0
  111. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/poloniex.py +0 -0
  112. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/poloniexfutures.py +0 -0
  113. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/probit.py +0 -0
  114. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/timex.py +0 -0
  115. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/tokocrypto.py +0 -0
  116. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/tradeogre.py +0 -0
  117. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/upbit.py +0 -0
  118. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/wavesexchange.py +0 -0
  119. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/wazirx.py +0 -0
  120. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/whitebit.py +0 -0
  121. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/woo.py +0 -0
  122. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/yobit.py +0 -0
  123. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/zaif.py +0 -0
  124. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/abstract/zonda.py +0 -0
  125. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/ace.py +0 -0
  126. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/alpaca.py +0 -0
  127. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/ace.py +0 -0
  128. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/alpaca.py +0 -0
  129. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/base/__init__.py +0 -0
  130. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/base/throttler.py +0 -0
  131. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/base/ws/__init__.py +0 -0
  132. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  133. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/base/ws/cache.py +0 -0
  134. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/base/ws/client.py +0 -0
  135. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/base/ws/fast_client.py +0 -0
  136. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/base/ws/functions.py +0 -0
  137. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/base/ws/future.py +0 -0
  138. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/base/ws/order_book.py +0 -0
  139. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  140. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bequant.py +0 -0
  141. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bigone.py +0 -0
  142. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/binance.py +0 -0
  143. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/binancecoinm.py +0 -0
  144. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/binanceus.py +0 -0
  145. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/binanceusdm.py +0 -0
  146. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bingx.py +0 -0
  147. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bit2c.py +0 -0
  148. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bitbank.py +0 -0
  149. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bitbay.py +0 -0
  150. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bitbns.py +0 -0
  151. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bitcoincom.py +0 -0
  152. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bitfinex.py +0 -0
  153. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bitfinex2.py +0 -0
  154. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bitflyer.py +0 -0
  155. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bitget.py +0 -0
  156. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bithumb.py +0 -0
  157. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bitmart.py +0 -0
  158. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bitmex.py +0 -0
  159. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bitopro.py +0 -0
  160. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bitpanda.py +0 -0
  161. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bitrue.py +0 -0
  162. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bitso.py +0 -0
  163. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bitstamp.py +0 -0
  164. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bitteam.py +0 -0
  165. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bitvavo.py +0 -0
  166. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bl3p.py +0 -0
  167. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/blockchaincom.py +0 -0
  168. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/blofin.py +0 -0
  169. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/btcalpha.py +0 -0
  170. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/btcbox.py +0 -0
  171. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/btcmarkets.py +0 -0
  172. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/btcturk.py +0 -0
  173. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/bybit.py +0 -0
  174. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/cex.py +0 -0
  175. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/coinbaseinternational.py +0 -0
  176. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/coinbasepro.py +0 -0
  177. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/coincheck.py +0 -0
  178. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/coinex.py +0 -0
  179. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/coinlist.py +0 -0
  180. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/coinmate.py +0 -0
  181. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/coinmetro.py +0 -0
  182. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/coinone.py +0 -0
  183. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/coinsph.py +0 -0
  184. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/coinspot.py +0 -0
  185. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/cryptocom.py +0 -0
  186. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/currencycom.py +0 -0
  187. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/delta.py +0 -0
  188. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/deribit.py +0 -0
  189. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/digifinex.py +0 -0
  190. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/exmo.py +0 -0
  191. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/flowbtc.py +0 -0
  192. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/fmfwio.py +0 -0
  193. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/gate.py +0 -0
  194. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/gateio.py +0 -0
  195. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/gemini.py +0 -0
  196. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/hitbtc.py +0 -0
  197. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/hitbtc3.py +0 -0
  198. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/hollaex.py +0 -0
  199. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/htx.py +0 -0
  200. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/huobi.py +0 -0
  201. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/huobijp.py +0 -0
  202. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/hyperliquid.py +0 -0
  203. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/idex.py +0 -0
  204. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/independentreserve.py +0 -0
  205. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/indodax.py +0 -0
  206. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/krakenfutures.py +0 -0
  207. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/kucoinfutures.py +0 -0
  208. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/kuna.py +0 -0
  209. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/latoken.py +0 -0
  210. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/lbank.py +0 -0
  211. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/luno.py +0 -0
  212. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/lykke.py +0 -0
  213. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/mercado.py +0 -0
  214. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/mexc.py +0 -0
  215. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/ndax.py +0 -0
  216. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/novadax.py +0 -0
  217. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/oceanex.py +0 -0
  218. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/okcoin.py +0 -0
  219. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/okx.py +0 -0
  220. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/onetrading.py +0 -0
  221. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/p2b.py +0 -0
  222. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/paymium.py +0 -0
  223. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/phemex.py +0 -0
  224. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/poloniex.py +0 -0
  225. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/poloniexfutures.py +0 -0
  226. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/probit.py +0 -0
  227. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/timex.py +0 -0
  228. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/tokocrypto.py +0 -0
  229. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/tradeogre.py +0 -0
  230. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/upbit.py +0 -0
  231. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/wavesexchange.py +0 -0
  232. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/wazirx.py +0 -0
  233. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/whitebit.py +0 -0
  234. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/woo.py +0 -0
  235. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/yobit.py +0 -0
  236. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/zaif.py +0 -0
  237. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/async_support/zonda.py +0 -0
  238. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/base/__init__.py +0 -0
  239. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/base/decimal_to_precision.py +0 -0
  240. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/base/errors.py +0 -0
  241. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/base/precise.py +0 -0
  242. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/base/types.py +0 -0
  243. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bequant.py +0 -0
  244. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bigone.py +0 -0
  245. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/binance.py +0 -0
  246. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/binancecoinm.py +0 -0
  247. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/binanceus.py +0 -0
  248. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/binanceusdm.py +0 -0
  249. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bingx.py +0 -0
  250. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bit2c.py +0 -0
  251. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bitbank.py +0 -0
  252. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bitbay.py +0 -0
  253. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bitbns.py +0 -0
  254. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bitcoincom.py +0 -0
  255. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bitfinex.py +0 -0
  256. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bitfinex2.py +0 -0
  257. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bitflyer.py +0 -0
  258. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bitget.py +0 -0
  259. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bithumb.py +0 -0
  260. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bitmart.py +0 -0
  261. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bitmex.py +0 -0
  262. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bitopro.py +0 -0
  263. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bitpanda.py +0 -0
  264. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bitrue.py +0 -0
  265. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bitso.py +0 -0
  266. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bitstamp.py +0 -0
  267. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bitteam.py +0 -0
  268. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bitvavo.py +0 -0
  269. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bl3p.py +0 -0
  270. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/blockchaincom.py +0 -0
  271. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/blofin.py +0 -0
  272. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/btcalpha.py +0 -0
  273. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/btcbox.py +0 -0
  274. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/btcmarkets.py +0 -0
  275. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/btcturk.py +0 -0
  276. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/bybit.py +0 -0
  277. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/cex.py +0 -0
  278. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/coinbaseinternational.py +0 -0
  279. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/coinbasepro.py +0 -0
  280. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/coincheck.py +0 -0
  281. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/coinex.py +0 -0
  282. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/coinlist.py +0 -0
  283. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/coinmate.py +0 -0
  284. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/coinmetro.py +0 -0
  285. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/coinone.py +0 -0
  286. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/coinsph.py +0 -0
  287. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/coinspot.py +0 -0
  288. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/cryptocom.py +0 -0
  289. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/currencycom.py +0 -0
  290. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/delta.py +0 -0
  291. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/deribit.py +0 -0
  292. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/digifinex.py +0 -0
  293. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/exmo.py +0 -0
  294. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/flowbtc.py +0 -0
  295. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/fmfwio.py +0 -0
  296. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/gate.py +0 -0
  297. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/gateio.py +0 -0
  298. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/gemini.py +0 -0
  299. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/hitbtc.py +0 -0
  300. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/hitbtc3.py +0 -0
  301. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/hollaex.py +0 -0
  302. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/htx.py +0 -0
  303. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/huobi.py +0 -0
  304. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/huobijp.py +0 -0
  305. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/hyperliquid.py +0 -0
  306. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/idex.py +0 -0
  307. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/independentreserve.py +0 -0
  308. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/indodax.py +0 -0
  309. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/krakenfutures.py +0 -0
  310. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/kucoinfutures.py +0 -0
  311. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/kuna.py +0 -0
  312. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/latoken.py +0 -0
  313. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/lbank.py +0 -0
  314. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/luno.py +0 -0
  315. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/lykke.py +0 -0
  316. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/mercado.py +0 -0
  317. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/mexc.py +0 -0
  318. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/ndax.py +0 -0
  319. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/novadax.py +0 -0
  320. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/oceanex.py +0 -0
  321. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/okcoin.py +0 -0
  322. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/okx.py +0 -0
  323. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/onetrading.py +0 -0
  324. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/p2b.py +0 -0
  325. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/paymium.py +0 -0
  326. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/phemex.py +0 -0
  327. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/poloniex.py +0 -0
  328. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/poloniexfutures.py +0 -0
  329. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/alpaca.py +0 -0
  330. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/ascendex.py +0 -0
  331. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/bequant.py +0 -0
  332. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/binance.py +0 -0
  333. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/binancecoinm.py +0 -0
  334. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/binanceus.py +0 -0
  335. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/binanceusdm.py +0 -0
  336. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/bingx.py +0 -0
  337. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/bitcoincom.py +0 -0
  338. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/bitfinex.py +0 -0
  339. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/bitfinex2.py +0 -0
  340. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/bitget.py +0 -0
  341. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/bithumb.py +0 -0
  342. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/bitmart.py +0 -0
  343. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/bitmex.py +0 -0
  344. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/bitopro.py +0 -0
  345. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/bitpanda.py +0 -0
  346. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/bitrue.py +0 -0
  347. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/bitstamp.py +0 -0
  348. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/bitvavo.py +0 -0
  349. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/blockchaincom.py +0 -0
  350. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/bybit.py +0 -0
  351. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/cex.py +0 -0
  352. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/coinbaseinternational.py +0 -0
  353. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/coinbasepro.py +0 -0
  354. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/coincheck.py +0 -0
  355. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/coinex.py +0 -0
  356. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/coinone.py +0 -0
  357. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/cryptocom.py +0 -0
  358. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/currencycom.py +0 -0
  359. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/deribit.py +0 -0
  360. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/exmo.py +0 -0
  361. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/gate.py +0 -0
  362. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/gateio.py +0 -0
  363. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/gemini.py +0 -0
  364. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/hitbtc.py +0 -0
  365. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/hollaex.py +0 -0
  366. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/htx.py +0 -0
  367. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/huobi.py +0 -0
  368. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/huobijp.py +0 -0
  369. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/hyperliquid.py +0 -0
  370. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/idex.py +0 -0
  371. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/independentreserve.py +0 -0
  372. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/kraken.py +0 -0
  373. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/krakenfutures.py +0 -0
  374. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/kucoin.py +0 -0
  375. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/kucoinfutures.py +0 -0
  376. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/lbank.py +0 -0
  377. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/luno.py +0 -0
  378. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/mexc.py +0 -0
  379. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/ndax.py +0 -0
  380. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/okcoin.py +0 -0
  381. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/okx.py +0 -0
  382. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/onetrading.py +0 -0
  383. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/p2b.py +0 -0
  384. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/phemex.py +0 -0
  385. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/poloniex.py +0 -0
  386. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/poloniexfutures.py +0 -0
  387. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/probit.py +0 -0
  388. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/upbit.py +0 -0
  389. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/wazirx.py +0 -0
  390. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/whitebit.py +0 -0
  391. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/pro/woo.py +0 -0
  392. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/probit.py +0 -0
  393. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/__init__.py +0 -0
  394. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  395. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  396. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  397. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  398. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  399. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  400. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  401. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  402. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  403. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  404. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
  405. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
  406. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
  407. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
  408. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
  409. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
  410. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
  411. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
  412. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
  413. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
  414. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
  415. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
  416. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
  417. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
  418. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
  419. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
  420. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
  421. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
  422. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
  423. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
  424. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
  425. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
  426. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
  427. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
  428. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
  429. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
  430. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
  431. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
  432. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
  433. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
  434. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
  435. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
  436. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
  437. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
  438. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
  439. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
  440. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
  441. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
  442. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
  443. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
  444. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
  445. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
  446. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
  447. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
  448. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
  449. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
  450. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
  451. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
  452. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
  453. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
  454. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
  455. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
  456. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
  457. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
  458. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
  459. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
  460. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
  461. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
  462. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
  463. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
  464. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
  465. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
  466. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  467. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  468. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
  469. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
  470. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/msgpack/ext.py +0 -0
  471. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
  472. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
  473. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
  474. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
  475. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
  476. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
  477. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
  478. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/toolz/__init__.py +0 -0
  479. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
  480. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/toolz/_version.py +0 -0
  481. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
  482. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
  483. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
  484. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
  485. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
  486. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
  487. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
  488. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/toolz/recipes.py +0 -0
  489. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/static_dependencies/toolz/utils.py +0 -0
  490. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/__init__.py +0 -0
  491. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/__init__.py +0 -0
  492. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_account.py +0 -0
  493. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_balance.py +0 -0
  494. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_borrow_interest.py +0 -0
  495. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_borrow_rate.py +0 -0
  496. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_calculate_fee.py +0 -0
  497. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_crypto.py +0 -0
  498. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_currency.py +0 -0
  499. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_datetime.py +0 -0
  500. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_decimal_to_precision.py +0 -0
  501. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_deep_extend.py +0 -0
  502. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
  503. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
  504. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_funding_rate_history.py +0 -0
  505. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_last_price.py +0 -0
  506. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_ledger_entry.py +0 -0
  507. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_ledger_item.py +0 -0
  508. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_leverage_tier.py +0 -0
  509. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_margin_mode.py +0 -0
  510. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_margin_modification.py +0 -0
  511. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_market.py +0 -0
  512. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_number.py +0 -0
  513. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_ohlcv.py +0 -0
  514. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_open_interest.py +0 -0
  515. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_order.py +0 -0
  516. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_order_book.py +0 -0
  517. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_position.py +0 -0
  518. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_shared_methods.py +0 -0
  519. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_status.py +0 -0
  520. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_throttle.py +0 -0
  521. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_ticker.py +0 -0
  522. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_trade.py +0 -0
  523. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_trading_fee.py +0 -0
  524. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/base/test_transaction.py +0 -0
  525. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/test_async.py +0 -0
  526. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/test/test_sync.py +0 -0
  527. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/timex.py +0 -0
  528. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/tokocrypto.py +0 -0
  529. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/tradeogre.py +0 -0
  530. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/upbit.py +0 -0
  531. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/wavesexchange.py +0 -0
  532. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/wazirx.py +0 -0
  533. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/whitebit.py +0 -0
  534. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/woo.py +0 -0
  535. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/yobit.py +0 -0
  536. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/zaif.py +0 -0
  537. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt/zonda.py +0 -0
  538. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt.egg-info/SOURCES.txt +0 -0
  539. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt.egg-info/dependency_links.txt +0 -0
  540. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt.egg-info/requires.txt +0 -0
  541. {ccxt-4.2.98 → ccxt-4.2.100}/ccxt.egg-info/top_level.txt +0 -0
  542. {ccxt-4.2.98 → ccxt-4.2.100}/setup.cfg +0 -0
  543. {ccxt-4.2.98 → ccxt-4.2.100}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.2.98
3
+ Version: 4.2.100
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.98/dist/ccxt.browser.js
229
- * unpkg: https://unpkg.com/ccxt@4.2.98/dist/ccxt.browser.js
228
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.100/dist/ccxt.browser.js
229
+ * unpkg: https://unpkg.com/ccxt@4.2.100/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.98/dist/ccxt.browser.js"></script>
234
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.100/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.98'
25
+ __version__ = '4.2.100'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -11,6 +11,7 @@ from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
13
13
  from ccxt.base.errors import PermissionDenied
14
+ from ccxt.base.errors import AccountSuspended
14
15
  from ccxt.base.errors import ArgumentsRequired
15
16
  from ccxt.base.errors import BadRequest
16
17
  from ccxt.base.errors import BadSymbol
@@ -368,7 +369,7 @@ class ascendex(Exchange, ImplicitAPI):
368
369
  '300013': InvalidOrder, # INVALID_BATCH_ORDER Some or all orders are invalid in batch order request
369
370
  '300014': InvalidOrder, # {"code":300014,"message":"Order price doesn't conform to the required tick size: 0.1","reason":"TICK_SIZE_VIOLATION"}
370
371
  '300020': InvalidOrder, # TRADING_RESTRICTED There is some trading restriction on account or asset
371
- '300021': InvalidOrder, # TRADING_DISABLED Trading is disabled on account or asset
372
+ '300021': AccountSuspended, # {"code":300021,"message":"Trading disabled for self account.","reason":"TRADING_DISABLED"}
372
373
  '300031': InvalidOrder, # NO_MARKET_PRICE No market price for market type order trading
373
374
  '310001': InsufficientFunds, # INVALID_MARGIN_BALANCE No enough margin balance
374
375
  '310002': InvalidOrder, # INVALID_MARGIN_ACCOUNT Not a valid account for margin trading
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.98'
7
+ __version__ = '4.2.100'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -11,6 +11,7 @@ from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
13
13
  from ccxt.base.errors import PermissionDenied
14
+ from ccxt.base.errors import AccountSuspended
14
15
  from ccxt.base.errors import ArgumentsRequired
15
16
  from ccxt.base.errors import BadRequest
16
17
  from ccxt.base.errors import BadSymbol
@@ -368,7 +369,7 @@ class ascendex(Exchange, ImplicitAPI):
368
369
  '300013': InvalidOrder, # INVALID_BATCH_ORDER Some or all orders are invalid in batch order request
369
370
  '300014': InvalidOrder, # {"code":300014,"message":"Order price doesn't conform to the required tick size: 0.1","reason":"TICK_SIZE_VIOLATION"}
370
371
  '300020': InvalidOrder, # TRADING_RESTRICTED There is some trading restriction on account or asset
371
- '300021': InvalidOrder, # TRADING_DISABLED Trading is disabled on account or asset
372
+ '300021': AccountSuspended, # {"code":300021,"message":"Trading disabled for self account.","reason":"TRADING_DISABLED"}
372
373
  '300031': InvalidOrder, # NO_MARKET_PRICE No market price for market type order trading
373
374
  '310001': InsufficientFunds, # INVALID_MARGIN_BALANCE No enough margin balance
374
375
  '310002': InvalidOrder, # INVALID_MARGIN_ACCOUNT Not a valid account for margin trading
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.2.98'
5
+ __version__ = '4.2.100'
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', [])
@@ -1207,10 +1207,10 @@ class kucoin(Exchange, ImplicitAPI):
1207
1207
  # }
1208
1208
  #
1209
1209
  responses = await asyncio.gather(*promises)
1210
- currenciesResponse = self.safe_value(responses, 0, {})
1211
- currenciesData = self.safe_value(currenciesResponse, 'data', [])
1212
- additionalResponse = self.safe_value(responses, 1, {})
1213
- additionalData = self.safe_value(additionalResponse, 'data', [])
1210
+ currenciesResponse = self.safe_dict(responses, 0, {})
1211
+ currenciesData = self.safe_list(currenciesResponse, 'data', [])
1212
+ additionalResponse = self.safe_dict(responses, 1, {})
1213
+ additionalData = self.safe_list(additionalResponse, 'data', [])
1214
1214
  additionalDataGrouped = self.group_by(additionalData, 'currency')
1215
1215
  result = {}
1216
1216
  for i in range(0, len(currenciesData)):
@@ -1222,7 +1222,7 @@ class kucoin(Exchange, ImplicitAPI):
1222
1222
  isDepositEnabled = None
1223
1223
  networks = {}
1224
1224
  chains = self.safe_list(entry, 'chains', [])
1225
- extraChainsData = self.index_by(self.safe_value(additionalDataGrouped, id, []), 'chain')
1225
+ extraChainsData = self.index_by(self.safe_list(additionalDataGrouped, id, []), 'chain')
1226
1226
  rawPrecision = self.safe_string(entry, 'precision')
1227
1227
  precision = self.parse_number(self.parse_precision(rawPrecision))
1228
1228
  chainsLength = len(chains)
@@ -1350,7 +1350,7 @@ class kucoin(Exchange, ImplicitAPI):
1350
1350
  if networkCode is not None:
1351
1351
  request['chain'] = self.network_code_to_id(networkCode).lower()
1352
1352
  response = await self.privateGetWithdrawalsQuotas(self.extend(request, params))
1353
- data = self.safe_value(response, 'data')
1353
+ data = self.safe_dict(response, 'data', {})
1354
1354
  withdrawFees = {}
1355
1355
  withdrawFees[code] = self.safe_number(data, 'withdrawMinFee')
1356
1356
  return {
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.98'
7
+ __version__ = '4.2.100'
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', [])
@@ -1206,10 +1206,10 @@ class kucoin(Exchange, ImplicitAPI):
1206
1206
  # }
1207
1207
  #
1208
1208
  responses = promises
1209
- currenciesResponse = self.safe_value(responses, 0, {})
1210
- currenciesData = self.safe_value(currenciesResponse, 'data', [])
1211
- additionalResponse = self.safe_value(responses, 1, {})
1212
- additionalData = self.safe_value(additionalResponse, 'data', [])
1209
+ currenciesResponse = self.safe_dict(responses, 0, {})
1210
+ currenciesData = self.safe_list(currenciesResponse, 'data', [])
1211
+ additionalResponse = self.safe_dict(responses, 1, {})
1212
+ additionalData = self.safe_list(additionalResponse, 'data', [])
1213
1213
  additionalDataGrouped = self.group_by(additionalData, 'currency')
1214
1214
  result = {}
1215
1215
  for i in range(0, len(currenciesData)):
@@ -1221,7 +1221,7 @@ class kucoin(Exchange, ImplicitAPI):
1221
1221
  isDepositEnabled = None
1222
1222
  networks = {}
1223
1223
  chains = self.safe_list(entry, 'chains', [])
1224
- extraChainsData = self.index_by(self.safe_value(additionalDataGrouped, id, []), 'chain')
1224
+ extraChainsData = self.index_by(self.safe_list(additionalDataGrouped, id, []), 'chain')
1225
1225
  rawPrecision = self.safe_string(entry, 'precision')
1226
1226
  precision = self.parse_number(self.parse_precision(rawPrecision))
1227
1227
  chainsLength = len(chains)
@@ -1349,7 +1349,7 @@ class kucoin(Exchange, ImplicitAPI):
1349
1349
  if networkCode is not None:
1350
1350
  request['chain'] = self.network_code_to_id(networkCode).lower()
1351
1351
  response = self.privateGetWithdrawalsQuotas(self.extend(request, params))
1352
- data = self.safe_value(response, 'data')
1352
+ data = self.safe_dict(response, 'data', {})
1353
1353
  withdrawFees = {}
1354
1354
  withdrawFees[code] = self.safe_number(data, 'withdrawMinFee')
1355
1355
  return {
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.98'
7
+ __version__ = '4.2.100'
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.98
3
+ Version: 4.2.100
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.98/dist/ccxt.browser.js
229
- * unpkg: https://unpkg.com/ccxt@4.2.98/dist/ccxt.browser.js
228
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.100/dist/ccxt.browser.js
229
+ * unpkg: https://unpkg.com/ccxt@4.2.100/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.98/dist/ccxt.browser.js"></script>
234
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.100/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.98",
3
+ "version": "4.2.100",
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