ccxt 4.4.58__py2.py3-none-any.whl → 4.4.60__py2.py3-none-any.whl
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.
- ccxt/__init__.py +1 -3
- ccxt/ace.py +2 -2
- ccxt/alpaca.py +12 -7
- ccxt/ascendex.py +3 -3
- ccxt/async_support/__init__.py +1 -3
- ccxt/async_support/ace.py +2 -2
- ccxt/async_support/alpaca.py +12 -7
- ccxt/async_support/ascendex.py +3 -3
- ccxt/async_support/base/exchange.py +4 -1
- ccxt/async_support/bequant.py +2 -1
- ccxt/async_support/bigone.py +5 -5
- ccxt/async_support/binance.py +84 -4
- ccxt/async_support/binancecoinm.py +2 -1
- ccxt/async_support/binanceus.py +2 -1
- ccxt/async_support/binanceusdm.py +2 -1
- ccxt/async_support/bingx.py +3 -3
- ccxt/async_support/bit2c.py +9 -9
- ccxt/async_support/bitbank.py +2 -2
- ccxt/async_support/bitbns.py +2 -2
- ccxt/async_support/bitcoincom.py +2 -1
- ccxt/async_support/bitfinex.py +2 -2
- ccxt/async_support/bitfinex1.py +2 -2
- ccxt/async_support/bitflyer.py +2 -2
- ccxt/async_support/bitget.py +6 -5
- ccxt/async_support/bithumb.py +2 -2
- ccxt/async_support/bitmart.py +137 -86
- ccxt/async_support/bitmex.py +2 -2
- ccxt/async_support/bitopro.py +2 -2
- ccxt/async_support/bitpanda.py +2 -1
- ccxt/async_support/bitrue.py +3 -3
- ccxt/async_support/bitso.py +2 -2
- ccxt/async_support/bitstamp.py +2 -2
- ccxt/async_support/bitteam.py +2 -2
- ccxt/async_support/bitvavo.py +3 -3
- ccxt/async_support/bl3p.py +2 -2
- ccxt/async_support/blockchaincom.py +2 -2
- ccxt/async_support/blofin.py +2 -2
- ccxt/async_support/btcalpha.py +2 -2
- ccxt/async_support/btcbox.py +2 -2
- ccxt/async_support/btcmarkets.py +3 -3
- ccxt/async_support/btcturk.py +2 -2
- ccxt/async_support/bybit.py +9 -6
- ccxt/async_support/cex.py +3 -3
- ccxt/async_support/coinbase.py +4 -4
- ccxt/async_support/coinbaseadvanced.py +2 -1
- ccxt/async_support/coinbaseexchange.py +3 -3
- ccxt/async_support/coinbaseinternational.py +3 -4
- ccxt/async_support/coincatch.py +3 -3
- ccxt/async_support/coincheck.py +2 -2
- ccxt/async_support/coinex.py +3 -3
- ccxt/async_support/coinlist.py +3 -3
- ccxt/async_support/coinmate.py +2 -2
- ccxt/async_support/coinmetro.py +2 -2
- ccxt/async_support/coinone.py +2 -2
- ccxt/async_support/coinsph.py +3 -3
- ccxt/async_support/coinspot.py +2 -2
- ccxt/async_support/cryptocom.py +2 -2
- ccxt/async_support/currencycom.py +3 -3
- ccxt/async_support/defx.py +3 -3
- ccxt/async_support/delta.py +3 -3
- ccxt/async_support/deribit.py +3 -3
- ccxt/async_support/digifinex.py +3 -3
- ccxt/async_support/ellipx.py +1 -1
- ccxt/async_support/exmo.py +2 -2
- ccxt/async_support/fmfwio.py +2 -1
- ccxt/async_support/gate.py +3 -3
- ccxt/async_support/gateio.py +2 -1
- ccxt/async_support/gemini.py +2 -2
- ccxt/async_support/hashkey.py +2 -2
- ccxt/async_support/hitbtc.py +3 -3
- ccxt/async_support/hollaex.py +3 -3
- ccxt/async_support/htx.py +3 -3
- ccxt/async_support/huobi.py +2 -1
- ccxt/async_support/huobijp.py +3 -3
- ccxt/async_support/hyperliquid.py +83 -3
- ccxt/async_support/idex.py +3 -3
- ccxt/async_support/independentreserve.py +2 -2
- ccxt/async_support/indodax.py +3 -3
- ccxt/async_support/kraken.py +3 -3
- ccxt/async_support/krakenfutures.py +2 -2
- ccxt/async_support/kucoin.py +3 -3
- ccxt/async_support/kucoinfutures.py +3 -3
- ccxt/async_support/kuna.py +3 -3
- ccxt/async_support/latoken.py +3 -3
- ccxt/async_support/lbank.py +3 -3
- ccxt/async_support/luno.py +2 -2
- ccxt/async_support/mercado.py +2 -2
- ccxt/async_support/mexc.py +3 -3
- ccxt/async_support/myokx.py +2 -1
- ccxt/async_support/ndax.py +2 -2
- ccxt/async_support/novadax.py +3 -3
- ccxt/async_support/oceanex.py +3 -3
- ccxt/async_support/okcoin.py +3 -3
- ccxt/async_support/okx.py +3 -4
- ccxt/async_support/onetrading.py +3 -3
- ccxt/async_support/oxfun.py +3 -3
- ccxt/async_support/p2b.py +2 -2
- ccxt/async_support/paradex.py +3 -3
- ccxt/async_support/paymium.py +2 -2
- ccxt/async_support/phemex.py +2 -2
- ccxt/async_support/poloniex.py +3 -3
- ccxt/async_support/poloniexfutures.py +3 -3
- ccxt/async_support/probit.py +3 -3
- ccxt/async_support/timex.py +3 -3
- ccxt/async_support/tokocrypto.py +3 -3
- ccxt/async_support/tradeogre.py +2 -2
- ccxt/async_support/upbit.py +2 -2
- ccxt/async_support/vertex.py +4 -4
- ccxt/async_support/wavesexchange.py +2 -3
- ccxt/async_support/whitebit.py +3 -3
- ccxt/async_support/woo.py +3 -4
- ccxt/async_support/woofipro.py +3 -4
- ccxt/async_support/xt.py +15 -3
- ccxt/async_support/yobit.py +2 -2
- ccxt/async_support/zaif.py +2 -2
- ccxt/async_support/zonda.py +2 -2
- ccxt/base/errors.py +6 -0
- ccxt/base/exchange.py +8 -3
- ccxt/bequant.py +2 -1
- ccxt/bigone.py +5 -5
- ccxt/binance.py +84 -4
- ccxt/binancecoinm.py +2 -1
- ccxt/binanceus.py +2 -1
- ccxt/binanceusdm.py +2 -1
- ccxt/bingx.py +3 -3
- ccxt/bit2c.py +9 -9
- ccxt/bitbank.py +2 -2
- ccxt/bitbns.py +2 -2
- ccxt/bitcoincom.py +2 -1
- ccxt/bitfinex.py +2 -2
- ccxt/bitfinex1.py +2 -2
- ccxt/bitflyer.py +2 -2
- ccxt/bitget.py +6 -5
- ccxt/bithumb.py +2 -2
- ccxt/bitmart.py +137 -86
- ccxt/bitmex.py +2 -2
- ccxt/bitopro.py +2 -2
- ccxt/bitpanda.py +2 -1
- ccxt/bitrue.py +3 -3
- ccxt/bitso.py +2 -2
- ccxt/bitstamp.py +2 -2
- ccxt/bitteam.py +2 -2
- ccxt/bitvavo.py +3 -3
- ccxt/bl3p.py +2 -2
- ccxt/blockchaincom.py +2 -2
- ccxt/blofin.py +2 -2
- ccxt/btcalpha.py +2 -2
- ccxt/btcbox.py +2 -2
- ccxt/btcmarkets.py +3 -3
- ccxt/btcturk.py +2 -2
- ccxt/bybit.py +9 -6
- ccxt/cex.py +3 -3
- ccxt/coinbase.py +4 -4
- ccxt/coinbaseadvanced.py +2 -1
- ccxt/coinbaseexchange.py +3 -3
- ccxt/coinbaseinternational.py +3 -4
- ccxt/coincatch.py +3 -3
- ccxt/coincheck.py +2 -2
- ccxt/coinex.py +3 -3
- ccxt/coinlist.py +3 -3
- ccxt/coinmate.py +2 -2
- ccxt/coinmetro.py +2 -2
- ccxt/coinone.py +2 -2
- ccxt/coinsph.py +3 -3
- ccxt/coinspot.py +2 -2
- ccxt/cryptocom.py +2 -2
- ccxt/currencycom.py +3 -3
- ccxt/defx.py +3 -3
- ccxt/delta.py +3 -3
- ccxt/deribit.py +3 -3
- ccxt/digifinex.py +3 -3
- ccxt/ellipx.py +1 -1
- ccxt/exmo.py +2 -2
- ccxt/fmfwio.py +2 -1
- ccxt/gate.py +3 -3
- ccxt/gateio.py +2 -1
- ccxt/gemini.py +2 -2
- ccxt/hashkey.py +2 -2
- ccxt/hitbtc.py +3 -3
- ccxt/hollaex.py +3 -3
- ccxt/htx.py +3 -3
- ccxt/huobi.py +2 -1
- ccxt/huobijp.py +3 -3
- ccxt/hyperliquid.py +83 -3
- ccxt/idex.py +3 -3
- ccxt/independentreserve.py +2 -2
- ccxt/indodax.py +3 -3
- ccxt/kraken.py +3 -3
- ccxt/krakenfutures.py +2 -2
- ccxt/kucoin.py +3 -3
- ccxt/kucoinfutures.py +3 -3
- ccxt/kuna.py +3 -3
- ccxt/latoken.py +3 -3
- ccxt/lbank.py +3 -3
- ccxt/luno.py +2 -2
- ccxt/mercado.py +2 -2
- ccxt/mexc.py +3 -3
- ccxt/myokx.py +2 -1
- ccxt/ndax.py +2 -2
- ccxt/novadax.py +3 -3
- ccxt/oceanex.py +3 -3
- ccxt/okcoin.py +3 -3
- ccxt/okx.py +3 -4
- ccxt/onetrading.py +3 -3
- ccxt/oxfun.py +3 -3
- ccxt/p2b.py +2 -2
- ccxt/paradex.py +3 -3
- ccxt/paymium.py +2 -2
- ccxt/phemex.py +2 -2
- ccxt/poloniex.py +3 -3
- ccxt/poloniexfutures.py +3 -3
- ccxt/pro/__init__.py +1 -3
- ccxt/pro/alpaca.py +2 -2
- ccxt/pro/ascendex.py +2 -2
- ccxt/pro/bequant.py +2 -1
- ccxt/pro/binance.py +2 -3
- ccxt/pro/binancecoinm.py +2 -1
- ccxt/pro/binanceus.py +3 -2
- ccxt/pro/binanceusdm.py +2 -1
- ccxt/pro/bingx.py +2 -2
- ccxt/pro/bitcoincom.py +2 -1
- ccxt/pro/bitfinex.py +2 -2
- ccxt/pro/bitfinex1.py +2 -2
- ccxt/pro/bitget.py +2 -3
- ccxt/pro/bithumb.py +2 -2
- ccxt/pro/bitmart.py +2 -2
- ccxt/pro/bitmex.py +2 -2
- ccxt/pro/bitopro.py +2 -2
- ccxt/pro/bitpanda.py +2 -1
- ccxt/pro/bitrue.py +2 -2
- ccxt/pro/bitstamp.py +2 -2
- ccxt/pro/bitvavo.py +2 -2
- ccxt/pro/blockchaincom.py +2 -2
- ccxt/pro/blofin.py +1 -1
- ccxt/pro/bybit.py +2 -3
- ccxt/pro/cex.py +2 -2
- ccxt/pro/coinbase.py +2 -2
- ccxt/pro/coinbaseadvanced.py +2 -1
- ccxt/pro/coinbaseexchange.py +2 -2
- ccxt/pro/coinbaseinternational.py +2 -2
- ccxt/pro/coincatch.py +2 -3
- ccxt/pro/coincheck.py +2 -2
- ccxt/pro/coinex.py +2 -2
- ccxt/pro/coinone.py +2 -2
- ccxt/pro/cryptocom.py +2 -3
- ccxt/pro/currencycom.py +2 -2
- ccxt/pro/defx.py +2 -3
- ccxt/pro/deribit.py +2 -2
- ccxt/pro/exmo.py +2 -2
- ccxt/pro/gate.py +2 -3
- ccxt/pro/gateio.py +2 -1
- ccxt/pro/gemini.py +2 -2
- ccxt/pro/hashkey.py +2 -2
- ccxt/pro/hitbtc.py +2 -2
- ccxt/pro/hollaex.py +2 -2
- ccxt/pro/htx.py +2 -2
- ccxt/pro/huobi.py +2 -1
- ccxt/pro/huobijp.py +2 -2
- ccxt/pro/hyperliquid.py +2 -3
- ccxt/pro/idex.py +2 -2
- ccxt/pro/independentreserve.py +2 -2
- ccxt/pro/kraken.py +2 -2
- ccxt/pro/krakenfutures.py +2 -2
- ccxt/pro/kucoin.py +2 -3
- ccxt/pro/kucoinfutures.py +2 -3
- ccxt/pro/lbank.py +2 -2
- ccxt/pro/luno.py +2 -2
- ccxt/pro/mexc.py +2 -2
- ccxt/pro/myokx.py +2 -1
- ccxt/pro/ndax.py +2 -2
- ccxt/pro/okcoin.py +2 -2
- ccxt/pro/okx.py +2 -3
- ccxt/pro/onetrading.py +2 -2
- ccxt/pro/oxfun.py +2 -2
- ccxt/pro/p2b.py +2 -2
- ccxt/pro/paradex.py +2 -2
- ccxt/pro/phemex.py +2 -2
- ccxt/pro/poloniex.py +2 -2
- ccxt/pro/poloniexfutures.py +2 -2
- ccxt/pro/probit.py +2 -2
- ccxt/pro/upbit.py +2 -2
- ccxt/pro/vertex.py +2 -2
- ccxt/pro/wazirx.py +2 -2
- ccxt/pro/whitebit.py +2 -2
- ccxt/pro/woo.py +2 -2
- ccxt/pro/woofipro.py +2 -2
- ccxt/pro/xt.py +110 -4
- ccxt/probit.py +3 -3
- ccxt/test/tests_async.py +11 -0
- ccxt/test/tests_sync.py +11 -0
- ccxt/timex.py +3 -3
- ccxt/tokocrypto.py +3 -3
- ccxt/tradeogre.py +2 -2
- ccxt/upbit.py +2 -2
- ccxt/vertex.py +4 -4
- ccxt/wavesexchange.py +2 -3
- ccxt/whitebit.py +3 -3
- ccxt/woo.py +3 -4
- ccxt/woofipro.py +3 -4
- ccxt/xt.py +15 -3
- ccxt/yobit.py +2 -2
- ccxt/zaif.py +2 -2
- ccxt/zonda.py +2 -2
- {ccxt-4.4.58.dist-info → ccxt-4.4.60.dist-info}/METADATA +30 -33
- {ccxt-4.4.58.dist-info → ccxt-4.4.60.dist-info}/RECORD +308 -311
- ccxt/abstract/wazirx.py +0 -30
- ccxt/async_support/wazirx.py +0 -1336
- ccxt/wazirx.py +0 -1336
- {ccxt-4.4.58.dist-info → ccxt-4.4.60.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.58.dist-info → ccxt-4.4.60.dist-info}/WHEEL +0 -0
- {ccxt-4.4.58.dist-info → ccxt-4.4.60.dist-info}/top_level.txt +0 -0
ccxt/pro/xt.py
CHANGED
@@ -4,15 +4,15 @@
|
|
4
4
|
# https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
|
5
5
|
|
6
6
|
import ccxt.async_support
|
7
|
-
from ccxt.async_support.base.ws.cache import ArrayCache, ArrayCacheBySymbolById, ArrayCacheByTimestamp
|
8
|
-
from ccxt.base.types import Balances, Int, Market, Order, OrderBook, Str, Strings, Ticker, Tickers, Trade
|
7
|
+
from ccxt.async_support.base.ws.cache import ArrayCache, ArrayCacheBySymbolById, ArrayCacheBySymbolBySide, ArrayCacheByTimestamp
|
8
|
+
from ccxt.base.types import Any, Balances, Int, Market, Order, OrderBook, Position, Str, Strings, Ticker, Tickers, Trade
|
9
9
|
from ccxt.async_support.base.ws.client import Client
|
10
10
|
from typing import List
|
11
11
|
|
12
12
|
|
13
13
|
class xt(ccxt.async_support.xt):
|
14
14
|
|
15
|
-
def describe(self):
|
15
|
+
def describe(self) -> Any:
|
16
16
|
return self.deep_extend(super(xt, self).describe(), {
|
17
17
|
'has': {
|
18
18
|
'ws': True,
|
@@ -25,7 +25,7 @@ class xt(ccxt.async_support.xt):
|
|
25
25
|
'watchBalance': True,
|
26
26
|
'watchOrders': True,
|
27
27
|
'watchMyTrades': True,
|
28
|
-
'watchPositions':
|
28
|
+
'watchPositions': True,
|
29
29
|
},
|
30
30
|
'urls': {
|
31
31
|
'api': {
|
@@ -45,6 +45,11 @@ class xt(ccxt.async_support.xt):
|
|
45
45
|
'watchTickers': {
|
46
46
|
'method': 'tickers', # agg_tickers(contract only)
|
47
47
|
},
|
48
|
+
'watchPositions': {
|
49
|
+
'type': 'swap',
|
50
|
+
'fetchPositionsSnapshot': True,
|
51
|
+
'awaitPositionsSnapshot': True,
|
52
|
+
},
|
48
53
|
},
|
49
54
|
'streaming': {
|
50
55
|
'keepAlive': 20000,
|
@@ -352,6 +357,106 @@ class xt(ccxt.async_support.xt):
|
|
352
357
|
name = 'balance'
|
353
358
|
return await self.subscribe(name, 'private', 'watchBalance', None, None, params)
|
354
359
|
|
360
|
+
async def watch_positions(self, symbols: Strings = None, since: Int = None, limit: Int = None, params={}) -> List[Position]:
|
361
|
+
"""
|
362
|
+
|
363
|
+
https://doc.xt.com/#futures_user_websocket_v2position
|
364
|
+
|
365
|
+
watch all open positions
|
366
|
+
:param str[]|None symbols: list of unified market symbols
|
367
|
+
:param number [since]: since timestamp
|
368
|
+
:param number [limit]: limit
|
369
|
+
:param dict params: extra parameters specific to the exchange API endpoint
|
370
|
+
:returns dict[]: a list of `position structure <https://docs.ccxt.com/en/latest/manual.html#position-structure>`
|
371
|
+
"""
|
372
|
+
await self.load_markets()
|
373
|
+
url = self.urls['api']['ws']['contract'] + '/' + 'user'
|
374
|
+
client = self.client(url)
|
375
|
+
self.set_positions_cache(client)
|
376
|
+
fetchPositionsSnapshot = self.handle_option('watchPositions', 'fetchPositionsSnapshot', True)
|
377
|
+
awaitPositionsSnapshot = self.handle_option('watchPositions', 'awaitPositionsSnapshot', True)
|
378
|
+
cache = self.positions
|
379
|
+
if fetchPositionsSnapshot and awaitPositionsSnapshot and self.is_empty(cache):
|
380
|
+
snapshot = await client.future('fetchPositionsSnapshot')
|
381
|
+
return self.filter_by_symbols_since_limit(snapshot, symbols, since, limit, True)
|
382
|
+
name = 'position'
|
383
|
+
newPositions = await self.subscribe(name, 'private', 'watchPositions', None, None, params)
|
384
|
+
if self.newUpdates:
|
385
|
+
return newPositions
|
386
|
+
return self.filter_by_symbols_since_limit(cache, symbols, since, limit, True)
|
387
|
+
|
388
|
+
def set_positions_cache(self, client: Client):
|
389
|
+
if self.positions is None:
|
390
|
+
self.positions = ArrayCacheBySymbolBySide()
|
391
|
+
fetchPositionsSnapshot = self.handle_option('watchPositions', 'fetchPositionsSnapshot')
|
392
|
+
if fetchPositionsSnapshot:
|
393
|
+
messageHash = 'fetchPositionsSnapshot'
|
394
|
+
if not (messageHash in client.futures):
|
395
|
+
client.future(messageHash)
|
396
|
+
self.spawn(self.load_positions_snapshot, client, messageHash)
|
397
|
+
|
398
|
+
async def load_positions_snapshot(self, client, messageHash):
|
399
|
+
positions = await self.fetch_positions(None)
|
400
|
+
self.positions = ArrayCacheBySymbolBySide()
|
401
|
+
cache = self.positions
|
402
|
+
for i in range(0, len(positions)):
|
403
|
+
position = positions[i]
|
404
|
+
contracts = self.safe_number(position, 'contracts', 0)
|
405
|
+
if contracts > 0:
|
406
|
+
cache.append(position)
|
407
|
+
# don't remove the future from the .futures cache
|
408
|
+
future = client.futures[messageHash]
|
409
|
+
future.resolve(cache)
|
410
|
+
client.resolve(cache, 'position::contract')
|
411
|
+
|
412
|
+
def handle_position(self, client, message):
|
413
|
+
#
|
414
|
+
# {
|
415
|
+
# topic: 'position',
|
416
|
+
# event: 'position',
|
417
|
+
# data: {
|
418
|
+
# accountId: 245296,
|
419
|
+
# accountType: 0,
|
420
|
+
# symbol: 'eth_usdt',
|
421
|
+
# contractType: 'PERPETUAL',
|
422
|
+
# positionType: 'CROSSED',
|
423
|
+
# positionSide: 'LONG',
|
424
|
+
# positionSize: '1',
|
425
|
+
# closeOrderSize: '0',
|
426
|
+
# availableCloseSize: '1',
|
427
|
+
# realizedProfit: '-0.0121',
|
428
|
+
# entryPrice: '2637.87',
|
429
|
+
# openOrderSize: '1',
|
430
|
+
# isolatedMargin: '2.63787',
|
431
|
+
# openOrderMarginFrozen: '2.78832014',
|
432
|
+
# underlyingType: 'U_BASED',
|
433
|
+
# leverage: 10,
|
434
|
+
# welfareAccount: False,
|
435
|
+
# profitFixedLatest: {},
|
436
|
+
# closeProfit: '0.0000',
|
437
|
+
# totalFee: '-0.0158',
|
438
|
+
# totalFundFee: '0.0037',
|
439
|
+
# markPrice: '2690.96'
|
440
|
+
# }
|
441
|
+
# }
|
442
|
+
#
|
443
|
+
if self.positions is None:
|
444
|
+
self.positions = ArrayCacheBySymbolBySide()
|
445
|
+
cache = self.positions
|
446
|
+
data = self.safe_dict(message, 'data', {})
|
447
|
+
position = self.parse_position(data)
|
448
|
+
cache.append(position)
|
449
|
+
messageHashes = self.find_message_hashes(client, 'position::contract')
|
450
|
+
for i in range(0, len(messageHashes)):
|
451
|
+
messageHash = messageHashes[i]
|
452
|
+
parts = messageHash.split('::')
|
453
|
+
symbolsString = parts[1]
|
454
|
+
symbols = symbolsString.split(',')
|
455
|
+
positions = self.filter_by_array([position], 'symbol', symbols, False)
|
456
|
+
if not self.is_empty(positions):
|
457
|
+
client.resolve(positions, messageHash)
|
458
|
+
client.resolve([position], 'position::contract')
|
459
|
+
|
355
460
|
def handle_ticker(self, client: Client, message: dict):
|
356
461
|
#
|
357
462
|
# spot
|
@@ -1036,6 +1141,7 @@ class xt(ccxt.async_support.xt):
|
|
1036
1141
|
'agg_tickers': self.handle_tickers,
|
1037
1142
|
'balance': self.handle_balance,
|
1038
1143
|
'order': self.handle_order,
|
1144
|
+
'position': self.handle_position,
|
1039
1145
|
}
|
1040
1146
|
method = self.safe_value(methods, topic)
|
1041
1147
|
if topic == 'trade':
|
ccxt/probit.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.probit import ImplicitAPI
|
8
8
|
import math
|
9
|
-
from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
9
|
+
from ccxt.base.types import Any, Balances, Currencies, Currency, DepositAddress, Int, Market, Num, Order, 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 AuthenticationError
|
@@ -28,7 +28,7 @@ from ccxt.base.precise import Precise
|
|
28
28
|
|
29
29
|
class probit(Exchange, ImplicitAPI):
|
30
30
|
|
31
|
-
def describe(self):
|
31
|
+
def describe(self) -> Any:
|
32
32
|
return self.deep_extend(super(probit, self).describe(), {
|
33
33
|
'id': 'probit',
|
34
34
|
'name': 'ProBit',
|
@@ -938,7 +938,7 @@ class probit(Exchange, ImplicitAPI):
|
|
938
938
|
'fee': fee,
|
939
939
|
}, market)
|
940
940
|
|
941
|
-
def fetch_time(self, params={}):
|
941
|
+
def fetch_time(self, params={}) -> Int:
|
942
942
|
"""
|
943
943
|
|
944
944
|
https://docs-en.probit.com/reference/time
|
ccxt/test/tests_async.py
CHANGED
@@ -620,10 +620,21 @@ class testMainClass:
|
|
620
620
|
dump('[TEST_WARNING]' + error_message)
|
621
621
|
return True
|
622
622
|
|
623
|
+
def check_constructor(self, exchange):
|
624
|
+
# todo: this might be moved in base tests later
|
625
|
+
if exchange.id == 'binance':
|
626
|
+
assert exchange.hostname is None, 'binance.com hostname should be empty'
|
627
|
+
assert exchange.urls['api']['public'] == 'https://api.binance.com/api/v3', 'https://api.binance.com/api/v3 does not match: ' + exchange.urls['api']['public']
|
628
|
+
assert ('lending/union/account' in exchange.api['sapi']['get']), 'SAPI should contain the endpoint lending/union/account, ' + json_stringify(exchange.api['sapi']['get'])
|
629
|
+
elif exchange.id == 'binanceus':
|
630
|
+
assert exchange.hostname == 'binance.us', 'binance.us hostname does not match ' + exchange.hostname
|
631
|
+
assert exchange.urls['api']['public'] == 'https://api.binance.us/api/v3', 'https://api.binance.us/api/v3 does not match: ' + exchange.urls['api']['public']
|
632
|
+
|
623
633
|
async def start_test(self, exchange, symbol):
|
624
634
|
# we do not need to test aliases
|
625
635
|
if exchange.alias:
|
626
636
|
return True
|
637
|
+
self.check_constructor(exchange)
|
627
638
|
if self.sandbox or get_exchange_prop(exchange, 'sandbox'):
|
628
639
|
exchange.set_sandbox_mode(True)
|
629
640
|
try:
|
ccxt/test/tests_sync.py
CHANGED
@@ -617,10 +617,21 @@ class testMainClass:
|
|
617
617
|
dump('[TEST_WARNING]' + error_message)
|
618
618
|
return True
|
619
619
|
|
620
|
+
def check_constructor(self, exchange):
|
621
|
+
# todo: this might be moved in base tests later
|
622
|
+
if exchange.id == 'binance':
|
623
|
+
assert exchange.hostname is None, 'binance.com hostname should be empty'
|
624
|
+
assert exchange.urls['api']['public'] == 'https://api.binance.com/api/v3', 'https://api.binance.com/api/v3 does not match: ' + exchange.urls['api']['public']
|
625
|
+
assert ('lending/union/account' in exchange.api['sapi']['get']), 'SAPI should contain the endpoint lending/union/account, ' + json_stringify(exchange.api['sapi']['get'])
|
626
|
+
elif exchange.id == 'binanceus':
|
627
|
+
assert exchange.hostname == 'binance.us', 'binance.us hostname does not match ' + exchange.hostname
|
628
|
+
assert exchange.urls['api']['public'] == 'https://api.binance.us/api/v3', 'https://api.binance.us/api/v3 does not match: ' + exchange.urls['api']['public']
|
629
|
+
|
620
630
|
def start_test(self, exchange, symbol):
|
621
631
|
# we do not need to test aliases
|
622
632
|
if exchange.alias:
|
623
633
|
return True
|
634
|
+
self.check_constructor(exchange)
|
624
635
|
if self.sandbox or get_exchange_prop(exchange, 'sandbox'):
|
625
636
|
exchange.set_sandbox_mode(True)
|
626
637
|
try:
|
ccxt/timex.py
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.timex import ImplicitAPI
|
8
|
-
from ccxt.base.types import Balances, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction
|
8
|
+
from ccxt.base.types import Any, Balances, Currencies, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, Transaction
|
9
9
|
from typing import List
|
10
10
|
from ccxt.base.errors import ExchangeError
|
11
11
|
from ccxt.base.errors import AuthenticationError
|
@@ -24,7 +24,7 @@ from ccxt.base.precise import Precise
|
|
24
24
|
|
25
25
|
class timex(Exchange, ImplicitAPI):
|
26
26
|
|
27
|
-
def describe(self):
|
27
|
+
def describe(self) -> Any:
|
28
28
|
return self.deep_extend(super(timex, self).describe(), {
|
29
29
|
'id': 'timex',
|
30
30
|
'name': 'TimeX',
|
@@ -354,7 +354,7 @@ class timex(Exchange, ImplicitAPI):
|
|
354
354
|
},
|
355
355
|
})
|
356
356
|
|
357
|
-
def fetch_time(self, params={}):
|
357
|
+
def fetch_time(self, params={}) -> Int:
|
358
358
|
"""
|
359
359
|
fetches the current integer timestamp in milliseconds from the exchange server
|
360
360
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
ccxt/tokocrypto.py
CHANGED
@@ -7,7 +7,7 @@ from ccxt.base.exchange import Exchange
|
|
7
7
|
from ccxt.abstract.tokocrypto import ImplicitAPI
|
8
8
|
import hashlib
|
9
9
|
import json
|
10
|
-
from ccxt.base.types import Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
10
|
+
from ccxt.base.types import Any, Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, 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 AuthenticationError
|
@@ -37,7 +37,7 @@ from ccxt.base.precise import Precise
|
|
37
37
|
|
38
38
|
class tokocrypto(Exchange, ImplicitAPI):
|
39
39
|
|
40
|
-
def describe(self):
|
40
|
+
def describe(self) -> Any:
|
41
41
|
return self.deep_extend(super(tokocrypto, self).describe(), {
|
42
42
|
'id': 'tokocrypto',
|
43
43
|
'name': 'Tokocrypto',
|
@@ -702,7 +702,7 @@ class tokocrypto(Exchange, ImplicitAPI):
|
|
702
702
|
def nonce(self):
|
703
703
|
return self.milliseconds() - self.options['timeDifference']
|
704
704
|
|
705
|
-
def fetch_time(self, params={}):
|
705
|
+
def fetch_time(self, params={}) -> Int:
|
706
706
|
"""
|
707
707
|
|
708
708
|
https://www.tokocrypto.com/apidocs/#check-server-time
|
ccxt/tradeogre.py
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.tradeogre import ImplicitAPI
|
8
|
-
from ccxt.base.types import IndexType, Int, Market, Num, Order, OrderSide, OrderType, Str, Ticker
|
8
|
+
from ccxt.base.types import Any, IndexType, Int, Market, Num, Order, OrderSide, OrderType, Str, Ticker
|
9
9
|
from typing import List
|
10
10
|
from ccxt.base.errors import ExchangeError
|
11
11
|
from ccxt.base.errors import AuthenticationError
|
@@ -17,7 +17,7 @@ from ccxt.base.decimal_to_precision import TICK_SIZE
|
|
17
17
|
|
18
18
|
class tradeogre(Exchange, ImplicitAPI):
|
19
19
|
|
20
|
-
def describe(self):
|
20
|
+
def describe(self) -> Any:
|
21
21
|
return self.deep_extend(super(tradeogre, self).describe(), {
|
22
22
|
'id': 'tradeogre',
|
23
23
|
'name': 'tradeogre',
|
ccxt/upbit.py
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.upbit import ImplicitAPI
|
8
|
-
from ccxt.base.types import Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, OrderBooks, Trade, TradingFeeInterface, Transaction
|
8
|
+
from ccxt.base.types import Any, Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, OrderBooks, Trade, TradingFeeInterface, Transaction
|
9
9
|
from typing import List
|
10
10
|
from ccxt.base.errors import ExchangeError
|
11
11
|
from ccxt.base.errors import AuthenticationError
|
@@ -22,7 +22,7 @@ from ccxt.base.precise import Precise
|
|
22
22
|
|
23
23
|
class upbit(Exchange, ImplicitAPI):
|
24
24
|
|
25
|
-
def describe(self):
|
25
|
+
def describe(self) -> Any:
|
26
26
|
return self.deep_extend(super(upbit, self).describe(), {
|
27
27
|
'id': 'upbit',
|
28
28
|
'name': 'Upbit',
|
ccxt/vertex.py
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.vertex import ImplicitAPI
|
8
|
-
from ccxt.base.types import Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFees, Transaction
|
8
|
+
from ccxt.base.types import Any, Balances, Currencies, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFees, Transaction
|
9
9
|
from typing import List
|
10
10
|
from ccxt.base.errors import ExchangeError
|
11
11
|
from ccxt.base.errors import AuthenticationError
|
@@ -22,7 +22,7 @@ from ccxt.base.precise import Precise
|
|
22
22
|
|
23
23
|
class vertex(Exchange, ImplicitAPI):
|
24
24
|
|
25
|
-
def describe(self):
|
25
|
+
def describe(self) -> Any:
|
26
26
|
return self.deep_extend(super(vertex, self).describe(), {
|
27
27
|
'id': 'vertex',
|
28
28
|
'name': 'Vertex',
|
@@ -622,7 +622,7 @@ class vertex(Exchange, ImplicitAPI):
|
|
622
622
|
result.append(self.parse_market(rawMarket))
|
623
623
|
return result
|
624
624
|
|
625
|
-
def fetch_time(self, params={}):
|
625
|
+
def fetch_time(self, params={}) -> Int:
|
626
626
|
"""
|
627
627
|
fetches the current integer timestamp in milliseconds from the exchange server
|
628
628
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
@@ -630,7 +630,7 @@ class vertex(Exchange, ImplicitAPI):
|
|
630
630
|
"""
|
631
631
|
response = self.v1GatewayGetTime(params)
|
632
632
|
# 1717481623452
|
633
|
-
return self.
|
633
|
+
return self.parse_to_int(response)
|
634
634
|
|
635
635
|
def fetch_status(self, params={}):
|
636
636
|
"""
|
ccxt/wavesexchange.py
CHANGED
@@ -6,9 +6,8 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.wavesexchange import ImplicitAPI
|
8
8
|
import json
|
9
|
-
from ccxt.base.types import Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
9
|
+
from ccxt.base.types import Any, Balances, Currency, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction
|
10
10
|
from typing import List
|
11
|
-
from typing import Any
|
12
11
|
from ccxt.base.errors import ExchangeError
|
13
12
|
from ccxt.base.errors import AuthenticationError
|
14
13
|
from ccxt.base.errors import AccountSuspended
|
@@ -26,7 +25,7 @@ from ccxt.base.precise import Precise
|
|
26
25
|
|
27
26
|
class wavesexchange(Exchange, ImplicitAPI):
|
28
27
|
|
29
|
-
def describe(self):
|
28
|
+
def describe(self) -> Any:
|
30
29
|
return self.deep_extend(super(wavesexchange, self).describe(), {
|
31
30
|
'id': 'wavesexchange',
|
32
31
|
'name': 'Waves.Exchange',
|
ccxt/whitebit.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.whitebit import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, BorrowInterest, Bool, Currencies, Currency, DepositAddress, Int, Market, MarketType, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFees, Transaction, TransferEntry
|
9
|
+
from ccxt.base.types import Any, Balances, BorrowInterest, Bool, Currencies, Currency, DepositAddress, Int, Market, MarketType, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, FundingRate, FundingRates, Trade, TradingFees, Transaction, TransferEntry
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import AuthenticationError
|
@@ -26,7 +26,7 @@ from ccxt.base.precise import Precise
|
|
26
26
|
|
27
27
|
class whitebit(Exchange, ImplicitAPI):
|
28
28
|
|
29
|
-
def describe(self):
|
29
|
+
def describe(self) -> Any:
|
30
30
|
return self.deep_extend(super(whitebit, self).describe(), {
|
31
31
|
'id': 'whitebit',
|
32
32
|
'name': 'WhiteBit',
|
@@ -1291,7 +1291,7 @@ class whitebit(Exchange, ImplicitAPI):
|
|
1291
1291
|
'info': response,
|
1292
1292
|
}
|
1293
1293
|
|
1294
|
-
def fetch_time(self, params={}):
|
1294
|
+
def fetch_time(self, params={}) -> Int:
|
1295
1295
|
"""
|
1296
1296
|
fetches the current integer timestamp in milliseconds from the exchange server
|
1297
1297
|
|
ccxt/woo.py
CHANGED
@@ -6,9 +6,8 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.woo import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Account, Balances, Bool, Conversion, Currencies, Currency, DepositAddress, Int, LedgerEntry, Leverage, MarginModification, Market, MarketType, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, FundingRate, FundingRates, Trade, TradingFees, Transaction, TransferEntry
|
9
|
+
from ccxt.base.types import Account, Any, Balances, Bool, Conversion, Currencies, Currency, DepositAddress, Int, LedgerEntry, Leverage, MarginModification, Market, MarketType, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, FundingRate, FundingRates, Trade, TradingFees, Transaction, TransferEntry
|
10
10
|
from typing import List
|
11
|
-
from typing import Any
|
12
11
|
from ccxt.base.errors import ExchangeError
|
13
12
|
from ccxt.base.errors import AuthenticationError
|
14
13
|
from ccxt.base.errors import ArgumentsRequired
|
@@ -24,7 +23,7 @@ from ccxt.base.precise import Precise
|
|
24
23
|
|
25
24
|
class woo(Exchange, ImplicitAPI):
|
26
25
|
|
27
|
-
def describe(self):
|
26
|
+
def describe(self) -> Any:
|
28
27
|
return self.deep_extend(super(woo, self).describe(), {
|
29
28
|
'id': 'woo',
|
30
29
|
'name': 'WOO X',
|
@@ -484,7 +483,7 @@ class woo(Exchange, ImplicitAPI):
|
|
484
483
|
'info': response,
|
485
484
|
}
|
486
485
|
|
487
|
-
def fetch_time(self, params={}):
|
486
|
+
def fetch_time(self, params={}) -> Int:
|
488
487
|
"""
|
489
488
|
fetches the current integer timestamp in milliseconds from the exchange server
|
490
489
|
|
ccxt/woofipro.py
CHANGED
@@ -5,9 +5,8 @@
|
|
5
5
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.woofipro import ImplicitAPI
|
8
|
-
from ccxt.base.types import Balances, Currencies, Currency, Int, LedgerEntry, Leverage, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, FundingRate, FundingRates, Trade, TradingFees, Transaction
|
8
|
+
from ccxt.base.types import Any, Balances, Currencies, Currency, Int, LedgerEntry, Leverage, Market, Num, Order, OrderBook, OrderRequest, OrderSide, OrderType, Str, Strings, FundingRate, FundingRates, Trade, TradingFees, Transaction
|
9
9
|
from typing import List
|
10
|
-
from typing import Any
|
11
10
|
from ccxt.base.errors import ExchangeError
|
12
11
|
from ccxt.base.errors import AuthenticationError
|
13
12
|
from ccxt.base.errors import ArgumentsRequired
|
@@ -23,7 +22,7 @@ from ccxt.base.precise import Precise
|
|
23
22
|
|
24
23
|
class woofipro(Exchange, ImplicitAPI):
|
25
24
|
|
26
|
-
def describe(self):
|
25
|
+
def describe(self) -> Any:
|
27
26
|
return self.deep_extend(super(woofipro, self).describe(), {
|
28
27
|
'id': 'woofipro',
|
29
28
|
'name': 'WOOFI PRO',
|
@@ -471,7 +470,7 @@ class woofipro(Exchange, ImplicitAPI):
|
|
471
470
|
'info': response,
|
472
471
|
}
|
473
472
|
|
474
|
-
def fetch_time(self, params={}):
|
473
|
+
def fetch_time(self, params={}) -> Int:
|
475
474
|
"""
|
476
475
|
fetches the current integer timestamp in milliseconds from the exchange server
|
477
476
|
|
ccxt/xt.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.xt import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Currencies, Currency, DepositAddress, Int, LedgerEntry, LeverageTier, LeverageTiers, MarginModification, Market, Num, Order, OrderSide, OrderType, Str, Tickers, FundingRate, Transaction, TransferEntry
|
9
|
+
from ccxt.base.types import Any, Currencies, Currency, DepositAddress, Int, LedgerEntry, LeverageTier, LeverageTiers, MarginModification, Market, Num, Order, OrderSide, OrderType, Str, Tickers, FundingRate, Transaction, TransferEntry
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import AuthenticationError
|
@@ -27,7 +27,7 @@ from ccxt.base.precise import Precise
|
|
27
27
|
|
28
28
|
class xt(Exchange, ImplicitAPI):
|
29
29
|
|
30
|
-
def describe(self):
|
30
|
+
def describe(self) -> Any:
|
31
31
|
return self.deep_extend(super(xt, self).describe(), {
|
32
32
|
'id': 'xt',
|
33
33
|
'name': 'XT',
|
@@ -812,7 +812,7 @@ class xt(Exchange, ImplicitAPI):
|
|
812
812
|
def nonce(self):
|
813
813
|
return self.milliseconds() - self.options['timeDifference']
|
814
814
|
|
815
|
-
def fetch_time(self, params={}):
|
815
|
+
def fetch_time(self, params={}) -> Int:
|
816
816
|
"""
|
817
817
|
fetches the current integer timestamp in milliseconds from the xt server
|
818
818
|
|
@@ -1393,9 +1393,15 @@ class xt(Exchange, ImplicitAPI):
|
|
1393
1393
|
:param int [since]: timestamp in ms of the earliest candle to fetch
|
1394
1394
|
:param int [limit]: the maximum amount of candles to fetch
|
1395
1395
|
:param dict params: extra parameters specific to the xt api endpoint
|
1396
|
+
:param int [params.until]: timestamp in ms of the latest candle to fetch
|
1397
|
+
:param boolean [params.paginate]: default False, when True will automatically paginate by calling self endpoint multiple times. See in the docs all the [available parameters](https://github.com/ccxt/ccxt/wiki/Manual#pagination-params)
|
1396
1398
|
:returns int[][]: A list of candles ordered, open, high, low, close, volume
|
1397
1399
|
"""
|
1398
1400
|
self.load_markets()
|
1401
|
+
paginate = False
|
1402
|
+
paginate, params = self.handle_option_and_params(params, 'fetchOHLCV', 'paginate', False)
|
1403
|
+
if paginate:
|
1404
|
+
return self.fetch_paginated_call_deterministic('fetchOHLCV', symbol, since, limit, timeframe, params, 1000)
|
1399
1405
|
market = self.market(symbol)
|
1400
1406
|
request = {
|
1401
1407
|
'symbol': market['id'],
|
@@ -1405,6 +1411,12 @@ class xt(Exchange, ImplicitAPI):
|
|
1405
1411
|
request['startTime'] = since
|
1406
1412
|
if limit is not None:
|
1407
1413
|
request['limit'] = limit
|
1414
|
+
else:
|
1415
|
+
request['limit'] = 1000
|
1416
|
+
until = self.safe_integer(params, 'until')
|
1417
|
+
params = self.omit(params, ['until'])
|
1418
|
+
if until is not None:
|
1419
|
+
request['endTime'] = until
|
1408
1420
|
response = None
|
1409
1421
|
if market['linear']:
|
1410
1422
|
response = self.publicLinearGetFutureMarketV1PublicQKline(self.extend(request, params))
|
ccxt/yobit.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.yobit import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, OrderBooks, Trade, TradingFees, Transaction
|
9
|
+
from ccxt.base.types import Any, Balances, DepositAddress, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, OrderBooks, Trade, TradingFees, Transaction
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import AuthenticationError
|
@@ -24,7 +24,7 @@ from ccxt.base.precise import Precise
|
|
24
24
|
|
25
25
|
class yobit(Exchange, ImplicitAPI):
|
26
26
|
|
27
|
-
def describe(self):
|
27
|
+
def describe(self) -> Any:
|
28
28
|
return self.deep_extend(super(yobit, self).describe(), {
|
29
29
|
'id': 'yobit',
|
30
30
|
'name': 'YoBit',
|
ccxt/zaif.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.zaif import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, Transaction
|
9
|
+
from ccxt.base.types import Any, Balances, Currency, Int, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, Transaction
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import BadRequest
|
@@ -16,7 +16,7 @@ from ccxt.base.precise import Precise
|
|
16
16
|
|
17
17
|
class zaif(Exchange, ImplicitAPI):
|
18
18
|
|
19
|
-
def describe(self):
|
19
|
+
def describe(self) -> Any:
|
20
20
|
return self.deep_extend(super(zaif, self).describe(), {
|
21
21
|
'id': 'zaif',
|
22
22
|
'name': 'Zaif',
|
ccxt/zonda.py
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
from ccxt.base.exchange import Exchange
|
7
7
|
from ccxt.abstract.zonda import ImplicitAPI
|
8
8
|
import hashlib
|
9
|
-
from ccxt.base.types import Balances, Currency, DepositAddress, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
9
|
+
from ccxt.base.types import Any, Balances, Currency, DepositAddress, Int, LedgerEntry, Market, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, Transaction, TransferEntry
|
10
10
|
from typing import List
|
11
11
|
from ccxt.base.errors import ExchangeError
|
12
12
|
from ccxt.base.errors import AuthenticationError
|
@@ -27,7 +27,7 @@ from ccxt.base.precise import Precise
|
|
27
27
|
|
28
28
|
class zonda(Exchange, ImplicitAPI):
|
29
29
|
|
30
|
-
def describe(self):
|
30
|
+
def describe(self) -> Any:
|
31
31
|
return self.deep_extend(super(zonda, self).describe(), {
|
32
32
|
'id': 'zonda',
|
33
33
|
'name': 'Zonda',
|