ccxt 4.4.16__py2.py3-none-any.whl → 4.4.17__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/abstract/mexc.py +1 -0
- ccxt/async_support/__init__.py +1 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/binance.py +9 -4
- ccxt/async_support/bingx.py +54 -0
- ccxt/async_support/bitvavo.py +2 -2
- ccxt/async_support/bybit.py +6 -3
- ccxt/async_support/coinbaseinternational.py +4 -8
- ccxt/async_support/kuna.py +4 -12
- ccxt/async_support/mexc.py +1 -0
- ccxt/async_support/okx.py +33 -1
- ccxt/async_support/timex.py +4 -8
- ccxt/base/exchange.py +13 -1
- ccxt/binance.py +9 -4
- ccxt/bingx.py +54 -0
- ccxt/bitvavo.py +2 -2
- ccxt/bybit.py +6 -3
- ccxt/coinbaseinternational.py +4 -8
- ccxt/kuna.py +4 -12
- ccxt/mexc.py +1 -0
- ccxt/okx.py +33 -1
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/bitvavo.py +1 -1
- ccxt/timex.py +4 -8
- {ccxt-4.4.16.dist-info → ccxt-4.4.17.dist-info}/METADATA +4 -4
- {ccxt-4.4.16.dist-info → ccxt-4.4.17.dist-info}/RECORD +30 -30
- {ccxt-4.4.16.dist-info → ccxt-4.4.17.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.4.16.dist-info → ccxt-4.4.17.dist-info}/WHEEL +0 -0
- {ccxt-4.4.16.dist-info → ccxt-4.4.17.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
ccxt/abstract/mexc.py
CHANGED
@@ -56,6 +56,7 @@ class ImplicitAPI:
|
|
56
56
|
spot_private_get_rebate_affiliate_commission_detail = spotPrivateGetRebateAffiliateCommissionDetail = Entry('rebate/affiliate/commission/detail', ['spot', 'private'], 'GET', {'cost': 1})
|
57
57
|
spot_private_get_mxdeduct_enable = spotPrivateGetMxDeductEnable = Entry('mxDeduct/enable', ['spot', 'private'], 'GET', {'cost': 1})
|
58
58
|
spot_private_get_userdatastream = spotPrivateGetUserDataStream = Entry('userDataStream', ['spot', 'private'], 'GET', {'cost': 1})
|
59
|
+
spot_private_get_selfsymbols = spotPrivateGetSelfSymbols = Entry('selfSymbols', ['spot', 'private'], 'GET', {'cost': 1})
|
59
60
|
spot_private_post_order = spotPrivatePostOrder = Entry('order', ['spot', 'private'], 'POST', {'cost': 1})
|
60
61
|
spot_private_post_order_test = spotPrivatePostOrderTest = Entry('order/test', ['spot', 'private'], 'POST', {'cost': 1})
|
61
62
|
spot_private_post_sub_account_virtualsubaccount = spotPrivatePostSubAccountVirtualSubAccount = Entry('sub-account/virtualSubAccount', ['spot', 'private'], 'POST', {'cost': 1})
|
ccxt/async_support/__init__.py
CHANGED
ccxt/async_support/binance.py
CHANGED
@@ -2663,11 +2663,16 @@ class binance(Exchange, ImplicitAPI):
|
|
2663
2663
|
apiBackup = self.safe_value(self.urls, 'apiBackup')
|
2664
2664
|
if apiBackup is not None:
|
2665
2665
|
return None
|
2666
|
-
promises = [self.sapiGetCapitalConfigGetall(params)
|
2666
|
+
promises = [self.sapiGetCapitalConfigGetall(params)]
|
2667
|
+
fetchMargins = self.safe_bool(self.options, 'fetchMargins', False)
|
2668
|
+
if fetchMargins:
|
2669
|
+
promises.append(self.sapiGetMarginAllPairs(params))
|
2667
2670
|
results = await asyncio.gather(*promises)
|
2668
2671
|
responseCurrencies = results[0]
|
2669
|
-
|
2670
|
-
|
2672
|
+
marginablesById = None
|
2673
|
+
if fetchMargins:
|
2674
|
+
responseMarginables = results[1]
|
2675
|
+
marginablesById = self.index_by(responseMarginables, 'assetName')
|
2671
2676
|
result: dict = {}
|
2672
2677
|
for i in range(0, len(responseCurrencies)):
|
2673
2678
|
#
|
@@ -4115,7 +4120,7 @@ class binance(Exchange, ImplicitAPI):
|
|
4115
4120
|
fetches mark price for the market
|
4116
4121
|
:see: https://binance-docs.github.io/apidocs/futures/en/#mark-price
|
4117
4122
|
:see: https://binance-docs.github.io/apidocs/delivery/en/#index-price-and-mark-price
|
4118
|
-
:param str
|
4123
|
+
:param str symbol: unified symbol of the market to fetch the ticker for
|
4119
4124
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
4120
4125
|
:param str [params.subType]: "linear" or "inverse"
|
4121
4126
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
ccxt/async_support/bingx.py
CHANGED
@@ -82,6 +82,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
82
82
|
'fetchMarginMode': True,
|
83
83
|
'fetchMarkets': True,
|
84
84
|
'fetchMarkOHLCV': True,
|
85
|
+
'fetchMarkPrice': True,
|
85
86
|
'fetchMarkPrices': True,
|
86
87
|
'fetchMyLiquidations': True,
|
87
88
|
'fetchOHLCV': True,
|
@@ -1657,6 +1658,59 @@ class bingx(Exchange, ImplicitAPI):
|
|
1657
1658
|
tickers = self.safe_list(response, 'data')
|
1658
1659
|
return self.parse_tickers(tickers, symbols)
|
1659
1660
|
|
1661
|
+
async def fetch_mark_price(self, symbol: str, params={}) -> Ticker:
|
1662
|
+
"""
|
1663
|
+
fetches mark prices for the market
|
1664
|
+
:see: https://bingx-api.github.io/docs/#/en-us/swapV2/market-api.html#Mark%20Price%20and%20Funding%20Rate
|
1665
|
+
:param str symbol: unified symbol of the market to fetch the ticker for
|
1666
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1667
|
+
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
1668
|
+
"""
|
1669
|
+
await self.load_markets()
|
1670
|
+
market = self.market(symbol)
|
1671
|
+
subType = None
|
1672
|
+
subType, params = self.handle_sub_type_and_params('fetchMarkPrice', market, params, 'linear')
|
1673
|
+
request = {
|
1674
|
+
'symbol': market['id'],
|
1675
|
+
}
|
1676
|
+
response = None
|
1677
|
+
if subType == 'inverse':
|
1678
|
+
response = await self.cswapV1PublicGetMarketPremiumIndex(self.extend(request, params))
|
1679
|
+
#
|
1680
|
+
# {
|
1681
|
+
# "code": 0,
|
1682
|
+
# "msg": "",
|
1683
|
+
# "timestamp": 1728577213289,
|
1684
|
+
# "data": [
|
1685
|
+
# {
|
1686
|
+
# "symbol": "ETH-USD",
|
1687
|
+
# "lastFundingRate": "0.0001",
|
1688
|
+
# "markPrice": "2402.68",
|
1689
|
+
# "indexPrice": "2404.92",
|
1690
|
+
# "nextFundingTime": 1728604800000
|
1691
|
+
# }
|
1692
|
+
# ]
|
1693
|
+
# }
|
1694
|
+
#
|
1695
|
+
else:
|
1696
|
+
response = await self.swapV2PublicGetQuotePremiumIndex(self.extend(request, params))
|
1697
|
+
#
|
1698
|
+
# {
|
1699
|
+
# "code": 0,
|
1700
|
+
# "msg": "",
|
1701
|
+
# "data": {
|
1702
|
+
# "symbol": "ETH-USDT",
|
1703
|
+
# "markPrice": "2408.40",
|
1704
|
+
# "indexPrice": "2409.62",
|
1705
|
+
# "lastFundingRate": "0.00009900",
|
1706
|
+
# "nextFundingTime": 1728604800000
|
1707
|
+
# }
|
1708
|
+
# }
|
1709
|
+
#
|
1710
|
+
if isinstance(response['data'], list):
|
1711
|
+
return self.parse_ticker(self.safe_dict(response['data'], 0, {}), market)
|
1712
|
+
return self.parse_ticker(response['data'], market)
|
1713
|
+
|
1660
1714
|
async def fetch_mark_prices(self, symbols: Strings = None, params={}) -> Tickers:
|
1661
1715
|
"""
|
1662
1716
|
fetches mark prices for multiple markets
|
ccxt/async_support/bitvavo.py
CHANGED
@@ -458,9 +458,9 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
458
458
|
# },
|
459
459
|
# ]
|
460
460
|
#
|
461
|
-
return self.
|
461
|
+
return self.parse_currencies_custom(response)
|
462
462
|
|
463
|
-
def
|
463
|
+
def parse_currencies_custom(self, currencies):
|
464
464
|
#
|
465
465
|
# [
|
466
466
|
# {
|
ccxt/async_support/bybit.py
CHANGED
@@ -4539,7 +4539,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
4539
4539
|
length = len(result)
|
4540
4540
|
if length == 0:
|
4541
4541
|
isTrigger = self.safe_bool_n(params, ['trigger', 'stop'], False)
|
4542
|
-
extra = '' if isTrigger else 'If you are trying to fetch SL/TP conditional order, you might try setting params["trigger"] = True'
|
4542
|
+
extra = '' if isTrigger else ' If you are trying to fetch SL/TP conditional order, you might try setting params["trigger"] = True'
|
4543
4543
|
raise OrderNotFound('Order ' + str(id) + ' was not found.' + extra)
|
4544
4544
|
if length > 1:
|
4545
4545
|
raise InvalidOrder(self.id + ' returned more than one order')
|
@@ -4628,6 +4628,9 @@ class bybit(Exchange, ImplicitAPI):
|
|
4628
4628
|
#
|
4629
4629
|
result = self.safe_dict(response, 'result', {})
|
4630
4630
|
innerList = self.safe_list(result, 'list', [])
|
4631
|
+
if len(innerList) == 0:
|
4632
|
+
extra = '' if isTrigger else ' If you are trying to fetch SL/TP conditional order, you might try setting params["trigger"] = True'
|
4633
|
+
raise OrderNotFound('Order ' + str(id) + ' was not found.' + extra)
|
4631
4634
|
order = self.safe_dict(innerList, 0, {})
|
4632
4635
|
return self.parse_order(order, market)
|
4633
4636
|
|
@@ -4778,7 +4781,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
4778
4781
|
length = len(result)
|
4779
4782
|
if length == 0:
|
4780
4783
|
isTrigger = self.safe_bool_n(params, ['trigger', 'stop'], False)
|
4781
|
-
extra = '' if isTrigger else 'If you are trying to fetch SL/TP conditional order, you might try setting params["trigger"] = True'
|
4784
|
+
extra = '' if isTrigger else ' If you are trying to fetch SL/TP conditional order, you might try setting params["trigger"] = True'
|
4782
4785
|
raise OrderNotFound('Order ' + str(id) + ' was not found.' + extra)
|
4783
4786
|
if length > 1:
|
4784
4787
|
raise InvalidOrder(self.id + ' returned more than one order')
|
@@ -4807,7 +4810,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
4807
4810
|
length = len(result)
|
4808
4811
|
if length == 0:
|
4809
4812
|
isTrigger = self.safe_bool_n(params, ['trigger', 'stop'], False)
|
4810
|
-
extra = '' if isTrigger else 'If you are trying to fetch SL/TP conditional order, you might try setting params["trigger"] = True'
|
4813
|
+
extra = '' if isTrigger else ' If you are trying to fetch SL/TP conditional order, you might try setting params["trigger"] = True'
|
4811
4814
|
raise OrderNotFound('Order ' + str(id) + ' was not found.' + extra)
|
4812
4815
|
if length > 1:
|
4813
4816
|
raise InvalidOrder(self.id + ' returned more than one order')
|
@@ -1315,13 +1315,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1315
1315
|
# ...
|
1316
1316
|
# ]
|
1317
1317
|
#
|
1318
|
-
|
1319
|
-
for i in range(0, len(currencies)):
|
1320
|
-
currency = self.parse_currency(currencies[i])
|
1321
|
-
result[currency['code']] = currency
|
1322
|
-
return result
|
1318
|
+
return self.parse_currencies(currencies)
|
1323
1319
|
|
1324
|
-
def parse_currency(self, currency: dict):
|
1320
|
+
def parse_currency(self, currency: dict) -> Currency:
|
1325
1321
|
#
|
1326
1322
|
# {
|
1327
1323
|
# "asset_id":"1",
|
@@ -1335,7 +1331,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1335
1331
|
id = self.safe_string(currency, 'asset_name')
|
1336
1332
|
code = self.safe_currency_code(id)
|
1337
1333
|
statusId = self.safe_string(currency, 'status')
|
1338
|
-
return {
|
1334
|
+
return self.safe_currency_structure({
|
1339
1335
|
'id': id,
|
1340
1336
|
'name': code,
|
1341
1337
|
'code': code,
|
@@ -1348,7 +1344,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1348
1344
|
'fee': None,
|
1349
1345
|
'fees': None,
|
1350
1346
|
'limits': self.limits,
|
1351
|
-
}
|
1347
|
+
})
|
1352
1348
|
|
1353
1349
|
async def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
1354
1350
|
"""
|
ccxt/async_support/kuna.py
CHANGED
@@ -462,15 +462,7 @@ class kuna(Exchange, ImplicitAPI):
|
|
462
462
|
data = self.safe_value(response, 'data', [])
|
463
463
|
return self.parse_currencies(data)
|
464
464
|
|
465
|
-
def
|
466
|
-
currencies = self.to_array(currencies)
|
467
|
-
result: dict = {}
|
468
|
-
for i in range(0, len(currencies)):
|
469
|
-
currency = self.parse_currency(currencies[i])
|
470
|
-
result[currency['code']] = currency
|
471
|
-
return result
|
472
|
-
|
473
|
-
def parse_currency(self, currency: dict):
|
465
|
+
def parse_currency(self, currency: dict) -> Currency:
|
474
466
|
#
|
475
467
|
# {
|
476
468
|
# "code": "BTC",
|
@@ -494,7 +486,7 @@ class kuna(Exchange, ImplicitAPI):
|
|
494
486
|
currencyId = self.safe_string(currency, 'code')
|
495
487
|
precision = self.safe_string(currency, 'precision')
|
496
488
|
tradePrecision = self.safe_string(currency, 'tradePrecision')
|
497
|
-
return {
|
489
|
+
return self.safe_currency_structure({
|
498
490
|
'info': currency,
|
499
491
|
'id': currencyId,
|
500
492
|
'code': self.safe_currency_code(currencyId),
|
@@ -505,7 +497,7 @@ class kuna(Exchange, ImplicitAPI):
|
|
505
497
|
'deposit': None,
|
506
498
|
'withdraw': None,
|
507
499
|
'fee': None,
|
508
|
-
'precision': Precise.string_min(precision, tradePrecision),
|
500
|
+
'precision': self.parse_number(Precise.string_min(precision, tradePrecision)),
|
509
501
|
'limits': {
|
510
502
|
'amount': {
|
511
503
|
'min': None,
|
@@ -517,7 +509,7 @@ class kuna(Exchange, ImplicitAPI):
|
|
517
509
|
},
|
518
510
|
},
|
519
511
|
'networks': {},
|
520
|
-
}
|
512
|
+
})
|
521
513
|
|
522
514
|
async def fetch_markets(self, params={}) -> List[Market]:
|
523
515
|
"""
|
ccxt/async_support/mexc.py
CHANGED
ccxt/async_support/okx.py
CHANGED
@@ -123,6 +123,7 @@ class okx(Exchange, ImplicitAPI):
|
|
123
123
|
'fetchMarketLeverageTiers': True,
|
124
124
|
'fetchMarkets': True,
|
125
125
|
'fetchMarkOHLCV': True,
|
126
|
+
'fetchMarkPrice': True,
|
126
127
|
'fetchMarkPrices': True,
|
127
128
|
'fetchMySettlementHistory': False,
|
128
129
|
'fetchMyTrades': True,
|
@@ -1958,6 +1959,37 @@ class okx(Exchange, ImplicitAPI):
|
|
1958
1959
|
tickers = self.safe_list(response, 'data', [])
|
1959
1960
|
return self.parse_tickers(tickers, symbols)
|
1960
1961
|
|
1962
|
+
async def fetch_mark_price(self, symbol: str, params={}) -> Ticker:
|
1963
|
+
"""
|
1964
|
+
fetches mark price for the market
|
1965
|
+
:see: https://www.okx.com/docs-v5/en/#public-data-rest-api-get-mark-price
|
1966
|
+
:param str symbol: unified symbol of the market to fetch the ticker for
|
1967
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1968
|
+
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
1969
|
+
"""
|
1970
|
+
await self.load_markets()
|
1971
|
+
market = self.market(symbol)
|
1972
|
+
request: dict = {
|
1973
|
+
'instId': market['id'],
|
1974
|
+
}
|
1975
|
+
response = await self.publicGetPublicMarkPrice(self.extend(request, params))
|
1976
|
+
#
|
1977
|
+
# {
|
1978
|
+
# "code": "0",
|
1979
|
+
# "data": [
|
1980
|
+
# {
|
1981
|
+
# "instId": "ETH-USDT",
|
1982
|
+
# "instType": "MARGIN",
|
1983
|
+
# "markPx": "2403.98",
|
1984
|
+
# "ts": "1728578500703"
|
1985
|
+
# }
|
1986
|
+
# ],
|
1987
|
+
# "msg": ""
|
1988
|
+
# }
|
1989
|
+
#
|
1990
|
+
data = self.safe_list(response, 'data')
|
1991
|
+
return self.parse_ticker(self.safe_dict(data, 0), market)
|
1992
|
+
|
1961
1993
|
async def fetch_mark_prices(self, symbols: Strings = None, params={}) -> Tickers:
|
1962
1994
|
"""
|
1963
1995
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
@@ -1978,7 +2010,7 @@ class okx(Exchange, ImplicitAPI):
|
|
1978
2010
|
defaultUnderlying = self.safe_string(self.options, 'defaultUnderlying', 'BTC-USD')
|
1979
2011
|
currencyId = self.safe_string_2(params, 'uly', 'marketId', defaultUnderlying)
|
1980
2012
|
if currencyId is None:
|
1981
|
-
raise ArgumentsRequired(self.id + '
|
2013
|
+
raise ArgumentsRequired(self.id + ' fetchMarkPrices() requires an underlying uly or marketId parameter for options markets')
|
1982
2014
|
else:
|
1983
2015
|
request['uly'] = currencyId
|
1984
2016
|
response = await self.publicGetPublicMarkPrice(self.extend(request, params))
|
ccxt/async_support/timex.py
CHANGED
@@ -359,11 +359,7 @@ class timex(Exchange, ImplicitAPI):
|
|
359
359
|
# },
|
360
360
|
# ]
|
361
361
|
#
|
362
|
-
|
363
|
-
for i in range(0, len(response)):
|
364
|
-
currency = response[i]
|
365
|
-
result.append(self.parse_currency(currency))
|
366
|
-
return self.index_by(result, 'code')
|
362
|
+
return self.parse_currencies(response)
|
367
363
|
|
368
364
|
async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
369
365
|
"""
|
@@ -1239,7 +1235,7 @@ class timex(Exchange, ImplicitAPI):
|
|
1239
1235
|
'info': market,
|
1240
1236
|
}
|
1241
1237
|
|
1242
|
-
def parse_currency(self, currency: dict):
|
1238
|
+
def parse_currency(self, currency: dict) -> Currency:
|
1243
1239
|
#
|
1244
1240
|
# {
|
1245
1241
|
# "symbol": "BTC",
|
@@ -1300,7 +1296,7 @@ class timex(Exchange, ImplicitAPI):
|
|
1300
1296
|
for i in range(0, -dotIndex):
|
1301
1297
|
fraction += '0'
|
1302
1298
|
fee = self.parse_number(fraction + feeString)
|
1303
|
-
return {
|
1299
|
+
return self.safe_currency_structure({
|
1304
1300
|
'id': code,
|
1305
1301
|
'code': code,
|
1306
1302
|
'info': currency,
|
@@ -1316,7 +1312,7 @@ class timex(Exchange, ImplicitAPI):
|
|
1316
1312
|
'amount': {'min': None, 'max': None},
|
1317
1313
|
},
|
1318
1314
|
'networks': {},
|
1319
|
-
}
|
1315
|
+
})
|
1320
1316
|
|
1321
1317
|
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
1322
1318
|
#
|
ccxt/base/exchange.py
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# -----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '4.4.
|
7
|
+
__version__ = '4.4.17'
|
8
8
|
|
9
9
|
# -----------------------------------------------------------------------------
|
10
10
|
|
@@ -2491,6 +2491,18 @@ class Exchange(object):
|
|
2491
2491
|
def fetch_trading_limits(self, symbols: Strings = None, params={}):
|
2492
2492
|
raise NotSupported(self.id + ' fetchTradingLimits() is not supported yet')
|
2493
2493
|
|
2494
|
+
def parse_currency(self, rawCurrency: dict):
|
2495
|
+
raise NotSupported(self.id + ' parseCurrency() is not supported yet')
|
2496
|
+
|
2497
|
+
def parse_currencies(self, rawCurrencies):
|
2498
|
+
result = {}
|
2499
|
+
arr = self.to_array(rawCurrencies)
|
2500
|
+
for i in range(0, len(arr)):
|
2501
|
+
parsed = self.parse_currency(arr[i])
|
2502
|
+
code = parsed['code']
|
2503
|
+
result[code] = parsed
|
2504
|
+
return result
|
2505
|
+
|
2494
2506
|
def parse_market(self, market: dict):
|
2495
2507
|
raise NotSupported(self.id + ' parseMarket() is not supported yet')
|
2496
2508
|
|
ccxt/binance.py
CHANGED
@@ -2662,11 +2662,16 @@ class binance(Exchange, ImplicitAPI):
|
|
2662
2662
|
apiBackup = self.safe_value(self.urls, 'apiBackup')
|
2663
2663
|
if apiBackup is not None:
|
2664
2664
|
return None
|
2665
|
-
promises = [self.sapiGetCapitalConfigGetall(params)
|
2665
|
+
promises = [self.sapiGetCapitalConfigGetall(params)]
|
2666
|
+
fetchMargins = self.safe_bool(self.options, 'fetchMargins', False)
|
2667
|
+
if fetchMargins:
|
2668
|
+
promises.append(self.sapiGetMarginAllPairs(params))
|
2666
2669
|
results = promises
|
2667
2670
|
responseCurrencies = results[0]
|
2668
|
-
|
2669
|
-
|
2671
|
+
marginablesById = None
|
2672
|
+
if fetchMargins:
|
2673
|
+
responseMarginables = results[1]
|
2674
|
+
marginablesById = self.index_by(responseMarginables, 'assetName')
|
2670
2675
|
result: dict = {}
|
2671
2676
|
for i in range(0, len(responseCurrencies)):
|
2672
2677
|
#
|
@@ -4114,7 +4119,7 @@ class binance(Exchange, ImplicitAPI):
|
|
4114
4119
|
fetches mark price for the market
|
4115
4120
|
:see: https://binance-docs.github.io/apidocs/futures/en/#mark-price
|
4116
4121
|
:see: https://binance-docs.github.io/apidocs/delivery/en/#index-price-and-mark-price
|
4117
|
-
:param str
|
4122
|
+
:param str symbol: unified symbol of the market to fetch the ticker for
|
4118
4123
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
4119
4124
|
:param str [params.subType]: "linear" or "inverse"
|
4120
4125
|
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
ccxt/bingx.py
CHANGED
@@ -81,6 +81,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
81
81
|
'fetchMarginMode': True,
|
82
82
|
'fetchMarkets': True,
|
83
83
|
'fetchMarkOHLCV': True,
|
84
|
+
'fetchMarkPrice': True,
|
84
85
|
'fetchMarkPrices': True,
|
85
86
|
'fetchMyLiquidations': True,
|
86
87
|
'fetchOHLCV': True,
|
@@ -1656,6 +1657,59 @@ class bingx(Exchange, ImplicitAPI):
|
|
1656
1657
|
tickers = self.safe_list(response, 'data')
|
1657
1658
|
return self.parse_tickers(tickers, symbols)
|
1658
1659
|
|
1660
|
+
def fetch_mark_price(self, symbol: str, params={}) -> Ticker:
|
1661
|
+
"""
|
1662
|
+
fetches mark prices for the market
|
1663
|
+
:see: https://bingx-api.github.io/docs/#/en-us/swapV2/market-api.html#Mark%20Price%20and%20Funding%20Rate
|
1664
|
+
:param str symbol: unified symbol of the market to fetch the ticker for
|
1665
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1666
|
+
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
1667
|
+
"""
|
1668
|
+
self.load_markets()
|
1669
|
+
market = self.market(symbol)
|
1670
|
+
subType = None
|
1671
|
+
subType, params = self.handle_sub_type_and_params('fetchMarkPrice', market, params, 'linear')
|
1672
|
+
request = {
|
1673
|
+
'symbol': market['id'],
|
1674
|
+
}
|
1675
|
+
response = None
|
1676
|
+
if subType == 'inverse':
|
1677
|
+
response = self.cswapV1PublicGetMarketPremiumIndex(self.extend(request, params))
|
1678
|
+
#
|
1679
|
+
# {
|
1680
|
+
# "code": 0,
|
1681
|
+
# "msg": "",
|
1682
|
+
# "timestamp": 1728577213289,
|
1683
|
+
# "data": [
|
1684
|
+
# {
|
1685
|
+
# "symbol": "ETH-USD",
|
1686
|
+
# "lastFundingRate": "0.0001",
|
1687
|
+
# "markPrice": "2402.68",
|
1688
|
+
# "indexPrice": "2404.92",
|
1689
|
+
# "nextFundingTime": 1728604800000
|
1690
|
+
# }
|
1691
|
+
# ]
|
1692
|
+
# }
|
1693
|
+
#
|
1694
|
+
else:
|
1695
|
+
response = self.swapV2PublicGetQuotePremiumIndex(self.extend(request, params))
|
1696
|
+
#
|
1697
|
+
# {
|
1698
|
+
# "code": 0,
|
1699
|
+
# "msg": "",
|
1700
|
+
# "data": {
|
1701
|
+
# "symbol": "ETH-USDT",
|
1702
|
+
# "markPrice": "2408.40",
|
1703
|
+
# "indexPrice": "2409.62",
|
1704
|
+
# "lastFundingRate": "0.00009900",
|
1705
|
+
# "nextFundingTime": 1728604800000
|
1706
|
+
# }
|
1707
|
+
# }
|
1708
|
+
#
|
1709
|
+
if isinstance(response['data'], list):
|
1710
|
+
return self.parse_ticker(self.safe_dict(response['data'], 0, {}), market)
|
1711
|
+
return self.parse_ticker(response['data'], market)
|
1712
|
+
|
1659
1713
|
def fetch_mark_prices(self, symbols: Strings = None, params={}) -> Tickers:
|
1660
1714
|
"""
|
1661
1715
|
fetches mark prices for multiple markets
|
ccxt/bitvavo.py
CHANGED
@@ -458,9 +458,9 @@ class bitvavo(Exchange, ImplicitAPI):
|
|
458
458
|
# },
|
459
459
|
# ]
|
460
460
|
#
|
461
|
-
return self.
|
461
|
+
return self.parse_currencies_custom(response)
|
462
462
|
|
463
|
-
def
|
463
|
+
def parse_currencies_custom(self, currencies):
|
464
464
|
#
|
465
465
|
# [
|
466
466
|
# {
|
ccxt/bybit.py
CHANGED
@@ -4538,7 +4538,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
4538
4538
|
length = len(result)
|
4539
4539
|
if length == 0:
|
4540
4540
|
isTrigger = self.safe_bool_n(params, ['trigger', 'stop'], False)
|
4541
|
-
extra = '' if isTrigger else 'If you are trying to fetch SL/TP conditional order, you might try setting params["trigger"] = True'
|
4541
|
+
extra = '' if isTrigger else ' If you are trying to fetch SL/TP conditional order, you might try setting params["trigger"] = True'
|
4542
4542
|
raise OrderNotFound('Order ' + str(id) + ' was not found.' + extra)
|
4543
4543
|
if length > 1:
|
4544
4544
|
raise InvalidOrder(self.id + ' returned more than one order')
|
@@ -4627,6 +4627,9 @@ class bybit(Exchange, ImplicitAPI):
|
|
4627
4627
|
#
|
4628
4628
|
result = self.safe_dict(response, 'result', {})
|
4629
4629
|
innerList = self.safe_list(result, 'list', [])
|
4630
|
+
if len(innerList) == 0:
|
4631
|
+
extra = '' if isTrigger else ' If you are trying to fetch SL/TP conditional order, you might try setting params["trigger"] = True'
|
4632
|
+
raise OrderNotFound('Order ' + str(id) + ' was not found.' + extra)
|
4630
4633
|
order = self.safe_dict(innerList, 0, {})
|
4631
4634
|
return self.parse_order(order, market)
|
4632
4635
|
|
@@ -4777,7 +4780,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
4777
4780
|
length = len(result)
|
4778
4781
|
if length == 0:
|
4779
4782
|
isTrigger = self.safe_bool_n(params, ['trigger', 'stop'], False)
|
4780
|
-
extra = '' if isTrigger else 'If you are trying to fetch SL/TP conditional order, you might try setting params["trigger"] = True'
|
4783
|
+
extra = '' if isTrigger else ' If you are trying to fetch SL/TP conditional order, you might try setting params["trigger"] = True'
|
4781
4784
|
raise OrderNotFound('Order ' + str(id) + ' was not found.' + extra)
|
4782
4785
|
if length > 1:
|
4783
4786
|
raise InvalidOrder(self.id + ' returned more than one order')
|
@@ -4806,7 +4809,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
4806
4809
|
length = len(result)
|
4807
4810
|
if length == 0:
|
4808
4811
|
isTrigger = self.safe_bool_n(params, ['trigger', 'stop'], False)
|
4809
|
-
extra = '' if isTrigger else 'If you are trying to fetch SL/TP conditional order, you might try setting params["trigger"] = True'
|
4812
|
+
extra = '' if isTrigger else ' If you are trying to fetch SL/TP conditional order, you might try setting params["trigger"] = True'
|
4810
4813
|
raise OrderNotFound('Order ' + str(id) + ' was not found.' + extra)
|
4811
4814
|
if length > 1:
|
4812
4815
|
raise InvalidOrder(self.id + ' returned more than one order')
|
ccxt/coinbaseinternational.py
CHANGED
@@ -1315,13 +1315,9 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1315
1315
|
# ...
|
1316
1316
|
# ]
|
1317
1317
|
#
|
1318
|
-
|
1319
|
-
for i in range(0, len(currencies)):
|
1320
|
-
currency = self.parse_currency(currencies[i])
|
1321
|
-
result[currency['code']] = currency
|
1322
|
-
return result
|
1318
|
+
return self.parse_currencies(currencies)
|
1323
1319
|
|
1324
|
-
def parse_currency(self, currency: dict):
|
1320
|
+
def parse_currency(self, currency: dict) -> Currency:
|
1325
1321
|
#
|
1326
1322
|
# {
|
1327
1323
|
# "asset_id":"1",
|
@@ -1335,7 +1331,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1335
1331
|
id = self.safe_string(currency, 'asset_name')
|
1336
1332
|
code = self.safe_currency_code(id)
|
1337
1333
|
statusId = self.safe_string(currency, 'status')
|
1338
|
-
return {
|
1334
|
+
return self.safe_currency_structure({
|
1339
1335
|
'id': id,
|
1340
1336
|
'name': code,
|
1341
1337
|
'code': code,
|
@@ -1348,7 +1344,7 @@ class coinbaseinternational(Exchange, ImplicitAPI):
|
|
1348
1344
|
'fee': None,
|
1349
1345
|
'fees': None,
|
1350
1346
|
'limits': self.limits,
|
1351
|
-
}
|
1347
|
+
})
|
1352
1348
|
|
1353
1349
|
def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
|
1354
1350
|
"""
|
ccxt/kuna.py
CHANGED
@@ -462,15 +462,7 @@ class kuna(Exchange, ImplicitAPI):
|
|
462
462
|
data = self.safe_value(response, 'data', [])
|
463
463
|
return self.parse_currencies(data)
|
464
464
|
|
465
|
-
def
|
466
|
-
currencies = self.to_array(currencies)
|
467
|
-
result: dict = {}
|
468
|
-
for i in range(0, len(currencies)):
|
469
|
-
currency = self.parse_currency(currencies[i])
|
470
|
-
result[currency['code']] = currency
|
471
|
-
return result
|
472
|
-
|
473
|
-
def parse_currency(self, currency: dict):
|
465
|
+
def parse_currency(self, currency: dict) -> Currency:
|
474
466
|
#
|
475
467
|
# {
|
476
468
|
# "code": "BTC",
|
@@ -494,7 +486,7 @@ class kuna(Exchange, ImplicitAPI):
|
|
494
486
|
currencyId = self.safe_string(currency, 'code')
|
495
487
|
precision = self.safe_string(currency, 'precision')
|
496
488
|
tradePrecision = self.safe_string(currency, 'tradePrecision')
|
497
|
-
return {
|
489
|
+
return self.safe_currency_structure({
|
498
490
|
'info': currency,
|
499
491
|
'id': currencyId,
|
500
492
|
'code': self.safe_currency_code(currencyId),
|
@@ -505,7 +497,7 @@ class kuna(Exchange, ImplicitAPI):
|
|
505
497
|
'deposit': None,
|
506
498
|
'withdraw': None,
|
507
499
|
'fee': None,
|
508
|
-
'precision': Precise.string_min(precision, tradePrecision),
|
500
|
+
'precision': self.parse_number(Precise.string_min(precision, tradePrecision)),
|
509
501
|
'limits': {
|
510
502
|
'amount': {
|
511
503
|
'min': None,
|
@@ -517,7 +509,7 @@ class kuna(Exchange, ImplicitAPI):
|
|
517
509
|
},
|
518
510
|
},
|
519
511
|
'networks': {},
|
520
|
-
}
|
512
|
+
})
|
521
513
|
|
522
514
|
def fetch_markets(self, params={}) -> List[Market]:
|
523
515
|
"""
|
ccxt/mexc.py
CHANGED
ccxt/okx.py
CHANGED
@@ -122,6 +122,7 @@ class okx(Exchange, ImplicitAPI):
|
|
122
122
|
'fetchMarketLeverageTiers': True,
|
123
123
|
'fetchMarkets': True,
|
124
124
|
'fetchMarkOHLCV': True,
|
125
|
+
'fetchMarkPrice': True,
|
125
126
|
'fetchMarkPrices': True,
|
126
127
|
'fetchMySettlementHistory': False,
|
127
128
|
'fetchMyTrades': True,
|
@@ -1957,6 +1958,37 @@ class okx(Exchange, ImplicitAPI):
|
|
1957
1958
|
tickers = self.safe_list(response, 'data', [])
|
1958
1959
|
return self.parse_tickers(tickers, symbols)
|
1959
1960
|
|
1961
|
+
def fetch_mark_price(self, symbol: str, params={}) -> Ticker:
|
1962
|
+
"""
|
1963
|
+
fetches mark price for the market
|
1964
|
+
:see: https://www.okx.com/docs-v5/en/#public-data-rest-api-get-mark-price
|
1965
|
+
:param str symbol: unified symbol of the market to fetch the ticker for
|
1966
|
+
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1967
|
+
:returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
|
1968
|
+
"""
|
1969
|
+
self.load_markets()
|
1970
|
+
market = self.market(symbol)
|
1971
|
+
request: dict = {
|
1972
|
+
'instId': market['id'],
|
1973
|
+
}
|
1974
|
+
response = self.publicGetPublicMarkPrice(self.extend(request, params))
|
1975
|
+
#
|
1976
|
+
# {
|
1977
|
+
# "code": "0",
|
1978
|
+
# "data": [
|
1979
|
+
# {
|
1980
|
+
# "instId": "ETH-USDT",
|
1981
|
+
# "instType": "MARGIN",
|
1982
|
+
# "markPx": "2403.98",
|
1983
|
+
# "ts": "1728578500703"
|
1984
|
+
# }
|
1985
|
+
# ],
|
1986
|
+
# "msg": ""
|
1987
|
+
# }
|
1988
|
+
#
|
1989
|
+
data = self.safe_list(response, 'data')
|
1990
|
+
return self.parse_ticker(self.safe_dict(data, 0), market)
|
1991
|
+
|
1960
1992
|
def fetch_mark_prices(self, symbols: Strings = None, params={}) -> Tickers:
|
1961
1993
|
"""
|
1962
1994
|
fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
|
@@ -1977,7 +2009,7 @@ class okx(Exchange, ImplicitAPI):
|
|
1977
2009
|
defaultUnderlying = self.safe_string(self.options, 'defaultUnderlying', 'BTC-USD')
|
1978
2010
|
currencyId = self.safe_string_2(params, 'uly', 'marketId', defaultUnderlying)
|
1979
2011
|
if currencyId is None:
|
1980
|
-
raise ArgumentsRequired(self.id + '
|
2012
|
+
raise ArgumentsRequired(self.id + ' fetchMarkPrices() requires an underlying uly or marketId parameter for options markets')
|
1981
2013
|
else:
|
1982
2014
|
request['uly'] = currencyId
|
1983
2015
|
response = self.publicGetPublicMarkPrice(self.extend(request, params))
|
ccxt/pro/__init__.py
CHANGED
ccxt/pro/bitvavo.py
CHANGED
@@ -978,7 +978,7 @@ class bitvavo(ccxt.async_support.bitvavo):
|
|
978
978
|
action = self.safe_string(message, 'action')
|
979
979
|
messageHash = self.build_message_hash(action, message)
|
980
980
|
response = self.safe_value(message, 'response')
|
981
|
-
currencies = self.
|
981
|
+
currencies = self.parse_currencies(response)
|
982
982
|
client.resolve(currencies, messageHash)
|
983
983
|
|
984
984
|
def handle_trading_fees(self, client, message):
|
ccxt/timex.py
CHANGED
@@ -359,11 +359,7 @@ class timex(Exchange, ImplicitAPI):
|
|
359
359
|
# },
|
360
360
|
# ]
|
361
361
|
#
|
362
|
-
|
363
|
-
for i in range(0, len(response)):
|
364
|
-
currency = response[i]
|
365
|
-
result.append(self.parse_currency(currency))
|
366
|
-
return self.index_by(result, 'code')
|
362
|
+
return self.parse_currencies(response)
|
367
363
|
|
368
364
|
def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
|
369
365
|
"""
|
@@ -1239,7 +1235,7 @@ class timex(Exchange, ImplicitAPI):
|
|
1239
1235
|
'info': market,
|
1240
1236
|
}
|
1241
1237
|
|
1242
|
-
def parse_currency(self, currency: dict):
|
1238
|
+
def parse_currency(self, currency: dict) -> Currency:
|
1243
1239
|
#
|
1244
1240
|
# {
|
1245
1241
|
# "symbol": "BTC",
|
@@ -1300,7 +1296,7 @@ class timex(Exchange, ImplicitAPI):
|
|
1300
1296
|
for i in range(0, -dotIndex):
|
1301
1297
|
fraction += '0'
|
1302
1298
|
fee = self.parse_number(fraction + feeString)
|
1303
|
-
return {
|
1299
|
+
return self.safe_currency_structure({
|
1304
1300
|
'id': code,
|
1305
1301
|
'code': code,
|
1306
1302
|
'info': currency,
|
@@ -1316,7 +1312,7 @@ class timex(Exchange, ImplicitAPI):
|
|
1316
1312
|
'amount': {'min': None, 'max': None},
|
1317
1313
|
},
|
1318
1314
|
'networks': {},
|
1319
|
-
}
|
1315
|
+
})
|
1320
1316
|
|
1321
1317
|
def parse_ticker(self, ticker: dict, market: Market = None) -> Ticker:
|
1322
1318
|
#
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.4.
|
3
|
+
Version: 4.4.17
|
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.17/dist/ccxt.browser.min.js
|
275
|
+
* unpkg: https://unpkg.com/ccxt@4.4.17/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.17/dist/ccxt.browser.min.js"></script>
|
281
281
|
```
|
282
282
|
|
283
283
|
Creates a global `ccxt` object:
|
@@ -1,14 +1,14 @@
|
|
1
|
-
ccxt/__init__.py,sha256=
|
1
|
+
ccxt/__init__.py,sha256=uv3YWaDd5C_hXF-Z1wqTwS73WYWb29AhRtk79NqtjMs,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
|
5
5
|
ccxt/bequant.py,sha256=RBiAmaTbL35DgiV3Hl6uchLUd78V0z1T9riTlNsrpdc,1174
|
6
6
|
ccxt/bigone.py,sha256=mPYt5d9L4nCRnxwhVpwoBcpLLkt5E0ptOVzkveR_F28,91249
|
7
|
-
ccxt/binance.py,sha256=
|
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=BcBa8ifYpcvqQaibtPTQXwoWAtRxjxow1nRtuk4U2F0,251948
|
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
|
@@ -27,7 +27,7 @@ ccxt/bitrue.py,sha256=NQS636RfId1YBEEK2ZaI4rcdbB7L0vSU9AAoOinIJUA,136386
|
|
27
27
|
ccxt/bitso.py,sha256=oLutbN5CT6lV0HxJaF-ibItY-sE_-wIVIkkqrkZpmSA,71785
|
28
28
|
ccxt/bitstamp.py,sha256=W9stgPLf-N5utFoYWdaTzzqBPtzAZWN5u2nMwogzdRY,93437
|
29
29
|
ccxt/bitteam.py,sha256=S5gDVlmAqoK_bOuCUmfyStFAApq2kDxQaUHHDf4byQM,102264
|
30
|
-
ccxt/bitvavo.py,sha256=
|
30
|
+
ccxt/bitvavo.py,sha256=y7TzNtYqWl5Y-91Q_lazQiw4RoK5r9XbuHhF3RIh688,91855
|
31
31
|
ccxt/bl3p.py,sha256=9i67YpJBrD-6pocvqq9ZyKjYXoOIwlJKuNHIW_jgmmM,20648
|
32
32
|
ccxt/blockchaincom.py,sha256=IlqagAgla4SCYRU1ieYcU7Y138Bie5DF-udw2vctdVY,48948
|
33
33
|
ccxt/blofin.py,sha256=0xD7MDAQ_lOFGOD0EKSQ-2Yirzz3XQtS66qo1JXD-6c,102039
|
@@ -35,12 +35,12 @@ ccxt/btcalpha.py,sha256=plU5SSsJn0ZMLW7I8sXb_L0Woc3-kamGMSlqPGujUzE,36751
|
|
35
35
|
ccxt/btcbox.py,sha256=lvY7cgoe4tglaQiTJZ4vILmzvoEjAWxgswRuB2iYzmE,27780
|
36
36
|
ccxt/btcmarkets.py,sha256=WDDbtbUQ9I0odVZp8nJdIjc4-zv4li49EDSt8EqQbRU,52733
|
37
37
|
ccxt/btcturk.py,sha256=jSA4UnD1GiJu24gXNkfb94f-zXifP5By_Ptery_cMnY,37024
|
38
|
-
ccxt/bybit.py,sha256=
|
38
|
+
ccxt/bybit.py,sha256=XplwVNsQ_6pqa8uAYH2S_E-8LTULjyVCBwc9g6ZaGtA,441494
|
39
39
|
ccxt/cex.py,sha256=C1j8Vk2duXt4TuKINJ7VWivVY54sOIo-FzE6dn_laWU,70211
|
40
40
|
ccxt/coinbase.py,sha256=CNDpskULlvJ8PLjb0tXp_PifmYXYImX8ZjB4Kvx5NqY,218725
|
41
41
|
ccxt/coinbaseadvanced.py,sha256=d5g6nRx-NCcCwZDdtp8FsI2D-pRjSvnAP9ISSKY_nCQ,538
|
42
42
|
ccxt/coinbaseexchange.py,sha256=hSqkZw0y3EELtpsbJaMQXzc2nCbevVjHw6LDPcGH7_Y,79031
|
43
|
-
ccxt/coinbaseinternational.py,sha256
|
43
|
+
ccxt/coinbaseinternational.py,sha256=-hCiM3wE4_V0GHuNZimHx9SSV0ozBj4zkUZEAh0UxFg,97509
|
44
44
|
ccxt/coincheck.py,sha256=SeNvZm_3p01IsW8y6b3rw67qiMu29S59HHPG6Jma_T4,35942
|
45
45
|
ccxt/coinex.py,sha256=zb-hXwulprBR1q-ulztkFM1xurdXeEmbSMw-IGBm--g,258863
|
46
46
|
ccxt/coinlist.py,sha256=KI49yKisargPm5nApMMfWfFs3e0Uxbx9yMRibY9n7Tw,104273
|
@@ -74,18 +74,18 @@ ccxt/kraken.py,sha256=qOJz1jNl7wKqvonYdPCqWIbj7uKfsPY1qSVXllc5w6Y,135904
|
|
74
74
|
ccxt/krakenfutures.py,sha256=dbreVGrjMD7AY6xai0eazuvnUpTXTD7wLDVT9VDD5Qk,119839
|
75
75
|
ccxt/kucoin.py,sha256=tdNUENPhjXh6xJm5ybDQhQTrCC0x6WDzrcFeGZiQFYU,231781
|
76
76
|
ccxt/kucoinfutures.py,sha256=rpXIhIf1uAMKkyhY4_JzwQAv83n8EwTngY1LizWojaA,135136
|
77
|
-
ccxt/kuna.py,sha256=
|
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=Kxowi1HvM9HUyukCa3xto2HI9mwdpEP0r0JgGFce66U,252873
|
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=qKpTtxqGxVtIGkKHzjceu1FZRdPTP4VBiHJtyh5A6rM,384437
|
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
|
@@ -95,7 +95,7 @@ ccxt/phemex.py,sha256=SdCk0DW9WSxSzyffSgVNMepWlBheRzj0Av-uETMP5Gk,224005
|
|
95
95
|
ccxt/poloniex.py,sha256=-jsr_QurlQ-Zck6vUONWwBTHZe1g_CtSddxd3fDo4Kc,102504
|
96
96
|
ccxt/poloniexfutures.py,sha256=pPAI2e0rGI6D7ESB8zVEb0faswQI1PKSESXBqZwcADs,80045
|
97
97
|
ccxt/probit.py,sha256=NsGAJu5c3Ey7ebhEMkwGqVMgIDIAOTFL4cjQLJ1-kPs,76334
|
98
|
-
ccxt/timex.py,sha256=
|
98
|
+
ccxt/timex.py,sha256=UapOuKChUDl8rQuA2lteGvHzVGUI7_LSP8MCPyKdv0U,72010
|
99
99
|
ccxt/tokocrypto.py,sha256=Lrw_ZKl9S_XbwapC85rrruHXOvoxFq_-ZKbHEBaGMEo,123226
|
100
100
|
ccxt/tradeogre.py,sha256=YoSQQl4jHI2JJShR0k_liI0dCntDdnHDqZmc5a-y7-w,24168
|
101
101
|
ccxt/upbit.py,sha256=JXHH1lG8QCWr7C_E3SWaEaIrk_rpF6NwYDEjcYGHcKE,85546
|
@@ -189,7 +189,7 @@ ccxt/abstract/lbank.py,sha256=pdut_cIcwcUhN_ZCyWJxixBc4dgeQqvENYqFCrUYrvA,8675
|
|
189
189
|
ccxt/abstract/luno.py,sha256=QUsEL2MMhv6qF-4pW0o0xs9lI8HsZtlrAp3sBskq7i4,3619
|
190
190
|
ccxt/abstract/lykke.py,sha256=PyLaU4RVPYTkPYsGgL2e2c9mtnz0xiy-LMOBSA4w_1g,2960
|
191
191
|
ccxt/abstract/mercado.py,sha256=qs3Fr6C_K8M-YIsGx-W9iUiFXcgQ0SA8uADvhV8mDQM,2357
|
192
|
-
ccxt/abstract/mexc.py,sha256=
|
192
|
+
ccxt/abstract/mexc.py,sha256=bJpZsS8YZVU2g-39E6OV-BYahAx6HMB7k7NVJJOc530,26317
|
193
193
|
ccxt/abstract/ndax.py,sha256=M98Ys406KT6T19Y98dXriD6YjzfglHHbnfQw-PDYWtM,11878
|
194
194
|
ccxt/abstract/novadax.py,sha256=IvQFP_v2Q-Sx0tK2bXx4oY81rtNwC7gkc75p_E2jhKw,3093
|
195
195
|
ccxt/abstract/oceanex.py,sha256=JoK404UCkmMG2VqMaGit6PtonyXtCixYx539SoYtYug,2307
|
@@ -218,17 +218,17 @@ 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=CVF8rT4aKLXfiJUecRf1V28xpxzZQIq2k3aQ5uIsipM,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
|
225
225
|
ccxt/async_support/bequant.py,sha256=1hTwHovo1bW1XTIc8ZKjvJ-Xg6LfmpGdzT7TepykaVM,1188
|
226
226
|
ccxt/async_support/bigone.py,sha256=EQohpAnGnA1z4K6-6An--5WxdW6raQPrZCH2s_-WGmg,91703
|
227
|
-
ccxt/async_support/binance.py,sha256=
|
227
|
+
ccxt/async_support/binance.py,sha256=tBCGXhs4h9fLdHD1lUZJrsOCDxmI0gAe89eoLrf_MbA,659054
|
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=8E-o-A9dPYiPNi0gSNlp5YLcDSgLS6JfdOrTFGDXX5U,253266
|
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
|
@@ -247,7 +247,7 @@ ccxt/async_support/bitrue.py,sha256=owSEnJYp47wZRP8dj_lpR-r7aqyhy0nnNI9vzd79P64,
|
|
247
247
|
ccxt/async_support/bitso.py,sha256=XSMfOYCTmjHT1WkocYQsfj2lHOix5D4jEJVB3ZBIFzM,72171
|
248
248
|
ccxt/async_support/bitstamp.py,sha256=zDgKXyHsLLPYg7SlKrpxs6BNjPgM5QtUo38Yuyp1txQ,93937
|
249
249
|
ccxt/async_support/bitteam.py,sha256=vPMTVr0bDCd5okV_tFA9gVVW4a5NmsabvEplOm2-uOo,102596
|
250
|
-
ccxt/async_support/bitvavo.py,sha256=
|
250
|
+
ccxt/async_support/bitvavo.py,sha256=lLv-0-cCdr-XfdDRHYIVzppUUeGEJMq0Q-Jz91NrvGQ,92289
|
251
251
|
ccxt/async_support/bl3p.py,sha256=6K1wuBI0uFjoN0N7V6Bps_jKeNCJUQrsXO9tubuZlyU,20776
|
252
252
|
ccxt/async_support/blockchaincom.py,sha256=cU1SliV4XO4OFYR_TbAFFiUMFajvBZPzKkG5LHEtZow,49340
|
253
253
|
ccxt/async_support/blofin.py,sha256=h6RgUaaYFV7PUOR_KgGjBANEYb33-jLO5YTfWjIDHlQ,102641
|
@@ -255,12 +255,12 @@ ccxt/async_support/btcalpha.py,sha256=8OefA3GsJ27eAL44yQQcRNOruHXAwTemjTPkpLKwjE
|
|
255
255
|
ccxt/async_support/btcbox.py,sha256=rBXxuvdQaku5QYseQ4XSvMrCkohDefYmf-rGeS9W0IU,28004
|
256
256
|
ccxt/async_support/btcmarkets.py,sha256=fTf_MDIM7NMwpbv6X5lYPLNg8tFKcviNiUB7N3yO6FI,53083
|
257
257
|
ccxt/async_support/btcturk.py,sha256=Uq9rXMoDkXIy0nw1rzmw2e8eeRepcNtXKNYuw-02tkM,37242
|
258
|
-
ccxt/async_support/bybit.py,sha256=
|
258
|
+
ccxt/async_support/bybit.py,sha256=7ckgkQtELiauRcvWZIdQcRywGWkmlGlYD_9DeyFxzOs,443513
|
259
259
|
ccxt/async_support/cex.py,sha256=HzFy4eP5qVwbXzq96VyjgJmXxK3DWUxHqJ1nHuV28cQ,70561
|
260
260
|
ccxt/async_support/coinbase.py,sha256=XsAHx1vPMpsWcCbz6WYlY6J68luojlE3Xw5wzsaiE7U,219879
|
261
261
|
ccxt/async_support/coinbaseadvanced.py,sha256=Kupwnuxiu_qTjwCNV2asacoDUNFQvcaHNAznUJPhdQs,552
|
262
262
|
ccxt/async_support/coinbaseexchange.py,sha256=u4s7rt6wavGgwzvfGtKkVeiBphq0hCG8VODQCb9Phi0,79537
|
263
|
-
ccxt/async_support/coinbaseinternational.py,sha256=
|
263
|
+
ccxt/async_support/coinbaseinternational.py,sha256=lkBNMcyDi6V_ilZ3co-33wTHVsyn87XDdXiW8ItUKZw,98123
|
264
264
|
ccxt/async_support/coincheck.py,sha256=N_0cDMAiFRC4G--QgOmSH8esKDr_lEVZUpukc4QoHk8,36148
|
265
265
|
ccxt/async_support/coinex.py,sha256=XJx0zvBPCJnirLLFhHKVDeC0nGHNWIIfUAmqG9EJ994,260133
|
266
266
|
ccxt/async_support/coinlist.py,sha256=VOqcXFP1fpK5vXKALS8GcioZhb1o-VvhpOUym594xl8,104761
|
@@ -294,18 +294,18 @@ ccxt/async_support/kraken.py,sha256=F1NRf8PFqrzM-XQzf81sjpAER8mz1aYIgP4M5kO_DfQ,
|
|
294
294
|
ccxt/async_support/krakenfutures.py,sha256=Wcry7ar4Esbi_3Urp8LcnzPMsThN6KcdU6QN5YMxDCk,120327
|
295
295
|
ccxt/async_support/kucoin.py,sha256=cE0IuoIdGeYcGBr19iRPHPy8dYJnJS-5cPvAENhBKX8,232960
|
296
296
|
ccxt/async_support/kucoinfutures.py,sha256=pRdx9vnlvXH19SqYNpfQcUtZltduZEKNQxaSnY5054k,135894
|
297
|
-
ccxt/async_support/kuna.py,sha256=
|
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=FcPqE7YNeZ9cIwZmsLuttwwnaCVVTbFbr19EEVEMAUg,254137
|
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=qhvWDOm1vb6m8yscwAhqvDN8LJ4j4-wgasQK0lKovHE,386078
|
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
|
@@ -315,7 +315,7 @@ ccxt/async_support/phemex.py,sha256=FKEOWbE6jetr-X9ntrGMLw6dwGspKBj1XNtL4P5gqX4,
|
|
315
315
|
ccxt/async_support/poloniex.py,sha256=dTLebALH02oksjxkRzd9iw8L_f6LE-R7ye5syj6o4b4,103052
|
316
316
|
ccxt/async_support/poloniexfutures.py,sha256=g3UO7uueR0KtJbkG3O88UsSTsU2IqwTqlIdzo9wY6mM,80443
|
317
317
|
ccxt/async_support/probit.py,sha256=UruCE3NPDPXM2VoWa8Rk6vy5wEPM9wauOLd3RvGGmk8,76726
|
318
|
-
ccxt/async_support/timex.py,sha256=
|
318
|
+
ccxt/async_support/timex.py,sha256=qDoEICGWZ7sGFtjXBEJnTDUuEMdZz7seUkQ9_tsyr90,72372
|
319
319
|
ccxt/async_support/tokocrypto.py,sha256=wHqN41XmrFlmy1CpNvb0yZnZvF8WQAZQ98wtwMHaa5g,123588
|
320
320
|
ccxt/async_support/tradeogre.py,sha256=2WdZ9y6osj4usU2aF0Go7LzHyVb6MPRMk6p9uJoyjE0,24362
|
321
321
|
ccxt/async_support/upbit.py,sha256=T1UUNP7VyzOZPheoxOnC5f6U_stotJAU_xQczyNrW6c,86028
|
@@ -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=jKS-8YGNqKzbRDuD5wo8464UXLTUhPeTXUiaiI1_SIU,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=nnsBDSDEeOQZhpjtJogbkCWStKk57GDDatgIKe1BSm0,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=y4HCofxJOMHyqIa39MKeGJ9GsyewWQXk1372pJk5yDo,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
|
@@ -367,7 +367,7 @@ ccxt/pro/bitopro.py,sha256=eGge1vzVXPx1FGZc1cm5i_MzBKlRkWH2ZKuIzrR3G2Q,18798
|
|
367
367
|
ccxt/pro/bitpanda.py,sha256=ELrhfFKN9YJJdmm9wBf-vpk6WsXGWGf-SyJdqm-E_Lg,415
|
368
368
|
ccxt/pro/bitrue.py,sha256=0-aa3Q8oGLnq71fJQYLyy0jI3NHHTFJuMQAyM0XRLFY,16246
|
369
369
|
ccxt/pro/bitstamp.py,sha256=tysJpRxfVnZKp-_xgfIhsOVh3ilnQQhXjV-grzqz3QM,20964
|
370
|
-
ccxt/pro/bitvavo.py,sha256=
|
370
|
+
ccxt/pro/bitvavo.py,sha256=pTFgoLsWL9xX6Zc0bOZrFUlDTz8P4bmVR5fyNIGHXTg,60246
|
371
371
|
ccxt/pro/blockchaincom.py,sha256=yRJ4m0mTG5FSbkdH4QvuXNnBvLv9kDMGbAMwpcJnyDI,29648
|
372
372
|
ccxt/pro/blofin.py,sha256=pALlkuzdFZuxCaSxYfqog98x7BM8G0nqUTCke4WfUt0,31345
|
373
373
|
ccxt/pro/bybit.py,sha256=PjSEQaOmO7BZNh5Df3USmVmhI1X6qVw0hXN8qfvcp9s,108243
|
@@ -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.17.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
|
654
|
+
ccxt-4.4.17.dist-info/METADATA,sha256=Tkq8FceEGI26fo00lFCMOOCZ5z4wxFZpDTz1ZQXpTkw,114487
|
655
|
+
ccxt-4.4.17.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
|
656
|
+
ccxt-4.4.17.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
657
|
+
ccxt-4.4.17.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|