ccxt 4.0.77__tar.gz → 4.0.78__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.
Potentially problematic release.
This version of ccxt might be problematic. Click here for more details.
- {ccxt-4.0.77/ccxt.egg-info → ccxt-4.0.78}/PKG-INFO +4 -4
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/__init__.py +1 -1
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bingx.py +1 -1
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/okex.py +1 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/okex5.py +1 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/okx.py +1 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/__init__.py +1 -1
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/base/exchange.py +7 -2
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bingx.py +21 -17
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/kucoinfutures.py +1 -1
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/okx.py +1 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/base/exchange.py +7 -2
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bingx.py +21 -17
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/kucoinfutures.py +1 -1
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/okx.py +1 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/__init__.py +1 -1
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/test_async.py +8 -3
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/test_sync.py +8 -3
- {ccxt-4.0.77 → ccxt-4.0.78/ccxt.egg-info}/PKG-INFO +4 -4
- {ccxt-4.0.77 → ccxt-4.0.78}/package.json +1 -1
- {ccxt-4.0.77 → ccxt-4.0.78}/LICENSE.txt +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/MANIFEST.in +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/README.rst +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/__init__.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/ace.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/alpaca.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/ascendex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bequant.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bigone.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/binance.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/binancecoinm.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/binanceus.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/binanceusdm.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bit2c.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bitbank.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bitbay.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bitbns.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bitcoincom.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bitfinex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bitfinex2.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bitflyer.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bitforex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bitget.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bithumb.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bitmart.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bitmex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bitopro.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bitpanda.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bitrue.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bitso.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bitstamp.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bitstamp1.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bittrex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bitvavo.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bkex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bl3p.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/blockchaincom.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/btcalpha.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/btcbox.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/btcmarkets.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/btctradeua.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/btcturk.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/bybit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/cex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/coinbase.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/coinbaseprime.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/coinbasepro.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/coincheck.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/coinex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/coinfalcon.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/coinmate.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/coinone.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/coinsph.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/coinspot.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/cryptocom.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/currencycom.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/delta.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/deribit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/digifinex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/exmo.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/fmfwio.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/gate.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/gateio.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/gemini.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/hitbtc.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/hitbtc3.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/hollaex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/huobi.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/huobijp.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/huobipro.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/idex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/independentreserve.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/indodax.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/kraken.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/krakenfutures.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/kucoin.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/kucoinfutures.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/kuna.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/latoken.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/lbank.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/lbank2.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/luno.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/lykke.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/mercado.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/mexc.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/mexc3.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/ndax.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/novadax.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/oceanex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/okcoin.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/paymium.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/phemex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/poloniex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/poloniexfutures.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/probit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/tidex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/timex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/tokocrypto.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/upbit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/wavesexchange.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/wazirx.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/whitebit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/woo.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/yobit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/zaif.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/abstract/zonda.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/ace.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/alpaca.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/ascendex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/ace.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/alpaca.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/ascendex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/base/__init__.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/base/throttler.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/base/ws/__init__.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/base/ws/cache.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/base/ws/client.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/base/ws/fast_client.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/base/ws/functions.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/base/ws/future.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/base/ws/order_book.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/base/ws/order_book_side.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bequant.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bigone.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/binance.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/binancecoinm.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/binanceus.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/binanceusdm.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bit2c.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bitbank.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bitbay.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bitbns.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bitcoincom.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bitfinex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bitfinex2.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bitflyer.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bitforex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bitget.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bithumb.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bitmart.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bitmex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bitopro.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bitpanda.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bitrue.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bitso.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bitstamp.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bitstamp1.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bittrex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bitvavo.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bkex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bl3p.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/blockchaincom.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/btcalpha.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/btcbox.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/btcmarkets.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/btctradeua.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/btcturk.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/bybit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/cex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/coinbase.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/coinbaseprime.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/coinbasepro.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/coincheck.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/coinex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/coinfalcon.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/coinmate.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/coinone.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/coinsph.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/coinspot.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/cryptocom.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/currencycom.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/delta.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/deribit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/digifinex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/exmo.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/flowbtc.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/fmfwio.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/gate.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/gateio.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/gemini.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/hitbtc.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/hitbtc3.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/hollaex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/huobi.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/huobijp.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/huobipro.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/idex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/independentreserve.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/indodax.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/kraken.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/krakenfutures.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/kucoin.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/kuna.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/latoken.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/lbank.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/lbank2.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/luno.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/lykke.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/mercado.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/mexc.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/mexc3.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/ndax.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/novadax.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/oceanex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/okcoin.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/okex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/okex5.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/paymium.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/phemex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/poloniex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/poloniexfutures.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/probit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/tidex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/timex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/tokocrypto.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/upbit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/wavesexchange.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/wazirx.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/whitebit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/woo.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/yobit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/zaif.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/async_support/zonda.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/base/__init__.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/base/decimal_to_precision.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/base/errors.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/base/precise.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/base/types.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bequant.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bigone.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/binance.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/binancecoinm.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/binanceus.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/binanceusdm.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bit2c.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bitbank.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bitbay.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bitbns.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bitcoincom.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bitfinex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bitfinex2.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bitflyer.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bitforex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bitget.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bithumb.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bitmart.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bitmex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bitopro.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bitpanda.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bitrue.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bitso.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bitstamp.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bitstamp1.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bittrex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bitvavo.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bkex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bl3p.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/blockchaincom.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/btcalpha.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/btcbox.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/btcmarkets.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/btctradeua.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/btcturk.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/bybit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/cex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/coinbase.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/coinbaseprime.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/coinbasepro.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/coincheck.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/coinex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/coinfalcon.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/coinmate.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/coinone.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/coinsph.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/coinspot.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/cryptocom.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/currencycom.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/delta.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/deribit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/digifinex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/exmo.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/flowbtc.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/fmfwio.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/gate.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/gateio.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/gemini.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/hitbtc.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/hitbtc3.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/hollaex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/huobi.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/huobijp.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/huobipro.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/idex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/independentreserve.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/indodax.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/kraken.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/krakenfutures.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/kucoin.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/kuna.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/latoken.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/lbank.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/lbank2.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/luno.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/lykke.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/mercado.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/mexc.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/mexc3.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/ndax.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/novadax.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/oceanex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/okcoin.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/okex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/okex5.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/paymium.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/phemex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/poloniex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/poloniexfutures.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/alpaca.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/ascendex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/bequant.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/binance.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/binancecoinm.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/binanceus.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/binanceusdm.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/bitcoincom.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/bitfinex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/bitfinex2.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/bitget.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/bitmart.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/bitmex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/bitopro.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/bitpanda.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/bitrue.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/bitstamp.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/bittrex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/bitvavo.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/blockchaincom.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/btcex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/bybit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/cex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/coinbase.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/coinbaseprime.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/coinbasepro.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/coinex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/cryptocom.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/currencycom.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/deribit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/exmo.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/gate.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/gateio.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/gemini.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/hitbtc.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/hollaex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/huobi.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/huobijp.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/huobipro.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/idex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/independentreserve.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/kraken.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/krakenfutures.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/kucoin.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/kucoinfutures.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/luno.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/mexc.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/mexc3.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/ndax.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/okcoin.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/okex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/okx.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/phemex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/poloniex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/poloniexfutures.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/probit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/ripio.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/upbit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/wazirx.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/whitebit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/woo.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/pro/zb.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/probit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/static_dependencies/__init__.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/static_dependencies/ecdsa/der.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/static_dependencies/ecdsa/util.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/static_dependencies/keccak/__init__.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/static_dependencies/keccak/keccak.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/__init__.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/__init__.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_account.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_balance.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_borrow_interest.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_borrow_rate.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_calculate_fee.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_crypto.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_currency.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_datetime.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_decimal_to_precision.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_deep_extend.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_funding_rate_history.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_ledger_entry.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_ledger_item.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_leverage_tier.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_margin_modification.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_market.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_number.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_ohlcv.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_open_interest.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_order.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_order_book.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_position.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_shared_methods.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_status.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_throttle.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_ticker.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_trade.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_trading_fee.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/test/base/test_transaction.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/tidex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/timex.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/tokocrypto.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/upbit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/wavesexchange.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/wazirx.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/whitebit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/woo.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/yobit.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/zaif.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt/zonda.py +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt.egg-info/SOURCES.txt +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt.egg-info/dependency_links.txt +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt.egg-info/requires.txt +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/ccxt.egg-info/top_level.txt +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/setup.cfg +0 -0
- {ccxt-4.0.77 → ccxt-4.0.78}/setup.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.0.
|
3
|
+
Version: 4.0.78
|
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.
|
232
|
-
* unpkg: https://unpkg.com/ccxt@4.0.
|
231
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.78/dist/ccxt.browser.js
|
232
|
+
* unpkg: https://unpkg.com/ccxt@4.0.78/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.
|
237
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.78/dist/ccxt.browser.js"></script>
|
238
238
|
```
|
239
239
|
|
240
240
|
Creates a global `ccxt` object:
|
@@ -6,11 +6,11 @@ class ImplicitAPI:
|
|
6
6
|
spot_v1_public_get_market_trades = spotV1PublicGetMarketTrades = Entry('market/trades', ['spot', 'v1', 'public'], 'GET', {'cost': 3})
|
7
7
|
spot_v1_public_get_market_depth = spotV1PublicGetMarketDepth = Entry('market/depth', ['spot', 'v1', 'public'], 'GET', {'cost': 3})
|
8
8
|
spot_v1_public_get_market_kline = spotV1PublicGetMarketKline = Entry('market/kline', ['spot', 'v1', 'public'], 'GET', {'cost': 3})
|
9
|
+
spot_v1_public_get_ticker_24hr = spotV1PublicGetTicker24hr = Entry('ticker/24hr', ['spot', 'v1', 'public'], 'GET', {'cost': 1})
|
9
10
|
spot_v1_private_get_trade_query = spotV1PrivateGetTradeQuery = Entry('trade/query', ['spot', 'v1', 'private'], 'GET', {'cost': 3})
|
10
11
|
spot_v1_private_get_trade_openorders = spotV1PrivateGetTradeOpenOrders = Entry('trade/openOrders', ['spot', 'v1', 'private'], 'GET', {'cost': 3})
|
11
12
|
spot_v1_private_get_trade_historyorders = spotV1PrivateGetTradeHistoryOrders = Entry('trade/historyOrders', ['spot', 'v1', 'private'], 'GET', {'cost': 3})
|
12
13
|
spot_v1_private_get_account_balance = spotV1PrivateGetAccountBalance = Entry('account/balance', ['spot', 'v1', 'private'], 'GET', {'cost': 3})
|
13
|
-
spot_v1_private_get_ticker_24hr = spotV1PrivateGetTicker24hr = Entry('ticker/24hr', ['spot', 'v1', 'private'], 'GET', {'cost': 1})
|
14
14
|
spot_v1_private_post_trade_order = spotV1PrivatePostTradeOrder = Entry('trade/order', ['spot', 'v1', 'private'], 'POST', {'cost': 3})
|
15
15
|
spot_v1_private_post_trade_cancel = spotV1PrivatePostTradeCancel = Entry('trade/cancel', ['spot', 'v1', 'private'], 'POST', {'cost': 3})
|
16
16
|
spot_v1_private_post_trade_batchorders = spotV1PrivatePostTradeBatchOrders = Entry('trade/batchOrders', ['spot', 'v1', 'private'], 'POST', {'cost': 3})
|
@@ -60,6 +60,7 @@ class ImplicitAPI:
|
|
60
60
|
public_get_tradingbot_grid_ai_param = publicGetTradingBotGridAiParam = Entry('tradingBot/grid/ai-param', 'public', 'GET', {'cost': 1})
|
61
61
|
public_get_tradingbot_grid_min_investment = publicGetTradingBotGridMinInvestment = Entry('tradingBot/grid/min-investment', 'public', 'GET', {'cost': 1})
|
62
62
|
public_get_tradingbot_public_rsi_back_testing = publicGetTradingBotPublicRsiBackTesting = Entry('tradingBot/public/rsi-back-testing', 'public', 'GET', {'cost': 1})
|
63
|
+
public_get_asset_exchange_list = publicGetAssetExchangeList = Entry('asset/exchange-list', 'public', 'GET', {'cost': 1.6666666666666667})
|
63
64
|
public_get_finance_savings_lending_rate_summary = publicGetFinanceSavingsLendingRateSummary = Entry('finance/savings/lending-rate-summary', 'public', 'GET', {'cost': 1.6666666666666667})
|
64
65
|
public_get_finance_savings_lending_rate_history = publicGetFinanceSavingsLendingRateHistory = Entry('finance/savings/lending-rate-history', 'public', 'GET', {'cost': 1.6666666666666667})
|
65
66
|
public_get_finance_sfp_dcd_products = publicGetFinanceSfpDcdProducts = Entry('finance/sfp/dcd/products', 'public', 'GET', {'cost': 0.6666666666666666})
|
@@ -60,6 +60,7 @@ class ImplicitAPI:
|
|
60
60
|
public_get_tradingbot_grid_ai_param = publicGetTradingBotGridAiParam = Entry('tradingBot/grid/ai-param', 'public', 'GET', {'cost': 1})
|
61
61
|
public_get_tradingbot_grid_min_investment = publicGetTradingBotGridMinInvestment = Entry('tradingBot/grid/min-investment', 'public', 'GET', {'cost': 1})
|
62
62
|
public_get_tradingbot_public_rsi_back_testing = publicGetTradingBotPublicRsiBackTesting = Entry('tradingBot/public/rsi-back-testing', 'public', 'GET', {'cost': 1})
|
63
|
+
public_get_asset_exchange_list = publicGetAssetExchangeList = Entry('asset/exchange-list', 'public', 'GET', {'cost': 1.6666666666666667})
|
63
64
|
public_get_finance_savings_lending_rate_summary = publicGetFinanceSavingsLendingRateSummary = Entry('finance/savings/lending-rate-summary', 'public', 'GET', {'cost': 1.6666666666666667})
|
64
65
|
public_get_finance_savings_lending_rate_history = publicGetFinanceSavingsLendingRateHistory = Entry('finance/savings/lending-rate-history', 'public', 'GET', {'cost': 1.6666666666666667})
|
65
66
|
public_get_finance_sfp_dcd_products = publicGetFinanceSfpDcdProducts = Entry('finance/sfp/dcd/products', 'public', 'GET', {'cost': 0.6666666666666666})
|
@@ -60,6 +60,7 @@ class ImplicitAPI:
|
|
60
60
|
public_get_tradingbot_grid_ai_param = publicGetTradingBotGridAiParam = Entry('tradingBot/grid/ai-param', 'public', 'GET', {'cost': 1})
|
61
61
|
public_get_tradingbot_grid_min_investment = publicGetTradingBotGridMinInvestment = Entry('tradingBot/grid/min-investment', 'public', 'GET', {'cost': 1})
|
62
62
|
public_get_tradingbot_public_rsi_back_testing = publicGetTradingBotPublicRsiBackTesting = Entry('tradingBot/public/rsi-back-testing', 'public', 'GET', {'cost': 1})
|
63
|
+
public_get_asset_exchange_list = publicGetAssetExchangeList = Entry('asset/exchange-list', 'public', 'GET', {'cost': 1.6666666666666667})
|
63
64
|
public_get_finance_savings_lending_rate_summary = publicGetFinanceSavingsLendingRateSummary = Entry('finance/savings/lending-rate-summary', 'public', 'GET', {'cost': 1.6666666666666667})
|
64
65
|
public_get_finance_savings_lending_rate_history = publicGetFinanceSavingsLendingRateHistory = Entry('finance/savings/lending-rate-history', 'public', 'GET', {'cost': 1.6666666666666667})
|
65
66
|
public_get_finance_sfp_dcd_products = publicGetFinanceSfpDcdProducts = Entry('finance/sfp/dcd/products', 'public', 'GET', {'cost': 0.6666666666666666})
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# -----------------------------------------------------------------------------
|
4
4
|
|
5
|
-
__version__ = '4.0.
|
5
|
+
__version__ = '4.0.78'
|
6
6
|
|
7
7
|
# -----------------------------------------------------------------------------
|
8
8
|
|
@@ -2446,10 +2446,15 @@ class Exchange(BaseExchange):
|
|
2446
2446
|
networkItem = self.safe_value(networks, networkCode, {})
|
2447
2447
|
precision = self.safe_value(networkItem, 'precision', precision)
|
2448
2448
|
if precision is None:
|
2449
|
-
return fee
|
2449
|
+
return self.forceString(fee)
|
2450
2450
|
else:
|
2451
2451
|
return self.decimal_to_precision(fee, ROUND, precision, self.precisionMode, self.paddingMode)
|
2452
2452
|
|
2453
|
+
def force_string(self, value):
|
2454
|
+
if not isinstance(value, str):
|
2455
|
+
return self.number_to_string(value)
|
2456
|
+
return value
|
2457
|
+
|
2453
2458
|
def is_tick_precision(self):
|
2454
2459
|
return self.precisionMode == TICK_SIZE
|
2455
2460
|
|
@@ -108,6 +108,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
108
108
|
'market/trades': 3,
|
109
109
|
'market/depth': 3,
|
110
110
|
'market/kline': 3,
|
111
|
+
'ticker/24hr': 1,
|
111
112
|
},
|
112
113
|
},
|
113
114
|
'private': {
|
@@ -116,7 +117,6 @@ class bingx(Exchange, ImplicitAPI):
|
|
116
117
|
'trade/openOrders': 3,
|
117
118
|
'trade/historyOrders': 3,
|
118
119
|
'account/balance': 3,
|
119
|
-
'ticker/24hr': 1,
|
120
120
|
},
|
121
121
|
'post': {
|
122
122
|
'trade/order': 3,
|
@@ -274,6 +274,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
274
274
|
'500': ExchangeError,
|
275
275
|
'504': ExchangeError,
|
276
276
|
'100001': AuthenticationError,
|
277
|
+
'100412': AuthenticationError,
|
277
278
|
'100202': InsufficientFunds,
|
278
279
|
'100400': BadRequest,
|
279
280
|
'100440': ExchangeError,
|
@@ -1070,7 +1071,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
1070
1071
|
}
|
1071
1072
|
response = None
|
1072
1073
|
if market['spot']:
|
1073
|
-
response = await self.
|
1074
|
+
response = await self.spotV1PublicGetTicker24hr(self.extend(request, params))
|
1074
1075
|
else:
|
1075
1076
|
response = await self.swapV2PublicGetQuoteTicker(self.extend(request, params))
|
1076
1077
|
#
|
@@ -1106,13 +1107,18 @@ class bingx(Exchange, ImplicitAPI):
|
|
1106
1107
|
:returns dict: a dictionary of `ticker structures <https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure>`
|
1107
1108
|
"""
|
1108
1109
|
await self.load_markets()
|
1110
|
+
market = None
|
1109
1111
|
if symbols is not None:
|
1110
1112
|
symbols = self.market_symbols(symbols)
|
1111
1113
|
firstSymbol = self.safe_string(symbols, 0)
|
1112
1114
|
market = self.market(firstSymbol)
|
1113
|
-
|
1114
|
-
|
1115
|
-
response =
|
1115
|
+
type = None
|
1116
|
+
type, params = self.handle_market_type_and_params('fetchTickers', market, params)
|
1117
|
+
response = None
|
1118
|
+
if type == 'spot':
|
1119
|
+
response = await self.spotV1PublicGetTicker24hr(params)
|
1120
|
+
else:
|
1121
|
+
response = await self.swapV2PublicGetQuoteTicker(params)
|
1116
1122
|
#
|
1117
1123
|
# {
|
1118
1124
|
# "code": 0,
|
@@ -2686,25 +2692,21 @@ class bingx(Exchange, ImplicitAPI):
|
|
2686
2692
|
self.parse_transaction(data)
|
2687
2693
|
|
2688
2694
|
def parse_params(self, params):
|
2689
|
-
result = ''
|
2690
2695
|
sortedParams = self.keysort(params)
|
2691
2696
|
keys = list(sortedParams.keys())
|
2692
2697
|
for i in range(0, len(keys)):
|
2693
2698
|
key = keys[i]
|
2694
|
-
if i > 0:
|
2695
|
-
result += '&'
|
2696
2699
|
value = sortedParams[key]
|
2697
2700
|
if isinstance(value, list):
|
2698
|
-
|
2701
|
+
arrStr = '['
|
2699
2702
|
for j in range(0, len(value)):
|
2700
2703
|
arrayElement = value[j]
|
2701
2704
|
if j > 0:
|
2702
|
-
|
2703
|
-
|
2704
|
-
|
2705
|
-
|
2706
|
-
|
2707
|
-
return result
|
2705
|
+
arrStr += ','
|
2706
|
+
arrStr += str(arrayElement)
|
2707
|
+
arrStr += ']'
|
2708
|
+
sortedParams[key] = arrStr
|
2709
|
+
return sortedParams
|
2708
2710
|
|
2709
2711
|
def sign(self, path, section='public', method='GET', params={}, headers=None, body=None):
|
2710
2712
|
type = section[0]
|
@@ -2721,13 +2723,15 @@ class bingx(Exchange, ImplicitAPI):
|
|
2721
2723
|
params = self.omit(params, self.extract_params(path))
|
2722
2724
|
params = self.keysort(params)
|
2723
2725
|
if access == 'public':
|
2726
|
+
params['timestamp'] = self.nonce()
|
2724
2727
|
if params:
|
2725
2728
|
url += '?' + self.urlencode(params)
|
2726
2729
|
elif access == 'private':
|
2727
2730
|
self.check_required_credentials()
|
2728
2731
|
params['timestamp'] = self.nonce()
|
2729
|
-
|
2730
|
-
|
2732
|
+
parsedParams = self.parse_params(params)
|
2733
|
+
query = self.urlencode(parsedParams)
|
2734
|
+
signature = self.hmac(self.encode(self.rawencode(parsedParams)), self.encode(self.secret), hashlib.sha256)
|
2731
2735
|
if params:
|
2732
2736
|
query = '?' + query + '&'
|
2733
2737
|
else:
|
@@ -1098,7 +1098,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
1098
1098
|
'size': preciseAmount,
|
1099
1099
|
'leverage': 1,
|
1100
1100
|
}
|
1101
|
-
triggerPrice, stopLossPrice, takeProfitPrice = self.
|
1101
|
+
triggerPrice, stopLossPrice, takeProfitPrice = self.handle_trigger_prices(params)
|
1102
1102
|
params = self.omit(params, ['stopLossPrice', 'takeProfitPrice', 'triggerPrice', 'stopPrice'])
|
1103
1103
|
if triggerPrice:
|
1104
1104
|
request['stop'] = 'up' if (side == 'buy') else 'down'
|
@@ -246,6 +246,7 @@ class okx(Exchange, ImplicitAPI):
|
|
246
246
|
'tradingBot/grid/ai-param': 1,
|
247
247
|
'tradingBot/grid/min-investment': 1,
|
248
248
|
'tradingBot/public/rsi-back-testing': 1,
|
249
|
+
'asset/exchange-list': 5 / 3,
|
249
250
|
'finance/savings/lending-rate-summary': 5 / 3,
|
250
251
|
'finance/savings/lending-rate-history': 5 / 3,
|
251
252
|
# public broker
|
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# -----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '4.0.
|
7
|
+
__version__ = '4.0.78'
|
8
8
|
|
9
9
|
# -----------------------------------------------------------------------------
|
10
10
|
|
@@ -3626,10 +3626,15 @@ class Exchange(object):
|
|
3626
3626
|
networkItem = self.safe_value(networks, networkCode, {})
|
3627
3627
|
precision = self.safe_value(networkItem, 'precision', precision)
|
3628
3628
|
if precision is None:
|
3629
|
-
return fee
|
3629
|
+
return self.forceString(fee)
|
3630
3630
|
else:
|
3631
3631
|
return self.decimal_to_precision(fee, ROUND, precision, self.precisionMode, self.paddingMode)
|
3632
3632
|
|
3633
|
+
def force_string(self, value):
|
3634
|
+
if not isinstance(value, str):
|
3635
|
+
return self.number_to_string(value)
|
3636
|
+
return value
|
3637
|
+
|
3633
3638
|
def is_tick_precision(self):
|
3634
3639
|
return self.precisionMode == TICK_SIZE
|
3635
3640
|
|
@@ -107,6 +107,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
107
107
|
'market/trades': 3,
|
108
108
|
'market/depth': 3,
|
109
109
|
'market/kline': 3,
|
110
|
+
'ticker/24hr': 1,
|
110
111
|
},
|
111
112
|
},
|
112
113
|
'private': {
|
@@ -115,7 +116,6 @@ class bingx(Exchange, ImplicitAPI):
|
|
115
116
|
'trade/openOrders': 3,
|
116
117
|
'trade/historyOrders': 3,
|
117
118
|
'account/balance': 3,
|
118
|
-
'ticker/24hr': 1,
|
119
119
|
},
|
120
120
|
'post': {
|
121
121
|
'trade/order': 3,
|
@@ -273,6 +273,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
273
273
|
'500': ExchangeError,
|
274
274
|
'504': ExchangeError,
|
275
275
|
'100001': AuthenticationError,
|
276
|
+
'100412': AuthenticationError,
|
276
277
|
'100202': InsufficientFunds,
|
277
278
|
'100400': BadRequest,
|
278
279
|
'100440': ExchangeError,
|
@@ -1069,7 +1070,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
1069
1070
|
}
|
1070
1071
|
response = None
|
1071
1072
|
if market['spot']:
|
1072
|
-
response = self.
|
1073
|
+
response = self.spotV1PublicGetTicker24hr(self.extend(request, params))
|
1073
1074
|
else:
|
1074
1075
|
response = self.swapV2PublicGetQuoteTicker(self.extend(request, params))
|
1075
1076
|
#
|
@@ -1105,13 +1106,18 @@ class bingx(Exchange, ImplicitAPI):
|
|
1105
1106
|
:returns dict: a dictionary of `ticker structures <https://github.com/ccxt/ccxt/wiki/Manual#ticker-structure>`
|
1106
1107
|
"""
|
1107
1108
|
self.load_markets()
|
1109
|
+
market = None
|
1108
1110
|
if symbols is not None:
|
1109
1111
|
symbols = self.market_symbols(symbols)
|
1110
1112
|
firstSymbol = self.safe_string(symbols, 0)
|
1111
1113
|
market = self.market(firstSymbol)
|
1112
|
-
|
1113
|
-
|
1114
|
-
response =
|
1114
|
+
type = None
|
1115
|
+
type, params = self.handle_market_type_and_params('fetchTickers', market, params)
|
1116
|
+
response = None
|
1117
|
+
if type == 'spot':
|
1118
|
+
response = self.spotV1PublicGetTicker24hr(params)
|
1119
|
+
else:
|
1120
|
+
response = self.swapV2PublicGetQuoteTicker(params)
|
1115
1121
|
#
|
1116
1122
|
# {
|
1117
1123
|
# "code": 0,
|
@@ -2685,25 +2691,21 @@ class bingx(Exchange, ImplicitAPI):
|
|
2685
2691
|
self.parse_transaction(data)
|
2686
2692
|
|
2687
2693
|
def parse_params(self, params):
|
2688
|
-
result = ''
|
2689
2694
|
sortedParams = self.keysort(params)
|
2690
2695
|
keys = list(sortedParams.keys())
|
2691
2696
|
for i in range(0, len(keys)):
|
2692
2697
|
key = keys[i]
|
2693
|
-
if i > 0:
|
2694
|
-
result += '&'
|
2695
2698
|
value = sortedParams[key]
|
2696
2699
|
if isinstance(value, list):
|
2697
|
-
|
2700
|
+
arrStr = '['
|
2698
2701
|
for j in range(0, len(value)):
|
2699
2702
|
arrayElement = value[j]
|
2700
2703
|
if j > 0:
|
2701
|
-
|
2702
|
-
|
2703
|
-
|
2704
|
-
|
2705
|
-
|
2706
|
-
return result
|
2704
|
+
arrStr += ','
|
2705
|
+
arrStr += str(arrayElement)
|
2706
|
+
arrStr += ']'
|
2707
|
+
sortedParams[key] = arrStr
|
2708
|
+
return sortedParams
|
2707
2709
|
|
2708
2710
|
def sign(self, path, section='public', method='GET', params={}, headers=None, body=None):
|
2709
2711
|
type = section[0]
|
@@ -2720,13 +2722,15 @@ class bingx(Exchange, ImplicitAPI):
|
|
2720
2722
|
params = self.omit(params, self.extract_params(path))
|
2721
2723
|
params = self.keysort(params)
|
2722
2724
|
if access == 'public':
|
2725
|
+
params['timestamp'] = self.nonce()
|
2723
2726
|
if params:
|
2724
2727
|
url += '?' + self.urlencode(params)
|
2725
2728
|
elif access == 'private':
|
2726
2729
|
self.check_required_credentials()
|
2727
2730
|
params['timestamp'] = self.nonce()
|
2728
|
-
|
2729
|
-
|
2731
|
+
parsedParams = self.parse_params(params)
|
2732
|
+
query = self.urlencode(parsedParams)
|
2733
|
+
signature = self.hmac(self.encode(self.rawencode(parsedParams)), self.encode(self.secret), hashlib.sha256)
|
2730
2734
|
if params:
|
2731
2735
|
query = '?' + query + '&'
|
2732
2736
|
else:
|
@@ -1098,7 +1098,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
1098
1098
|
'size': preciseAmount,
|
1099
1099
|
'leverage': 1,
|
1100
1100
|
}
|
1101
|
-
triggerPrice, stopLossPrice, takeProfitPrice = self.
|
1101
|
+
triggerPrice, stopLossPrice, takeProfitPrice = self.handle_trigger_prices(params)
|
1102
1102
|
params = self.omit(params, ['stopLossPrice', 'takeProfitPrice', 'triggerPrice', 'stopPrice'])
|
1103
1103
|
if triggerPrice:
|
1104
1104
|
request['stop'] = 'up' if (side == 'buy') else 'down'
|
@@ -245,6 +245,7 @@ class okx(Exchange, ImplicitAPI):
|
|
245
245
|
'tradingBot/grid/ai-param': 1,
|
246
246
|
'tradingBot/grid/min-investment': 1,
|
247
247
|
'tradingBot/public/rsi-back-testing': 1,
|
248
|
+
'asset/exchange-list': 5 / 3,
|
248
249
|
'finance/savings/lending-rate-summary': 5 / 3,
|
249
250
|
'finance/savings/lending-rate-history': 5 / 3,
|
250
251
|
# public broker
|
@@ -129,7 +129,7 @@ async def call_method(testFiles, methodName, exchange, skippedProperties, args):
|
|
129
129
|
|
130
130
|
|
131
131
|
def exception_message(exc):
|
132
|
-
return '[' + type(exc).__name__ + '] ' + "".join(format_exception(exc, limit=6))
|
132
|
+
return '[' + type(exc).__name__ + '] ' + "".join(format_exception(type(exc), exc, exc.__traceback__, limit=6))
|
133
133
|
|
134
134
|
|
135
135
|
def exit_script():
|
@@ -296,6 +296,7 @@ class testMainClass(baseMainTestClass):
|
|
296
296
|
dump(self.add_padding('[INFO:TESTING]', 25), exchange.id, methodNameInTest, argsStringified)
|
297
297
|
skippedProperties = exchange.safe_value(self.skippedMethods, methodName, {})
|
298
298
|
await call_method(self.testFiles, methodNameInTest, exchange, skippedProperties, args)
|
299
|
+
# if it was passed successfully, add to the list of successfull tests
|
299
300
|
if isPublic:
|
300
301
|
self.checkedPublicTests[methodNameInTest] = True
|
301
302
|
|
@@ -336,6 +337,9 @@ class testMainClass(baseMainTestClass):
|
|
336
337
|
dump('[TEST_WARNING] Exchange is on maintenance', exchange.id)
|
337
338
|
# If public test faces authentication error, we don't break(see comments under `testSafe` method)
|
338
339
|
elif isPublic and isAuthError:
|
340
|
+
# in case of loadMarkets, it means that "tester"(developer or travis) does not have correct authentication, so it does not have a point to proceed at all
|
341
|
+
if methodName == 'loadMarkets':
|
342
|
+
dump('[TEST_WARNING]', 'Exchange can not be tested, because of authentication problems during loadMarkets', exception_message(e), exchange.id, methodName, argsStringified)
|
339
343
|
if self.info:
|
340
344
|
dump('[TEST_WARNING]', 'Authentication problem for public method', exception_message(e), exchange.id, methodName, argsStringified)
|
341
345
|
else:
|
@@ -386,8 +390,9 @@ class testMainClass(baseMainTestClass):
|
|
386
390
|
errors.append(testNames[i])
|
387
391
|
# we don't raise exception for public-tests, see comments under 'testSafe' method
|
388
392
|
failedMsg = ''
|
389
|
-
|
390
|
-
|
393
|
+
errorsLength = len(errors)
|
394
|
+
if errorsLength > 0:
|
395
|
+
failedMsg = ' | Failed methods : ' + ', '.join(errors)
|
391
396
|
dump(self.add_padding('[INFO:PUBLIC_TESTS_END] ' + market['type'] + failedMsg, 25), exchange.id)
|
392
397
|
|
393
398
|
async def load_exchange(self, exchange):
|
@@ -129,7 +129,7 @@ def call_method(testFiles, methodName, exchange, skippedProperties, args):
|
|
129
129
|
|
130
130
|
|
131
131
|
def exception_message(exc):
|
132
|
-
return '[' + type(exc).__name__ + '] ' + "".join(format_exception(exc, limit=6))
|
132
|
+
return '[' + type(exc).__name__ + '] ' + "".join(format_exception(type(exc), exc, exc.__traceback__, limit=6))
|
133
133
|
|
134
134
|
|
135
135
|
def exit_script():
|
@@ -295,6 +295,7 @@ class testMainClass(baseMainTestClass):
|
|
295
295
|
dump(self.add_padding('[INFO:TESTING]', 25), exchange.id, methodNameInTest, argsStringified)
|
296
296
|
skippedProperties = exchange.safe_value(self.skippedMethods, methodName, {})
|
297
297
|
call_method(self.testFiles, methodNameInTest, exchange, skippedProperties, args)
|
298
|
+
# if it was passed successfully, add to the list of successfull tests
|
298
299
|
if isPublic:
|
299
300
|
self.checkedPublicTests[methodNameInTest] = True
|
300
301
|
|
@@ -335,6 +336,9 @@ class testMainClass(baseMainTestClass):
|
|
335
336
|
dump('[TEST_WARNING] Exchange is on maintenance', exchange.id)
|
336
337
|
# If public test faces authentication error, we don't break(see comments under `testSafe` method)
|
337
338
|
elif isPublic and isAuthError:
|
339
|
+
# in case of loadMarkets, it means that "tester"(developer or travis) does not have correct authentication, so it does not have a point to proceed at all
|
340
|
+
if methodName == 'loadMarkets':
|
341
|
+
dump('[TEST_WARNING]', 'Exchange can not be tested, because of authentication problems during loadMarkets', exception_message(e), exchange.id, methodName, argsStringified)
|
338
342
|
if self.info:
|
339
343
|
dump('[TEST_WARNING]', 'Authentication problem for public method', exception_message(e), exchange.id, methodName, argsStringified)
|
340
344
|
else:
|
@@ -385,8 +389,9 @@ class testMainClass(baseMainTestClass):
|
|
385
389
|
errors.append(testNames[i])
|
386
390
|
# we don't raise exception for public-tests, see comments under 'testSafe' method
|
387
391
|
failedMsg = ''
|
388
|
-
|
389
|
-
|
392
|
+
errorsLength = len(errors)
|
393
|
+
if errorsLength > 0:
|
394
|
+
failedMsg = ' | Failed methods : ' + ', '.join(errors)
|
390
395
|
dump(self.add_padding('[INFO:PUBLIC_TESTS_END] ' + market['type'] + failedMsg, 25), exchange.id)
|
391
396
|
|
392
397
|
def load_exchange(self, exchange):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.0.
|
3
|
+
Version: 4.0.78
|
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.
|
232
|
-
* unpkg: https://unpkg.com/ccxt@4.0.
|
231
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.0.78/dist/ccxt.browser.js
|
232
|
+
* unpkg: https://unpkg.com/ccxt@4.0.78/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.
|
237
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.0.78/dist/ccxt.browser.js"></script>
|
238
238
|
```
|
239
239
|
|
240
240
|
Creates a global `ccxt` object:
|
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
|