ccxt 4.1.76__tar.gz → 4.1.77__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 (452) hide show
  1. {ccxt-4.1.76/ccxt.egg-info → ccxt-4.1.77}/PKG-INFO +4 -4
  2. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/__init__.py +1 -1
  3. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/__init__.py +1 -1
  4. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/base/exchange.py +1 -1
  5. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bingx.py +2 -0
  6. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bitmex.py +5 -1
  7. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bitrue.py +24 -1
  8. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bitstamp.py +3 -2
  9. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/coinbase.py +31 -6
  10. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/gate.py +1 -0
  11. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/okx.py +1 -1
  12. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/base/exchange.py +1 -1
  13. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bingx.py +2 -0
  14. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bitmex.py +5 -1
  15. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bitrue.py +24 -1
  16. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bitstamp.py +3 -2
  17. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/coinbase.py +31 -6
  18. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/gate.py +1 -0
  19. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/okx.py +1 -1
  20. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/__init__.py +1 -1
  21. {ccxt-4.1.76 → ccxt-4.1.77/ccxt.egg-info}/PKG-INFO +4 -4
  22. {ccxt-4.1.76 → ccxt-4.1.77}/package.json +1 -1
  23. {ccxt-4.1.76 → ccxt-4.1.77}/LICENSE.txt +0 -0
  24. {ccxt-4.1.76 → ccxt-4.1.77}/MANIFEST.in +0 -0
  25. {ccxt-4.1.76 → ccxt-4.1.77}/README.rst +0 -0
  26. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/__init__.py +0 -0
  27. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/ace.py +0 -0
  28. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/alpaca.py +0 -0
  29. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/ascendex.py +0 -0
  30. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bequant.py +0 -0
  31. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bigone.py +0 -0
  32. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/binance.py +0 -0
  33. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/binancecoinm.py +0 -0
  34. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/binanceus.py +0 -0
  35. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/binanceusdm.py +0 -0
  36. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bingx.py +0 -0
  37. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bit2c.py +0 -0
  38. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bitbank.py +0 -0
  39. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bitbay.py +0 -0
  40. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bitbns.py +0 -0
  41. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bitcoincom.py +0 -0
  42. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bitfinex.py +0 -0
  43. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bitfinex2.py +0 -0
  44. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bitflyer.py +0 -0
  45. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bitforex.py +0 -0
  46. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bitget.py +0 -0
  47. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bithumb.py +0 -0
  48. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bitmart.py +0 -0
  49. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bitmex.py +0 -0
  50. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bitopro.py +0 -0
  51. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bitpanda.py +0 -0
  52. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bitrue.py +0 -0
  53. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bitso.py +0 -0
  54. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bitstamp.py +0 -0
  55. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bittrex.py +0 -0
  56. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bitvavo.py +0 -0
  57. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bl3p.py +0 -0
  58. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/blockchaincom.py +0 -0
  59. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/btcalpha.py +0 -0
  60. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/btcbox.py +0 -0
  61. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/btcmarkets.py +0 -0
  62. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/btcturk.py +0 -0
  63. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/bybit.py +0 -0
  64. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/cex.py +0 -0
  65. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/coinbase.py +0 -0
  66. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/coinbaseprime.py +0 -0
  67. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/coinbasepro.py +0 -0
  68. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/coincheck.py +0 -0
  69. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/coinex.py +0 -0
  70. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/coinlist.py +0 -0
  71. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/coinmate.py +0 -0
  72. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/coinone.py +0 -0
  73. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/coinsph.py +0 -0
  74. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/coinspot.py +0 -0
  75. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/cryptocom.py +0 -0
  76. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/currencycom.py +0 -0
  77. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/delta.py +0 -0
  78. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/deribit.py +0 -0
  79. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/digifinex.py +0 -0
  80. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/exmo.py +0 -0
  81. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/fmfwio.py +0 -0
  82. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/gate.py +0 -0
  83. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/gateio.py +0 -0
  84. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/gemini.py +0 -0
  85. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/hitbtc.py +0 -0
  86. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/hitbtc3.py +0 -0
  87. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/hollaex.py +0 -0
  88. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/htx.py +0 -0
  89. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/huobi.py +0 -0
  90. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/huobijp.py +0 -0
  91. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/idex.py +0 -0
  92. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/independentreserve.py +0 -0
  93. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/indodax.py +0 -0
  94. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/kraken.py +0 -0
  95. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/krakenfutures.py +0 -0
  96. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/kucoin.py +0 -0
  97. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/kucoinfutures.py +0 -0
  98. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/kuna.py +0 -0
  99. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/latoken.py +0 -0
  100. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/lbank.py +0 -0
  101. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/luno.py +0 -0
  102. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/lykke.py +0 -0
  103. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/mercado.py +0 -0
  104. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/mexc.py +0 -0
  105. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/ndax.py +0 -0
  106. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/novadax.py +0 -0
  107. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/oceanex.py +0 -0
  108. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/okcoin.py +0 -0
  109. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/okx.py +0 -0
  110. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/p2b.py +0 -0
  111. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/paymium.py +0 -0
  112. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/phemex.py +0 -0
  113. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/poloniex.py +0 -0
  114. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/poloniexfutures.py +0 -0
  115. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/probit.py +0 -0
  116. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/timex.py +0 -0
  117. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/tokocrypto.py +0 -0
  118. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/upbit.py +0 -0
  119. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/wavesexchange.py +0 -0
  120. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/wazirx.py +0 -0
  121. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/whitebit.py +0 -0
  122. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/woo.py +0 -0
  123. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/yobit.py +0 -0
  124. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/zaif.py +0 -0
  125. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/abstract/zonda.py +0 -0
  126. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/ace.py +0 -0
  127. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/alpaca.py +0 -0
  128. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/ascendex.py +0 -0
  129. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/ace.py +0 -0
  130. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/alpaca.py +0 -0
  131. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/ascendex.py +0 -0
  132. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/base/__init__.py +0 -0
  133. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/base/throttler.py +0 -0
  134. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/base/ws/__init__.py +0 -0
  135. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  136. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/base/ws/cache.py +0 -0
  137. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/base/ws/client.py +0 -0
  138. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/base/ws/fast_client.py +0 -0
  139. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/base/ws/functions.py +0 -0
  140. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/base/ws/future.py +0 -0
  141. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/base/ws/order_book.py +0 -0
  142. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  143. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bequant.py +0 -0
  144. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bigone.py +0 -0
  145. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/binance.py +0 -0
  146. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/binancecoinm.py +0 -0
  147. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/binanceus.py +0 -0
  148. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/binanceusdm.py +0 -0
  149. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bit2c.py +0 -0
  150. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bitbank.py +0 -0
  151. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bitbay.py +0 -0
  152. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bitbns.py +0 -0
  153. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bitcoincom.py +0 -0
  154. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bitfinex.py +0 -0
  155. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bitfinex2.py +0 -0
  156. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bitflyer.py +0 -0
  157. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bitforex.py +0 -0
  158. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bitget.py +0 -0
  159. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bithumb.py +0 -0
  160. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bitmart.py +0 -0
  161. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bitopro.py +0 -0
  162. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bitpanda.py +0 -0
  163. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bitso.py +0 -0
  164. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bittrex.py +0 -0
  165. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bitvavo.py +0 -0
  166. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bl3p.py +0 -0
  167. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/blockchaincom.py +0 -0
  168. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/btcalpha.py +0 -0
  169. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/btcbox.py +0 -0
  170. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/btcmarkets.py +0 -0
  171. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/btcturk.py +0 -0
  172. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/bybit.py +0 -0
  173. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/cex.py +0 -0
  174. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/coinbaseprime.py +0 -0
  175. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/coinbasepro.py +0 -0
  176. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/coincheck.py +0 -0
  177. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/coinex.py +0 -0
  178. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/coinlist.py +0 -0
  179. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/coinmate.py +0 -0
  180. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/coinone.py +0 -0
  181. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/coinsph.py +0 -0
  182. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/coinspot.py +0 -0
  183. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/cryptocom.py +0 -0
  184. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/currencycom.py +0 -0
  185. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/delta.py +0 -0
  186. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/deribit.py +0 -0
  187. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/digifinex.py +0 -0
  188. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/exmo.py +0 -0
  189. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/flowbtc.py +0 -0
  190. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/fmfwio.py +0 -0
  191. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/gateio.py +0 -0
  192. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/gemini.py +0 -0
  193. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/hitbtc.py +0 -0
  194. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/hitbtc3.py +0 -0
  195. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/hollaex.py +0 -0
  196. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/htx.py +0 -0
  197. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/huobi.py +0 -0
  198. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/huobijp.py +0 -0
  199. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/huobipro.py +0 -0
  200. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/idex.py +0 -0
  201. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/independentreserve.py +0 -0
  202. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/indodax.py +0 -0
  203. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/kraken.py +0 -0
  204. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/krakenfutures.py +0 -0
  205. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/kucoin.py +0 -0
  206. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/kucoinfutures.py +0 -0
  207. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/kuna.py +0 -0
  208. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/latoken.py +0 -0
  209. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/lbank.py +0 -0
  210. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/luno.py +0 -0
  211. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/lykke.py +0 -0
  212. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/mercado.py +0 -0
  213. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/mexc.py +0 -0
  214. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/mexc3.py +0 -0
  215. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/ndax.py +0 -0
  216. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/novadax.py +0 -0
  217. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/oceanex.py +0 -0
  218. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/okcoin.py +0 -0
  219. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/okex.py +0 -0
  220. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/okex5.py +0 -0
  221. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/p2b.py +0 -0
  222. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/paymium.py +0 -0
  223. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/phemex.py +0 -0
  224. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/poloniex.py +0 -0
  225. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/poloniexfutures.py +0 -0
  226. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/probit.py +0 -0
  227. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/tidex.py +0 -0
  228. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/timex.py +0 -0
  229. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/tokocrypto.py +0 -0
  230. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/upbit.py +0 -0
  231. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/wavesexchange.py +0 -0
  232. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/wazirx.py +0 -0
  233. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/whitebit.py +0 -0
  234. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/woo.py +0 -0
  235. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/yobit.py +0 -0
  236. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/zaif.py +0 -0
  237. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/async_support/zonda.py +0 -0
  238. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/base/__init__.py +0 -0
  239. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/base/decimal_to_precision.py +0 -0
  240. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/base/errors.py +0 -0
  241. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/base/precise.py +0 -0
  242. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/base/types.py +0 -0
  243. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bequant.py +0 -0
  244. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bigone.py +0 -0
  245. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/binance.py +0 -0
  246. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/binancecoinm.py +0 -0
  247. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/binanceus.py +0 -0
  248. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/binanceusdm.py +0 -0
  249. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bit2c.py +0 -0
  250. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bitbank.py +0 -0
  251. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bitbay.py +0 -0
  252. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bitbns.py +0 -0
  253. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bitcoincom.py +0 -0
  254. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bitfinex.py +0 -0
  255. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bitfinex2.py +0 -0
  256. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bitflyer.py +0 -0
  257. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bitforex.py +0 -0
  258. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bitget.py +0 -0
  259. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bithumb.py +0 -0
  260. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bitmart.py +0 -0
  261. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bitopro.py +0 -0
  262. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bitpanda.py +0 -0
  263. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bitso.py +0 -0
  264. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bittrex.py +0 -0
  265. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bitvavo.py +0 -0
  266. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bl3p.py +0 -0
  267. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/blockchaincom.py +0 -0
  268. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/btcalpha.py +0 -0
  269. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/btcbox.py +0 -0
  270. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/btcmarkets.py +0 -0
  271. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/btcturk.py +0 -0
  272. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/bybit.py +0 -0
  273. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/cex.py +0 -0
  274. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/coinbaseprime.py +0 -0
  275. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/coinbasepro.py +0 -0
  276. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/coincheck.py +0 -0
  277. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/coinex.py +0 -0
  278. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/coinlist.py +0 -0
  279. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/coinmate.py +0 -0
  280. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/coinone.py +0 -0
  281. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/coinsph.py +0 -0
  282. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/coinspot.py +0 -0
  283. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/cryptocom.py +0 -0
  284. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/currencycom.py +0 -0
  285. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/delta.py +0 -0
  286. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/deribit.py +0 -0
  287. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/digifinex.py +0 -0
  288. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/exmo.py +0 -0
  289. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/flowbtc.py +0 -0
  290. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/fmfwio.py +0 -0
  291. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/gateio.py +0 -0
  292. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/gemini.py +0 -0
  293. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/hitbtc.py +0 -0
  294. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/hitbtc3.py +0 -0
  295. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/hollaex.py +0 -0
  296. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/htx.py +0 -0
  297. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/huobi.py +0 -0
  298. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/huobijp.py +0 -0
  299. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/huobipro.py +0 -0
  300. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/idex.py +0 -0
  301. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/independentreserve.py +0 -0
  302. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/indodax.py +0 -0
  303. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/kraken.py +0 -0
  304. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/krakenfutures.py +0 -0
  305. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/kucoin.py +0 -0
  306. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/kucoinfutures.py +0 -0
  307. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/kuna.py +0 -0
  308. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/latoken.py +0 -0
  309. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/lbank.py +0 -0
  310. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/luno.py +0 -0
  311. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/lykke.py +0 -0
  312. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/mercado.py +0 -0
  313. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/mexc.py +0 -0
  314. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/mexc3.py +0 -0
  315. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/ndax.py +0 -0
  316. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/novadax.py +0 -0
  317. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/oceanex.py +0 -0
  318. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/okcoin.py +0 -0
  319. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/okex.py +0 -0
  320. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/okex5.py +0 -0
  321. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/p2b.py +0 -0
  322. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/paymium.py +0 -0
  323. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/phemex.py +0 -0
  324. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/poloniex.py +0 -0
  325. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/poloniexfutures.py +0 -0
  326. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/alpaca.py +0 -0
  327. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/ascendex.py +0 -0
  328. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/bequant.py +0 -0
  329. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/binance.py +0 -0
  330. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/binancecoinm.py +0 -0
  331. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/binanceus.py +0 -0
  332. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/binanceusdm.py +0 -0
  333. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/bingx.py +0 -0
  334. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/bitcoincom.py +0 -0
  335. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/bitfinex.py +0 -0
  336. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/bitfinex2.py +0 -0
  337. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/bitget.py +0 -0
  338. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/bitmart.py +0 -0
  339. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/bitmex.py +0 -0
  340. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/bitopro.py +0 -0
  341. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/bitpanda.py +0 -0
  342. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/bitrue.py +0 -0
  343. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/bitstamp.py +0 -0
  344. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/bittrex.py +0 -0
  345. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/bitvavo.py +0 -0
  346. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/blockchaincom.py +0 -0
  347. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/bybit.py +0 -0
  348. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/cex.py +0 -0
  349. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/coinbase.py +0 -0
  350. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/coinbaseprime.py +0 -0
  351. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/coinbasepro.py +0 -0
  352. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/coinex.py +0 -0
  353. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/cryptocom.py +0 -0
  354. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/currencycom.py +0 -0
  355. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/deribit.py +0 -0
  356. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/exmo.py +0 -0
  357. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/gate.py +0 -0
  358. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/gateio.py +0 -0
  359. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/gemini.py +0 -0
  360. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/hitbtc.py +0 -0
  361. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/hollaex.py +0 -0
  362. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/htx.py +0 -0
  363. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/huobi.py +0 -0
  364. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/huobijp.py +0 -0
  365. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/huobipro.py +0 -0
  366. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/idex.py +0 -0
  367. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/independentreserve.py +0 -0
  368. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/kraken.py +0 -0
  369. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/krakenfutures.py +0 -0
  370. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/kucoin.py +0 -0
  371. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/kucoinfutures.py +0 -0
  372. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/luno.py +0 -0
  373. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/mexc.py +0 -0
  374. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/mexc3.py +0 -0
  375. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/ndax.py +0 -0
  376. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/okcoin.py +0 -0
  377. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/okex.py +0 -0
  378. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/okx.py +0 -0
  379. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/phemex.py +0 -0
  380. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/poloniex.py +0 -0
  381. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/poloniexfutures.py +0 -0
  382. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/probit.py +0 -0
  383. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/upbit.py +0 -0
  384. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/wazirx.py +0 -0
  385. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/whitebit.py +0 -0
  386. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/pro/woo.py +0 -0
  387. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/probit.py +0 -0
  388. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/static_dependencies/__init__.py +0 -0
  389. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  390. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  391. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  392. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  393. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  394. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  395. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  396. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  397. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  398. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  399. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  400. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  401. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/__init__.py +0 -0
  402. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/__init__.py +0 -0
  403. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_account.py +0 -0
  404. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_balance.py +0 -0
  405. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_borrow_interest.py +0 -0
  406. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_borrow_rate.py +0 -0
  407. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_calculate_fee.py +0 -0
  408. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_crypto.py +0 -0
  409. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_currency.py +0 -0
  410. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_datetime.py +0 -0
  411. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_decimal_to_precision.py +0 -0
  412. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_deep_extend.py +0 -0
  413. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
  414. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
  415. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_funding_rate_history.py +0 -0
  416. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_ledger_entry.py +0 -0
  417. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_ledger_item.py +0 -0
  418. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_leverage_tier.py +0 -0
  419. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_margin_modification.py +0 -0
  420. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_market.py +0 -0
  421. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_number.py +0 -0
  422. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_ohlcv.py +0 -0
  423. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_open_interest.py +0 -0
  424. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_order.py +0 -0
  425. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_order_book.py +0 -0
  426. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_position.py +0 -0
  427. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_shared_methods.py +0 -0
  428. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_status.py +0 -0
  429. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_throttle.py +0 -0
  430. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_ticker.py +0 -0
  431. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_trade.py +0 -0
  432. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_trading_fee.py +0 -0
  433. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/base/test_transaction.py +0 -0
  434. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/test_async.py +0 -0
  435. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/test/test_sync.py +0 -0
  436. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/tidex.py +0 -0
  437. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/timex.py +0 -0
  438. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/tokocrypto.py +0 -0
  439. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/upbit.py +0 -0
  440. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/wavesexchange.py +0 -0
  441. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/wazirx.py +0 -0
  442. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/whitebit.py +0 -0
  443. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/woo.py +0 -0
  444. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/yobit.py +0 -0
  445. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/zaif.py +0 -0
  446. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt/zonda.py +0 -0
  447. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt.egg-info/SOURCES.txt +0 -0
  448. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt.egg-info/dependency_links.txt +0 -0
  449. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt.egg-info/requires.txt +0 -0
  450. {ccxt-4.1.76 → ccxt-4.1.77}/ccxt.egg-info/top_level.txt +0 -0
  451. {ccxt-4.1.76 → ccxt-4.1.77}/setup.cfg +0 -0
  452. {ccxt-4.1.76 → ccxt-4.1.77}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.1.76
3
+ Version: 4.1.77
4
4
  Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges
5
5
  Home-page: https://ccxt.com
6
6
  Author: Igor Kroitor
@@ -222,13 +222,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
222
222
 
223
223
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
224
224
 
225
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.1.76/dist/ccxt.browser.js
226
- * unpkg: https://unpkg.com/ccxt@4.1.76/dist/ccxt.browser.js
225
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.1.77/dist/ccxt.browser.js
226
+ * unpkg: https://unpkg.com/ccxt@4.1.77/dist/ccxt.browser.js
227
227
 
228
228
  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.
229
229
 
230
230
  ```HTML
231
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.1.76/dist/ccxt.browser.js"></script>
231
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.1.77/dist/ccxt.browser.js"></script>
232
232
  ```
233
233
 
234
234
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.1.76'
25
+ __version__ = '4.1.77'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.1.76'
7
+ __version__ = '4.1.77'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.1.76'
5
+ __version__ = '4.1.77'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -45,6 +45,8 @@ class bingx(Exchange, ImplicitAPI):
45
45
  'cancelAllOrders': True,
46
46
  'cancelOrder': True,
47
47
  'cancelOrders': True,
48
+ 'closeAllPosition': True,
49
+ 'closePosition': False,
48
50
  'createMarketBuyOrderWithCost': True,
49
51
  'createMarketOrderWithCost': True,
50
52
  'createMarketSellOrderWithCost': True,
@@ -393,7 +393,11 @@ class bitmex(Exchange, ImplicitAPI):
393
393
  finalAmount = Precise.string_div(amountString, precision)
394
394
  return self.parse_number(finalAmount)
395
395
 
396
- def convert_to_real_amount(self, code: str, amount: str):
396
+ def convert_to_real_amount(self, code: Str, amount: Str):
397
+ if code is None:
398
+ return amount
399
+ elif amount is None:
400
+ return None
397
401
  currency = self.currency(code)
398
402
  precision = self.safe_string(currency, 'precision')
399
403
  return Precise.string_mul(amount, precision)
@@ -53,6 +53,9 @@ class bitrue(Exchange, ImplicitAPI):
53
53
  'option': False,
54
54
  'cancelAllOrders': True,
55
55
  'cancelOrder': True,
56
+ 'createMarketBuyOrderWithCost': True,
57
+ 'createMarketOrderWithCost': False,
58
+ 'createMarketSellOrderWithCost': False,
56
59
  'createOrder': True,
57
60
  'createStopLimitOrder': True,
58
61
  'createStopMarketOrder': True,
@@ -1804,6 +1807,23 @@ class bitrue(Exchange, ImplicitAPI):
1804
1807
  'trades': fills,
1805
1808
  }, market)
1806
1809
 
1810
+ async def create_market_buy_order_with_cost(self, symbol: str, cost, params={}):
1811
+ """
1812
+ create a market buy order by providing the symbol and cost
1813
+ :see: https://www.bitrue.com/api-docs#new-order-trade-hmac-sha256
1814
+ :see: https://www.bitrue.com/api_docs_includes_file/delivery.html#new-order-trade-hmac-sha256
1815
+ :param str symbol: unified symbol of the market to create an order in
1816
+ :param float cost: how much you want to trade in units of the quote currency
1817
+ :param dict [params]: extra parameters specific to the exchange API endpoint
1818
+ :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1819
+ """
1820
+ await self.load_markets()
1821
+ market = self.market(symbol)
1822
+ if not market['swap']:
1823
+ raise NotSupported(self.id + ' createMarketBuyOrderWithCost() supports swap orders only')
1824
+ params['createMarketBuyOrderRequiresPrice'] = False
1825
+ return await self.create_order(symbol, 'market', 'buy', cost, None, params)
1826
+
1807
1827
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount, price=None, params={}):
1808
1828
  """
1809
1829
  create a trade order
@@ -1825,6 +1845,7 @@ class bitrue(Exchange, ImplicitAPI):
1825
1845
  * EXCHANGE SPECIFIC PARAMETERS
1826
1846
  :param decimal [params.icebergQty]:
1827
1847
  :param long [params.recvWindow]:
1848
+ :param float [params.cost]: *swap market buy only* the quote quantity that can be used alternative for the amount
1828
1849
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1829
1850
  """
1830
1851
  await self.load_markets()
@@ -1856,7 +1877,9 @@ class bitrue(Exchange, ImplicitAPI):
1856
1877
  elif timeInForce == 'ioc':
1857
1878
  request['type'] = 'IOC'
1858
1879
  request['contractName'] = market['id']
1859
- if isMarket and (side == 'buy') and (self.options['createMarketBuyOrderRequiresPrice']):
1880
+ createMarketBuyOrderRequiresPrice = True
1881
+ createMarketBuyOrderRequiresPrice, params = self.handle_option_and_params(params, 'createOrder', 'createMarketBuyOrderRequiresPrice', True)
1882
+ if isMarket and (side == 'buy') and createMarketBuyOrderRequiresPrice:
1860
1883
  cost = self.safe_string(params, 'cost')
1861
1884
  params = self.omit(params, 'cost')
1862
1885
  if price is None and cost is None:
@@ -1007,6 +1007,7 @@ class bitstamp(Exchange, ImplicitAPI):
1007
1007
  async def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
1008
1008
  """
1009
1009
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1010
+ :see: https://www.bitstamp.net/api/#tag/Market-info/operation/GetOHLCData
1010
1011
  :param str symbol: unified symbol of the market to fetch OHLCV data for
1011
1012
  :param str timeframe: the length of time each candle represents
1012
1013
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -1028,13 +1029,13 @@ class bitstamp(Exchange, ImplicitAPI):
1028
1029
  limit = 1000
1029
1030
  start = self.parse_to_int(since / 1000)
1030
1031
  request['start'] = start
1031
- request['end'] = self.sum(start, limit * duration)
1032
+ request['end'] = self.sum(start, duration * (limit - 1))
1032
1033
  request['limit'] = limit
1033
1034
  else:
1034
1035
  if since is not None:
1035
1036
  start = self.parse_to_int(since / 1000)
1036
1037
  request['start'] = start
1037
- request['end'] = self.sum(start, limit * duration)
1038
+ request['end'] = self.sum(start, duration * (limit - 1))
1038
1039
  request['limit'] = min(limit, 1000) # min 1, max 1000
1039
1040
  response = await self.publicGetOhlcPair(self.extend(request, params))
1040
1041
  #
@@ -51,7 +51,10 @@ class coinbase(Exchange, ImplicitAPI):
51
51
  'createLimitBuyOrder': True,
52
52
  'createLimitSellOrder': True,
53
53
  'createMarketBuyOrder': True,
54
+ 'createMarketBuyOrderWithCost': True,
55
+ 'createMarketOrderWithCost': False,
54
56
  'createMarketSellOrder': True,
57
+ 'createMarketSellOrderWithCost': False,
55
58
  'createOrder': True,
56
59
  'createPostOnlyOrder': True,
57
60
  'createReduceOnlyOrder': False,
@@ -2010,6 +2013,22 @@ class coinbase(Exchange, ImplicitAPI):
2010
2013
  request['limit'] = limit
2011
2014
  return request
2012
2015
 
2016
+ async def create_market_buy_order_with_cost(self, symbol: str, cost, params={}):
2017
+ """
2018
+ create a market buy order by providing the symbol and cost
2019
+ :see: https://docs.cloud.coinbase.com/advanced-trade-api/reference/retailbrokerageapi_postorder
2020
+ :param str symbol: unified symbol of the market to create an order in
2021
+ :param float cost: how much you want to trade in units of the quote currency
2022
+ :param dict [params]: extra parameters specific to the exchange API endpoint
2023
+ :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
2024
+ """
2025
+ await self.load_markets()
2026
+ market = self.market(symbol)
2027
+ if not market['spot']:
2028
+ raise NotSupported(self.id + ' createMarketBuyOrderWithCost() supports spot orders only')
2029
+ params['createMarketBuyOrderRequiresPrice'] = False
2030
+ return await self.create_order(symbol, 'market', 'buy', cost, None, params)
2031
+
2013
2032
  async def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount, price=None, params={}):
2014
2033
  """
2015
2034
  create a trade order
@@ -2028,6 +2047,7 @@ class coinbase(Exchange, ImplicitAPI):
2028
2047
  :param str [params.timeInForce]: 'GTC', 'IOC', 'GTD' or 'PO'
2029
2048
  :param str [params.stop_direction]: 'UNKNOWN_STOP_DIRECTION', 'STOP_DIRECTION_STOP_UP', 'STOP_DIRECTION_STOP_DOWN' the direction the stopPrice is triggered from
2030
2049
  :param str [params.end_time]: '2023-05-25T17:01:05.092Z' for 'GTD' orders
2050
+ :param float [params.cost]: *spot market buy only* the quote quantity that can be used alternative for the amount
2031
2051
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
2032
2052
  """
2033
2053
  await self.load_markets()
@@ -2114,18 +2134,23 @@ class coinbase(Exchange, ImplicitAPI):
2114
2134
  if isStop or isStopLoss or isTakeProfit:
2115
2135
  raise NotSupported(self.id + ' createOrder() only stop limit orders are supported')
2116
2136
  if side == 'buy':
2117
- createMarketBuyOrderRequiresPrice = self.safe_value(self.options, 'createMarketBuyOrderRequiresPrice', True)
2118
2137
  total = None
2119
- if createMarketBuyOrderRequiresPrice:
2138
+ createMarketBuyOrderRequiresPrice = True
2139
+ createMarketBuyOrderRequiresPrice, params = self.handle_option_and_params(params, 'createOrder', 'createMarketBuyOrderRequiresPrice', True)
2140
+ cost = self.safe_number(params, 'cost')
2141
+ params = self.omit(params, 'cost')
2142
+ if cost is not None:
2143
+ total = self.cost_to_precision(symbol, cost)
2144
+ elif createMarketBuyOrderRequiresPrice:
2120
2145
  if price is None:
2121
- raise InvalidOrder(self.id + ' createOrder() requires a price argument for market buy orders on spot markets to calculate the total amount to spend(amount * price), alternatively set the createMarketBuyOrderRequiresPrice option to False and pass in the cost to spend into the amount parameter')
2146
+ raise InvalidOrder(self.id + ' createOrder() requires a price argument for market buy orders on spot markets to calculate the total amount to spend(amount * price), alternatively set the createMarketBuyOrderRequiresPrice option or param to False and pass the cost to spend in the amount argument')
2122
2147
  else:
2123
2148
  amountString = self.number_to_string(amount)
2124
2149
  priceString = self.number_to_string(price)
2125
- cost = self.parse_number(Precise.string_mul(amountString, priceString))
2126
- total = self.price_to_precision(symbol, cost)
2150
+ costRequest = Precise.string_mul(amountString, priceString)
2151
+ total = self.cost_to_precision(symbol, costRequest)
2127
2152
  else:
2128
- total = self.price_to_precision(symbol, amount)
2153
+ total = self.cost_to_precision(symbol, amount)
2129
2154
  request['order_configuration'] = {
2130
2155
  'market_market_ioc': {
2131
2156
  'quote_size': total,
@@ -561,6 +561,7 @@ class gate(Exchange, ImplicitAPI):
561
561
  '15m': '15m',
562
562
  '30m': '30m',
563
563
  '1h': '1h',
564
+ '2h': '2h',
564
565
  '4h': '4h',
565
566
  '8h': '8h',
566
567
  '1d': '1d',
@@ -42,7 +42,7 @@ class okx(Exchange, ImplicitAPI):
42
42
  'name': 'OKX',
43
43
  'countries': ['CN', 'US'],
44
44
  'version': 'v5',
45
- 'rateLimit': 100,
45
+ 'rateLimit': 100 * 1.03, # 3% tolerance because of #20229
46
46
  'pro': True,
47
47
  'certified': True,
48
48
  'has': {
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.1.76'
7
+ __version__ = '4.1.77'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -44,6 +44,8 @@ class bingx(Exchange, ImplicitAPI):
44
44
  'cancelAllOrders': True,
45
45
  'cancelOrder': True,
46
46
  'cancelOrders': True,
47
+ 'closeAllPosition': True,
48
+ 'closePosition': False,
47
49
  'createMarketBuyOrderWithCost': True,
48
50
  'createMarketOrderWithCost': True,
49
51
  'createMarketSellOrderWithCost': True,
@@ -393,7 +393,11 @@ class bitmex(Exchange, ImplicitAPI):
393
393
  finalAmount = Precise.string_div(amountString, precision)
394
394
  return self.parse_number(finalAmount)
395
395
 
396
- def convert_to_real_amount(self, code: str, amount: str):
396
+ def convert_to_real_amount(self, code: Str, amount: Str):
397
+ if code is None:
398
+ return amount
399
+ elif amount is None:
400
+ return None
397
401
  currency = self.currency(code)
398
402
  precision = self.safe_string(currency, 'precision')
399
403
  return Precise.string_mul(amount, precision)
@@ -52,6 +52,9 @@ class bitrue(Exchange, ImplicitAPI):
52
52
  'option': False,
53
53
  'cancelAllOrders': True,
54
54
  'cancelOrder': True,
55
+ 'createMarketBuyOrderWithCost': True,
56
+ 'createMarketOrderWithCost': False,
57
+ 'createMarketSellOrderWithCost': False,
55
58
  'createOrder': True,
56
59
  'createStopLimitOrder': True,
57
60
  'createStopMarketOrder': True,
@@ -1803,6 +1806,23 @@ class bitrue(Exchange, ImplicitAPI):
1803
1806
  'trades': fills,
1804
1807
  }, market)
1805
1808
 
1809
+ def create_market_buy_order_with_cost(self, symbol: str, cost, params={}):
1810
+ """
1811
+ create a market buy order by providing the symbol and cost
1812
+ :see: https://www.bitrue.com/api-docs#new-order-trade-hmac-sha256
1813
+ :see: https://www.bitrue.com/api_docs_includes_file/delivery.html#new-order-trade-hmac-sha256
1814
+ :param str symbol: unified symbol of the market to create an order in
1815
+ :param float cost: how much you want to trade in units of the quote currency
1816
+ :param dict [params]: extra parameters specific to the exchange API endpoint
1817
+ :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1818
+ """
1819
+ self.load_markets()
1820
+ market = self.market(symbol)
1821
+ if not market['swap']:
1822
+ raise NotSupported(self.id + ' createMarketBuyOrderWithCost() supports swap orders only')
1823
+ params['createMarketBuyOrderRequiresPrice'] = False
1824
+ return self.create_order(symbol, 'market', 'buy', cost, None, params)
1825
+
1806
1826
  def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount, price=None, params={}):
1807
1827
  """
1808
1828
  create a trade order
@@ -1824,6 +1844,7 @@ class bitrue(Exchange, ImplicitAPI):
1824
1844
  * EXCHANGE SPECIFIC PARAMETERS
1825
1845
  :param decimal [params.icebergQty]:
1826
1846
  :param long [params.recvWindow]:
1847
+ :param float [params.cost]: *swap market buy only* the quote quantity that can be used alternative for the amount
1827
1848
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1828
1849
  """
1829
1850
  self.load_markets()
@@ -1855,7 +1876,9 @@ class bitrue(Exchange, ImplicitAPI):
1855
1876
  elif timeInForce == 'ioc':
1856
1877
  request['type'] = 'IOC'
1857
1878
  request['contractName'] = market['id']
1858
- if isMarket and (side == 'buy') and (self.options['createMarketBuyOrderRequiresPrice']):
1879
+ createMarketBuyOrderRequiresPrice = True
1880
+ createMarketBuyOrderRequiresPrice, params = self.handle_option_and_params(params, 'createOrder', 'createMarketBuyOrderRequiresPrice', True)
1881
+ if isMarket and (side == 'buy') and createMarketBuyOrderRequiresPrice:
1859
1882
  cost = self.safe_string(params, 'cost')
1860
1883
  params = self.omit(params, 'cost')
1861
1884
  if price is None and cost is None:
@@ -1007,6 +1007,7 @@ class bitstamp(Exchange, ImplicitAPI):
1007
1007
  def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
1008
1008
  """
1009
1009
  fetches historical candlestick data containing the open, high, low, and close price, and the volume of a market
1010
+ :see: https://www.bitstamp.net/api/#tag/Market-info/operation/GetOHLCData
1010
1011
  :param str symbol: unified symbol of the market to fetch OHLCV data for
1011
1012
  :param str timeframe: the length of time each candle represents
1012
1013
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -1028,13 +1029,13 @@ class bitstamp(Exchange, ImplicitAPI):
1028
1029
  limit = 1000
1029
1030
  start = self.parse_to_int(since / 1000)
1030
1031
  request['start'] = start
1031
- request['end'] = self.sum(start, limit * duration)
1032
+ request['end'] = self.sum(start, duration * (limit - 1))
1032
1033
  request['limit'] = limit
1033
1034
  else:
1034
1035
  if since is not None:
1035
1036
  start = self.parse_to_int(since / 1000)
1036
1037
  request['start'] = start
1037
- request['end'] = self.sum(start, limit * duration)
1038
+ request['end'] = self.sum(start, duration * (limit - 1))
1038
1039
  request['limit'] = min(limit, 1000) # min 1, max 1000
1039
1040
  response = self.publicGetOhlcPair(self.extend(request, params))
1040
1041
  #
@@ -51,7 +51,10 @@ class coinbase(Exchange, ImplicitAPI):
51
51
  'createLimitBuyOrder': True,
52
52
  'createLimitSellOrder': True,
53
53
  'createMarketBuyOrder': True,
54
+ 'createMarketBuyOrderWithCost': True,
55
+ 'createMarketOrderWithCost': False,
54
56
  'createMarketSellOrder': True,
57
+ 'createMarketSellOrderWithCost': False,
55
58
  'createOrder': True,
56
59
  'createPostOnlyOrder': True,
57
60
  'createReduceOnlyOrder': False,
@@ -2010,6 +2013,22 @@ class coinbase(Exchange, ImplicitAPI):
2010
2013
  request['limit'] = limit
2011
2014
  return request
2012
2015
 
2016
+ def create_market_buy_order_with_cost(self, symbol: str, cost, params={}):
2017
+ """
2018
+ create a market buy order by providing the symbol and cost
2019
+ :see: https://docs.cloud.coinbase.com/advanced-trade-api/reference/retailbrokerageapi_postorder
2020
+ :param str symbol: unified symbol of the market to create an order in
2021
+ :param float cost: how much you want to trade in units of the quote currency
2022
+ :param dict [params]: extra parameters specific to the exchange API endpoint
2023
+ :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
2024
+ """
2025
+ self.load_markets()
2026
+ market = self.market(symbol)
2027
+ if not market['spot']:
2028
+ raise NotSupported(self.id + ' createMarketBuyOrderWithCost() supports spot orders only')
2029
+ params['createMarketBuyOrderRequiresPrice'] = False
2030
+ return self.create_order(symbol, 'market', 'buy', cost, None, params)
2031
+
2013
2032
  def create_order(self, symbol: str, type: OrderType, side: OrderSide, amount, price=None, params={}):
2014
2033
  """
2015
2034
  create a trade order
@@ -2028,6 +2047,7 @@ class coinbase(Exchange, ImplicitAPI):
2028
2047
  :param str [params.timeInForce]: 'GTC', 'IOC', 'GTD' or 'PO'
2029
2048
  :param str [params.stop_direction]: 'UNKNOWN_STOP_DIRECTION', 'STOP_DIRECTION_STOP_UP', 'STOP_DIRECTION_STOP_DOWN' the direction the stopPrice is triggered from
2030
2049
  :param str [params.end_time]: '2023-05-25T17:01:05.092Z' for 'GTD' orders
2050
+ :param float [params.cost]: *spot market buy only* the quote quantity that can be used alternative for the amount
2031
2051
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
2032
2052
  """
2033
2053
  self.load_markets()
@@ -2114,18 +2134,23 @@ class coinbase(Exchange, ImplicitAPI):
2114
2134
  if isStop or isStopLoss or isTakeProfit:
2115
2135
  raise NotSupported(self.id + ' createOrder() only stop limit orders are supported')
2116
2136
  if side == 'buy':
2117
- createMarketBuyOrderRequiresPrice = self.safe_value(self.options, 'createMarketBuyOrderRequiresPrice', True)
2118
2137
  total = None
2119
- if createMarketBuyOrderRequiresPrice:
2138
+ createMarketBuyOrderRequiresPrice = True
2139
+ createMarketBuyOrderRequiresPrice, params = self.handle_option_and_params(params, 'createOrder', 'createMarketBuyOrderRequiresPrice', True)
2140
+ cost = self.safe_number(params, 'cost')
2141
+ params = self.omit(params, 'cost')
2142
+ if cost is not None:
2143
+ total = self.cost_to_precision(symbol, cost)
2144
+ elif createMarketBuyOrderRequiresPrice:
2120
2145
  if price is None:
2121
- raise InvalidOrder(self.id + ' createOrder() requires a price argument for market buy orders on spot markets to calculate the total amount to spend(amount * price), alternatively set the createMarketBuyOrderRequiresPrice option to False and pass in the cost to spend into the amount parameter')
2146
+ raise InvalidOrder(self.id + ' createOrder() requires a price argument for market buy orders on spot markets to calculate the total amount to spend(amount * price), alternatively set the createMarketBuyOrderRequiresPrice option or param to False and pass the cost to spend in the amount argument')
2122
2147
  else:
2123
2148
  amountString = self.number_to_string(amount)
2124
2149
  priceString = self.number_to_string(price)
2125
- cost = self.parse_number(Precise.string_mul(amountString, priceString))
2126
- total = self.price_to_precision(symbol, cost)
2150
+ costRequest = Precise.string_mul(amountString, priceString)
2151
+ total = self.cost_to_precision(symbol, costRequest)
2127
2152
  else:
2128
- total = self.price_to_precision(symbol, amount)
2153
+ total = self.cost_to_precision(symbol, amount)
2129
2154
  request['order_configuration'] = {
2130
2155
  'market_market_ioc': {
2131
2156
  'quote_size': total,
@@ -560,6 +560,7 @@ class gate(Exchange, ImplicitAPI):
560
560
  '15m': '15m',
561
561
  '30m': '30m',
562
562
  '1h': '1h',
563
+ '2h': '2h',
563
564
  '4h': '4h',
564
565
  '8h': '8h',
565
566
  '1d': '1d',
@@ -41,7 +41,7 @@ class okx(Exchange, ImplicitAPI):
41
41
  'name': 'OKX',
42
42
  'countries': ['CN', 'US'],
43
43
  'version': 'v5',
44
- 'rateLimit': 100,
44
+ 'rateLimit': 100 * 1.03, # 3% tolerance because of #20229
45
45
  'pro': True,
46
46
  'certified': True,
47
47
  'has': {
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.1.76'
7
+ __version__ = '4.1.77'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.1.76
3
+ Version: 4.1.77
4
4
  Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ exchanges
5
5
  Home-page: https://ccxt.com
6
6
  Author: Igor Kroitor
@@ -222,13 +222,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
222
222
 
223
223
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
224
224
 
225
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.1.76/dist/ccxt.browser.js
226
- * unpkg: https://unpkg.com/ccxt@4.1.76/dist/ccxt.browser.js
225
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.1.77/dist/ccxt.browser.js
226
+ * unpkg: https://unpkg.com/ccxt@4.1.77/dist/ccxt.browser.js
227
227
 
228
228
  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.
229
229
 
230
230
  ```HTML
231
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.1.76/dist/ccxt.browser.js"></script>
231
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.1.77/dist/ccxt.browser.js"></script>
232
232
  ```
233
233
 
234
234
  Creates a global `ccxt` object:
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccxt",
3
- "version": "4.1.76",
3
+ "version": "4.1.77",
4
4
  "description": "A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ 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