ccxt 4.4.17__py2.py3-none-any.whl → 4.4.18__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 -1
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/bingx.py +3 -2
- ccxt/async_support/bitmart.py +1 -1
- ccxt/async_support/bitso.py +9 -13
- ccxt/async_support/gate.py +49 -20
- ccxt/async_support/htx.py +6 -0
- ccxt/async_support/kucoinfutures.py +25 -2
- ccxt/async_support/mexc.py +4 -2
- ccxt/async_support/okx.py +2 -1
- ccxt/base/exchange.py +1 -1
- ccxt/bingx.py +3 -2
- ccxt/bitmart.py +1 -1
- ccxt/bitso.py +9 -13
- ccxt/gate.py +49 -20
- ccxt/htx.py +6 -0
- ccxt/kucoinfutures.py +25 -2
- ccxt/mexc.py +4 -2
- ccxt/okx.py +2 -1
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/bitget.py +11 -3
- {ccxt-4.4.17.dist-info → ccxt-4.4.18.dist-info}/METADATA +4 -4
- {ccxt-4.4.17.dist-info → ccxt-4.4.18.dist-info}/RECORD +27 -27
- {ccxt-4.4.17.dist-info → ccxt-4.4.18.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.17.dist-info → ccxt-4.4.18.dist-info}/WHEEL +0 -0
- {ccxt-4.4.17.dist-info → ccxt-4.4.18.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
ccxt/async_support/__init__.py
CHANGED
ccxt/async_support/bingx.py
CHANGED
@@ -614,9 +614,10 @@ class bingx(Exchange, ImplicitAPI):
|
|
614
614
|
'max': self.safe_number(rawNetwork, 'withdrawMax'),
|
615
615
|
},
|
616
616
|
}
|
617
|
+
fee = self.safe_number(rawNetwork, 'withdrawFee')
|
617
618
|
if isDefault:
|
618
|
-
fee = self.safe_number(rawNetwork, 'withdrawFee')
|
619
619
|
defaultLimits = limits
|
620
|
+
precision = self.safe_number(rawNetwork, 'withdrawPrecision')
|
620
621
|
networkActive = networkDepositEnabled or networkWithdrawEnabled
|
621
622
|
networks[networkCode] = {
|
622
623
|
'info': rawNetwork,
|
@@ -626,7 +627,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
626
627
|
'active': networkActive,
|
627
628
|
'deposit': networkDepositEnabled,
|
628
629
|
'withdraw': networkWithdrawEnabled,
|
629
|
-
'precision':
|
630
|
+
'precision': precision,
|
630
631
|
'limits': limits,
|
631
632
|
}
|
632
633
|
active = depositEnabled or withdrawEnabled
|
ccxt/async_support/bitmart.py
CHANGED
ccxt/async_support/bitso.py
CHANGED
@@ -124,6 +124,12 @@ class bitso(Exchange, ImplicitAPI):
|
|
124
124
|
'TUSD': 0.01,
|
125
125
|
},
|
126
126
|
'defaultPrecision': 0.00000001,
|
127
|
+
'networks': {
|
128
|
+
'TRC20': 'trx',
|
129
|
+
'ERC20': 'erc20',
|
130
|
+
'BEP20': 'bsc',
|
131
|
+
'BEP2': 'bep2',
|
132
|
+
},
|
127
133
|
},
|
128
134
|
'timeframes': {
|
129
135
|
'1m': '60',
|
@@ -1548,18 +1554,6 @@ class bitso(Exchange, ImplicitAPI):
|
|
1548
1554
|
first = self.safe_dict(payload, 0)
|
1549
1555
|
return self.parse_transaction(first, currency)
|
1550
1556
|
|
1551
|
-
def safe_network(self, networkId):
|
1552
|
-
if networkId is None:
|
1553
|
-
return None
|
1554
|
-
networkId = networkId.upper()
|
1555
|
-
networksById: dict = {
|
1556
|
-
'trx': 'TRC20',
|
1557
|
-
'erc20': 'ERC20',
|
1558
|
-
'bsc': 'BEP20',
|
1559
|
-
'bep2': 'BEP2',
|
1560
|
-
}
|
1561
|
-
return self.safe_string(networksById, networkId, networkId)
|
1562
|
-
|
1563
1557
|
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
1564
1558
|
#
|
1565
1559
|
# deposit
|
@@ -1606,12 +1600,14 @@ class bitso(Exchange, ImplicitAPI):
|
|
1606
1600
|
networkId = self.safe_string_2(transaction, 'network', 'method')
|
1607
1601
|
status = self.safe_string(transaction, 'status')
|
1608
1602
|
withdrawId = self.safe_string(transaction, 'wid')
|
1603
|
+
networkCode = self.network_id_to_code(networkId)
|
1604
|
+
networkCodeUpper = networkCode.upper() if (networkCode is not None) else None
|
1609
1605
|
return {
|
1610
1606
|
'id': self.safe_string_2(transaction, 'wid', 'fid'),
|
1611
1607
|
'txid': self.safe_string(details, 'tx_hash'),
|
1612
1608
|
'timestamp': self.parse8601(datetime),
|
1613
1609
|
'datetime': datetime,
|
1614
|
-
'network':
|
1610
|
+
'network': networkCodeUpper,
|
1615
1611
|
'addressFrom': receivingAddress,
|
1616
1612
|
'address': withdrawalAddress if (withdrawalAddress is not None) else receivingAddress,
|
1617
1613
|
'addressTo': withdrawalAddress,
|
ccxt/async_support/gate.py
CHANGED
@@ -3491,32 +3491,61 @@ class gate(Exchange, ImplicitAPI):
|
|
3491
3491
|
|
3492
3492
|
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
3493
3493
|
#
|
3494
|
-
#
|
3494
|
+
# fetchDeposits
|
3495
3495
|
#
|
3496
|
-
#
|
3497
|
-
#
|
3498
|
-
#
|
3499
|
-
#
|
3500
|
-
#
|
3501
|
-
#
|
3502
|
-
#
|
3503
|
-
#
|
3504
|
-
#
|
3505
|
-
#
|
3496
|
+
# {
|
3497
|
+
# "id": "d33361395",
|
3498
|
+
# "currency": "USDT_TRX",
|
3499
|
+
# "address": "TErdnxenuLtXfnMafLbfappYdHtnXQ5U4z",
|
3500
|
+
# "amount": "100",
|
3501
|
+
# "txid": "ae9374de34e558562fe18cbb1bf9ab4d9eb8aa7669d65541c9fa2a532c1474a0",
|
3502
|
+
# "timestamp": "1626345819",
|
3503
|
+
# "status": "DONE",
|
3504
|
+
# "memo": ""
|
3505
|
+
# }
|
3506
3506
|
#
|
3507
3507
|
# withdraw
|
3508
3508
|
#
|
3509
|
-
#
|
3510
|
-
#
|
3511
|
-
#
|
3512
|
-
#
|
3513
|
-
#
|
3514
|
-
#
|
3515
|
-
#
|
3509
|
+
# {
|
3510
|
+
# "id":"w64413318",
|
3511
|
+
# "currency":"usdt",
|
3512
|
+
# "amount":"10150",
|
3513
|
+
# "address":"0x0ab891497116f7f5532a4c2f4f7b1784488628e1",
|
3514
|
+
# "memo":null,
|
3515
|
+
# "status":"REQUEST",
|
3516
|
+
# "chain":"eth",
|
3517
|
+
# "withdraw_order_id":"",
|
3518
|
+
# "fee_amount":"4.15000000"
|
3519
|
+
# }
|
3520
|
+
#
|
3521
|
+
# fetchWithdrawals
|
3522
|
+
#
|
3523
|
+
# {
|
3524
|
+
# "id": "210496",
|
3525
|
+
# "timestamp": "1542000000",
|
3526
|
+
# "withdraw_order_id": "order_123456",
|
3527
|
+
# "currency": "USDT",
|
3528
|
+
# "address": "1HkxtBAMrA3tP5ENnYY2CZortjZvFDH5Cs",
|
3529
|
+
# "txid": "128988928203223323290",
|
3530
|
+
# "block_number": "41575382",
|
3531
|
+
# "amount": "222.61",
|
3532
|
+
# "fee": "0.01",
|
3533
|
+
# "memo": "",
|
3534
|
+
# "status": "DONE",
|
3535
|
+
# "chain": "TRX"
|
3536
|
+
# }
|
3537
|
+
#
|
3538
|
+
# {
|
3539
|
+
# "id": "w13389675",
|
3540
|
+
# "currency": "USDT",
|
3541
|
+
# "amount": "50",
|
3542
|
+
# "address": "TUu2rLFrmzUodiWfYki7QCNtv1akL682p1",
|
3543
|
+
# "memo": null
|
3544
|
+
# }
|
3516
3545
|
#
|
3517
3546
|
# {
|
3518
3547
|
# "currency":"usdt",
|
3519
|
-
# "address":"
|
3548
|
+
# "address":"0x01c0A9b7b4CdE774AF0f3E47CB4f1c2CCdBa0806",
|
3520
3549
|
# "amount":"1880",
|
3521
3550
|
# "chain":"eth"
|
3522
3551
|
# }
|
@@ -3531,7 +3560,7 @@ class gate(Exchange, ImplicitAPI):
|
|
3531
3560
|
amountString = Precise.string_abs(amountString)
|
3532
3561
|
else:
|
3533
3562
|
type = self.parse_transaction_type(id[0])
|
3534
|
-
feeCostString = self.
|
3563
|
+
feeCostString = self.safe_string_2(transaction, 'fee', 'fee_amount')
|
3535
3564
|
if type == 'withdrawal':
|
3536
3565
|
amountString = Precise.string_sub(amountString, feeCostString)
|
3537
3566
|
networkId = self.safe_string_upper(transaction, 'chain')
|
ccxt/async_support/htx.py
CHANGED
@@ -5914,6 +5914,7 @@ class htx(Exchange, ImplicitAPI):
|
|
5914
5914
|
async def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
5915
5915
|
"""
|
5916
5916
|
fetch all withdrawals made from an account
|
5917
|
+
:see: https://huobiapi.github.io/docs/spot/v1/en/#search-for-existed-withdraws-and-deposits
|
5917
5918
|
:param str code: unified currency code
|
5918
5919
|
:param int [since]: the earliest time in ms to fetch withdrawals for
|
5919
5920
|
:param int [limit]: the maximum number of withdrawals structures to retrieve
|
@@ -6239,6 +6240,7 @@ class htx(Exchange, ImplicitAPI):
|
|
6239
6240
|
async def fetch_isolated_borrow_rates(self, params={}) -> IsolatedBorrowRates:
|
6240
6241
|
"""
|
6241
6242
|
fetch the borrow interest rates of all currencies
|
6243
|
+
:see: https://huobiapi.github.io/docs/spot/v1/en/#get-loan-interest-rate-and-quota-isolated
|
6242
6244
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
6243
6245
|
:returns dict: a list of `isolated borrow rate structures <https://docs.ccxt.com/#/?id=isolated-borrow-rate-structure>`
|
6244
6246
|
"""
|
@@ -6449,6 +6451,8 @@ class htx(Exchange, ImplicitAPI):
|
|
6449
6451
|
async def fetch_funding_rate(self, symbol: str, params={}) -> FundingRate:
|
6450
6452
|
"""
|
6451
6453
|
fetch the current funding rate
|
6454
|
+
:see: https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#query-funding-rate
|
6455
|
+
:see: https://huobiapi.github.io/docs/usdt_swap/v1/en/#general-query-funding-rate
|
6452
6456
|
:param str symbol: unified market symbol
|
6453
6457
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
6454
6458
|
:returns dict: a `funding rate structure <https://docs.ccxt.com/#/?id=funding-rate-structure>`
|
@@ -6486,6 +6490,8 @@ class htx(Exchange, ImplicitAPI):
|
|
6486
6490
|
async def fetch_funding_rates(self, symbols: Strings = None, params={}) -> FundingRates:
|
6487
6491
|
"""
|
6488
6492
|
fetch the funding rate for multiple markets
|
6493
|
+
:see: https://huobiapi.github.io/docs/usdt_swap/v1/en/#general-query-a-batch-of-funding-rate
|
6494
|
+
:see: https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#query-a-batch-of-funding-rate
|
6489
6495
|
:param str[]|None symbols: list of unified market symbols
|
6490
6496
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
6491
6497
|
:returns dict[]: a list of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rates-structure>`, indexed by market symbols
|
@@ -52,6 +52,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
52
52
|
'createDepositAddress': True,
|
53
53
|
'createOrder': True,
|
54
54
|
'createOrders': True,
|
55
|
+
'createOrderWithTakeProfitAndStopLoss': True,
|
55
56
|
'createReduceOnlyOrder': True,
|
56
57
|
'createStopLimitOrder': True,
|
57
58
|
'createStopLossOrder': True,
|
@@ -255,6 +256,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
255
256
|
'400100': BadRequest, # Parameter Error -- You tried to access the resource with invalid parameters
|
256
257
|
'411100': AccountSuspended, # User is frozen -- Please contact us via support center
|
257
258
|
'500000': ExchangeNotAvailable, # Internal Server Error -- We had a problem with our server. Try again later.
|
259
|
+
'300009': InvalidOrder, # {"msg":"No open positions to close.","code":"300009"}
|
258
260
|
},
|
259
261
|
'broad': {
|
260
262
|
'Position does not exist': OrderNotFound, # {"code":"200000", "msg":"Position does not exist"}
|
@@ -1372,12 +1374,15 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
1372
1374
|
"""
|
1373
1375
|
Create an order on the exchange
|
1374
1376
|
:see: https://docs.kucoin.com/futures/#place-an-order
|
1377
|
+
:see: https://www.kucoin.com/docs/rest/futures-trading/orders/place-take-profit-and-stop-loss-order#http-request
|
1375
1378
|
:param str symbol: Unified CCXT market symbol
|
1376
1379
|
:param str type: 'limit' or 'market'
|
1377
1380
|
:param str side: 'buy' or 'sell'
|
1378
1381
|
:param float amount: the amount of currency to trade
|
1379
1382
|
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
1380
1383
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1384
|
+
:param dict [params.takeProfit]: *takeProfit object in params* containing the triggerPrice at which the attached take profit order will be triggered
|
1385
|
+
:param dict [params.stopLoss]: *stopLoss object in params* containing the triggerPrice at which the attached stop loss order will be triggered
|
1381
1386
|
:param float [params.triggerPrice]: The price a trigger order is triggered at
|
1382
1387
|
:param float [params.stopLossPrice]: price to trigger stop-loss orders
|
1383
1388
|
:param float [params.takeProfitPrice]: price to trigger take-profit orders
|
@@ -1399,12 +1404,16 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
1399
1404
|
market = self.market(symbol)
|
1400
1405
|
testOrder = self.safe_bool(params, 'test', False)
|
1401
1406
|
params = self.omit(params, 'test')
|
1407
|
+
isTpAndSlOrder = (self.safe_value(params, 'stopLoss') is not None) or (self.safe_value(params, 'takeProfit') is not None)
|
1402
1408
|
orderRequest = self.create_contract_order_request(symbol, type, side, amount, price, params)
|
1403
1409
|
response = None
|
1404
1410
|
if testOrder:
|
1405
1411
|
response = await self.futuresPrivatePostOrdersTest(orderRequest)
|
1406
1412
|
else:
|
1407
|
-
|
1413
|
+
if isTpAndSlOrder:
|
1414
|
+
response = await self.futuresPrivatePostStOrders(orderRequest)
|
1415
|
+
else:
|
1416
|
+
response = await self.futuresPrivatePostOrders(orderRequest)
|
1408
1417
|
#
|
1409
1418
|
# {
|
1410
1419
|
# "code": "200000",
|
@@ -1479,6 +1488,9 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
1479
1488
|
'leverage': 1,
|
1480
1489
|
}
|
1481
1490
|
triggerPrice, stopLossPrice, takeProfitPrice = self.handle_trigger_prices(params)
|
1491
|
+
stopLoss = self.safe_dict(params, 'stopLoss')
|
1492
|
+
takeProfit = self.safe_dict(params, 'takeProfit')
|
1493
|
+
# isTpAndSl = stopLossPrice and takeProfitPrice
|
1482
1494
|
triggerPriceTypes: dict = {
|
1483
1495
|
'mark': 'MP',
|
1484
1496
|
'last': 'TP',
|
@@ -1486,11 +1498,22 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
1486
1498
|
}
|
1487
1499
|
triggerPriceType = self.safe_string(params, 'triggerPriceType', 'mark')
|
1488
1500
|
triggerPriceTypeValue = self.safe_string(triggerPriceTypes, triggerPriceType, triggerPriceType)
|
1489
|
-
params = self.omit(params, ['stopLossPrice', 'takeProfitPrice', 'triggerPrice', 'stopPrice'])
|
1501
|
+
params = self.omit(params, ['stopLossPrice', 'takeProfitPrice', 'triggerPrice', 'stopPrice', 'takeProfit', 'stopLoss'])
|
1490
1502
|
if triggerPrice:
|
1491
1503
|
request['stop'] = 'up' if (side == 'buy') else 'down'
|
1492
1504
|
request['stopPrice'] = self.price_to_precision(symbol, triggerPrice)
|
1493
1505
|
request['stopPriceType'] = triggerPriceTypeValue
|
1506
|
+
elif stopLoss is not None or takeProfit is not None:
|
1507
|
+
priceType = triggerPriceTypeValue
|
1508
|
+
if stopLoss is not None:
|
1509
|
+
slPrice = self.safe_string_2(stopLoss, 'triggerPrice', 'stopPrice')
|
1510
|
+
request['triggerStopDownPrice'] = self.price_to_precision(symbol, slPrice)
|
1511
|
+
priceType = self.safe_string(stopLoss, 'triggerPriceType', triggerPriceTypeValue)
|
1512
|
+
if takeProfit is not None:
|
1513
|
+
tpPrice = self.safe_string_2(takeProfit, 'triggerPrice', 'takeProfitPrice')
|
1514
|
+
request['triggerStopUpPrice'] = self.price_to_precision(symbol, tpPrice)
|
1515
|
+
priceType = self.safe_string(stopLoss, 'triggerPriceType', triggerPriceTypeValue)
|
1516
|
+
request['stopPriceType'] = priceType
|
1494
1517
|
elif stopLossPrice or takeProfitPrice:
|
1495
1518
|
if stopLossPrice:
|
1496
1519
|
request['stop'] = 'up' if (side == 'buy') else 'down'
|
ccxt/async_support/mexc.py
CHANGED
@@ -2163,8 +2163,10 @@ class mexc(Exchange, ImplicitAPI):
|
|
2163
2163
|
order = self.parse_order(response, market)
|
2164
2164
|
order['side'] = side
|
2165
2165
|
order['type'] = type
|
2166
|
-
order
|
2167
|
-
|
2166
|
+
if self.safe_string(order, 'price') is None:
|
2167
|
+
order['price'] = price
|
2168
|
+
if self.safe_string(order, 'amount') is None:
|
2169
|
+
order['amount'] = amount
|
2168
2170
|
return order
|
2169
2171
|
|
2170
2172
|
async def create_swap_order(self, market, type, side, amount, price=None, marginMode=None, params={}):
|
ccxt/async_support/okx.py
CHANGED
@@ -6828,6 +6828,7 @@ class okx(Exchange, ImplicitAPI):
|
|
6828
6828
|
# "instType": "OPTION",
|
6829
6829
|
# "oi": "300",
|
6830
6830
|
# "oiCcy": "3",
|
6831
|
+
# "oiUsd": "3",
|
6831
6832
|
# "ts": "1684551166251"
|
6832
6833
|
# }
|
6833
6834
|
#
|
@@ -6850,7 +6851,7 @@ class okx(Exchange, ImplicitAPI):
|
|
6850
6851
|
else:
|
6851
6852
|
baseVolume = self.safe_number(interest, 'oiCcy')
|
6852
6853
|
openInterestAmount = self.safe_number(interest, 'oi')
|
6853
|
-
openInterestValue = self.safe_number(interest, '
|
6854
|
+
openInterestValue = self.safe_number(interest, 'oiUsd')
|
6854
6855
|
return self.safe_open_interest({
|
6855
6856
|
'symbol': self.safe_symbol(id),
|
6856
6857
|
'baseVolume': baseVolume, # deprecated
|
ccxt/base/exchange.py
CHANGED
ccxt/bingx.py
CHANGED
@@ -613,9 +613,10 @@ class bingx(Exchange, ImplicitAPI):
|
|
613
613
|
'max': self.safe_number(rawNetwork, 'withdrawMax'),
|
614
614
|
},
|
615
615
|
}
|
616
|
+
fee = self.safe_number(rawNetwork, 'withdrawFee')
|
616
617
|
if isDefault:
|
617
|
-
fee = self.safe_number(rawNetwork, 'withdrawFee')
|
618
618
|
defaultLimits = limits
|
619
|
+
precision = self.safe_number(rawNetwork, 'withdrawPrecision')
|
619
620
|
networkActive = networkDepositEnabled or networkWithdrawEnabled
|
620
621
|
networks[networkCode] = {
|
621
622
|
'info': rawNetwork,
|
@@ -625,7 +626,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
625
626
|
'active': networkActive,
|
626
627
|
'deposit': networkDepositEnabled,
|
627
628
|
'withdraw': networkWithdrawEnabled,
|
628
|
-
'precision':
|
629
|
+
'precision': precision,
|
629
630
|
'limits': limits,
|
630
631
|
}
|
631
632
|
active = depositEnabled or withdrawEnabled
|
ccxt/bitmart.py
CHANGED
ccxt/bitso.py
CHANGED
@@ -124,6 +124,12 @@ class bitso(Exchange, ImplicitAPI):
|
|
124
124
|
'TUSD': 0.01,
|
125
125
|
},
|
126
126
|
'defaultPrecision': 0.00000001,
|
127
|
+
'networks': {
|
128
|
+
'TRC20': 'trx',
|
129
|
+
'ERC20': 'erc20',
|
130
|
+
'BEP20': 'bsc',
|
131
|
+
'BEP2': 'bep2',
|
132
|
+
},
|
127
133
|
},
|
128
134
|
'timeframes': {
|
129
135
|
'1m': '60',
|
@@ -1548,18 +1554,6 @@ class bitso(Exchange, ImplicitAPI):
|
|
1548
1554
|
first = self.safe_dict(payload, 0)
|
1549
1555
|
return self.parse_transaction(first, currency)
|
1550
1556
|
|
1551
|
-
def safe_network(self, networkId):
|
1552
|
-
if networkId is None:
|
1553
|
-
return None
|
1554
|
-
networkId = networkId.upper()
|
1555
|
-
networksById: dict = {
|
1556
|
-
'trx': 'TRC20',
|
1557
|
-
'erc20': 'ERC20',
|
1558
|
-
'bsc': 'BEP20',
|
1559
|
-
'bep2': 'BEP2',
|
1560
|
-
}
|
1561
|
-
return self.safe_string(networksById, networkId, networkId)
|
1562
|
-
|
1563
1557
|
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
1564
1558
|
#
|
1565
1559
|
# deposit
|
@@ -1606,12 +1600,14 @@ class bitso(Exchange, ImplicitAPI):
|
|
1606
1600
|
networkId = self.safe_string_2(transaction, 'network', 'method')
|
1607
1601
|
status = self.safe_string(transaction, 'status')
|
1608
1602
|
withdrawId = self.safe_string(transaction, 'wid')
|
1603
|
+
networkCode = self.network_id_to_code(networkId)
|
1604
|
+
networkCodeUpper = networkCode.upper() if (networkCode is not None) else None
|
1609
1605
|
return {
|
1610
1606
|
'id': self.safe_string_2(transaction, 'wid', 'fid'),
|
1611
1607
|
'txid': self.safe_string(details, 'tx_hash'),
|
1612
1608
|
'timestamp': self.parse8601(datetime),
|
1613
1609
|
'datetime': datetime,
|
1614
|
-
'network':
|
1610
|
+
'network': networkCodeUpper,
|
1615
1611
|
'addressFrom': receivingAddress,
|
1616
1612
|
'address': withdrawalAddress if (withdrawalAddress is not None) else receivingAddress,
|
1617
1613
|
'addressTo': withdrawalAddress,
|
ccxt/gate.py
CHANGED
@@ -3490,32 +3490,61 @@ class gate(Exchange, ImplicitAPI):
|
|
3490
3490
|
|
3491
3491
|
def parse_transaction(self, transaction: dict, currency: Currency = None) -> Transaction:
|
3492
3492
|
#
|
3493
|
-
#
|
3493
|
+
# fetchDeposits
|
3494
3494
|
#
|
3495
|
-
#
|
3496
|
-
#
|
3497
|
-
#
|
3498
|
-
#
|
3499
|
-
#
|
3500
|
-
#
|
3501
|
-
#
|
3502
|
-
#
|
3503
|
-
#
|
3504
|
-
#
|
3495
|
+
# {
|
3496
|
+
# "id": "d33361395",
|
3497
|
+
# "currency": "USDT_TRX",
|
3498
|
+
# "address": "TErdnxenuLtXfnMafLbfappYdHtnXQ5U4z",
|
3499
|
+
# "amount": "100",
|
3500
|
+
# "txid": "ae9374de34e558562fe18cbb1bf9ab4d9eb8aa7669d65541c9fa2a532c1474a0",
|
3501
|
+
# "timestamp": "1626345819",
|
3502
|
+
# "status": "DONE",
|
3503
|
+
# "memo": ""
|
3504
|
+
# }
|
3505
3505
|
#
|
3506
3506
|
# withdraw
|
3507
3507
|
#
|
3508
|
-
#
|
3509
|
-
#
|
3510
|
-
#
|
3511
|
-
#
|
3512
|
-
#
|
3513
|
-
#
|
3514
|
-
#
|
3508
|
+
# {
|
3509
|
+
# "id":"w64413318",
|
3510
|
+
# "currency":"usdt",
|
3511
|
+
# "amount":"10150",
|
3512
|
+
# "address":"0x0ab891497116f7f5532a4c2f4f7b1784488628e1",
|
3513
|
+
# "memo":null,
|
3514
|
+
# "status":"REQUEST",
|
3515
|
+
# "chain":"eth",
|
3516
|
+
# "withdraw_order_id":"",
|
3517
|
+
# "fee_amount":"4.15000000"
|
3518
|
+
# }
|
3519
|
+
#
|
3520
|
+
# fetchWithdrawals
|
3521
|
+
#
|
3522
|
+
# {
|
3523
|
+
# "id": "210496",
|
3524
|
+
# "timestamp": "1542000000",
|
3525
|
+
# "withdraw_order_id": "order_123456",
|
3526
|
+
# "currency": "USDT",
|
3527
|
+
# "address": "1HkxtBAMrA3tP5ENnYY2CZortjZvFDH5Cs",
|
3528
|
+
# "txid": "128988928203223323290",
|
3529
|
+
# "block_number": "41575382",
|
3530
|
+
# "amount": "222.61",
|
3531
|
+
# "fee": "0.01",
|
3532
|
+
# "memo": "",
|
3533
|
+
# "status": "DONE",
|
3534
|
+
# "chain": "TRX"
|
3535
|
+
# }
|
3536
|
+
#
|
3537
|
+
# {
|
3538
|
+
# "id": "w13389675",
|
3539
|
+
# "currency": "USDT",
|
3540
|
+
# "amount": "50",
|
3541
|
+
# "address": "TUu2rLFrmzUodiWfYki7QCNtv1akL682p1",
|
3542
|
+
# "memo": null
|
3543
|
+
# }
|
3515
3544
|
#
|
3516
3545
|
# {
|
3517
3546
|
# "currency":"usdt",
|
3518
|
-
# "address":"
|
3547
|
+
# "address":"0x01c0A9b7b4CdE774AF0f3E47CB4f1c2CCdBa0806",
|
3519
3548
|
# "amount":"1880",
|
3520
3549
|
# "chain":"eth"
|
3521
3550
|
# }
|
@@ -3530,7 +3559,7 @@ class gate(Exchange, ImplicitAPI):
|
|
3530
3559
|
amountString = Precise.string_abs(amountString)
|
3531
3560
|
else:
|
3532
3561
|
type = self.parse_transaction_type(id[0])
|
3533
|
-
feeCostString = self.
|
3562
|
+
feeCostString = self.safe_string_2(transaction, 'fee', 'fee_amount')
|
3534
3563
|
if type == 'withdrawal':
|
3535
3564
|
amountString = Precise.string_sub(amountString, feeCostString)
|
3536
3565
|
networkId = self.safe_string_upper(transaction, 'chain')
|
ccxt/htx.py
CHANGED
@@ -5913,6 +5913,7 @@ class htx(Exchange, ImplicitAPI):
|
|
5913
5913
|
def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
5914
5914
|
"""
|
5915
5915
|
fetch all withdrawals made from an account
|
5916
|
+
:see: https://huobiapi.github.io/docs/spot/v1/en/#search-for-existed-withdraws-and-deposits
|
5916
5917
|
:param str code: unified currency code
|
5917
5918
|
:param int [since]: the earliest time in ms to fetch withdrawals for
|
5918
5919
|
:param int [limit]: the maximum number of withdrawals structures to retrieve
|
@@ -6238,6 +6239,7 @@ class htx(Exchange, ImplicitAPI):
|
|
6238
6239
|
def fetch_isolated_borrow_rates(self, params={}) -> IsolatedBorrowRates:
|
6239
6240
|
"""
|
6240
6241
|
fetch the borrow interest rates of all currencies
|
6242
|
+
:see: https://huobiapi.github.io/docs/spot/v1/en/#get-loan-interest-rate-and-quota-isolated
|
6241
6243
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
6242
6244
|
:returns dict: a list of `isolated borrow rate structures <https://docs.ccxt.com/#/?id=isolated-borrow-rate-structure>`
|
6243
6245
|
"""
|
@@ -6448,6 +6450,8 @@ class htx(Exchange, ImplicitAPI):
|
|
6448
6450
|
def fetch_funding_rate(self, symbol: str, params={}) -> FundingRate:
|
6449
6451
|
"""
|
6450
6452
|
fetch the current funding rate
|
6453
|
+
:see: https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#query-funding-rate
|
6454
|
+
:see: https://huobiapi.github.io/docs/usdt_swap/v1/en/#general-query-funding-rate
|
6451
6455
|
:param str symbol: unified market symbol
|
6452
6456
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
6453
6457
|
:returns dict: a `funding rate structure <https://docs.ccxt.com/#/?id=funding-rate-structure>`
|
@@ -6485,6 +6489,8 @@ class htx(Exchange, ImplicitAPI):
|
|
6485
6489
|
def fetch_funding_rates(self, symbols: Strings = None, params={}) -> FundingRates:
|
6486
6490
|
"""
|
6487
6491
|
fetch the funding rate for multiple markets
|
6492
|
+
:see: https://huobiapi.github.io/docs/usdt_swap/v1/en/#general-query-a-batch-of-funding-rate
|
6493
|
+
:see: https://huobiapi.github.io/docs/coin_margined_swap/v1/en/#query-a-batch-of-funding-rate
|
6488
6494
|
:param str[]|None symbols: list of unified market symbols
|
6489
6495
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
6490
6496
|
:returns dict[]: a list of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rates-structure>`, indexed by market symbols
|
ccxt/kucoinfutures.py
CHANGED
@@ -52,6 +52,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
52
52
|
'createDepositAddress': True,
|
53
53
|
'createOrder': True,
|
54
54
|
'createOrders': True,
|
55
|
+
'createOrderWithTakeProfitAndStopLoss': True,
|
55
56
|
'createReduceOnlyOrder': True,
|
56
57
|
'createStopLimitOrder': True,
|
57
58
|
'createStopLossOrder': True,
|
@@ -255,6 +256,7 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
255
256
|
'400100': BadRequest, # Parameter Error -- You tried to access the resource with invalid parameters
|
256
257
|
'411100': AccountSuspended, # User is frozen -- Please contact us via support center
|
257
258
|
'500000': ExchangeNotAvailable, # Internal Server Error -- We had a problem with our server. Try again later.
|
259
|
+
'300009': InvalidOrder, # {"msg":"No open positions to close.","code":"300009"}
|
258
260
|
},
|
259
261
|
'broad': {
|
260
262
|
'Position does not exist': OrderNotFound, # {"code":"200000", "msg":"Position does not exist"}
|
@@ -1372,12 +1374,15 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
1372
1374
|
"""
|
1373
1375
|
Create an order on the exchange
|
1374
1376
|
:see: https://docs.kucoin.com/futures/#place-an-order
|
1377
|
+
:see: https://www.kucoin.com/docs/rest/futures-trading/orders/place-take-profit-and-stop-loss-order#http-request
|
1375
1378
|
:param str symbol: Unified CCXT market symbol
|
1376
1379
|
:param str type: 'limit' or 'market'
|
1377
1380
|
:param str side: 'buy' or 'sell'
|
1378
1381
|
:param float amount: the amount of currency to trade
|
1379
1382
|
:param float [price]: the price at which the order is to be fulfilled, in units of the quote currency, ignored in market orders
|
1380
1383
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1384
|
+
:param dict [params.takeProfit]: *takeProfit object in params* containing the triggerPrice at which the attached take profit order will be triggered
|
1385
|
+
:param dict [params.stopLoss]: *stopLoss object in params* containing the triggerPrice at which the attached stop loss order will be triggered
|
1381
1386
|
:param float [params.triggerPrice]: The price a trigger order is triggered at
|
1382
1387
|
:param float [params.stopLossPrice]: price to trigger stop-loss orders
|
1383
1388
|
:param float [params.takeProfitPrice]: price to trigger take-profit orders
|
@@ -1399,12 +1404,16 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
1399
1404
|
market = self.market(symbol)
|
1400
1405
|
testOrder = self.safe_bool(params, 'test', False)
|
1401
1406
|
params = self.omit(params, 'test')
|
1407
|
+
isTpAndSlOrder = (self.safe_value(params, 'stopLoss') is not None) or (self.safe_value(params, 'takeProfit') is not None)
|
1402
1408
|
orderRequest = self.create_contract_order_request(symbol, type, side, amount, price, params)
|
1403
1409
|
response = None
|
1404
1410
|
if testOrder:
|
1405
1411
|
response = self.futuresPrivatePostOrdersTest(orderRequest)
|
1406
1412
|
else:
|
1407
|
-
|
1413
|
+
if isTpAndSlOrder:
|
1414
|
+
response = self.futuresPrivatePostStOrders(orderRequest)
|
1415
|
+
else:
|
1416
|
+
response = self.futuresPrivatePostOrders(orderRequest)
|
1408
1417
|
#
|
1409
1418
|
# {
|
1410
1419
|
# "code": "200000",
|
@@ -1479,6 +1488,9 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
1479
1488
|
'leverage': 1,
|
1480
1489
|
}
|
1481
1490
|
triggerPrice, stopLossPrice, takeProfitPrice = self.handle_trigger_prices(params)
|
1491
|
+
stopLoss = self.safe_dict(params, 'stopLoss')
|
1492
|
+
takeProfit = self.safe_dict(params, 'takeProfit')
|
1493
|
+
# isTpAndSl = stopLossPrice and takeProfitPrice
|
1482
1494
|
triggerPriceTypes: dict = {
|
1483
1495
|
'mark': 'MP',
|
1484
1496
|
'last': 'TP',
|
@@ -1486,11 +1498,22 @@ class kucoinfutures(kucoin, ImplicitAPI):
|
|
1486
1498
|
}
|
1487
1499
|
triggerPriceType = self.safe_string(params, 'triggerPriceType', 'mark')
|
1488
1500
|
triggerPriceTypeValue = self.safe_string(triggerPriceTypes, triggerPriceType, triggerPriceType)
|
1489
|
-
params = self.omit(params, ['stopLossPrice', 'takeProfitPrice', 'triggerPrice', 'stopPrice'])
|
1501
|
+
params = self.omit(params, ['stopLossPrice', 'takeProfitPrice', 'triggerPrice', 'stopPrice', 'takeProfit', 'stopLoss'])
|
1490
1502
|
if triggerPrice:
|
1491
1503
|
request['stop'] = 'up' if (side == 'buy') else 'down'
|
1492
1504
|
request['stopPrice'] = self.price_to_precision(symbol, triggerPrice)
|
1493
1505
|
request['stopPriceType'] = triggerPriceTypeValue
|
1506
|
+
elif stopLoss is not None or takeProfit is not None:
|
1507
|
+
priceType = triggerPriceTypeValue
|
1508
|
+
if stopLoss is not None:
|
1509
|
+
slPrice = self.safe_string_2(stopLoss, 'triggerPrice', 'stopPrice')
|
1510
|
+
request['triggerStopDownPrice'] = self.price_to_precision(symbol, slPrice)
|
1511
|
+
priceType = self.safe_string(stopLoss, 'triggerPriceType', triggerPriceTypeValue)
|
1512
|
+
if takeProfit is not None:
|
1513
|
+
tpPrice = self.safe_string_2(takeProfit, 'triggerPrice', 'takeProfitPrice')
|
1514
|
+
request['triggerStopUpPrice'] = self.price_to_precision(symbol, tpPrice)
|
1515
|
+
priceType = self.safe_string(stopLoss, 'triggerPriceType', triggerPriceTypeValue)
|
1516
|
+
request['stopPriceType'] = priceType
|
1494
1517
|
elif stopLossPrice or takeProfitPrice:
|
1495
1518
|
if stopLossPrice:
|
1496
1519
|
request['stop'] = 'up' if (side == 'buy') else 'down'
|
ccxt/mexc.py
CHANGED
@@ -2162,8 +2162,10 @@ class mexc(Exchange, ImplicitAPI):
|
|
2162
2162
|
order = self.parse_order(response, market)
|
2163
2163
|
order['side'] = side
|
2164
2164
|
order['type'] = type
|
2165
|
-
order
|
2166
|
-
|
2165
|
+
if self.safe_string(order, 'price') is None:
|
2166
|
+
order['price'] = price
|
2167
|
+
if self.safe_string(order, 'amount') is None:
|
2168
|
+
order['amount'] = amount
|
2167
2169
|
return order
|
2168
2170
|
|
2169
2171
|
def create_swap_order(self, market, type, side, amount, price=None, marginMode=None, params={}):
|
ccxt/okx.py
CHANGED
@@ -6827,6 +6827,7 @@ class okx(Exchange, ImplicitAPI):
|
|
6827
6827
|
# "instType": "OPTION",
|
6828
6828
|
# "oi": "300",
|
6829
6829
|
# "oiCcy": "3",
|
6830
|
+
# "oiUsd": "3",
|
6830
6831
|
# "ts": "1684551166251"
|
6831
6832
|
# }
|
6832
6833
|
#
|
@@ -6849,7 +6850,7 @@ class okx(Exchange, ImplicitAPI):
|
|
6849
6850
|
else:
|
6850
6851
|
baseVolume = self.safe_number(interest, 'oiCcy')
|
6851
6852
|
openInterestAmount = self.safe_number(interest, 'oi')
|
6852
|
-
openInterestValue = self.safe_number(interest, '
|
6853
|
+
openInterestValue = self.safe_number(interest, 'oiUsd')
|
6853
6854
|
return self.safe_open_interest({
|
6854
6855
|
'symbol': self.safe_symbol(id),
|
6855
6856
|
'baseVolume': baseVolume, # deprecated
|
ccxt/pro/__init__.py
CHANGED
ccxt/pro/bitget.py
CHANGED
@@ -1079,7 +1079,7 @@ class bitget(ccxt.async_support.bitget):
|
|
1079
1079
|
subType = None
|
1080
1080
|
subType, params = self.handle_sub_type_and_params('watchOrders', market, params, 'linear')
|
1081
1081
|
if (type == 'spot' or type == 'margin') and (symbol is None):
|
1082
|
-
|
1082
|
+
marketId = 'default'
|
1083
1083
|
if (productType is None) and (type != 'spot') and (symbol is None):
|
1084
1084
|
messageHash = messageHash + ':' + subType
|
1085
1085
|
elif productType == 'USDT-FUTURES':
|
@@ -1089,7 +1089,10 @@ class bitget(ccxt.async_support.bitget):
|
|
1089
1089
|
elif productType == 'USDC-FUTURES':
|
1090
1090
|
messageHash = messageHash + ':usdcfutures' # non unified channel
|
1091
1091
|
instType = None
|
1092
|
-
|
1092
|
+
if market is None and type == 'spot':
|
1093
|
+
instType = 'SPOT'
|
1094
|
+
else:
|
1095
|
+
instType, params = self.get_inst_type(market, params)
|
1093
1096
|
if type == 'spot':
|
1094
1097
|
subscriptionHash = subscriptionHash + ':' + symbol
|
1095
1098
|
if isTrigger:
|
@@ -1432,8 +1435,13 @@ class bitget(ccxt.async_support.bitget):
|
|
1432
1435
|
market = self.market(symbol)
|
1433
1436
|
symbol = market['symbol']
|
1434
1437
|
messageHash = messageHash + ':' + symbol
|
1438
|
+
type = None
|
1439
|
+
type, params = self.handle_market_type_and_params('watchMyTrades', market, params)
|
1435
1440
|
instType = None
|
1436
|
-
|
1441
|
+
if market is None and type == 'spot':
|
1442
|
+
instType = 'SPOT'
|
1443
|
+
else:
|
1444
|
+
instType, params = self.get_inst_type(market, params)
|
1437
1445
|
subscriptionHash = 'fill:' + instType
|
1438
1446
|
args: dict = {
|
1439
1447
|
'instType': instType,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.4.
|
3
|
+
Version: 4.4.18
|
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
|
@@ -271,13 +271,13 @@ console.log(version, Object.keys(exchanges));
|
|
271
271
|
|
272
272
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
273
273
|
|
274
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.
|
275
|
-
* unpkg: https://unpkg.com/ccxt@4.4.
|
274
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.18/dist/ccxt.browser.min.js
|
275
|
+
* unpkg: https://unpkg.com/ccxt@4.4.18/dist/ccxt.browser.min.js
|
276
276
|
|
277
277
|
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.
|
278
278
|
|
279
279
|
```HTML
|
280
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.
|
280
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.18/dist/ccxt.browser.min.js"></script>
|
281
281
|
```
|
282
282
|
|
283
283
|
Creates a global `ccxt` object:
|
@@ -1,4 +1,4 @@
|
|
1
|
-
ccxt/__init__.py,sha256=
|
1
|
+
ccxt/__init__.py,sha256=THfwR6NDwcGgdxz9vzmqx7Vy37R5UXGRP5Y3qwJpfDo,16486
|
2
2
|
ccxt/ace.py,sha256=3KFlbRm6N9hXsKUsgZbQCFPZT5WGLm4HOjR19Q3uPts,42419
|
3
3
|
ccxt/alpaca.py,sha256=nVQJ8vG4JrjEvMlu_nPoyR2lBq41j9Z2smPq95nDhng,47504
|
4
4
|
ccxt/ascendex.py,sha256=aJ5_UysmRijYUvjenq5EDLldl2JUO6lXGofJ_NqPvJU,151676
|
@@ -8,7 +8,7 @@ ccxt/binance.py,sha256=E42-WB-h_tDxnrLO91lGmu1XSjXhEz6CJa7reSnwv3w,656225
|
|
8
8
|
ccxt/binancecoinm.py,sha256=arFnEh8mErSyi23eVPWE4iwoT7PWQyxGGVJCKCy6UJY,1702
|
9
9
|
ccxt/binanceus.py,sha256=HRsk0fIoi8AAFdzRCUMkkXUGLqBrf0guUOfUxupHFeY,9202
|
10
10
|
ccxt/binanceusdm.py,sha256=bAPcJj5HLxoCdPolriM8sJpoTBwbV78vBTbKRmWhNP4,2632
|
11
|
-
ccxt/bingx.py,sha256=
|
11
|
+
ccxt/bingx.py,sha256=tVF-rcE6N-hAqn9BvsA5rO6wPe9XjGnq8MOuMoIFtd8,252027
|
12
12
|
ccxt/bit2c.py,sha256=Y_YHvg90Sq3CayQ2lr1_wLYwz4wGR7G3NJARiv_jX8M,37254
|
13
13
|
ccxt/bitbank.py,sha256=npoyV3c8uJ36nKofSzpMri590Yj_DIH0FAZg8o2EW6Y,43709
|
14
14
|
ccxt/bitbay.py,sha256=xAIjzGRDVGwoy-Gygd99H0YN4wiaz_0lR0Z14oxaaxc,478
|
@@ -19,12 +19,12 @@ ccxt/bitfinex2.py,sha256=9ad6ebvgThHIBhFmfp0MZIhyYkGBoIrudoLyyiz8cQ4,160817
|
|
19
19
|
ccxt/bitflyer.py,sha256=nh1EDzO66S-Ps9xBy-U4CErt6Q06E77wbWF_aTRw6RI,41663
|
20
20
|
ccxt/bitget.py,sha256=XRd-BZbOvu12RTQoYdE1dCqng8_lM5AkGH9fTWdAU-4,428677
|
21
21
|
ccxt/bithumb.py,sha256=8oTnFWi8Ai9fnm5FPXvNmaUAVJEOqYi-18VC23cWmXY,47935
|
22
|
-
ccxt/bitmart.py,sha256=
|
22
|
+
ccxt/bitmart.py,sha256=8D8pFVsaEMJZ5PQuheTigQ_-BEfHyvieIxwlM9o1-Yw,222097
|
23
23
|
ccxt/bitmex.py,sha256=w87ovaOQNJxtycsW4N7dpDzyh5AAPo5qnNS3TyBjppk,127407
|
24
24
|
ccxt/bitopro.py,sha256=XV878befM45AOnlSRpMYTnaBol342JAYWbFshvJ9fvs,69358
|
25
25
|
ccxt/bitpanda.py,sha256=aiwPkx9lKbVzt4ggoYdq_mIbMGtg5ZtGl2yRHO5xyz8,471
|
26
26
|
ccxt/bitrue.py,sha256=NQS636RfId1YBEEK2ZaI4rcdbB7L0vSU9AAoOinIJUA,136386
|
27
|
-
ccxt/bitso.py,sha256=
|
27
|
+
ccxt/bitso.py,sha256=QCYRoP9heyMzlV7qDDC_I2ipO86_ZNr7sg9259h2kpg,71756
|
28
28
|
ccxt/bitstamp.py,sha256=W9stgPLf-N5utFoYWdaTzzqBPtzAZWN5u2nMwogzdRY,93437
|
29
29
|
ccxt/bitteam.py,sha256=S5gDVlmAqoK_bOuCUmfyStFAApq2kDxQaUHHDf4byQM,102264
|
30
30
|
ccxt/bitvavo.py,sha256=y7TzNtYqWl5Y-91Q_lazQiw4RoK5r9XbuHhF3RIh688,91855
|
@@ -56,14 +56,14 @@ ccxt/deribit.py,sha256=x1TVHGfPxm9jL1Woxb-sLWZ-UdeGMiuVy4bdQGNRBO8,161694
|
|
56
56
|
ccxt/digifinex.py,sha256=HUxkYS2UbrAqiPuzPPMBMFLEahiIuiOElGDxRt4Gk7o,171005
|
57
57
|
ccxt/exmo.py,sha256=uCv9bsFzelhAHi_tIQe75X30csJvYizuCK09vU3NC4g,114777
|
58
58
|
ccxt/fmfwio.py,sha256=RbVLvzPwnqfDsE7Ea-N13ISCC82eJVPsXYjrleASmew,1236
|
59
|
-
ccxt/gate.py,sha256=
|
59
|
+
ccxt/gate.py,sha256=AnKqnk4Ut7GNOJm-j7jvxNlE9_snkJXLoRusYa78JAI,331528
|
60
60
|
ccxt/gateio.py,sha256=86AETJWODl_vA5VNeQRHZprmpNIY1HAxCddKZcnKSi8,445
|
61
61
|
ccxt/gemini.py,sha256=cFAHx-qA26A9WMJ3i6f_uQH83Q4k6UDwS8zBQcLI5Fs,81056
|
62
62
|
ccxt/hashkey.py,sha256=LMV9wPTn2_qT2om74OdF-IfHreaySxNHOilsNDrgB7Q,192148
|
63
63
|
ccxt/hitbtc.py,sha256=K9K0bcRffitBmnRgKKwRR09WCFE6Yj58FbwrJW6LlKU,153613
|
64
64
|
ccxt/hitbtc3.py,sha256=qRAr4Zvaju9IQWRZUohdoN7xRnzIMPq8AyYb3gPv-Is,455
|
65
65
|
ccxt/hollaex.py,sha256=bGaqSEwR42i1etwXgSYbluStoyKcIbuj4Qx-YQkVUhM,76255
|
66
|
-
ccxt/htx.py,sha256=
|
66
|
+
ccxt/htx.py,sha256=a44Qg0Jf12QM9FRdpjM5zxB569l-CRsOzmhKvNzKEAE,433157
|
67
67
|
ccxt/huobi.py,sha256=4vaG7IRN7fyjaJ_ac6S-njlHOfSEN5de7aq0noznxYw,438
|
68
68
|
ccxt/huobijp.py,sha256=Kw1HQhoox1qp-bEiGpCcJSg1UAhPVLRRi-BRbQLMljI,89741
|
69
69
|
ccxt/hyperliquid.py,sha256=OrUSVmr0fL0y4h8sSZGhNWS2kcPvmeCLs0yVxMt8WDo,123008
|
@@ -73,19 +73,19 @@ ccxt/indodax.py,sha256=QPH7sQzhqOFwq6g_xCAMcgnrpVVRl49zf_uolywxuX8,54798
|
|
73
73
|
ccxt/kraken.py,sha256=qOJz1jNl7wKqvonYdPCqWIbj7uKfsPY1qSVXllc5w6Y,135904
|
74
74
|
ccxt/krakenfutures.py,sha256=dbreVGrjMD7AY6xai0eazuvnUpTXTD7wLDVT9VDD5Qk,119839
|
75
75
|
ccxt/kucoin.py,sha256=tdNUENPhjXh6xJm5ybDQhQTrCC0x6WDzrcFeGZiQFYU,231781
|
76
|
-
ccxt/kucoinfutures.py,sha256=
|
76
|
+
ccxt/kucoinfutures.py,sha256=DDzCt5NCzYR7O8HbEZFr389-EOerZZkzhSnM1cLvJf0,136962
|
77
77
|
ccxt/kuna.py,sha256=wL4QciCkKXgOSnmMP2mkSq9HlL7Gsz-c2s75rH5YZkA,96074
|
78
78
|
ccxt/latoken.py,sha256=wBhaMcTEsB316nFCxm_WbLRZ_G2Q0Vi1FK-850Q07D0,79516
|
79
79
|
ccxt/lbank.py,sha256=bBnT07L-6RHbmWwvyxZvbAfwP7lRKe6TSrDveyLZabA,116250
|
80
80
|
ccxt/luno.py,sha256=P3cZ_CnVyjMjDFn5e7jaev-pqs_rgmWQTsiJThRtffE,46353
|
81
81
|
ccxt/lykke.py,sha256=3la3ckeV8v_i7UdspYRJRwQ9ZzyHph88JK01kgXOeX8,51550
|
82
82
|
ccxt/mercado.py,sha256=LWCh89IzXu-yhPGqhkdPW6wqOqfO8nmbSQhAyYiSH8U,35710
|
83
|
-
ccxt/mexc.py,sha256=
|
83
|
+
ccxt/mexc.py,sha256=s2-BAPVCWeK61OoyBqIomCTOXzzmHKa29zLA_3bCR3w,252988
|
84
84
|
ccxt/ndax.py,sha256=EHlxGEi6RKnz2IDLdEGj8V4yVt8exliTJiP46J40a_8,110430
|
85
85
|
ccxt/novadax.py,sha256=_xFkuZ72vHhpJb1N9h_MQHRD05GDWlqUeLQQcOp43BM,64436
|
86
86
|
ccxt/oceanex.py,sha256=NRL1VUBdpkAZj0qFov-HB_TEwmIX6lyz3RdCW53B66A,41178
|
87
87
|
ccxt/okcoin.py,sha256=Dvn7kOe6pvFLqkq3zA7DTWPQB6HmzoNLZ5tAeZ8gWwA,151307
|
88
|
-
ccxt/okx.py,sha256=
|
88
|
+
ccxt/okx.py,sha256=VlbeY0W1PYhi9yxabPO29-aqcqm6p6CElR48OAtPv44,384469
|
89
89
|
ccxt/onetrading.py,sha256=0yQ1MNVcTrHlWYVU_D3FmeHkK1FT35zFans6e9KeRxA,88480
|
90
90
|
ccxt/oxfun.py,sha256=uFrS6oO6rvyXmocqPwAxVzczg0IG-BZeqRmNcNcTTig,124875
|
91
91
|
ccxt/p2b.py,sha256=iPzHv663K8F1F0uTWEYpfQBcaqowY8MQ5tZt2ZNpoQE,54290
|
@@ -218,7 +218,7 @@ ccxt/abstract/xt.py,sha256=JkWvsic3L2O968BCr9H5Wd5NIbRE9aTT2A-9WbAtl0c,27146
|
|
218
218
|
ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
|
219
219
|
ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
|
220
220
|
ccxt/abstract/zonda.py,sha256=X-hCW0SdX3YKZWixDyW-O2211M58Rno8kKJ6quY7rw4,7183
|
221
|
-
ccxt/async_support/__init__.py,sha256=
|
221
|
+
ccxt/async_support/__init__.py,sha256=u3yINwWv4i6MFkxdKAwBHN2UkshEQhJbaHEyTSIq55w,16289
|
222
222
|
ccxt/async_support/ace.py,sha256=ucCkKaWRkILAIK9g4iEi1Q_-zmn0V89-rX8Al4WdK8s,42643
|
223
223
|
ccxt/async_support/alpaca.py,sha256=HxonsP_MzbE7Z9r6hZ1rgmf_jPcP4H7H3z1YQgCv4qc,47716
|
224
224
|
ccxt/async_support/ascendex.py,sha256=YcGVveIDir8A1rDak-DdS_qVO1yPwAUX9sRDwCVNX80,152489
|
@@ -228,7 +228,7 @@ ccxt/async_support/binance.py,sha256=tBCGXhs4h9fLdHD1lUZJrsOCDxmI0gAe89eoLrf_MbA
|
|
228
228
|
ccxt/async_support/binancecoinm.py,sha256=yeE73xG5UXD_X3VPul6DMGnV_mgJfWYskpas1BUDdCU,1740
|
229
229
|
ccxt/async_support/binanceus.py,sha256=ZkGgQGB0bWYZTz7PqBCgw22yyOZbvd7GuJAJzzgDTCA,9216
|
230
230
|
ccxt/async_support/binanceusdm.py,sha256=8ugRkx7vyYmn67wdkEEf2f-DFMGAoC4t09usKlPVNyw,2670
|
231
|
-
ccxt/async_support/bingx.py,sha256=
|
231
|
+
ccxt/async_support/bingx.py,sha256=10mn26VEuzB9EvPbb9i9dGbx5_3moC8lxprXeKi7q4Y,253345
|
232
232
|
ccxt/async_support/bit2c.py,sha256=8gA0VW3_617LwqCNliJnhjpjtwXAGxv7FsEn9805XOc,37466
|
233
233
|
ccxt/async_support/bitbank.py,sha256=DOBazUZetD7gxURy42C3m-T-YK-zvYIkcUjHqJggkGU,43969
|
234
234
|
ccxt/async_support/bitbay.py,sha256=jcaEXi2IhYTva8ezO_SfJhwxEZk7HST4J3NaxD16BQA,492
|
@@ -239,12 +239,12 @@ ccxt/async_support/bitfinex2.py,sha256=QSp4PkXhNkTMHEILoQH8UipJ4EgPzNSHiDfI9y5QH
|
|
239
239
|
ccxt/async_support/bitflyer.py,sha256=DTyHe4QBOED0xUEYoDfpGFL0sULp_3CxTXCWfDPbGbE,41971
|
240
240
|
ccxt/async_support/bitget.py,sha256=OJWGHwSQ-c9KXT6Hylaq_T9XKVBo16AYdM6o4B0o9x8,430325
|
241
241
|
ccxt/async_support/bithumb.py,sha256=Q0Cx_cRKZRfdpBAhQyINm63Qw3M6BRYQRiF0UqYzfis,48214
|
242
|
-
ccxt/async_support/bitmart.py,sha256=
|
242
|
+
ccxt/async_support/bitmart.py,sha256=WNfWDZvw8lgzC8WGvuR67-07uqtt_woyfVPeua3IhXQ,223089
|
243
243
|
ccxt/async_support/bitmex.py,sha256=j9ohrBbNDcfR67QnPuuqrqz3pxEHpVtb0WhRKPPCYQ8,127985
|
244
244
|
ccxt/async_support/bitopro.py,sha256=uWrH_HdRkf0UCs-N_JE1hCN6eWYWwXpc8VXMb0niM78,69762
|
245
245
|
ccxt/async_support/bitpanda.py,sha256=2k3URBWrpnh2xHa7JiYenI7_4MW5UeOPGzetlmRkR4U,485
|
246
246
|
ccxt/async_support/bitrue.py,sha256=owSEnJYp47wZRP8dj_lpR-r7aqyhy0nnNI9vzd79P64,137044
|
247
|
-
ccxt/async_support/bitso.py,sha256=
|
247
|
+
ccxt/async_support/bitso.py,sha256=tOH9mzu5fh-eI1D5p4hFRGXcKH2sHDNt1kdzcbFngKk,72142
|
248
248
|
ccxt/async_support/bitstamp.py,sha256=zDgKXyHsLLPYg7SlKrpxs6BNjPgM5QtUo38Yuyp1txQ,93937
|
249
249
|
ccxt/async_support/bitteam.py,sha256=vPMTVr0bDCd5okV_tFA9gVVW4a5NmsabvEplOm2-uOo,102596
|
250
250
|
ccxt/async_support/bitvavo.py,sha256=lLv-0-cCdr-XfdDRHYIVzppUUeGEJMq0Q-Jz91NrvGQ,92289
|
@@ -276,14 +276,14 @@ ccxt/async_support/deribit.py,sha256=HEqDGpYgre-vZyb5wr1RzjiZ_ZSeY29geRMWSxga9dw
|
|
276
276
|
ccxt/async_support/digifinex.py,sha256=RaYiL8nPU0HkyJ0XxkZBBTJ36JBGRmmjcFvHxlKN7ug,171987
|
277
277
|
ccxt/async_support/exmo.py,sha256=HNrYN1fOnvhB26u-epXzK2xs3AqPUAgTmdRTtFu-dzw,115409
|
278
278
|
ccxt/async_support/fmfwio.py,sha256=lzfSnPrB2ARcC3EIqAuBM4vyg6LJ6n8RE71Zvt3ez1s,1250
|
279
|
-
ccxt/async_support/gate.py,sha256=
|
279
|
+
ccxt/async_support/gate.py,sha256=UfaQfAZatglCxEiUUK3UPhua808I7fvAgTqj4kC8h8g,333271
|
280
280
|
ccxt/async_support/gateio.py,sha256=6_t032F9p9x5KGTjtSuqGXITzFOx-XAQBYLpsuQjzxw,459
|
281
281
|
ccxt/async_support/gemini.py,sha256=gy0ALSeHrenXa2aJoAW1alVOgF6rUNxUoydX5Degikc,81580
|
282
282
|
ccxt/async_support/hashkey.py,sha256=XaSBqm0eh3R_2HCbOCZWaLuqJwVg5DJbttvfFYJpNZA,192990
|
283
283
|
ccxt/async_support/hitbtc.py,sha256=wWHmgPCEBLf0nj-unVu1LtkRPgZvjil22I4S79a-VA8,154659
|
284
284
|
ccxt/async_support/hitbtc3.py,sha256=dmSYoD2o4av_zzbZI8HNIoj8BWxA7QozsVpy8JaOXzU,469
|
285
285
|
ccxt/async_support/hollaex.py,sha256=k_KeUA5jEiyA7ypOAZsYL4RBonNG6dYxb50mpvWw_qQ,76689
|
286
|
-
ccxt/async_support/htx.py,sha256=
|
286
|
+
ccxt/async_support/htx.py,sha256=302cQcXh04xpbmTL2Cvr3Mrd0F-Agzyv200O9nV4Rtw,435549
|
287
287
|
ccxt/async_support/huobi.py,sha256=fup0j6wQ1khAtfbb1H4CSyJAOzhxuoHMmrM6sgTuhr8,452
|
288
288
|
ccxt/async_support/huobijp.py,sha256=4Pj8qPn2xzzyvdsy08gnbiF-eSKXQNT0p6VIOVkpisM,90241
|
289
289
|
ccxt/async_support/hyperliquid.py,sha256=WRSTtjvdVi68iZ67DcESlrfG8gGVwaGLK4MfZaPyYIo,123672
|
@@ -293,19 +293,19 @@ ccxt/async_support/indodax.py,sha256=_7AbcJJmBSPMQ1E-mqOoQJXTjIXldItRMDFCdwhvFuA
|
|
293
293
|
ccxt/async_support/kraken.py,sha256=F1NRf8PFqrzM-XQzf81sjpAER8mz1aYIgP4M5kO_DfQ,136560
|
294
294
|
ccxt/async_support/krakenfutures.py,sha256=Wcry7ar4Esbi_3Urp8LcnzPMsThN6KcdU6QN5YMxDCk,120327
|
295
295
|
ccxt/async_support/kucoin.py,sha256=cE0IuoIdGeYcGBr19iRPHPy8dYJnJS-5cPvAENhBKX8,232960
|
296
|
-
ccxt/async_support/kucoinfutures.py,sha256=
|
296
|
+
ccxt/async_support/kucoinfutures.py,sha256=gV8D1Wqt8jUNEd7O1UWuAYeqj1W8EK0MEpX6uhJ5w-k,137726
|
297
297
|
ccxt/async_support/kuna.py,sha256=_8S74LqI1c5zbCbaSfJgUsVyqus9gB2OV9s3UMXkzYQ,96490
|
298
298
|
ccxt/async_support/latoken.py,sha256=9BUu8akWtbBtAzVr_c_cYLkiLQqcJdSdkJbHmuLee-Y,79992
|
299
299
|
ccxt/async_support/lbank.py,sha256=xWUzIsFFAV_yd0Igo3CimSys6z-AoQH88oQ0zzBb1w0,116962
|
300
300
|
ccxt/async_support/luno.py,sha256=WRQ5uH3Wr1HHZa9ZtcWCYdrmz-Y8proS5XOGZpBtiZo,46691
|
301
301
|
ccxt/async_support/lykke.py,sha256=E5n93dUuUShGO8wXogPMQkotguYpJFWM12aT_lTwEoM,51864
|
302
302
|
ccxt/async_support/mercado.py,sha256=mb7ULqvEr9PQ7jBOpQxiufgYzwTeAfr0G2NZmrUeUgs,35952
|
303
|
-
ccxt/async_support/mexc.py,sha256=
|
303
|
+
ccxt/async_support/mexc.py,sha256=BvSdcWMZwcyOT1iNMLg41ZHTO7ejxdlOw5E2mRSnngk,254252
|
304
304
|
ccxt/async_support/ndax.py,sha256=V157f9E_-NzmEwRxCpxN9Th_9TIlU9EJOgRYxLfss9E,110954
|
305
305
|
ccxt/async_support/novadax.py,sha256=YNKUM1CGFK7lpBwbxSSL1IAEJCRVsNxeITkwtw6VWCM,64804
|
306
306
|
ccxt/async_support/oceanex.py,sha256=U9VJN3Sym8GEZUqkmIt8yDzVw9XRc-WtSj35R1Fdv_U,41516
|
307
307
|
ccxt/async_support/okcoin.py,sha256=Vwbq1Sf1RiYHOehTkvIuet7vqskMyiFj4j-OTpjxRZg,151831
|
308
|
-
ccxt/async_support/okx.py,sha256=
|
308
|
+
ccxt/async_support/okx.py,sha256=S930QDVp31bL36zFBUIae_zSsVpdAtvA3wfXMXN3R54,386110
|
309
309
|
ccxt/async_support/onetrading.py,sha256=FNOJlpBOGHu51EKhdFJPxNNHWPTIw_OcVzBf83UlR-w,88932
|
310
310
|
ccxt/async_support/oxfun.py,sha256=26g7I24m8le35qcEqFVZGfiEv3sP3pOIu53724Bz5k0,125419
|
311
311
|
ccxt/async_support/p2b.py,sha256=VKUX8u7gtHkKDwBjAyskScm2FEs6xxDuKLXE-jSHXwY,54532
|
@@ -330,7 +330,7 @@ ccxt/async_support/yobit.py,sha256=YtkLczlb641VjUYTfEMfS-BPUTdXQTHAPkearuXkXDQ,5
|
|
330
330
|
ccxt/async_support/zaif.py,sha256=-ZTr8M2JaIRCL90VrbCDXBMAsZwbiwsFChSQ2rWODuQ,29044
|
331
331
|
ccxt/async_support/zonda.py,sha256=Z4gA6o0bF_4MarQ5KiR2Zwi2wpmOuZTHS1JChAtNWjo,83114
|
332
332
|
ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
|
333
|
-
ccxt/async_support/base/exchange.py,sha256=
|
333
|
+
ccxt/async_support/base/exchange.py,sha256=ukRA0XZr1vZzcCc5Ceif9QUbR6fU-utw7qJbS5Y3Myo,113443
|
334
334
|
ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
|
335
335
|
ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
|
336
336
|
ccxt/async_support/base/ws/aiohttp_client.py,sha256=5IEiT0elWI9a7Vr-KV0jgmlbpLJWBzIlrLaCkTKGaqY,5752
|
@@ -344,10 +344,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9produGjmB
|
|
344
344
|
ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
|
345
345
|
ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
|
346
346
|
ccxt/base/errors.py,sha256=Pad-6ugvGUwhoYuKUliX-N7FTrcnKCQGFjsaq2tMn0I,4610
|
347
|
-
ccxt/base/exchange.py,sha256=
|
347
|
+
ccxt/base/exchange.py,sha256=w4qXTWNocoLFmbyOWbAmP5f2iR33J-O_E6i8M__Zebo,301504
|
348
348
|
ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
|
349
349
|
ccxt/base/types.py,sha256=jxuyz7pMvNPfV_iOHhHdI_41AH0_ZTtmDn9BxaKw5Fk,9796
|
350
|
-
ccxt/pro/__init__.py,sha256=
|
350
|
+
ccxt/pro/__init__.py,sha256=8Py7DJNZ_lqMH3O0BEX0lZ7jU3HMXIcglkWoB98ql_M,7710
|
351
351
|
ccxt/pro/alpaca.py,sha256=xh1yg1Ok-Zh_Mfx-MBjNrfJDs6MUU0exFfEj3GuQPC4,27631
|
352
352
|
ccxt/pro/ascendex.py,sha256=QueLgISoIxgGSOta2W7En4pwAsEXbTP5q5ef4UjpTQQ,37524
|
353
353
|
ccxt/pro/bequant.py,sha256=33OEUWBi4D9-2w8CmkwN3aF1qS-AlLqX3pxrWwNbXPY,1552
|
@@ -359,7 +359,7 @@ ccxt/pro/bingx.py,sha256=Nj0sPJtM5hRmyI3Azo0E9bimvMYRaCkG1kiaVNjj1_8,60901
|
|
359
359
|
ccxt/pro/bitcoincom.py,sha256=zAX6hiz4hS6Un8dSGp88rpnvItxQHfNmsfF0IZ2xIVA,1181
|
360
360
|
ccxt/pro/bitfinex.py,sha256=pvwMA7w-Sv45XyRcEEIXXKXBl2kC8rvl8D1KXnoont4,25329
|
361
361
|
ccxt/pro/bitfinex2.py,sha256=H2evIdXrXaHpmvlqoPCOqADYjiHqvZVLf9EnbYHBOj8,43106
|
362
|
-
ccxt/pro/bitget.py,sha256=
|
362
|
+
ccxt/pro/bitget.py,sha256=hjkmOakTISKB28lyZEsf4dwCRHB9l8Uq0_H9RLhE53c,87929
|
363
363
|
ccxt/pro/bithumb.py,sha256=cAiRpOT1kxlpphu7xd6NYH43j7of_kXXy0M9YqXeat4,17411
|
364
364
|
ccxt/pro/bitmart.py,sha256=yYi-9twsMTIlZU-UabQF91tuMCnYeEEVibHmy2l4lFw,65984
|
365
365
|
ccxt/pro/bitmex.py,sha256=J9pn0llcUkAjAfuBbMFd7-VzfnVSx8woIMAkLK58qss,74569
|
@@ -650,8 +650,8 @@ ccxt/test/tests_async.py,sha256=IOkbqZXUViJ1KtDIlE63EZaU3z31_OR2iI6yL0azKL0,8500
|
|
650
650
|
ccxt/test/tests_helpers.py,sha256=z5TiaK0WyUCmM_uGTFz7cgMNqNwG_SMI9qk7yec5ces,9693
|
651
651
|
ccxt/test/tests_init.py,sha256=GodMIrJue4KBHHqD4vSPZxokPWpxbZIuEp19UdxlFAg,1166
|
652
652
|
ccxt/test/tests_sync.py,sha256=c9hEBBjaLRJ-rqGiR-SpVUXcFJsvrZ7mxhLKb7TJWEc,84062
|
653
|
-
ccxt-4.4.
|
654
|
-
ccxt-4.4.
|
655
|
-
ccxt-4.4.
|
656
|
-
ccxt-4.4.
|
657
|
-
ccxt-4.4.
|
653
|
+
ccxt-4.4.18.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
|
654
|
+
ccxt-4.4.18.dist-info/METADATA,sha256=NqPRzHKuXqRoIaLyB__Fg9seZ2KbRPANUVKm5HysILg,114487
|
655
|
+
ccxt-4.4.18.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
|
656
|
+
ccxt-4.4.18.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
657
|
+
ccxt-4.4.18.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|