ccxt 4.3.43__py2.py3-none-any.whl → 4.3.44__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.
Potentially problematic release.
This version of ccxt might be problematic. Click here for more details.
- ccxt/__init__.py +3 -1
- ccxt/abstract/xt.py +152 -0
- ccxt/async_support/__init__.py +3 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/lykke.py +10 -2
- ccxt/async_support/ndax.py +5 -1
- ccxt/async_support/poloniexfutures.py +2 -2
- ccxt/async_support/xt.py +4454 -0
- ccxt/base/exchange.py +1 -1
- ccxt/lykke.py +10 -2
- ccxt/ndax.py +5 -1
- ccxt/poloniexfutures.py +2 -2
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/bitmex.py +6 -0
- ccxt/pro/woo.py +1 -1
- ccxt/test/test_async.py +21 -1
- ccxt/test/test_sync.py +21 -1
- ccxt/xt.py +4453 -0
- {ccxt-4.3.43.dist-info → ccxt-4.3.44.dist-info}/METADATA +8 -6
- {ccxt-4.3.43.dist-info → ccxt-4.3.44.dist-info}/RECORD +22 -19
- {ccxt-4.3.43.dist-info → ccxt-4.3.44.dist-info}/WHEEL +0 -0
- {ccxt-4.3.43.dist-info → ccxt-4.3.44.dist-info}/top_level.txt +0 -0
ccxt/base/exchange.py
CHANGED
ccxt/lykke.py
CHANGED
@@ -858,7 +858,10 @@ class lykke(Exchange, ImplicitAPI):
|
|
858
858
|
# "error":null
|
859
859
|
# }
|
860
860
|
#
|
861
|
-
|
861
|
+
response = self.privateDeleteOrdersOrderId(self.extend(request, params))
|
862
|
+
return self.safe_order({
|
863
|
+
'info': response,
|
864
|
+
})
|
862
865
|
|
863
866
|
def cancel_all_orders(self, symbol: Str = None, params={}):
|
864
867
|
"""
|
@@ -882,7 +885,12 @@ class lykke(Exchange, ImplicitAPI):
|
|
882
885
|
# "error":null
|
883
886
|
# }
|
884
887
|
#
|
885
|
-
|
888
|
+
response = self.privateDeleteOrders(self.extend(request, params))
|
889
|
+
return [
|
890
|
+
self.safe_order({
|
891
|
+
'info': response,
|
892
|
+
}),
|
893
|
+
]
|
886
894
|
|
887
895
|
def fetch_order(self, id: str, symbol: Str = None, params={}):
|
888
896
|
"""
|
ccxt/ndax.py
CHANGED
@@ -1510,7 +1510,11 @@ class ndax(Exchange, ImplicitAPI):
|
|
1510
1510
|
# "detail":null
|
1511
1511
|
# }
|
1512
1512
|
#
|
1513
|
-
return
|
1513
|
+
return [
|
1514
|
+
self.safe_order({
|
1515
|
+
'info': response,
|
1516
|
+
}),
|
1517
|
+
]
|
1514
1518
|
|
1515
1519
|
def cancel_order(self, id: str, symbol: Str = None, params={}):
|
1516
1520
|
"""
|
ccxt/poloniexfutures.py
CHANGED
@@ -1180,7 +1180,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1180
1180
|
cancelledOrderIdsLength = len(cancelledOrderIds)
|
1181
1181
|
for i in range(0, cancelledOrderIdsLength):
|
1182
1182
|
cancelledOrderId = self.safe_string(cancelledOrderIds, i)
|
1183
|
-
result.append({
|
1183
|
+
result.append(self.safe_order({
|
1184
1184
|
'id': cancelledOrderId,
|
1185
1185
|
'clientOrderId': None,
|
1186
1186
|
'timestamp': None,
|
@@ -1202,7 +1202,7 @@ class poloniexfutures(Exchange, ImplicitAPI):
|
|
1202
1202
|
'postOnly': None,
|
1203
1203
|
'stopPrice': None,
|
1204
1204
|
'info': response,
|
1205
|
-
})
|
1205
|
+
}))
|
1206
1206
|
return result
|
1207
1207
|
|
1208
1208
|
def fetch_orders_by_status(self, status, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
|
ccxt/pro/__init__.py
CHANGED
ccxt/pro/bitmex.py
CHANGED
@@ -1469,11 +1469,15 @@ class bitmex(ccxt.async_support.bitmex):
|
|
1469
1469
|
#
|
1470
1470
|
action = self.safe_string(message, 'action')
|
1471
1471
|
table = self.safe_string(message, 'table')
|
1472
|
+
if table is None:
|
1473
|
+
return # protecting from weird updates
|
1472
1474
|
data = self.safe_value(message, 'data', [])
|
1473
1475
|
# if it's an initial snapshot
|
1474
1476
|
if action == 'partial':
|
1475
1477
|
filter = self.safe_dict(message, 'filter', {})
|
1476
1478
|
marketId = self.safe_value(filter, 'symbol')
|
1479
|
+
if marketId is None:
|
1480
|
+
return # protecting from weird update
|
1477
1481
|
market = self.safe_market(marketId)
|
1478
1482
|
symbol = market['symbol']
|
1479
1483
|
if table == 'orderBookL2':
|
@@ -1501,6 +1505,8 @@ class bitmex(ccxt.async_support.bitmex):
|
|
1501
1505
|
numUpdatesByMarketId: dict = {}
|
1502
1506
|
for i in range(0, len(data)):
|
1503
1507
|
marketId = self.safe_value(data[i], 'symbol')
|
1508
|
+
if marketId is None:
|
1509
|
+
return # protecting from weird update
|
1504
1510
|
if not (marketId in numUpdatesByMarketId):
|
1505
1511
|
numUpdatesByMarketId[marketId] = 0
|
1506
1512
|
numUpdatesByMarketId[marketId] = self.sum(numUpdatesByMarketId, 1)
|
ccxt/pro/woo.py
CHANGED
ccxt/test/test_async.py
CHANGED
@@ -1274,7 +1274,7 @@ class testMainClass(baseMainTestClass):
|
|
1274
1274
|
# -----------------------------------------------------------------------------
|
1275
1275
|
# --- Init of brokerId tests functions-----------------------------------------
|
1276
1276
|
# -----------------------------------------------------------------------------
|
1277
|
-
promises = [self.test_binance(), self.test_okx(), self.test_cryptocom(), self.test_bybit(), self.test_kucoin(), self.test_kucoinfutures(), self.test_bitget(), self.test_mexc(), self.test_htx(), self.test_woo(), self.test_bitmart(), self.test_coinex(), self.test_bingx(), self.test_phemex(), self.test_blofin(), self.test_hyperliquid(), self.test_coinbaseinternational(), self.test_coinbase_advanced(), self.test_woofi_pro()]
|
1277
|
+
promises = [self.test_binance(), self.test_okx(), self.test_cryptocom(), self.test_bybit(), self.test_kucoin(), self.test_kucoinfutures(), self.test_bitget(), self.test_mexc(), self.test_htx(), self.test_woo(), self.test_bitmart(), self.test_coinex(), self.test_bingx(), self.test_phemex(), self.test_blofin(), self.test_hyperliquid(), self.test_coinbaseinternational(), self.test_coinbase_advanced(), self.test_woofi_pro(), self.test_xt()]
|
1278
1278
|
await asyncio.gather(*promises)
|
1279
1279
|
success_message = '[' + self.lang + '][TEST_SUCCESS] brokerId tests passed.'
|
1280
1280
|
dump('[INFO]' + success_message)
|
@@ -1602,6 +1602,26 @@ class testMainClass(baseMainTestClass):
|
|
1602
1602
|
await close(exchange)
|
1603
1603
|
return True
|
1604
1604
|
|
1605
|
+
async def test_xt(self):
|
1606
|
+
exchange = self.init_offline_exchange('xt')
|
1607
|
+
id = 'CCXT'
|
1608
|
+
spot_order_request = None
|
1609
|
+
try:
|
1610
|
+
await exchange.create_order('BTC/USDT', 'limit', 'buy', 1, 20000)
|
1611
|
+
except Exception as e:
|
1612
|
+
spot_order_request = json_parse(exchange.last_request_body)
|
1613
|
+
spot_media = spot_order_request['media']
|
1614
|
+
assert spot_media == id, 'xt - id: ' + id + ' different from swap tag: ' + spot_media
|
1615
|
+
swap_order_request = None
|
1616
|
+
try:
|
1617
|
+
await exchange.create_order('BTC/USDT:USDT', 'limit', 'buy', 1, 20000)
|
1618
|
+
except Exception as e:
|
1619
|
+
swap_order_request = json_parse(exchange.last_request_body)
|
1620
|
+
swap_media = swap_order_request['clientMedia']
|
1621
|
+
assert swap_media == id, 'xt - id: ' + id + ' different from swap tag: ' + swap_media
|
1622
|
+
await close(exchange)
|
1623
|
+
return True
|
1624
|
+
|
1605
1625
|
# ***** AUTO-TRANSPILER-END *****
|
1606
1626
|
# *******************************
|
1607
1627
|
|
ccxt/test/test_sync.py
CHANGED
@@ -1273,7 +1273,7 @@ class testMainClass(baseMainTestClass):
|
|
1273
1273
|
# -----------------------------------------------------------------------------
|
1274
1274
|
# --- Init of brokerId tests functions-----------------------------------------
|
1275
1275
|
# -----------------------------------------------------------------------------
|
1276
|
-
promises = [self.test_binance(), self.test_okx(), self.test_cryptocom(), self.test_bybit(), self.test_kucoin(), self.test_kucoinfutures(), self.test_bitget(), self.test_mexc(), self.test_htx(), self.test_woo(), self.test_bitmart(), self.test_coinex(), self.test_bingx(), self.test_phemex(), self.test_blofin(), self.test_hyperliquid(), self.test_coinbaseinternational(), self.test_coinbase_advanced(), self.test_woofi_pro()]
|
1276
|
+
promises = [self.test_binance(), self.test_okx(), self.test_cryptocom(), self.test_bybit(), self.test_kucoin(), self.test_kucoinfutures(), self.test_bitget(), self.test_mexc(), self.test_htx(), self.test_woo(), self.test_bitmart(), self.test_coinex(), self.test_bingx(), self.test_phemex(), self.test_blofin(), self.test_hyperliquid(), self.test_coinbaseinternational(), self.test_coinbase_advanced(), self.test_woofi_pro(), self.test_xt()]
|
1277
1277
|
(promises)
|
1278
1278
|
success_message = '[' + self.lang + '][TEST_SUCCESS] brokerId tests passed.'
|
1279
1279
|
dump('[INFO]' + success_message)
|
@@ -1601,6 +1601,26 @@ class testMainClass(baseMainTestClass):
|
|
1601
1601
|
close(exchange)
|
1602
1602
|
return True
|
1603
1603
|
|
1604
|
+
def test_xt(self):
|
1605
|
+
exchange = self.init_offline_exchange('xt')
|
1606
|
+
id = 'CCXT'
|
1607
|
+
spot_order_request = None
|
1608
|
+
try:
|
1609
|
+
exchange.create_order('BTC/USDT', 'limit', 'buy', 1, 20000)
|
1610
|
+
except Exception as e:
|
1611
|
+
spot_order_request = json_parse(exchange.last_request_body)
|
1612
|
+
spot_media = spot_order_request['media']
|
1613
|
+
assert spot_media == id, 'xt - id: ' + id + ' different from swap tag: ' + spot_media
|
1614
|
+
swap_order_request = None
|
1615
|
+
try:
|
1616
|
+
exchange.create_order('BTC/USDT:USDT', 'limit', 'buy', 1, 20000)
|
1617
|
+
except Exception as e:
|
1618
|
+
swap_order_request = json_parse(exchange.last_request_body)
|
1619
|
+
swap_media = swap_order_request['clientMedia']
|
1620
|
+
assert swap_media == id, 'xt - id: ' + id + ' different from swap tag: ' + swap_media
|
1621
|
+
close(exchange)
|
1622
|
+
return True
|
1623
|
+
|
1604
1624
|
# ***** AUTO-TRANSPILER-END *****
|
1605
1625
|
# *******************************
|
1606
1626
|
|