ccxt 4.2.68__tar.gz → 4.2.70__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.2.68/ccxt.egg-info → ccxt-4.2.70}/PKG-INFO +4 -4
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/__init__.py +1 -1
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/htx.py +1 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/huobi.py +1 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/__init__.py +1 -1
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/base/exchange.py +1 -1
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bitstamp.py +64 -1
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/gate.py +166 -3
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/gemini.py +147 -70
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/hitbtc.py +7 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/htx.py +1 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/kucoin.py +4 -2
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/base/exchange.py +1 -1
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bitstamp.py +64 -1
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/gate.py +166 -3
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/gemini.py +147 -70
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/hitbtc.py +7 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/htx.py +1 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/kucoin.py +4 -2
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/__init__.py +1 -1
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/lbank.py +5 -3
- {ccxt-4.2.68 → ccxt-4.2.70/ccxt.egg-info}/PKG-INFO +4 -4
- {ccxt-4.2.68 → ccxt-4.2.70}/package.json +1 -1
- {ccxt-4.2.68 → ccxt-4.2.70}/LICENSE.txt +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/MANIFEST.in +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/README.rst +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/ace.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/alpaca.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/ascendex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bequant.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bigone.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/binance.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/binancecoinm.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/binanceus.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/binanceusdm.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bingx.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bit2c.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bitbank.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bitbay.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bitbns.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bitcoincom.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bitfinex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bitfinex2.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bitflyer.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bitget.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bithumb.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bitmart.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bitmex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bitopro.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bitpanda.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bitrue.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bitso.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bitstamp.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bitteam.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bitvavo.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bl3p.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/blockchaincom.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/blofin.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/btcalpha.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/btcbox.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/btcmarkets.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/btcturk.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/bybit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/cex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/coinbase.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/coinbasepro.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/coincheck.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/coinex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/coinlist.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/coinmate.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/coinmetro.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/coinone.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/coinsph.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/coinspot.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/cryptocom.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/currencycom.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/delta.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/deribit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/digifinex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/exmo.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/fmfwio.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/gate.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/gateio.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/gemini.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/hitbtc.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/hitbtc3.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/hollaex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/huobijp.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/hyperliquid.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/idex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/independentreserve.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/indodax.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/kraken.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/krakenfutures.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/kucoin.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/kucoinfutures.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/kuna.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/latoken.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/lbank.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/luno.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/lykke.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/mercado.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/mexc.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/ndax.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/novadax.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/oceanex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/okcoin.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/okx.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/onetrading.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/p2b.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/paymium.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/phemex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/poloniex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/poloniexfutures.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/probit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/timex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/tokocrypto.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/upbit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/wavesexchange.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/wazirx.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/whitebit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/woo.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/yobit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/zaif.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/abstract/zonda.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/ace.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/alpaca.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/ascendex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/ace.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/alpaca.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/ascendex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/base/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/base/throttler.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/base/ws/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/base/ws/aiohttp_client.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/base/ws/cache.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/base/ws/client.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/base/ws/fast_client.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/base/ws/functions.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/base/ws/future.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/base/ws/order_book.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/base/ws/order_book_side.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bequant.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bigone.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/binance.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/binancecoinm.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/binanceus.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/binanceusdm.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bingx.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bit2c.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bitbank.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bitbay.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bitbns.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bitcoincom.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bitfinex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bitfinex2.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bitflyer.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bitget.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bithumb.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bitmart.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bitmex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bitopro.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bitpanda.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bitrue.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bitso.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bitteam.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bitvavo.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bl3p.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/blockchaincom.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/blofin.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/btcalpha.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/btcbox.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/btcmarkets.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/btcturk.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/bybit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/cex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/coinbase.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/coinbasepro.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/coincheck.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/coinex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/coinlist.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/coinmate.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/coinmetro.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/coinone.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/coinsph.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/coinspot.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/cryptocom.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/currencycom.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/delta.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/deribit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/digifinex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/exmo.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/flowbtc.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/fmfwio.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/gateio.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/hitbtc3.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/hollaex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/huobi.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/huobijp.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/hyperliquid.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/idex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/independentreserve.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/indodax.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/kraken.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/krakenfutures.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/kucoinfutures.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/kuna.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/latoken.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/lbank.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/luno.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/lykke.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/mercado.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/mexc.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/ndax.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/novadax.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/oceanex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/okcoin.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/okx.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/onetrading.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/p2b.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/paymium.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/phemex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/poloniex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/poloniexfutures.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/probit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/timex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/tokocrypto.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/upbit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/wavesexchange.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/wazirx.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/whitebit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/woo.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/yobit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/zaif.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/async_support/zonda.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/base/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/base/decimal_to_precision.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/base/errors.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/base/precise.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/base/types.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bequant.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bigone.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/binance.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/binancecoinm.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/binanceus.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/binanceusdm.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bingx.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bit2c.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bitbank.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bitbay.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bitbns.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bitcoincom.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bitfinex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bitfinex2.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bitflyer.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bitget.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bithumb.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bitmart.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bitmex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bitopro.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bitpanda.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bitrue.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bitso.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bitteam.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bitvavo.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bl3p.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/blockchaincom.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/blofin.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/btcalpha.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/btcbox.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/btcmarkets.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/btcturk.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/bybit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/cex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/coinbase.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/coinbasepro.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/coincheck.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/coinex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/coinlist.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/coinmate.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/coinmetro.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/coinone.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/coinsph.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/coinspot.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/cryptocom.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/currencycom.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/delta.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/deribit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/digifinex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/exmo.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/flowbtc.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/fmfwio.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/gateio.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/hitbtc3.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/hollaex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/huobi.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/huobijp.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/hyperliquid.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/idex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/independentreserve.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/indodax.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/kraken.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/krakenfutures.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/kucoinfutures.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/kuna.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/latoken.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/lbank.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/luno.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/lykke.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/mercado.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/mexc.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/ndax.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/novadax.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/oceanex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/okcoin.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/okx.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/onetrading.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/p2b.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/paymium.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/phemex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/poloniex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/poloniexfutures.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/alpaca.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/ascendex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/bequant.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/binance.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/binancecoinm.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/binanceus.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/binanceusdm.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/bingx.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/bitcoincom.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/bitfinex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/bitfinex2.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/bitget.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/bitmart.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/bitmex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/bitopro.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/bitpanda.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/bitrue.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/bitstamp.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/bitvavo.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/blockchaincom.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/bybit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/cex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/coinbase.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/coinbasepro.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/coincheck.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/coinex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/coinone.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/cryptocom.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/currencycom.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/deribit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/exmo.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/gate.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/gateio.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/gemini.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/hitbtc.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/hollaex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/htx.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/huobi.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/huobijp.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/idex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/independentreserve.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/kraken.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/krakenfutures.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/kucoin.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/kucoinfutures.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/luno.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/mexc.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/ndax.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/okcoin.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/okx.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/onetrading.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/p2b.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/phemex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/poloniex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/poloniexfutures.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/probit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/upbit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/wazirx.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/whitebit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/pro/woo.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/probit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ecdsa/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ecdsa/_version.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ecdsa/curves.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ecdsa/der.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ecdsa/ecdsa.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ecdsa/ellipticcurve.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ecdsa/keys.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ecdsa/numbertheory.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ecdsa/rfc6979.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ecdsa/util.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/abi/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/abi/abi.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/abi/base.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/abi/codec.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/abi/constants.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/abi/decoding.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/abi/encoding.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/abi/exceptions.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/abi/grammar.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/abi/packed.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/abi/py.typed +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/abi/registry.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/abi/tools/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/abi/tools/_strategies.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/abi/utils/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/abi/utils/numeric.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/abi/utils/padding.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/abi/utils/string.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/account/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/account/encode_typed_data/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/account/encode_typed_data/encoding_and_hashing.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/account/encode_typed_data/helpers.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/account/messages.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/account/py.typed +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/hexbytes/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/hexbytes/_utils.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/hexbytes/main.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/hexbytes/py.typed +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/typing/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/typing/abi.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/typing/bls.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/typing/discovery.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/typing/encoding.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/typing/enums.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/typing/ethpm.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/typing/evm.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/typing/networks.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/typing/py.typed +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/abi.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/address.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/applicators.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/conversions.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/currency.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/curried/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/debug.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/decorators.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/encoding.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/exceptions.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/functional.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/hexadecimal.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/humanize.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/logging.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/module_loading.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/numeric.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/py.typed +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/toolz.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/types.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/typing/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/typing/misc.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/ethereum/utils/units.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/keccak/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/keccak/keccak.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/msgpack/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/msgpack/exceptions.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/msgpack/ext.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/msgpack/fallback.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/parsimonious/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/parsimonious/exceptions.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/parsimonious/expressions.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/parsimonious/grammar.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/parsimonious/nodes.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/parsimonious/utils.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/toolz/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/toolz/_signatures.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/toolz/_version.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/toolz/compatibility.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/toolz/curried/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/toolz/curried/exceptions.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/toolz/curried/operator.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/toolz/dicttoolz.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/toolz/functoolz.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/toolz/itertoolz.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/toolz/recipes.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/static_dependencies/toolz/utils.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/__init__.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_account.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_balance.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_borrow_interest.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_borrow_rate.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_calculate_fee.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_crypto.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_currency.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_datetime.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_decimal_to_precision.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_deep_extend.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_deposit_withdrawal.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_exchange_datetime_functions.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_funding_rate_history.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_last_price.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_ledger_entry.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_ledger_item.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_leverage_tier.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_margin_mode.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_margin_modification.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_market.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_number.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_ohlcv.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_open_interest.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_order.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_order_book.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_position.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_shared_methods.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_status.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_throttle.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_ticker.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_trade.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_trading_fee.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/base/test_transaction.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/test_async.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/test/test_sync.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/timex.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/tokocrypto.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/upbit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/wavesexchange.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/wazirx.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/whitebit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/woo.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/yobit.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/zaif.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt/zonda.py +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt.egg-info/SOURCES.txt +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt.egg-info/dependency_links.txt +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt.egg-info/requires.txt +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/ccxt.egg-info/top_level.txt +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/setup.cfg +0 -0
- {ccxt-4.2.68 → ccxt-4.2.70}/setup.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.2.
|
3
|
+
Version: 4.2.70
|
4
4
|
Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 100+ exchanges
|
5
5
|
Home-page: https://ccxt.com
|
6
6
|
Author: Igor Kroitor
|
@@ -223,13 +223,13 @@ Description: # CCXT – CryptoCurrency eXchange Trading Library
|
|
223
223
|
|
224
224
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
225
225
|
|
226
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.
|
227
|
-
* unpkg: https://unpkg.com/ccxt@4.2.
|
226
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.70/dist/ccxt.browser.js
|
227
|
+
* unpkg: https://unpkg.com/ccxt@4.2.70/dist/ccxt.browser.js
|
228
228
|
|
229
229
|
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.
|
230
230
|
|
231
231
|
```HTML
|
232
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.
|
232
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.70/dist/ccxt.browser.js"></script>
|
233
233
|
```
|
234
234
|
|
235
235
|
Creates a global `ccxt` object:
|
@@ -193,6 +193,7 @@ class ImplicitAPI:
|
|
193
193
|
spot_private_post_v2_sub_user_api_key_modification = spotPrivatePostV2SubUserApiKeyModification = Entry('v2/sub-user/api-key-modification', ['spot', 'private'], 'POST', {'cost': 1})
|
194
194
|
spot_private_post_v2_sub_user_api_key_deletion = spotPrivatePostV2SubUserApiKeyDeletion = Entry('v2/sub-user/api-key-deletion', ['spot', 'private'], 'POST', {'cost': 1})
|
195
195
|
spot_private_post_v1_subuser_transfer = spotPrivatePostV1SubuserTransfer = Entry('v1/subuser/transfer', ['spot', 'private'], 'POST', {'cost': 10})
|
196
|
+
spot_private_post_v1_trust_user_active_credit = spotPrivatePostV1TrustUserActiveCredit = Entry('v1/trust/user/active/credit', ['spot', 'private'], 'POST', {'cost': 10})
|
196
197
|
spot_private_post_v1_order_orders_place = spotPrivatePostV1OrderOrdersPlace = Entry('v1/order/orders/place', ['spot', 'private'], 'POST', {'cost': 0.2})
|
197
198
|
spot_private_post_v1_order_batch_orders = spotPrivatePostV1OrderBatchOrders = Entry('v1/order/batch-orders', ['spot', 'private'], 'POST', {'cost': 0.4})
|
198
199
|
spot_private_post_v1_order_auto_place = spotPrivatePostV1OrderAutoPlace = Entry('v1/order/auto/place', ['spot', 'private'], 'POST', {'cost': 0.2})
|
@@ -193,6 +193,7 @@ class ImplicitAPI:
|
|
193
193
|
spot_private_post_v2_sub_user_api_key_modification = spotPrivatePostV2SubUserApiKeyModification = Entry('v2/sub-user/api-key-modification', ['spot', 'private'], 'POST', {'cost': 1})
|
194
194
|
spot_private_post_v2_sub_user_api_key_deletion = spotPrivatePostV2SubUserApiKeyDeletion = Entry('v2/sub-user/api-key-deletion', ['spot', 'private'], 'POST', {'cost': 1})
|
195
195
|
spot_private_post_v1_subuser_transfer = spotPrivatePostV1SubuserTransfer = Entry('v1/subuser/transfer', ['spot', 'private'], 'POST', {'cost': 10})
|
196
|
+
spot_private_post_v1_trust_user_active_credit = spotPrivatePostV1TrustUserActiveCredit = Entry('v1/trust/user/active/credit', ['spot', 'private'], 'POST', {'cost': 10})
|
196
197
|
spot_private_post_v1_order_orders_place = spotPrivatePostV1OrderOrdersPlace = Entry('v1/order/orders/place', ['spot', 'private'], 'POST', {'cost': 0.2})
|
197
198
|
spot_private_post_v1_order_batch_orders = spotPrivatePostV1OrderBatchOrders = Entry('v1/order/batch-orders', ['spot', 'private'], 'POST', {'cost': 0.4})
|
198
199
|
spot_private_post_v1_order_auto_place = spotPrivatePostV1OrderAutoPlace = Entry('v1/order/auto/place', ['spot', 'private'], 'POST', {'cost': 0.2})
|
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.async_support.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.bitstamp import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
9
|
+
from ccxt.base.types import Balances, Currency, Int, Market, Order, TransferEntry, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import PermissionDenied
|
@@ -98,6 +98,7 @@ class bitstamp(Exchange, ImplicitAPI):
|
|
98
98
|
'setLeverage': False,
|
99
99
|
'setMarginMode': False,
|
100
100
|
'setPositionMode': False,
|
101
|
+
'transfer': True,
|
101
102
|
'withdraw': True,
|
102
103
|
},
|
103
104
|
'urls': {
|
@@ -1983,6 +1984,68 @@ class bitstamp(Exchange, ImplicitAPI):
|
|
1983
1984
|
response = await getattr(self, method)(self.extend(request, params))
|
1984
1985
|
return self.parse_transaction(response, currency)
|
1985
1986
|
|
1987
|
+
async def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
|
1988
|
+
"""
|
1989
|
+
transfer currency internally between wallets on the same account
|
1990
|
+
:see: https://www.bitstamp.net/api/#tag/Sub-account/operation/TransferFromMainToSub
|
1991
|
+
:see: https://www.bitstamp.net/api/#tag/Sub-account/operation/TransferFromSubToMain
|
1992
|
+
:param str code: unified currency code
|
1993
|
+
:param float amount: amount to transfer
|
1994
|
+
:param str fromAccount: account to transfer from
|
1995
|
+
:param str toAccount: account to transfer to
|
1996
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1997
|
+
:returns dict: a `transfer structure <https://docs.ccxt.com/#/?id=transfer-structure>`
|
1998
|
+
"""
|
1999
|
+
await self.load_markets()
|
2000
|
+
currency = self.currency(code)
|
2001
|
+
amount = self.currency_to_precision(code, amount)
|
2002
|
+
amount = self.parse_to_numeric(amount)
|
2003
|
+
request = {
|
2004
|
+
'amount': amount,
|
2005
|
+
'currency': currency['id'].upper(),
|
2006
|
+
}
|
2007
|
+
response = None
|
2008
|
+
if fromAccount == 'main':
|
2009
|
+
request['subAccount'] = toAccount
|
2010
|
+
response = await self.privatePostTransferFromMain(self.extend(request, params))
|
2011
|
+
elif toAccount == 'main':
|
2012
|
+
request['subAccount'] = fromAccount
|
2013
|
+
response = await self.privatePostTransferToMain(self.extend(request, params))
|
2014
|
+
else:
|
2015
|
+
raise BadRequest(self.id + ' transfer() only supports from or to main')
|
2016
|
+
#
|
2017
|
+
# {status: 'ok'}
|
2018
|
+
#
|
2019
|
+
transfer = self.parse_transfer(response, currency)
|
2020
|
+
transfer['amount'] = amount
|
2021
|
+
transfer['fromAccount'] = fromAccount
|
2022
|
+
transfer['toAccount'] = toAccount
|
2023
|
+
return transfer
|
2024
|
+
|
2025
|
+
def parse_transfer(self, transfer, currency=None):
|
2026
|
+
#
|
2027
|
+
# {status: 'ok'}
|
2028
|
+
#
|
2029
|
+
status = self.safe_string(transfer, 'status')
|
2030
|
+
return {
|
2031
|
+
'info': transfer,
|
2032
|
+
'id': None,
|
2033
|
+
'timestamp': None,
|
2034
|
+
'datetime': None,
|
2035
|
+
'currency': currency['code'],
|
2036
|
+
'amount': None,
|
2037
|
+
'fromAccount': None,
|
2038
|
+
'toAccount': None,
|
2039
|
+
'status': self.parse_transfer_status(status),
|
2040
|
+
}
|
2041
|
+
|
2042
|
+
def parse_transfer_status(self, status):
|
2043
|
+
statuses = {
|
2044
|
+
'ok': 'ok',
|
2045
|
+
'error': 'failed',
|
2046
|
+
}
|
2047
|
+
return self.safe_string(statuses, status, status)
|
2048
|
+
|
1986
2049
|
def nonce(self):
|
1987
2050
|
return self.milliseconds()
|
1988
2051
|
|
@@ -7,7 +7,7 @@ from ccxt.async_support.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.gate import ImplicitAPI
|
8
8
|
import asyncio
|
9
9
|
import hashlib
|
10
|
-
from ccxt.base.types import Balances, Currency, Greeks, Int, Market, Order, TransferEntry, OrderBook, OrderRequest, OrderSide, OrderType, FundingHistory, Str, Strings, Ticker, Tickers, Trade, Transaction
|
10
|
+
from ccxt.base.types import Balances, Currency, Greeks, Int, Leverage, Leverages, Market, Order, TransferEntry, OrderBook, OrderRequest, OrderSide, OrderType, FundingHistory, Str, Strings, Ticker, Tickers, Trade, Transaction
|
11
11
|
from typing import List
|
12
12
|
from ccxt.base.errors import ExchangeError
|
13
13
|
from ccxt.base.errors import PermissionDenied
|
@@ -134,7 +134,8 @@ class gate(Exchange, ImplicitAPI):
|
|
134
134
|
'fetchIsolatedBorrowRate': False,
|
135
135
|
'fetchIsolatedBorrowRates': False,
|
136
136
|
'fetchLedger': True,
|
137
|
-
'fetchLeverage':
|
137
|
+
'fetchLeverage': True,
|
138
|
+
'fetchLeverages': True,
|
138
139
|
'fetchLeverageTiers': True,
|
139
140
|
'fetchLiquidations': True,
|
140
141
|
'fetchMarginMode': False,
|
@@ -4199,7 +4200,9 @@ class gate(Exchange, ImplicitAPI):
|
|
4199
4200
|
lastTradeTimestamp = self.safe_integer(order, 'update_time_ms')
|
4200
4201
|
if lastTradeTimestamp is None:
|
4201
4202
|
lastTradeTimestamp = self.safe_timestamp_2(order, 'update_time', 'finish_time')
|
4202
|
-
marketType = '
|
4203
|
+
marketType = 'contract'
|
4204
|
+
if ('currency_pair' in order) or ('market' in order):
|
4205
|
+
marketType = 'spot'
|
4203
4206
|
exchangeSymbol = self.safe_string_2(order, 'currency_pair', 'market', contract)
|
4204
4207
|
symbol = self.safe_symbol(exchangeSymbol, market, '_', marketType)
|
4205
4208
|
# Everything below self(above return) is related to fees
|
@@ -6515,6 +6518,166 @@ class gate(Exchange, ImplicitAPI):
|
|
6515
6518
|
side = '' # side is not used but needs to be present, otherwise crashes in php
|
6516
6519
|
return await self.create_order(symbol, 'market', side, 0, None, params)
|
6517
6520
|
|
6521
|
+
async def fetch_leverage(self, symbol: str, params={}) -> Leverage:
|
6522
|
+
"""
|
6523
|
+
fetch the set leverage for a market
|
6524
|
+
:see: https://www.gate.io/docs/developers/apiv4/en/#get-unified-account-information
|
6525
|
+
:see: https://www.gate.io/docs/developers/apiv4/en/#get-detail-of-lending-market
|
6526
|
+
:see: https://www.gate.io/docs/developers/apiv4/en/#query-one-single-margin-currency-pair-deprecated
|
6527
|
+
:param str symbol: unified market symbol
|
6528
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
6529
|
+
:param boolean [params.unified]: default False, set to True for fetching the unified accounts leverage
|
6530
|
+
:returns dict: a `leverage structure <https://docs.ccxt.com/#/?id=leverage-structure>`
|
6531
|
+
"""
|
6532
|
+
await self.load_markets()
|
6533
|
+
market = None
|
6534
|
+
if symbol is not None:
|
6535
|
+
# unified account does not require a symbol
|
6536
|
+
market = self.market(symbol)
|
6537
|
+
request = {}
|
6538
|
+
response = None
|
6539
|
+
isUnified = self.safe_bool(params, 'unified')
|
6540
|
+
params = self.omit(params, 'unified')
|
6541
|
+
if market['spot']:
|
6542
|
+
request['currency_pair'] = market['id']
|
6543
|
+
if isUnified:
|
6544
|
+
response = await self.publicMarginGetUniCurrencyPairsCurrencyPair(self.extend(request, params))
|
6545
|
+
#
|
6546
|
+
# {
|
6547
|
+
# "currency_pair": "BTC_USDT",
|
6548
|
+
# "base_min_borrow_amount": "0.0001",
|
6549
|
+
# "quote_min_borrow_amount": "1",
|
6550
|
+
# "leverage": "10"
|
6551
|
+
# }
|
6552
|
+
#
|
6553
|
+
else:
|
6554
|
+
response = await self.publicMarginGetCurrencyPairsCurrencyPair(self.extend(request, params))
|
6555
|
+
#
|
6556
|
+
# {
|
6557
|
+
# "id": "BTC_USDT",
|
6558
|
+
# "base": "BTC",
|
6559
|
+
# "quote": "USDT",
|
6560
|
+
# "leverage": 10,
|
6561
|
+
# "min_base_amount": "0.0001",
|
6562
|
+
# "min_quote_amount": "1",
|
6563
|
+
# "max_quote_amount": "40000000",
|
6564
|
+
# "status": 1
|
6565
|
+
# }
|
6566
|
+
#
|
6567
|
+
elif isUnified:
|
6568
|
+
response = await self.privateUnifiedGetAccounts(self.extend(request, params))
|
6569
|
+
#
|
6570
|
+
# {
|
6571
|
+
# "user_id": 10001,
|
6572
|
+
# "locked": False,
|
6573
|
+
# "balances": {
|
6574
|
+
# "ETH": {
|
6575
|
+
# "available": "0",
|
6576
|
+
# "freeze": "0",
|
6577
|
+
# "borrowed": "0.075393666654",
|
6578
|
+
# "negative_liab": "0",
|
6579
|
+
# "futures_pos_liab": "0",
|
6580
|
+
# "equity": "1016.1",
|
6581
|
+
# "total_freeze": "0",
|
6582
|
+
# "total_liab": "0"
|
6583
|
+
# },
|
6584
|
+
# "POINT": {
|
6585
|
+
# "available": "9999999999.017023138734",
|
6586
|
+
# "freeze": "0",
|
6587
|
+
# "borrowed": "0",
|
6588
|
+
# "negative_liab": "0",
|
6589
|
+
# "futures_pos_liab": "0",
|
6590
|
+
# "equity": "12016.1",
|
6591
|
+
# "total_freeze": "0",
|
6592
|
+
# "total_liab": "0"
|
6593
|
+
# },
|
6594
|
+
# "USDT": {
|
6595
|
+
# "available": "0.00000062023",
|
6596
|
+
# "freeze": "0",
|
6597
|
+
# "borrowed": "0",
|
6598
|
+
# "negative_liab": "0",
|
6599
|
+
# "futures_pos_liab": "0",
|
6600
|
+
# "equity": "16.1",
|
6601
|
+
# "total_freeze": "0",
|
6602
|
+
# "total_liab": "0"
|
6603
|
+
# }
|
6604
|
+
# },
|
6605
|
+
# "total": "230.94621713",
|
6606
|
+
# "borrowed": "161.66395521",
|
6607
|
+
# "total_initial_margin": "1025.0524665088",
|
6608
|
+
# "total_margin_balance": "3382495.944473949183",
|
6609
|
+
# "total_maintenance_margin": "205.01049330176",
|
6610
|
+
# "total_initial_margin_rate": "3299.827135672679",
|
6611
|
+
# "total_maintenance_margin_rate": "16499.135678363399",
|
6612
|
+
# "total_available_margin": "3381470.892007440383",
|
6613
|
+
# "unified_account_total": "3381470.892007440383",
|
6614
|
+
# "unified_account_total_liab": "0",
|
6615
|
+
# "unified_account_total_equity": "100016.1",
|
6616
|
+
# "leverage": "2"
|
6617
|
+
# }
|
6618
|
+
#
|
6619
|
+
else:
|
6620
|
+
raise NotSupported(self.id + ' fetchLeverage() does not support ' + market['type'] + ' markets')
|
6621
|
+
return self.parse_leverage(response, market)
|
6622
|
+
|
6623
|
+
async def fetch_leverages(self, symbols: List[str] = None, params={}) -> Leverages:
|
6624
|
+
"""
|
6625
|
+
fetch the set leverage for all leverage markets, only spot margin is supported on gate
|
6626
|
+
:see: https://www.gate.io/docs/developers/apiv4/en/#list-lending-markets
|
6627
|
+
:see: https://www.gate.io/docs/developers/apiv4/en/#list-all-supported-currency-pairs-supported-in-margin-trading-deprecated
|
6628
|
+
:param str[] symbols: a list of unified market symbols
|
6629
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
6630
|
+
:param boolean [params.unified]: default False, set to True for fetching unified account leverages
|
6631
|
+
:returns dict: a list of `leverage structures <https://docs.ccxt.com/#/?id=leverage-structure>`
|
6632
|
+
"""
|
6633
|
+
await self.load_markets()
|
6634
|
+
symbols = self.market_symbols(symbols)
|
6635
|
+
response = None
|
6636
|
+
isUnified = self.safe_bool(params, 'unified')
|
6637
|
+
params = self.omit(params, 'unified')
|
6638
|
+
marketIdRequest = 'id'
|
6639
|
+
if isUnified:
|
6640
|
+
marketIdRequest = 'currency_pair'
|
6641
|
+
response = await self.publicMarginGetUniCurrencyPairs(params)
|
6642
|
+
#
|
6643
|
+
# [
|
6644
|
+
# {
|
6645
|
+
# "currency_pair": "1INCH_USDT",
|
6646
|
+
# "base_min_borrow_amount": "8",
|
6647
|
+
# "quote_min_borrow_amount": "1",
|
6648
|
+
# "leverage": "3"
|
6649
|
+
# },
|
6650
|
+
# ]
|
6651
|
+
#
|
6652
|
+
else:
|
6653
|
+
response = await self.publicMarginGetCurrencyPairs(params)
|
6654
|
+
#
|
6655
|
+
# [
|
6656
|
+
# {
|
6657
|
+
# "id": "1CAT_USDT",
|
6658
|
+
# "base": "1CAT",
|
6659
|
+
# "quote": "USDT",
|
6660
|
+
# "leverage": 3,
|
6661
|
+
# "min_base_amount": "71",
|
6662
|
+
# "min_quote_amount": "1",
|
6663
|
+
# "max_quote_amount": "10000",
|
6664
|
+
# "status": 1
|
6665
|
+
# },
|
6666
|
+
# ]
|
6667
|
+
#
|
6668
|
+
return self.parse_leverages(response, symbols, marketIdRequest, 'spot')
|
6669
|
+
|
6670
|
+
def parse_leverage(self, leverage, market=None) -> Leverage:
|
6671
|
+
marketId = self.safe_string_2(leverage, 'currency_pair', 'id')
|
6672
|
+
leverageValue = self.safe_integer(leverage, 'leverage')
|
6673
|
+
return {
|
6674
|
+
'info': leverage,
|
6675
|
+
'symbol': self.safe_symbol(marketId, market, '_', 'spot'),
|
6676
|
+
'marginMode': None,
|
6677
|
+
'longLeverage': leverageValue,
|
6678
|
+
'shortLeverage': leverageValue,
|
6679
|
+
}
|
6680
|
+
|
6518
6681
|
def handle_errors(self, code, reason, url, method, headers, body, response, requestHeaders, requestBody):
|
6519
6682
|
if response is None:
|
6520
6683
|
return None
|
@@ -42,7 +42,7 @@ class gemini(Exchange, ImplicitAPI):
|
|
42
42
|
'CORS': None,
|
43
43
|
'spot': True,
|
44
44
|
'margin': False,
|
45
|
-
'swap':
|
45
|
+
'swap': True,
|
46
46
|
'future': False,
|
47
47
|
'option': False,
|
48
48
|
'addMargin': False,
|
@@ -267,11 +267,11 @@ class gemini(Exchange, ImplicitAPI):
|
|
267
267
|
},
|
268
268
|
},
|
269
269
|
'options': {
|
270
|
-
'fetchMarketsMethod': '
|
270
|
+
'fetchMarketsMethod': 'fetch_markets_from_api', # fetch_markets_from_api, fetch_markets_from_web
|
271
271
|
'fetchMarketFromWebRetries': 10,
|
272
272
|
'fetchMarketsFromAPI': {
|
273
273
|
'fetchDetailsForAllSymbols': False,
|
274
|
-
'
|
274
|
+
'quoteCurrencies': ['USDT', 'GUSD', 'USD', 'DAI', 'EUR', 'GBP', 'SGD', 'BTC', 'ETH', 'LTC', 'BCH'],
|
275
275
|
},
|
276
276
|
'fetchMarkets': {
|
277
277
|
'webApiEnable': True, # fetches from WEB
|
@@ -322,10 +322,7 @@ class gemini(Exchange, ImplicitAPI):
|
|
322
322
|
return None
|
323
323
|
#
|
324
324
|
# {
|
325
|
-
# "tradingPairs": [
|
326
|
-
# ["BTCAUD", 2, 8, "0.00001", 10, True],
|
327
|
-
# ...
|
328
|
-
# ],
|
325
|
+
# "tradingPairs": [['BTCUSD', 2, 8, '0.00001', 10, True], ...],
|
329
326
|
# "currencies": [
|
330
327
|
# ["ORCA", "Orca", 204, 6, 0, 6, 8, False, null, "solana"], #, precisions seem to be the 5th index
|
331
328
|
# ["ATOM", "Cosmos", 44, 6, 0, 6, 8, False, null, "cosmos"],
|
@@ -344,6 +341,7 @@ class gemini(Exchange, ImplicitAPI):
|
|
344
341
|
# }
|
345
342
|
#
|
346
343
|
result = {}
|
344
|
+
self.options['tradingPairs'] = self.safe_list(data, 'tradingPairs')
|
347
345
|
currenciesArray = self.safe_value(data, 'currencies', [])
|
348
346
|
for i in range(0, len(currenciesArray)):
|
349
347
|
currency = currenciesArray[i]
|
@@ -540,7 +538,7 @@ class gemini(Exchange, ImplicitAPI):
|
|
540
538
|
return result
|
541
539
|
|
542
540
|
async def fetch_markets_from_api(self, params={}):
|
543
|
-
|
541
|
+
marketIdsRaw = await self.publicGetV1Symbols(params)
|
544
542
|
#
|
545
543
|
# [
|
546
544
|
# "btcusd",
|
@@ -548,87 +546,166 @@ class gemini(Exchange, ImplicitAPI):
|
|
548
546
|
# ...
|
549
547
|
# ]
|
550
548
|
#
|
551
|
-
result =
|
552
|
-
|
553
|
-
|
554
|
-
market = {
|
555
|
-
'symbol': marketId,
|
556
|
-
}
|
557
|
-
result[marketId] = self.parse_market(market)
|
558
|
-
options = self.safe_value(self.options, 'fetchMarketsFromAPI', {})
|
559
|
-
fetchDetailsForAllSymbols = self.safe_bool(options, 'fetchDetailsForAllSymbols', False)
|
560
|
-
fetchDetailsForMarketIds = self.safe_value(options, 'fetchDetailsForMarketIds', [])
|
561
|
-
promises = []
|
549
|
+
result = []
|
550
|
+
options = self.safe_dict(self.options, 'fetchMarketsFromAPI', {})
|
551
|
+
bugSymbol = 'efilfil' # we skip self inexistent test symbol, which bugs other functions
|
562
552
|
marketIds = []
|
563
|
-
|
564
|
-
|
553
|
+
for i in range(0, len(marketIdsRaw)):
|
554
|
+
if marketIdsRaw[i] != bugSymbol:
|
555
|
+
marketIds.append(marketIdsRaw[i])
|
556
|
+
if self.safe_bool(options, 'fetchDetailsForAllSymbols', False):
|
557
|
+
promises = []
|
558
|
+
for i in range(0, len(marketIds)):
|
559
|
+
marketId = marketIds[i]
|
560
|
+
request = {
|
561
|
+
'symbol': marketId,
|
562
|
+
}
|
563
|
+
promises.append(self.publicGetV1SymbolsDetailsSymbol(self.extend(request, params)))
|
564
|
+
#
|
565
|
+
# {
|
566
|
+
# "symbol": "BTCUSD",
|
567
|
+
# "base_currency": "BTC",
|
568
|
+
# "quote_currency": "USD",
|
569
|
+
# "tick_size": 1E-8,
|
570
|
+
# "quote_increment": 0.01,
|
571
|
+
# "min_order_size": "0.00001",
|
572
|
+
# "status": "open",
|
573
|
+
# "wrap_enabled": False
|
574
|
+
# }
|
575
|
+
#
|
576
|
+
responses = await asyncio.gather(*promises)
|
577
|
+
for i in range(0, len(responses)):
|
578
|
+
result.append(self.parse_market(responses[i]))
|
565
579
|
else:
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
# "quote_increment": 0.01,
|
580
|
-
# "min_order_size": "0.00001",
|
581
|
-
# "status": "open",
|
582
|
-
# "wrap_enabled": False
|
583
|
-
# }
|
584
|
-
#
|
585
|
-
promises = await asyncio.gather(*promises)
|
586
|
-
for i in range(0, len(promises)):
|
587
|
-
responseInner = promises[i]
|
588
|
-
marketId = self.safe_string_lower(responseInner, 'symbol')
|
589
|
-
result[marketId] = self.parse_market(responseInner)
|
590
|
-
return self.to_array(result)
|
580
|
+
# use trading-pairs info, if it was fetched
|
581
|
+
tradingPairs = self.safe_list(self.options, 'tradingPairs')
|
582
|
+
if tradingPairs is not None:
|
583
|
+
indexedTradingPairs = self.index_by(tradingPairs, 0)
|
584
|
+
for i in range(0, len(marketIds)):
|
585
|
+
marketId = marketIds[i]
|
586
|
+
tradingPair = self.safe_list(indexedTradingPairs, marketId.upper())
|
587
|
+
if tradingPair is not None:
|
588
|
+
result.append(self.parse_market(tradingPair))
|
589
|
+
else:
|
590
|
+
for i in range(0, len(marketIds)):
|
591
|
+
result.append(self.parse_market(marketIds[i]))
|
592
|
+
return result
|
591
593
|
|
592
594
|
def parse_market(self, response) -> Market:
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
|
600
|
-
|
601
|
-
|
595
|
+
#
|
596
|
+
# response might be:
|
597
|
+
#
|
598
|
+
# btcusd
|
599
|
+
#
|
600
|
+
# or
|
601
|
+
#
|
602
|
+
# [
|
603
|
+
# 'BTCUSD', # symbol
|
604
|
+
# 2, # priceTickDecimalPlaces
|
605
|
+
# 8, # quantityTickDecimalPlaces
|
606
|
+
# '0.00001', # quantityMinimum
|
607
|
+
# 10, # quantityRoundDecimalPlaces
|
608
|
+
# True # minimumsAreInclusive
|
609
|
+
# ],
|
610
|
+
#
|
611
|
+
# or
|
612
|
+
#
|
613
|
+
# {
|
614
|
+
# "symbol": "BTCUSD", # perpetuals have 'PERP' suffix, i.e. DOGEUSDPERP
|
615
|
+
# "base_currency": "BTC",
|
616
|
+
# "quote_currency": "USD",
|
617
|
+
# "tick_size": 1E-8,
|
618
|
+
# "quote_increment": 0.01,
|
619
|
+
# "min_order_size": "0.00001",
|
620
|
+
# "status": "open",
|
621
|
+
# "wrap_enabled": False
|
622
|
+
# "product_type": "swap", # only in perps
|
623
|
+
# "contract_type": "linear", # only in perps
|
624
|
+
# "contract_price_currency": "GUSD" # only in perps
|
625
|
+
# }
|
626
|
+
#
|
627
|
+
marketId = None
|
628
|
+
baseId = None
|
629
|
+
quoteId = None
|
630
|
+
settleId = None
|
631
|
+
tickSize = None
|
632
|
+
increment = None
|
633
|
+
minSize = None
|
634
|
+
status = None
|
635
|
+
swap = False
|
636
|
+
contractSize = None
|
637
|
+
linear = None
|
638
|
+
inverse = None
|
639
|
+
isString = (isinstance(response, str))
|
640
|
+
isArray = (isinstance(response, list))
|
641
|
+
if not isString and not isArray:
|
642
|
+
marketId = self.safe_string_lower(response, 'symbol')
|
643
|
+
minSize = self.safe_number(response, 'min_order_size')
|
644
|
+
tickSize = self.safe_number(response, 'tick_size')
|
645
|
+
increment = self.safe_number(response, 'quote_increment')
|
646
|
+
status = self.parse_market_active(self.safe_string(response, 'status'))
|
647
|
+
baseId = self.safe_string(response, 'base_currency')
|
648
|
+
quoteId = self.safe_string(response, 'quote_currency')
|
649
|
+
settleId = self.safe_string(response, 'contract_price_currency')
|
650
|
+
else:
|
651
|
+
# if no detailed API was called, then parse either string or array
|
652
|
+
if isString:
|
653
|
+
marketId = response
|
654
|
+
else:
|
655
|
+
marketId = self.safe_string_lower(response, 0)
|
656
|
+
minSize = self.safe_number(response, 3)
|
657
|
+
tickSize = self.parse_number(self.parse_precision(self.safe_string(response, 1)))
|
658
|
+
increment = self.parse_number(self.parse_precision(self.safe_string(response, 2)))
|
659
|
+
marketIdUpper = marketId.upper()
|
660
|
+
isPerp = (marketIdUpper.find('PERP') >= 0)
|
661
|
+
marketIdWithoutPerp = marketIdUpper.replace('PERP', '')
|
662
|
+
quoteQurrencies = self.handle_option('fetchMarketsFromAPI', 'quoteCurrencies', [])
|
663
|
+
for i in range(0, len(quoteQurrencies)):
|
664
|
+
quoteCurrency = quoteQurrencies[i]
|
665
|
+
if marketIdWithoutPerp.endswith(quoteCurrency):
|
666
|
+
baseId = marketIdWithoutPerp.replace(quoteCurrency, '')
|
667
|
+
quoteId = quoteCurrency
|
668
|
+
if isPerp:
|
669
|
+
settleId = quoteCurrency # always same
|
670
|
+
break
|
602
671
|
base = self.safe_currency_code(baseId)
|
603
672
|
quote = self.safe_currency_code(quoteId)
|
604
|
-
|
673
|
+
settle = self.safe_currency_code(settleId)
|
674
|
+
symbol = base + '/' + quote
|
675
|
+
if settleId is not None:
|
676
|
+
symbol = symbol + ':' + settle
|
677
|
+
swap = True
|
678
|
+
contractSize = tickSize # always same
|
679
|
+
linear = True # always linear
|
680
|
+
inverse = False
|
681
|
+
type = 'swap' if swap else 'spot'
|
605
682
|
return {
|
606
683
|
'id': marketId,
|
607
|
-
'symbol':
|
684
|
+
'symbol': symbol,
|
608
685
|
'base': base,
|
609
686
|
'quote': quote,
|
610
|
-
'settle':
|
687
|
+
'settle': settle,
|
611
688
|
'baseId': baseId,
|
612
689
|
'quoteId': quoteId,
|
613
|
-
'settleId':
|
614
|
-
'type':
|
615
|
-
'spot':
|
690
|
+
'settleId': settleId,
|
691
|
+
'type': type,
|
692
|
+
'spot': not swap,
|
616
693
|
'margin': False,
|
617
|
-
'swap':
|
694
|
+
'swap': swap,
|
618
695
|
'future': False,
|
619
696
|
'option': False,
|
620
|
-
'active':
|
621
|
-
'contract':
|
622
|
-
'linear':
|
623
|
-
'inverse':
|
624
|
-
'contractSize':
|
697
|
+
'active': status,
|
698
|
+
'contract': swap,
|
699
|
+
'linear': linear,
|
700
|
+
'inverse': inverse,
|
701
|
+
'contractSize': contractSize,
|
625
702
|
'expiry': None,
|
626
703
|
'expiryDatetime': None,
|
627
704
|
'strike': None,
|
628
705
|
'optionType': None,
|
629
706
|
'precision': {
|
630
|
-
'price':
|
631
|
-
'amount':
|
707
|
+
'price': increment,
|
708
|
+
'amount': tickSize,
|
632
709
|
},
|
633
710
|
'limits': {
|
634
711
|
'leverage': {
|
@@ -636,7 +713,7 @@ class gemini(Exchange, ImplicitAPI):
|
|
636
713
|
'max': None,
|
637
714
|
},
|
638
715
|
'amount': {
|
639
|
-
'min':
|
716
|
+
'min': minSize,
|
640
717
|
'max': None,
|
641
718
|
},
|
642
719
|
'price': {
|