ccxt 4.0.76__tar.gz → 4.0.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 (464) hide show
  1. {ccxt-4.0.76/ccxt.egg-info → ccxt-4.0.77}/PKG-INFO +4 -4
  2. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/__init__.py +1 -1
  3. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/gate.py +24 -0
  4. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/gateio.py +24 -0
  5. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/__init__.py +1 -1
  6. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/base/exchange.py +1 -1
  7. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bingx.py +21 -6
  8. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/gate.py +42 -0
  9. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/whitebit.py +1 -0
  10. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/base/exchange.py +1 -1
  11. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bingx.py +21 -6
  12. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/gate.py +42 -0
  13. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/__init__.py +1 -1
  14. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/okx.py +3 -0
  15. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/whitebit.py +1 -0
  16. {ccxt-4.0.76 → ccxt-4.0.77/ccxt.egg-info}/PKG-INFO +4 -4
  17. {ccxt-4.0.76 → ccxt-4.0.77}/package.json +1 -1
  18. {ccxt-4.0.76 → ccxt-4.0.77}/LICENSE.txt +0 -0
  19. {ccxt-4.0.76 → ccxt-4.0.77}/MANIFEST.in +0 -0
  20. {ccxt-4.0.76 → ccxt-4.0.77}/README.rst +0 -0
  21. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/__init__.py +0 -0
  22. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/ace.py +0 -0
  23. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/alpaca.py +0 -0
  24. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/ascendex.py +0 -0
  25. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bequant.py +0 -0
  26. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bigone.py +0 -0
  27. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/binance.py +0 -0
  28. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/binancecoinm.py +0 -0
  29. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/binanceus.py +0 -0
  30. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/binanceusdm.py +0 -0
  31. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bingx.py +0 -0
  32. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bit2c.py +0 -0
  33. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bitbank.py +0 -0
  34. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bitbay.py +0 -0
  35. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bitbns.py +0 -0
  36. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bitcoincom.py +0 -0
  37. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bitfinex.py +0 -0
  38. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bitfinex2.py +0 -0
  39. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bitflyer.py +0 -0
  40. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bitforex.py +0 -0
  41. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bitget.py +0 -0
  42. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bithumb.py +0 -0
  43. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bitmart.py +0 -0
  44. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bitmex.py +0 -0
  45. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bitopro.py +0 -0
  46. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bitpanda.py +0 -0
  47. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bitrue.py +0 -0
  48. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bitso.py +0 -0
  49. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bitstamp.py +0 -0
  50. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bitstamp1.py +0 -0
  51. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bittrex.py +0 -0
  52. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bitvavo.py +0 -0
  53. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bkex.py +0 -0
  54. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bl3p.py +0 -0
  55. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/blockchaincom.py +0 -0
  56. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/btcalpha.py +0 -0
  57. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/btcbox.py +0 -0
  58. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/btcmarkets.py +0 -0
  59. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/btctradeua.py +0 -0
  60. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/btcturk.py +0 -0
  61. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/bybit.py +0 -0
  62. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/cex.py +0 -0
  63. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/coinbase.py +0 -0
  64. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/coinbaseprime.py +0 -0
  65. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/coinbasepro.py +0 -0
  66. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/coincheck.py +0 -0
  67. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/coinex.py +0 -0
  68. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/coinfalcon.py +0 -0
  69. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/coinmate.py +0 -0
  70. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/coinone.py +0 -0
  71. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/coinsph.py +0 -0
  72. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/coinspot.py +0 -0
  73. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/cryptocom.py +0 -0
  74. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/currencycom.py +0 -0
  75. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/delta.py +0 -0
  76. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/deribit.py +0 -0
  77. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/digifinex.py +0 -0
  78. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/exmo.py +0 -0
  79. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/fmfwio.py +0 -0
  80. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/gemini.py +0 -0
  81. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/hitbtc.py +0 -0
  82. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/hitbtc3.py +0 -0
  83. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/hollaex.py +0 -0
  84. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/huobi.py +0 -0
  85. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/huobijp.py +0 -0
  86. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/huobipro.py +0 -0
  87. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/idex.py +0 -0
  88. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/independentreserve.py +0 -0
  89. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/indodax.py +0 -0
  90. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/kraken.py +0 -0
  91. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/krakenfutures.py +0 -0
  92. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/kucoin.py +0 -0
  93. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/kucoinfutures.py +0 -0
  94. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/kuna.py +0 -0
  95. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/latoken.py +0 -0
  96. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/lbank.py +0 -0
  97. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/lbank2.py +0 -0
  98. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/luno.py +0 -0
  99. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/lykke.py +0 -0
  100. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/mercado.py +0 -0
  101. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/mexc.py +0 -0
  102. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/mexc3.py +0 -0
  103. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/ndax.py +0 -0
  104. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/novadax.py +0 -0
  105. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/oceanex.py +0 -0
  106. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/okcoin.py +0 -0
  107. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/okex.py +0 -0
  108. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/okex5.py +0 -0
  109. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/okx.py +0 -0
  110. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/paymium.py +0 -0
  111. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/phemex.py +0 -0
  112. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/poloniex.py +0 -0
  113. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/poloniexfutures.py +0 -0
  114. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/probit.py +0 -0
  115. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/tidex.py +0 -0
  116. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/timex.py +0 -0
  117. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/tokocrypto.py +0 -0
  118. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/upbit.py +0 -0
  119. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/wavesexchange.py +0 -0
  120. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/wazirx.py +0 -0
  121. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/whitebit.py +0 -0
  122. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/woo.py +0 -0
  123. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/yobit.py +0 -0
  124. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/zaif.py +0 -0
  125. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/abstract/zonda.py +0 -0
  126. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/ace.py +0 -0
  127. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/alpaca.py +0 -0
  128. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/ascendex.py +0 -0
  129. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/ace.py +0 -0
  130. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/alpaca.py +0 -0
  131. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/ascendex.py +0 -0
  132. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/base/__init__.py +0 -0
  133. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/base/throttler.py +0 -0
  134. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/base/ws/__init__.py +0 -0
  135. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
  136. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/base/ws/cache.py +0 -0
  137. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/base/ws/client.py +0 -0
  138. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/base/ws/fast_client.py +0 -0
  139. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/base/ws/functions.py +0 -0
  140. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/base/ws/future.py +0 -0
  141. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/base/ws/order_book.py +0 -0
  142. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/base/ws/order_book_side.py +0 -0
  143. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bequant.py +0 -0
  144. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bigone.py +0 -0
  145. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/binance.py +0 -0
  146. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/binancecoinm.py +0 -0
  147. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/binanceus.py +0 -0
  148. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/binanceusdm.py +0 -0
  149. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bit2c.py +0 -0
  150. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bitbank.py +0 -0
  151. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bitbay.py +0 -0
  152. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bitbns.py +0 -0
  153. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bitcoincom.py +0 -0
  154. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bitfinex.py +0 -0
  155. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bitfinex2.py +0 -0
  156. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bitflyer.py +0 -0
  157. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bitforex.py +0 -0
  158. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bitget.py +0 -0
  159. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bithumb.py +0 -0
  160. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bitmart.py +0 -0
  161. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bitmex.py +0 -0
  162. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bitopro.py +0 -0
  163. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bitpanda.py +0 -0
  164. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bitrue.py +0 -0
  165. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bitso.py +0 -0
  166. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bitstamp.py +0 -0
  167. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bitstamp1.py +0 -0
  168. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bittrex.py +0 -0
  169. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bitvavo.py +0 -0
  170. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bkex.py +0 -0
  171. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bl3p.py +0 -0
  172. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/blockchaincom.py +0 -0
  173. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/btcalpha.py +0 -0
  174. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/btcbox.py +0 -0
  175. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/btcmarkets.py +0 -0
  176. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/btctradeua.py +0 -0
  177. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/btcturk.py +0 -0
  178. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/bybit.py +0 -0
  179. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/cex.py +0 -0
  180. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/coinbase.py +0 -0
  181. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/coinbaseprime.py +0 -0
  182. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/coinbasepro.py +0 -0
  183. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/coincheck.py +0 -0
  184. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/coinex.py +0 -0
  185. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/coinfalcon.py +0 -0
  186. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/coinmate.py +0 -0
  187. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/coinone.py +0 -0
  188. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/coinsph.py +0 -0
  189. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/coinspot.py +0 -0
  190. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/cryptocom.py +0 -0
  191. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/currencycom.py +0 -0
  192. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/delta.py +0 -0
  193. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/deribit.py +0 -0
  194. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/digifinex.py +0 -0
  195. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/exmo.py +0 -0
  196. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/flowbtc.py +0 -0
  197. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/fmfwio.py +0 -0
  198. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/gateio.py +0 -0
  199. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/gemini.py +0 -0
  200. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/hitbtc.py +0 -0
  201. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/hitbtc3.py +0 -0
  202. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/hollaex.py +0 -0
  203. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/huobi.py +0 -0
  204. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/huobijp.py +0 -0
  205. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/huobipro.py +0 -0
  206. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/idex.py +0 -0
  207. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/independentreserve.py +0 -0
  208. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/indodax.py +0 -0
  209. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/kraken.py +0 -0
  210. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/krakenfutures.py +0 -0
  211. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/kucoin.py +0 -0
  212. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/kucoinfutures.py +0 -0
  213. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/kuna.py +0 -0
  214. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/latoken.py +0 -0
  215. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/lbank.py +0 -0
  216. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/lbank2.py +0 -0
  217. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/luno.py +0 -0
  218. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/lykke.py +0 -0
  219. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/mercado.py +0 -0
  220. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/mexc.py +0 -0
  221. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/mexc3.py +0 -0
  222. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/ndax.py +0 -0
  223. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/novadax.py +0 -0
  224. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/oceanex.py +0 -0
  225. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/okcoin.py +0 -0
  226. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/okex.py +0 -0
  227. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/okex5.py +0 -0
  228. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/okx.py +0 -0
  229. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/paymium.py +0 -0
  230. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/phemex.py +0 -0
  231. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/poloniex.py +0 -0
  232. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/poloniexfutures.py +0 -0
  233. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/probit.py +0 -0
  234. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/tidex.py +0 -0
  235. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/timex.py +0 -0
  236. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/tokocrypto.py +0 -0
  237. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/upbit.py +0 -0
  238. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/wavesexchange.py +0 -0
  239. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/wazirx.py +0 -0
  240. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/woo.py +0 -0
  241. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/yobit.py +0 -0
  242. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/zaif.py +0 -0
  243. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/async_support/zonda.py +0 -0
  244. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/base/__init__.py +0 -0
  245. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/base/decimal_to_precision.py +0 -0
  246. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/base/errors.py +0 -0
  247. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/base/precise.py +0 -0
  248. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/base/types.py +0 -0
  249. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bequant.py +0 -0
  250. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bigone.py +0 -0
  251. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/binance.py +0 -0
  252. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/binancecoinm.py +0 -0
  253. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/binanceus.py +0 -0
  254. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/binanceusdm.py +0 -0
  255. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bit2c.py +0 -0
  256. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bitbank.py +0 -0
  257. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bitbay.py +0 -0
  258. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bitbns.py +0 -0
  259. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bitcoincom.py +0 -0
  260. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bitfinex.py +0 -0
  261. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bitfinex2.py +0 -0
  262. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bitflyer.py +0 -0
  263. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bitforex.py +0 -0
  264. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bitget.py +0 -0
  265. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bithumb.py +0 -0
  266. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bitmart.py +0 -0
  267. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bitmex.py +0 -0
  268. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bitopro.py +0 -0
  269. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bitpanda.py +0 -0
  270. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bitrue.py +0 -0
  271. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bitso.py +0 -0
  272. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bitstamp.py +0 -0
  273. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bitstamp1.py +0 -0
  274. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bittrex.py +0 -0
  275. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bitvavo.py +0 -0
  276. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bkex.py +0 -0
  277. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bl3p.py +0 -0
  278. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/blockchaincom.py +0 -0
  279. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/btcalpha.py +0 -0
  280. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/btcbox.py +0 -0
  281. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/btcmarkets.py +0 -0
  282. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/btctradeua.py +0 -0
  283. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/btcturk.py +0 -0
  284. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/bybit.py +0 -0
  285. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/cex.py +0 -0
  286. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/coinbase.py +0 -0
  287. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/coinbaseprime.py +0 -0
  288. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/coinbasepro.py +0 -0
  289. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/coincheck.py +0 -0
  290. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/coinex.py +0 -0
  291. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/coinfalcon.py +0 -0
  292. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/coinmate.py +0 -0
  293. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/coinone.py +0 -0
  294. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/coinsph.py +0 -0
  295. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/coinspot.py +0 -0
  296. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/cryptocom.py +0 -0
  297. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/currencycom.py +0 -0
  298. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/delta.py +0 -0
  299. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/deribit.py +0 -0
  300. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/digifinex.py +0 -0
  301. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/exmo.py +0 -0
  302. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/flowbtc.py +0 -0
  303. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/fmfwio.py +0 -0
  304. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/gateio.py +0 -0
  305. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/gemini.py +0 -0
  306. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/hitbtc.py +0 -0
  307. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/hitbtc3.py +0 -0
  308. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/hollaex.py +0 -0
  309. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/huobi.py +0 -0
  310. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/huobijp.py +0 -0
  311. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/huobipro.py +0 -0
  312. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/idex.py +0 -0
  313. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/independentreserve.py +0 -0
  314. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/indodax.py +0 -0
  315. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/kraken.py +0 -0
  316. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/krakenfutures.py +0 -0
  317. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/kucoin.py +0 -0
  318. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/kucoinfutures.py +0 -0
  319. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/kuna.py +0 -0
  320. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/latoken.py +0 -0
  321. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/lbank.py +0 -0
  322. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/lbank2.py +0 -0
  323. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/luno.py +0 -0
  324. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/lykke.py +0 -0
  325. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/mercado.py +0 -0
  326. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/mexc.py +0 -0
  327. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/mexc3.py +0 -0
  328. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/ndax.py +0 -0
  329. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/novadax.py +0 -0
  330. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/oceanex.py +0 -0
  331. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/okcoin.py +0 -0
  332. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/okex.py +0 -0
  333. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/okex5.py +0 -0
  334. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/okx.py +0 -0
  335. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/paymium.py +0 -0
  336. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/phemex.py +0 -0
  337. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/poloniex.py +0 -0
  338. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/poloniexfutures.py +0 -0
  339. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/alpaca.py +0 -0
  340. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/ascendex.py +0 -0
  341. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/bequant.py +0 -0
  342. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/binance.py +0 -0
  343. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/binancecoinm.py +0 -0
  344. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/binanceus.py +0 -0
  345. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/binanceusdm.py +0 -0
  346. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/bitcoincom.py +0 -0
  347. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/bitfinex.py +0 -0
  348. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/bitfinex2.py +0 -0
  349. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/bitget.py +0 -0
  350. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/bitmart.py +0 -0
  351. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/bitmex.py +0 -0
  352. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/bitopro.py +0 -0
  353. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/bitpanda.py +0 -0
  354. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/bitrue.py +0 -0
  355. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/bitstamp.py +0 -0
  356. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/bittrex.py +0 -0
  357. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/bitvavo.py +0 -0
  358. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/blockchaincom.py +0 -0
  359. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/btcex.py +0 -0
  360. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/bybit.py +0 -0
  361. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/cex.py +0 -0
  362. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/coinbase.py +0 -0
  363. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/coinbaseprime.py +0 -0
  364. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/coinbasepro.py +0 -0
  365. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/coinex.py +0 -0
  366. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/cryptocom.py +0 -0
  367. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/currencycom.py +0 -0
  368. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/deribit.py +0 -0
  369. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/exmo.py +0 -0
  370. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/gate.py +0 -0
  371. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/gateio.py +0 -0
  372. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/gemini.py +0 -0
  373. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/hitbtc.py +0 -0
  374. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/hollaex.py +0 -0
  375. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/huobi.py +0 -0
  376. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/huobijp.py +0 -0
  377. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/huobipro.py +0 -0
  378. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/idex.py +0 -0
  379. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/independentreserve.py +0 -0
  380. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/kraken.py +0 -0
  381. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/krakenfutures.py +0 -0
  382. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/kucoin.py +0 -0
  383. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/kucoinfutures.py +0 -0
  384. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/luno.py +0 -0
  385. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/mexc.py +0 -0
  386. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/mexc3.py +0 -0
  387. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/ndax.py +0 -0
  388. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/okcoin.py +0 -0
  389. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/okex.py +0 -0
  390. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/phemex.py +0 -0
  391. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/poloniex.py +0 -0
  392. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/poloniexfutures.py +0 -0
  393. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/probit.py +0 -0
  394. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/ripio.py +0 -0
  395. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/upbit.py +0 -0
  396. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/wazirx.py +0 -0
  397. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/whitebit.py +0 -0
  398. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/woo.py +0 -0
  399. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/pro/zb.py +0 -0
  400. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/probit.py +0 -0
  401. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/static_dependencies/__init__.py +0 -0
  402. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
  403. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
  404. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
  405. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/static_dependencies/ecdsa/der.py +0 -0
  406. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
  407. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
  408. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
  409. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
  410. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
  411. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/static_dependencies/ecdsa/util.py +0 -0
  412. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/static_dependencies/keccak/__init__.py +0 -0
  413. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/static_dependencies/keccak/keccak.py +0 -0
  414. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/__init__.py +0 -0
  415. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/__init__.py +0 -0
  416. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_account.py +0 -0
  417. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_balance.py +0 -0
  418. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_borrow_interest.py +0 -0
  419. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_borrow_rate.py +0 -0
  420. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_calculate_fee.py +0 -0
  421. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_crypto.py +0 -0
  422. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_currency.py +0 -0
  423. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_datetime.py +0 -0
  424. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_decimal_to_precision.py +0 -0
  425. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_deep_extend.py +0 -0
  426. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
  427. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
  428. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_funding_rate_history.py +0 -0
  429. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_ledger_entry.py +0 -0
  430. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_ledger_item.py +0 -0
  431. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_leverage_tier.py +0 -0
  432. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_margin_modification.py +0 -0
  433. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_market.py +0 -0
  434. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_number.py +0 -0
  435. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_ohlcv.py +0 -0
  436. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_open_interest.py +0 -0
  437. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_order.py +0 -0
  438. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_order_book.py +0 -0
  439. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_position.py +0 -0
  440. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_shared_methods.py +0 -0
  441. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_status.py +0 -0
  442. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_throttle.py +0 -0
  443. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_ticker.py +0 -0
  444. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_trade.py +0 -0
  445. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_trading_fee.py +0 -0
  446. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/base/test_transaction.py +0 -0
  447. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/test_async.py +0 -0
  448. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/test/test_sync.py +0 -0
  449. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/tidex.py +0 -0
  450. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/timex.py +0 -0
  451. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/tokocrypto.py +0 -0
  452. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/upbit.py +0 -0
  453. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/wavesexchange.py +0 -0
  454. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/wazirx.py +0 -0
  455. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/woo.py +0 -0
  456. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/yobit.py +0 -0
  457. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/zaif.py +0 -0
  458. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt/zonda.py +0 -0
  459. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt.egg-info/SOURCES.txt +0 -0
  460. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt.egg-info/dependency_links.txt +0 -0
  461. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt.egg-info/requires.txt +0 -0
  462. {ccxt-4.0.76 → ccxt-4.0.77}/ccxt.egg-info/top_level.txt +0 -0
  463. {ccxt-4.0.76 → ccxt-4.0.77}/setup.cfg +0 -0
  464. {ccxt-4.0.76 → ccxt-4.0.77}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.0.76
3
+ Version: 4.0.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
@@ -228,13 +228,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
228
228
 
229
229
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
230
230
 
231
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.76/dist/ccxt.browser.js
232
- * unpkg: https://unpkg.com/ccxt@4.0.76/dist/ccxt.browser.js
231
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.77/dist/ccxt.browser.js
232
+ * unpkg: https://unpkg.com/ccxt@4.0.77/dist/ccxt.browser.js
233
233
 
234
234
  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.
235
235
 
236
236
  ```HTML
237
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.76/dist/ccxt.browser.js"></script>
237
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.77/dist/ccxt.browser.js"></script>
238
238
  ```
239
239
 
240
240
  Creates a global `ccxt` object:
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.0.76'
25
+ __version__ = '4.0.77'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -80,6 +80,19 @@ class ImplicitAPI:
80
80
  private_subaccounts_post_sub_accounts_user_id_unlock = privateSubAccountsPostSubAccountsUserIdUnlock = Entry('sub_accounts/{user_id}/unlock', ['private', 'subAccounts'], 'POST', {'cost': 1})
81
81
  private_subaccounts_put_sub_accounts_user_id_keys_key = privateSubAccountsPutSubAccountsUserIdKeysKey = Entry('sub_accounts/{user_id}/keys/{key}', ['private', 'subAccounts'], 'PUT', {'cost': 1})
82
82
  private_subaccounts_delete_sub_accounts_user_id_keys_key = privateSubAccountsDeleteSubAccountsUserIdKeysKey = Entry('sub_accounts/{user_id}/keys/{key}', ['private', 'subAccounts'], 'DELETE', {'cost': 1})
83
+ private_portfolio_get_accounts = privatePortfolioGetAccounts = Entry('accounts', ['private', 'portfolio'], 'GET', {'cost': 1.5})
84
+ private_portfolio_get_account_mode = privatePortfolioGetAccountMode = Entry('account_mode', ['private', 'portfolio'], 'GET', {'cost': 1.5})
85
+ private_portfolio_get_borrowable = privatePortfolioGetBorrowable = Entry('borrowable', ['private', 'portfolio'], 'GET', {'cost': 1.5})
86
+ private_portfolio_get_transferable = privatePortfolioGetTransferable = Entry('transferable', ['private', 'portfolio'], 'GET', {'cost': 1.5})
87
+ private_portfolio_get_loans = privatePortfolioGetLoans = Entry('loans', ['private', 'portfolio'], 'GET', {'cost': 1.5})
88
+ private_portfolio_get_loan_records = privatePortfolioGetLoanRecords = Entry('loan_records', ['private', 'portfolio'], 'GET', {'cost': 1.5})
89
+ private_portfolio_get_interest_records = privatePortfolioGetInterestRecords = Entry('interest_records', ['private', 'portfolio'], 'GET', {'cost': 1.5})
90
+ private_portfolio_get_spot_orders = privatePortfolioGetSpotOrders = Entry('spot/orders', ['private', 'portfolio'], 'GET', {'cost': 1.5})
91
+ private_portfolio_get_spot_orders_order_id = privatePortfolioGetSpotOrdersOrderId = Entry('spot/orders/{order_id}', ['private', 'portfolio'], 'GET', {'cost': 1.5})
92
+ private_portfolio_post_loans = privatePortfolioPostLoans = Entry('loans', ['private', 'portfolio'], 'POST', {'cost': 1.5})
93
+ private_portfolio_post_spot_orders = privatePortfolioPostSpotOrders = Entry('spot/orders', ['private', 'portfolio'], 'POST', {'cost': 1.5})
94
+ private_portfolio_delete_spot_orders_order_id = privatePortfolioDeleteSpotOrdersOrderId = Entry('spot/orders/{order_id}', ['private', 'portfolio'], 'DELETE', {'cost': 1.5})
95
+ private_portfolio_patch_spot_orders_order_id = privatePortfolioPatchSpotOrdersOrderId = Entry('spot/orders/{order_id}', ['private', 'portfolio'], 'PATCH', {'cost': 1.5})
83
96
  private_spot_get_fee = privateSpotGetFee = Entry('fee', ['private', 'spot'], 'GET', {'cost': 1})
84
97
  private_spot_get_batch_fee = privateSpotGetBatchFee = Entry('batch_fee', ['private', 'spot'], 'GET', {'cost': 1})
85
98
  private_spot_get_accounts = privateSpotGetAccounts = Entry('accounts', ['private', 'spot'], 'GET', {'cost': 1})
@@ -213,10 +226,21 @@ class ImplicitAPI:
213
226
  private_earn_get_uni_interest_records = privateEarnGetUniInterestRecords = Entry('uni/interest_records', ['private', 'earn'], 'GET', {'cost': 1.5})
214
227
  private_earn_post_uni_lends = privateEarnPostUniLends = Entry('uni/lends', ['private', 'earn'], 'POST', {'cost': 1.5})
215
228
  private_earn_patch_uni_lends = privateEarnPatchUniLends = Entry('uni/lends', ['private', 'earn'], 'PATCH', {'cost': 1.5})
229
+ private_loan_get_collateral_orders = privateLoanGetCollateralOrders = Entry('collateral/orders', ['private', 'loan'], 'GET', {'cost': 1.5})
230
+ private_loan_get_collateral_orders_order_id = privateLoanGetCollateralOrdersOrderId = Entry('collateral/orders/{order_id}', ['private', 'loan'], 'GET', {'cost': 1.5})
231
+ private_loan_get_collateral_repay_records = privateLoanGetCollateralRepayRecords = Entry('collateral/repay_records', ['private', 'loan'], 'GET', {'cost': 1.5})
232
+ private_loan_get_collateral_collaterals = privateLoanGetCollateralCollaterals = Entry('collateral/collaterals', ['private', 'loan'], 'GET', {'cost': 1.5})
233
+ private_loan_get_collateral_total_amount = privateLoanGetCollateralTotalAmount = Entry('collateral/total_amount', ['private', 'loan'], 'GET', {'cost': 1.5})
234
+ private_loan_get_collateral_ltv = privateLoanGetCollateralLtv = Entry('collateral/ltv', ['private', 'loan'], 'GET', {'cost': 1.5})
235
+ private_loan_get_collateral_currencies = privateLoanGetCollateralCurrencies = Entry('collateral/currencies', ['private', 'loan'], 'GET', {'cost': 1.5})
236
+ private_loan_post_collateral_orders = privateLoanPostCollateralOrders = Entry('collateral/orders', ['private', 'loan'], 'POST', {'cost': 1.5})
237
+ private_loan_post_collateral_repay = privateLoanPostCollateralRepay = Entry('collateral/repay', ['private', 'loan'], 'POST', {'cost': 1.5})
238
+ private_loan_post_collateral_collaterals = privateLoanPostCollateralCollaterals = Entry('collateral/collaterals', ['private', 'loan'], 'POST', {'cost': 1.5})
216
239
  private_account_get_detail = privateAccountGetDetail = Entry('detail', ['private', 'account'], 'GET', {'cost': 1.5})
217
240
  private_account_get_stp_groups = privateAccountGetStpGroups = Entry('stp_groups', ['private', 'account'], 'GET', {'cost': 1.5})
218
241
  private_account_get_stp_groups_stp_id_users = privateAccountGetStpGroupsStpIdUsers = Entry('stp_groups/{stp_id}/users', ['private', 'account'], 'GET', {'cost': 1.5})
219
242
  private_account_post_stp_groups = privateAccountPostStpGroups = Entry('stp_groups', ['private', 'account'], 'POST', {'cost': 1.5})
220
243
  private_account_post_stp_groups_stp_id_users = privateAccountPostStpGroupsStpIdUsers = Entry('stp_groups/{stp_id}/users', ['private', 'account'], 'POST', {'cost': 1.5})
244
+ private_account_delete_stp_groups_stp_id_users = privateAccountDeleteStpGroupsStpIdUsers = Entry('stp_groups/{stp_id}/users', ['private', 'account'], 'DELETE', {'cost': 1.5})
221
245
  private_rebate_get_agency_transaction_history = privateRebateGetAgencyTransactionHistory = Entry('agency/transaction_history', ['private', 'rebate'], 'GET', {'cost': 1.5})
222
246
  private_rebate_get_agency_commission_history = privateRebateGetAgencyCommissionHistory = Entry('agency/commission_history', ['private', 'rebate'], 'GET', {'cost': 1.5})
@@ -80,6 +80,19 @@ class ImplicitAPI:
80
80
  private_subaccounts_post_sub_accounts_user_id_unlock = privateSubAccountsPostSubAccountsUserIdUnlock = Entry('sub_accounts/{user_id}/unlock', ['private', 'subAccounts'], 'POST', {'cost': 1})
81
81
  private_subaccounts_put_sub_accounts_user_id_keys_key = privateSubAccountsPutSubAccountsUserIdKeysKey = Entry('sub_accounts/{user_id}/keys/{key}', ['private', 'subAccounts'], 'PUT', {'cost': 1})
82
82
  private_subaccounts_delete_sub_accounts_user_id_keys_key = privateSubAccountsDeleteSubAccountsUserIdKeysKey = Entry('sub_accounts/{user_id}/keys/{key}', ['private', 'subAccounts'], 'DELETE', {'cost': 1})
83
+ private_portfolio_get_accounts = privatePortfolioGetAccounts = Entry('accounts', ['private', 'portfolio'], 'GET', {'cost': 1.5})
84
+ private_portfolio_get_account_mode = privatePortfolioGetAccountMode = Entry('account_mode', ['private', 'portfolio'], 'GET', {'cost': 1.5})
85
+ private_portfolio_get_borrowable = privatePortfolioGetBorrowable = Entry('borrowable', ['private', 'portfolio'], 'GET', {'cost': 1.5})
86
+ private_portfolio_get_transferable = privatePortfolioGetTransferable = Entry('transferable', ['private', 'portfolio'], 'GET', {'cost': 1.5})
87
+ private_portfolio_get_loans = privatePortfolioGetLoans = Entry('loans', ['private', 'portfolio'], 'GET', {'cost': 1.5})
88
+ private_portfolio_get_loan_records = privatePortfolioGetLoanRecords = Entry('loan_records', ['private', 'portfolio'], 'GET', {'cost': 1.5})
89
+ private_portfolio_get_interest_records = privatePortfolioGetInterestRecords = Entry('interest_records', ['private', 'portfolio'], 'GET', {'cost': 1.5})
90
+ private_portfolio_get_spot_orders = privatePortfolioGetSpotOrders = Entry('spot/orders', ['private', 'portfolio'], 'GET', {'cost': 1.5})
91
+ private_portfolio_get_spot_orders_order_id = privatePortfolioGetSpotOrdersOrderId = Entry('spot/orders/{order_id}', ['private', 'portfolio'], 'GET', {'cost': 1.5})
92
+ private_portfolio_post_loans = privatePortfolioPostLoans = Entry('loans', ['private', 'portfolio'], 'POST', {'cost': 1.5})
93
+ private_portfolio_post_spot_orders = privatePortfolioPostSpotOrders = Entry('spot/orders', ['private', 'portfolio'], 'POST', {'cost': 1.5})
94
+ private_portfolio_delete_spot_orders_order_id = privatePortfolioDeleteSpotOrdersOrderId = Entry('spot/orders/{order_id}', ['private', 'portfolio'], 'DELETE', {'cost': 1.5})
95
+ private_portfolio_patch_spot_orders_order_id = privatePortfolioPatchSpotOrdersOrderId = Entry('spot/orders/{order_id}', ['private', 'portfolio'], 'PATCH', {'cost': 1.5})
83
96
  private_spot_get_fee = privateSpotGetFee = Entry('fee', ['private', 'spot'], 'GET', {'cost': 1})
84
97
  private_spot_get_batch_fee = privateSpotGetBatchFee = Entry('batch_fee', ['private', 'spot'], 'GET', {'cost': 1})
85
98
  private_spot_get_accounts = privateSpotGetAccounts = Entry('accounts', ['private', 'spot'], 'GET', {'cost': 1})
@@ -213,10 +226,21 @@ class ImplicitAPI:
213
226
  private_earn_get_uni_interest_records = privateEarnGetUniInterestRecords = Entry('uni/interest_records', ['private', 'earn'], 'GET', {'cost': 1.5})
214
227
  private_earn_post_uni_lends = privateEarnPostUniLends = Entry('uni/lends', ['private', 'earn'], 'POST', {'cost': 1.5})
215
228
  private_earn_patch_uni_lends = privateEarnPatchUniLends = Entry('uni/lends', ['private', 'earn'], 'PATCH', {'cost': 1.5})
229
+ private_loan_get_collateral_orders = privateLoanGetCollateralOrders = Entry('collateral/orders', ['private', 'loan'], 'GET', {'cost': 1.5})
230
+ private_loan_get_collateral_orders_order_id = privateLoanGetCollateralOrdersOrderId = Entry('collateral/orders/{order_id}', ['private', 'loan'], 'GET', {'cost': 1.5})
231
+ private_loan_get_collateral_repay_records = privateLoanGetCollateralRepayRecords = Entry('collateral/repay_records', ['private', 'loan'], 'GET', {'cost': 1.5})
232
+ private_loan_get_collateral_collaterals = privateLoanGetCollateralCollaterals = Entry('collateral/collaterals', ['private', 'loan'], 'GET', {'cost': 1.5})
233
+ private_loan_get_collateral_total_amount = privateLoanGetCollateralTotalAmount = Entry('collateral/total_amount', ['private', 'loan'], 'GET', {'cost': 1.5})
234
+ private_loan_get_collateral_ltv = privateLoanGetCollateralLtv = Entry('collateral/ltv', ['private', 'loan'], 'GET', {'cost': 1.5})
235
+ private_loan_get_collateral_currencies = privateLoanGetCollateralCurrencies = Entry('collateral/currencies', ['private', 'loan'], 'GET', {'cost': 1.5})
236
+ private_loan_post_collateral_orders = privateLoanPostCollateralOrders = Entry('collateral/orders', ['private', 'loan'], 'POST', {'cost': 1.5})
237
+ private_loan_post_collateral_repay = privateLoanPostCollateralRepay = Entry('collateral/repay', ['private', 'loan'], 'POST', {'cost': 1.5})
238
+ private_loan_post_collateral_collaterals = privateLoanPostCollateralCollaterals = Entry('collateral/collaterals', ['private', 'loan'], 'POST', {'cost': 1.5})
216
239
  private_account_get_detail = privateAccountGetDetail = Entry('detail', ['private', 'account'], 'GET', {'cost': 1.5})
217
240
  private_account_get_stp_groups = privateAccountGetStpGroups = Entry('stp_groups', ['private', 'account'], 'GET', {'cost': 1.5})
218
241
  private_account_get_stp_groups_stp_id_users = privateAccountGetStpGroupsStpIdUsers = Entry('stp_groups/{stp_id}/users', ['private', 'account'], 'GET', {'cost': 1.5})
219
242
  private_account_post_stp_groups = privateAccountPostStpGroups = Entry('stp_groups', ['private', 'account'], 'POST', {'cost': 1.5})
220
243
  private_account_post_stp_groups_stp_id_users = privateAccountPostStpGroupsStpIdUsers = Entry('stp_groups/{stp_id}/users', ['private', 'account'], 'POST', {'cost': 1.5})
244
+ private_account_delete_stp_groups_stp_id_users = privateAccountDeleteStpGroupsStpIdUsers = Entry('stp_groups/{stp_id}/users', ['private', 'account'], 'DELETE', {'cost': 1.5})
221
245
  private_rebate_get_agency_transaction_history = privateRebateGetAgencyTransactionHistory = Entry('agency/transaction_history', ['private', 'rebate'], 'GET', {'cost': 1.5})
222
246
  private_rebate_get_agency_commission_history = privateRebateGetAgencyCommissionHistory = Entry('agency/commission_history', ['private', 'rebate'], 'GET', {'cost': 1.5})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.0.76'
7
+ __version__ = '4.0.77'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.0.76'
5
+ __version__ = '4.0.77'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -1070,9 +1070,9 @@ class bingx(Exchange, ImplicitAPI):
1070
1070
  }
1071
1071
  response = None
1072
1072
  if market['spot']:
1073
- response = await self.swapV2PublicGetQuoteTicker(self.extend(request, params))
1073
+ response = await self.spotV1PrivateGetTicker24hr(self.extend(request, params))
1074
1074
  else:
1075
- response = await self.spotV1PublicGetCommonSymbols(self.extend(request, params))
1075
+ response = await self.swapV2PublicGetQuoteTicker(self.extend(request, params))
1076
1076
  #
1077
1077
  # {
1078
1078
  # "code": 0,
@@ -1094,7 +1094,8 @@ class bingx(Exchange, ImplicitAPI):
1094
1094
  # }
1095
1095
  #
1096
1096
  data = self.safe_value(response, 'data')
1097
- return self.parse_ticker(data, market)
1097
+ ticker = self.safe_value(data, 0, data)
1098
+ return self.parse_ticker(ticker, market)
1098
1099
 
1099
1100
  async def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}):
1100
1101
  """
@@ -1138,6 +1139,20 @@ class bingx(Exchange, ImplicitAPI):
1138
1139
  return self.parse_tickers(tickers, symbols)
1139
1140
 
1140
1141
  def parse_ticker(self, ticker, market=None):
1142
+ #
1143
+ # spot
1144
+ # {
1145
+ # symbol: 'BTC-USDT',
1146
+ # openPrice: '26032.08',
1147
+ # highPrice: '26178.86',
1148
+ # lowPrice: '25968.18',
1149
+ # lastPrice: '26113.60',
1150
+ # volume: '1161.79',
1151
+ # quoteVolume: '30288466.44',
1152
+ # openTime: '1693081020762',
1153
+ # closeTime: '1693167420762'
1154
+ # }
1155
+ # swap
1141
1156
  #
1142
1157
  # {
1143
1158
  # "symbol": "BTC-USDT",
@@ -1155,15 +1170,15 @@ class bingx(Exchange, ImplicitAPI):
1155
1170
  # }
1156
1171
  #
1157
1172
  marketId = self.safe_string(ticker, 'symbol')
1158
- defaultType = self.safe_string(self.options, 'defaultType', 'swap')
1159
- symbol = self.safe_symbol(marketId, market, '-', defaultType)
1173
+ change = self.safe_string(ticker, 'priceChange')
1174
+ type = 'spot' if (change is None) else 'swap'
1175
+ symbol = self.safe_symbol(marketId, market, None, type)
1160
1176
  open = self.safe_string(ticker, 'openPrice')
1161
1177
  high = self.safe_string(ticker, 'highPrice')
1162
1178
  low = self.safe_string(ticker, 'lowPrice')
1163
1179
  close = self.safe_string(ticker, 'lastPrice')
1164
1180
  quoteVolume = self.safe_string(ticker, 'quoteVolume')
1165
1181
  baseVolume = self.safe_string(ticker, 'volume')
1166
- change = self.safe_string(ticker, 'chapriceChangenge')
1167
1182
  percentage = self.safe_string(ticker, 'priceChangePercent')
1168
1183
  ts = self.safe_integer(ticker, 'closeTime')
1169
1184
  datetime = self.iso8601(ts)
@@ -298,6 +298,29 @@ class gate(Exchange, ImplicitAPI):
298
298
  'sub_accounts/{user_id}/keys/{key}': 1,
299
299
  },
300
300
  },
301
+ 'portfolio': {
302
+ 'get': {
303
+ 'accounts': 1.5,
304
+ 'account_mode': 1.5,
305
+ 'borrowable': 1.5,
306
+ 'transferable': 1.5,
307
+ 'loans': 1.5,
308
+ 'loan_records': 1.5,
309
+ 'interest_records': 1.5,
310
+ 'spot/orders': 1.5,
311
+ 'spot/orders/{order_id}': 1.5,
312
+ },
313
+ 'post': {
314
+ 'loans': 1.5,
315
+ 'spot/orders': 1.5,
316
+ },
317
+ 'delete': {
318
+ 'spot/orders/{order_id}': 1.5,
319
+ },
320
+ 'patch': {
321
+ 'spot/orders/{order_id}': 1.5,
322
+ },
323
+ },
301
324
  'spot': {
302
325
  'get': {
303
326
  'fee': 1,
@@ -491,6 +514,22 @@ class gate(Exchange, ImplicitAPI):
491
514
  'uni/lends': 1.5,
492
515
  },
493
516
  },
517
+ 'loan': {
518
+ 'get': {
519
+ 'collateral/orders': 1.5,
520
+ 'collateral/orders/{order_id}': 1.5,
521
+ 'collateral/repay_records': 1.5,
522
+ 'collateral/collaterals': 1.5,
523
+ 'collateral/total_amount': 1.5,
524
+ 'collateral/ltv': 1.5,
525
+ 'collateral/currencies': 1.5,
526
+ },
527
+ 'post': {
528
+ 'collateral/orders': 1.5,
529
+ 'collateral/repay': 1.5,
530
+ 'collateral/collaterals': 1.5,
531
+ },
532
+ },
494
533
  'account': {
495
534
  'get': {
496
535
  'detail': 1.5,
@@ -501,6 +540,9 @@ class gate(Exchange, ImplicitAPI):
501
540
  'stp_groups': 1.5,
502
541
  'stp_groups/{stp_id}/users': 1.5,
503
542
  },
543
+ 'delete': {
544
+ 'stp_groups/{stp_id}/users': 1.5,
545
+ },
504
546
  },
505
547
  'rebate': {
506
548
  'get': {
@@ -268,6 +268,7 @@ class whitebit(Exchange, ImplicitAPI):
268
268
  '422': OrderNotFound, # {"response":null,"status":422,"errors":{"orderId":["Finished order id 1295772653 not found on your account"]},"notification":null,"warning":"Finished order id 1295772653 not found on your account","_token":null}
269
269
  },
270
270
  'broad': {
271
+ 'This action is unauthorized': PermissionDenied, # {"code":2,"message":"This action is unauthorized. Enable your key in API settings"}
271
272
  'Given amount is less than min amount': InvalidOrder, # {"code":0,"message":"Validation failed","errors":{"amount":["Given amount is less than min amount 200000"],"total":["Total is less than 5.05"]}}
272
273
  'Total is less than': InvalidOrder, # {"code":0,"message":"Validation failed","errors":{"amount":["Given amount is less than min amount 200000"],"total":["Total is less than 5.05"]}}
273
274
  'fee must be no less than': InvalidOrder, # {"code":0,"message":"Validation failed","errors":{"amount":["Total amount + fee must be no less than 5.05505"]}}
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.0.76'
7
+ __version__ = '4.0.77'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -1069,9 +1069,9 @@ class bingx(Exchange, ImplicitAPI):
1069
1069
  }
1070
1070
  response = None
1071
1071
  if market['spot']:
1072
- response = self.swapV2PublicGetQuoteTicker(self.extend(request, params))
1072
+ response = self.spotV1PrivateGetTicker24hr(self.extend(request, params))
1073
1073
  else:
1074
- response = self.spotV1PublicGetCommonSymbols(self.extend(request, params))
1074
+ response = self.swapV2PublicGetQuoteTicker(self.extend(request, params))
1075
1075
  #
1076
1076
  # {
1077
1077
  # "code": 0,
@@ -1093,7 +1093,8 @@ class bingx(Exchange, ImplicitAPI):
1093
1093
  # }
1094
1094
  #
1095
1095
  data = self.safe_value(response, 'data')
1096
- return self.parse_ticker(data, market)
1096
+ ticker = self.safe_value(data, 0, data)
1097
+ return self.parse_ticker(ticker, market)
1097
1098
 
1098
1099
  def fetch_tickers(self, symbols: Optional[List[str]] = None, params={}):
1099
1100
  """
@@ -1137,6 +1138,20 @@ class bingx(Exchange, ImplicitAPI):
1137
1138
  return self.parse_tickers(tickers, symbols)
1138
1139
 
1139
1140
  def parse_ticker(self, ticker, market=None):
1141
+ #
1142
+ # spot
1143
+ # {
1144
+ # symbol: 'BTC-USDT',
1145
+ # openPrice: '26032.08',
1146
+ # highPrice: '26178.86',
1147
+ # lowPrice: '25968.18',
1148
+ # lastPrice: '26113.60',
1149
+ # volume: '1161.79',
1150
+ # quoteVolume: '30288466.44',
1151
+ # openTime: '1693081020762',
1152
+ # closeTime: '1693167420762'
1153
+ # }
1154
+ # swap
1140
1155
  #
1141
1156
  # {
1142
1157
  # "symbol": "BTC-USDT",
@@ -1154,15 +1169,15 @@ class bingx(Exchange, ImplicitAPI):
1154
1169
  # }
1155
1170
  #
1156
1171
  marketId = self.safe_string(ticker, 'symbol')
1157
- defaultType = self.safe_string(self.options, 'defaultType', 'swap')
1158
- symbol = self.safe_symbol(marketId, market, '-', defaultType)
1172
+ change = self.safe_string(ticker, 'priceChange')
1173
+ type = 'spot' if (change is None) else 'swap'
1174
+ symbol = self.safe_symbol(marketId, market, None, type)
1159
1175
  open = self.safe_string(ticker, 'openPrice')
1160
1176
  high = self.safe_string(ticker, 'highPrice')
1161
1177
  low = self.safe_string(ticker, 'lowPrice')
1162
1178
  close = self.safe_string(ticker, 'lastPrice')
1163
1179
  quoteVolume = self.safe_string(ticker, 'quoteVolume')
1164
1180
  baseVolume = self.safe_string(ticker, 'volume')
1165
- change = self.safe_string(ticker, 'chapriceChangenge')
1166
1181
  percentage = self.safe_string(ticker, 'priceChangePercent')
1167
1182
  ts = self.safe_integer(ticker, 'closeTime')
1168
1183
  datetime = self.iso8601(ts)
@@ -297,6 +297,29 @@ class gate(Exchange, ImplicitAPI):
297
297
  'sub_accounts/{user_id}/keys/{key}': 1,
298
298
  },
299
299
  },
300
+ 'portfolio': {
301
+ 'get': {
302
+ 'accounts': 1.5,
303
+ 'account_mode': 1.5,
304
+ 'borrowable': 1.5,
305
+ 'transferable': 1.5,
306
+ 'loans': 1.5,
307
+ 'loan_records': 1.5,
308
+ 'interest_records': 1.5,
309
+ 'spot/orders': 1.5,
310
+ 'spot/orders/{order_id}': 1.5,
311
+ },
312
+ 'post': {
313
+ 'loans': 1.5,
314
+ 'spot/orders': 1.5,
315
+ },
316
+ 'delete': {
317
+ 'spot/orders/{order_id}': 1.5,
318
+ },
319
+ 'patch': {
320
+ 'spot/orders/{order_id}': 1.5,
321
+ },
322
+ },
300
323
  'spot': {
301
324
  'get': {
302
325
  'fee': 1,
@@ -490,6 +513,22 @@ class gate(Exchange, ImplicitAPI):
490
513
  'uni/lends': 1.5,
491
514
  },
492
515
  },
516
+ 'loan': {
517
+ 'get': {
518
+ 'collateral/orders': 1.5,
519
+ 'collateral/orders/{order_id}': 1.5,
520
+ 'collateral/repay_records': 1.5,
521
+ 'collateral/collaterals': 1.5,
522
+ 'collateral/total_amount': 1.5,
523
+ 'collateral/ltv': 1.5,
524
+ 'collateral/currencies': 1.5,
525
+ },
526
+ 'post': {
527
+ 'collateral/orders': 1.5,
528
+ 'collateral/repay': 1.5,
529
+ 'collateral/collaterals': 1.5,
530
+ },
531
+ },
493
532
  'account': {
494
533
  'get': {
495
534
  'detail': 1.5,
@@ -500,6 +539,9 @@ class gate(Exchange, ImplicitAPI):
500
539
  'stp_groups': 1.5,
501
540
  'stp_groups/{stp_id}/users': 1.5,
502
541
  },
542
+ 'delete': {
543
+ 'stp_groups/{stp_id}/users': 1.5,
544
+ },
503
545
  },
504
546
  'rebate': {
505
547
  'get': {
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.0.76'
7
+ __version__ = '4.0.77'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
@@ -11,6 +11,7 @@ from ccxt.base.types import OrderType
11
11
  from ccxt.async_support.base.ws.client import Client
12
12
  from typing import Optional
13
13
  from typing import List
14
+ from ccxt.base.errors import ArgumentsRequired
14
15
  from ccxt.base.errors import BadRequest
15
16
  from ccxt.base.errors import InvalidNonce
16
17
  from ccxt.base.errors import AuthenticationError
@@ -226,6 +227,8 @@ class okx(ccxt.async_support.okx):
226
227
  :param str [params.channel]: the channel to subscribe to, tickers by default. Can be tickers, sprd-tickers, index-tickers, block-tickers
227
228
  :returns dict: a `ticker structure <https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure>`
228
229
  """
230
+ if self.is_empty(symbols):
231
+ raise ArgumentsRequired(self.id + ' watchTickers requires a list of symbols')
229
232
  channel = None
230
233
  channel, params = self.handle_option_and_params(params, 'watchTickers', 'channel', 'tickers')
231
234
  newTickers = await self.subscribe_multiple('public', channel, symbols, params)
@@ -268,6 +268,7 @@ class whitebit(Exchange, ImplicitAPI):
268
268
  '422': OrderNotFound, # {"response":null,"status":422,"errors":{"orderId":["Finished order id 1295772653 not found on your account"]},"notification":null,"warning":"Finished order id 1295772653 not found on your account","_token":null}
269
269
  },
270
270
  'broad': {
271
+ 'This action is unauthorized': PermissionDenied, # {"code":2,"message":"This action is unauthorized. Enable your key in API settings"}
271
272
  'Given amount is less than min amount': InvalidOrder, # {"code":0,"message":"Validation failed","errors":{"amount":["Given amount is less than min amount 200000"],"total":["Total is less than 5.05"]}}
272
273
  'Total is less than': InvalidOrder, # {"code":0,"message":"Validation failed","errors":{"amount":["Given amount is less than min amount 200000"],"total":["Total is less than 5.05"]}}
273
274
  'fee must be no less than': InvalidOrder, # {"code":0,"message":"Validation failed","errors":{"amount":["Total amount + fee must be no less than 5.05505"]}}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.0.76
3
+ Version: 4.0.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
@@ -228,13 +228,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
228
228
 
229
229
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
230
230
 
231
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.76/dist/ccxt.browser.js
232
- * unpkg: https://unpkg.com/ccxt@4.0.76/dist/ccxt.browser.js
231
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.77/dist/ccxt.browser.js
232
+ * unpkg: https://unpkg.com/ccxt@4.0.77/dist/ccxt.browser.js
233
233
 
234
234
  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.
235
235
 
236
236
  ```HTML
237
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.76/dist/ccxt.browser.js"></script>
237
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.77/dist/ccxt.browser.js"></script>
238
238
  ```
239
239
 
240
240
  Creates a global `ccxt` object:
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccxt",
3
- "version": "4.0.76",
3
+ "version": "4.0.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