ccxt 4.3.81__py2.py3-none-any.whl → 4.3.83__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/binance.py +20 -4
- ccxt/async_support/bybit.py +3 -0
- ccxt/async_support/gate.py +2 -2
- ccxt/async_support/phemex.py +6 -3
- ccxt/async_support/wavesexchange.py +4 -3
- ccxt/base/exchange.py +1 -1
- ccxt/binance.py +20 -4
- ccxt/bybit.py +3 -0
- ccxt/gate.py +2 -2
- ccxt/phemex.py +6 -3
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/okx.py +2 -0
- ccxt/pro/phemex.py +1 -0
- ccxt/wavesexchange.py +4 -3
- {ccxt-4.3.81.dist-info → ccxt-4.3.83.dist-info}/METADATA +4 -5
- {ccxt-4.3.81.dist-info → ccxt-4.3.83.dist-info}/RECORD +22 -22
- {ccxt-4.3.81.dist-info → ccxt-4.3.83.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.3.81.dist-info → ccxt-4.3.83.dist-info}/WHEEL +0 -0
- {ccxt-4.3.81.dist-info → ccxt-4.3.83.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
ccxt/async_support/__init__.py
CHANGED
ccxt/async_support/binance.py
CHANGED
@@ -3364,7 +3364,13 @@ class binance(Exchange, ImplicitAPI):
|
|
3364
3364
|
response = await self.papiGetBalance(self.extend(request, query))
|
3365
3365
|
elif self.is_linear(type, subType):
|
3366
3366
|
type = 'linear'
|
3367
|
-
|
3367
|
+
useV2 = None
|
3368
|
+
useV2, params = self.handle_option_and_params(params, 'fetchBalance', 'useV2', False)
|
3369
|
+
params = self.extend(request, query)
|
3370
|
+
if not useV2:
|
3371
|
+
response = await self.fapiPrivateV3GetAccount(params)
|
3372
|
+
else:
|
3373
|
+
response = await self.fapiPrivateV2GetAccount(params)
|
3368
3374
|
elif self.is_inverse(type, subType):
|
3369
3375
|
type = 'inverse'
|
3370
3376
|
response = await self.dapiPrivateGetAccount(self.extend(request, query))
|
@@ -9550,6 +9556,7 @@ class binance(Exchange, ImplicitAPI):
|
|
9550
9556
|
:param str[] [symbols]: list of unified market symbols
|
9551
9557
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
9552
9558
|
:param str [method]: method name to call, "positionRisk", "account" or "option", default is "positionRisk"
|
9559
|
+
:param bool [params.useV2]: set to True if you want to use the obsolete endpoint, where some more additional fields were provided
|
9553
9560
|
:returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
|
9554
9561
|
"""
|
9555
9562
|
defaultMethod = None
|
@@ -9701,6 +9708,7 @@ class binance(Exchange, ImplicitAPI):
|
|
9701
9708
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
9702
9709
|
:param boolean [params.portfolioMargin]: set to True if you would like to fetch positions for a portfolio margin account
|
9703
9710
|
:param str [params.subType]: "linear" or "inverse"
|
9711
|
+
:param bool [params.useV2]: set to True if you want to use the obsolete endpoint, where some more additional fields were provided
|
9704
9712
|
:returns dict: data on the positions risk
|
9705
9713
|
"""
|
9706
9714
|
if symbols is not None:
|
@@ -9722,7 +9730,13 @@ class binance(Exchange, ImplicitAPI):
|
|
9722
9730
|
if isPortfolioMargin:
|
9723
9731
|
response = await self.papiGetUmPositionRisk(self.extend(request, params))
|
9724
9732
|
else:
|
9725
|
-
|
9733
|
+
useV2 = None
|
9734
|
+
useV2, params = self.handle_option_and_params(params, 'fetchPositionsRisk', 'useV2', False)
|
9735
|
+
params = self.extend(request, params)
|
9736
|
+
if not useV2:
|
9737
|
+
response = await self.fapiPrivateV3GetPositionRisk(params)
|
9738
|
+
else:
|
9739
|
+
response = await self.fapiPrivateV2GetPositionRisk(params)
|
9726
9740
|
#
|
9727
9741
|
# [
|
9728
9742
|
# {
|
@@ -10097,7 +10111,7 @@ class binance(Exchange, ImplicitAPI):
|
|
10097
10111
|
longLeverage = None
|
10098
10112
|
shortLeverage = None
|
10099
10113
|
leverageValue = self.safe_integer(leverage, 'leverage')
|
10100
|
-
if side == 'both':
|
10114
|
+
if (side is None) or (side == 'both'):
|
10101
10115
|
longLeverage = leverageValue
|
10102
10116
|
shortLeverage = leverageValue
|
10103
10117
|
elif side == 'long':
|
@@ -12230,7 +12244,7 @@ class binance(Exchange, ImplicitAPI):
|
|
12230
12244
|
request['startTime'] = since
|
12231
12245
|
else:
|
12232
12246
|
request['startTime'] = now - msInThirtyDays
|
12233
|
-
endTime = self.
|
12247
|
+
endTime = self.safe_integer_2(params, 'endTime', 'until')
|
12234
12248
|
if endTime is not None:
|
12235
12249
|
request['endTime'] = endTime
|
12236
12250
|
else:
|
@@ -12268,6 +12282,8 @@ class binance(Exchange, ImplicitAPI):
|
|
12268
12282
|
# }
|
12269
12283
|
#
|
12270
12284
|
else:
|
12285
|
+
if (request['endTime'] - request['startTime']) > msInThirtyDays:
|
12286
|
+
raise BadRequest(self.id + ' fetchConvertTradeHistory() the max interval between startTime and endTime is 30 days.')
|
12271
12287
|
if limit is not None:
|
12272
12288
|
request['limit'] = limit
|
12273
12289
|
fromCurrencyKey = 'fromAsset'
|
ccxt/async_support/bybit.py
CHANGED
@@ -5761,6 +5761,8 @@ class bybit(Exchange, ImplicitAPI):
|
|
5761
5761
|
:returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
|
5762
5762
|
"""
|
5763
5763
|
tag, params = self.handle_withdraw_tag_and_params(tag, params)
|
5764
|
+
accountType = None
|
5765
|
+
accountType, params = self.handle_option_and_params(params, 'withdraw', 'accountType', 'SPOT')
|
5764
5766
|
await self.load_markets()
|
5765
5767
|
self.check_address(address)
|
5766
5768
|
currency = self.currency(code)
|
@@ -5769,6 +5771,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
5769
5771
|
'amount': self.number_to_string(amount),
|
5770
5772
|
'address': address,
|
5771
5773
|
'timestamp': self.milliseconds(),
|
5774
|
+
'accountType': accountType,
|
5772
5775
|
}
|
5773
5776
|
if tag is not None:
|
5774
5777
|
request['tag'] = tag
|
ccxt/async_support/gate.py
CHANGED
@@ -3969,9 +3969,9 @@ class gate(Exchange, ImplicitAPI):
|
|
3969
3969
|
request['amount'] = self.amount_to_precision(symbol, amount)
|
3970
3970
|
else:
|
3971
3971
|
if side == 'sell':
|
3972
|
-
request['size'] = Precise.string_neg(self.amount_to_precision(symbol, amount))
|
3972
|
+
request['size'] = self.parse_to_numeric(Precise.string_neg(self.amount_to_precision(symbol, amount)))
|
3973
3973
|
else:
|
3974
|
-
request['size'] = self.amount_to_precision(symbol, amount)
|
3974
|
+
request['size'] = self.parse_to_numeric(self.amount_to_precision(symbol, amount))
|
3975
3975
|
if price is not None:
|
3976
3976
|
request['price'] = self.price_to_precision(symbol, price)
|
3977
3977
|
if not market['spot']:
|
ccxt/async_support/phemex.py
CHANGED
@@ -2821,7 +2821,7 @@ class phemex(Exchange, ImplicitAPI):
|
|
2821
2821
|
if market['settle'] == 'USDT':
|
2822
2822
|
response = await self.privateGetApiDataGFuturesOrdersByOrderId(self.extend(request, params))
|
2823
2823
|
elif market['spot']:
|
2824
|
-
response = await self.
|
2824
|
+
response = await self.privateGetApiDataSpotsOrdersByOrderId(self.extend(request, params))
|
2825
2825
|
else:
|
2826
2826
|
response = await self.privateGetExchangeOrder(self.extend(request, params))
|
2827
2827
|
data = self.safe_value(response, 'data', {})
|
@@ -2833,7 +2833,10 @@ class phemex(Exchange, ImplicitAPI):
|
|
2833
2833
|
raise OrderNotFound(self.id + ' fetchOrder() ' + symbol + ' order with clientOrderId ' + clientOrderId + ' not found')
|
2834
2834
|
else:
|
2835
2835
|
raise OrderNotFound(self.id + ' fetchOrder() ' + symbol + ' order with id ' + id + ' not found')
|
2836
|
-
order = self.
|
2836
|
+
order = self.safe_dict(data, 0, {})
|
2837
|
+
elif market['spot']:
|
2838
|
+
rows = self.safe_list(data, 'rows', [])
|
2839
|
+
order = self.safe_dict(rows, 0, {})
|
2837
2840
|
return self.parse_order(order, market)
|
2838
2841
|
|
2839
2842
|
async def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
@@ -2864,7 +2867,7 @@ class phemex(Exchange, ImplicitAPI):
|
|
2864
2867
|
elif market['swap']:
|
2865
2868
|
response = await self.privateGetExchangeOrderList(self.extend(request, params))
|
2866
2869
|
else:
|
2867
|
-
response = await self.
|
2870
|
+
response = await self.privateGetApiDataSpotsOrders(self.extend(request, params))
|
2868
2871
|
data = self.safe_value(response, 'data', {})
|
2869
2872
|
rows = self.safe_list(data, 'rows', data)
|
2870
2873
|
return self.parse_orders(rows, market, since, limit)
|
@@ -1239,7 +1239,8 @@ class wavesexchange(Exchange, ImplicitAPI):
|
|
1239
1239
|
if (isMarketOrder) and (price is None):
|
1240
1240
|
raise InvalidOrder(self.id + ' createOrder() requires a price argument for ' + type + ' orders to determine the max price for buy and the min price for sell')
|
1241
1241
|
timestamp = self.milliseconds()
|
1242
|
-
defaultExpiryDelta =
|
1242
|
+
defaultExpiryDelta = None
|
1243
|
+
defaultExpiryDelta, params = self.handle_option_and_params(params, 'createOrder', 'defaultExpiry', self.safe_integer(self.options, 'createOrderDefaultExpiry', 2419200000))
|
1243
1244
|
expiration = self.sum(timestamp, defaultExpiryDelta)
|
1244
1245
|
matcherFees = await self.get_fees_for_asset(symbol, side, amount, price)
|
1245
1246
|
# {
|
@@ -1374,11 +1375,11 @@ class wavesexchange(Exchange, ImplicitAPI):
|
|
1374
1375
|
# }
|
1375
1376
|
#
|
1376
1377
|
if isMarketOrder:
|
1377
|
-
response = await self.matcherPostMatcherOrderbookMarket(body)
|
1378
|
+
response = await self.matcherPostMatcherOrderbookMarket(self.extend(body, params))
|
1378
1379
|
value = self.safe_dict(response, 'message')
|
1379
1380
|
return self.parse_order(value, market)
|
1380
1381
|
else:
|
1381
|
-
response = await self.matcherPostMatcherOrderbook(body)
|
1382
|
+
response = await self.matcherPostMatcherOrderbook(self.extend(body, params))
|
1382
1383
|
value = self.safe_dict(response, 'message')
|
1383
1384
|
return self.parse_order(value, market)
|
1384
1385
|
|
ccxt/base/exchange.py
CHANGED
ccxt/binance.py
CHANGED
@@ -3363,7 +3363,13 @@ class binance(Exchange, ImplicitAPI):
|
|
3363
3363
|
response = self.papiGetBalance(self.extend(request, query))
|
3364
3364
|
elif self.is_linear(type, subType):
|
3365
3365
|
type = 'linear'
|
3366
|
-
|
3366
|
+
useV2 = None
|
3367
|
+
useV2, params = self.handle_option_and_params(params, 'fetchBalance', 'useV2', False)
|
3368
|
+
params = self.extend(request, query)
|
3369
|
+
if not useV2:
|
3370
|
+
response = self.fapiPrivateV3GetAccount(params)
|
3371
|
+
else:
|
3372
|
+
response = self.fapiPrivateV2GetAccount(params)
|
3367
3373
|
elif self.is_inverse(type, subType):
|
3368
3374
|
type = 'inverse'
|
3369
3375
|
response = self.dapiPrivateGetAccount(self.extend(request, query))
|
@@ -9549,6 +9555,7 @@ class binance(Exchange, ImplicitAPI):
|
|
9549
9555
|
:param str[] [symbols]: list of unified market symbols
|
9550
9556
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
9551
9557
|
:param str [method]: method name to call, "positionRisk", "account" or "option", default is "positionRisk"
|
9558
|
+
:param bool [params.useV2]: set to True if you want to use the obsolete endpoint, where some more additional fields were provided
|
9552
9559
|
:returns dict[]: a list of `position structure <https://docs.ccxt.com/#/?id=position-structure>`
|
9553
9560
|
"""
|
9554
9561
|
defaultMethod = None
|
@@ -9700,6 +9707,7 @@ class binance(Exchange, ImplicitAPI):
|
|
9700
9707
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
9701
9708
|
:param boolean [params.portfolioMargin]: set to True if you would like to fetch positions for a portfolio margin account
|
9702
9709
|
:param str [params.subType]: "linear" or "inverse"
|
9710
|
+
:param bool [params.useV2]: set to True if you want to use the obsolete endpoint, where some more additional fields were provided
|
9703
9711
|
:returns dict: data on the positions risk
|
9704
9712
|
"""
|
9705
9713
|
if symbols is not None:
|
@@ -9721,7 +9729,13 @@ class binance(Exchange, ImplicitAPI):
|
|
9721
9729
|
if isPortfolioMargin:
|
9722
9730
|
response = self.papiGetUmPositionRisk(self.extend(request, params))
|
9723
9731
|
else:
|
9724
|
-
|
9732
|
+
useV2 = None
|
9733
|
+
useV2, params = self.handle_option_and_params(params, 'fetchPositionsRisk', 'useV2', False)
|
9734
|
+
params = self.extend(request, params)
|
9735
|
+
if not useV2:
|
9736
|
+
response = self.fapiPrivateV3GetPositionRisk(params)
|
9737
|
+
else:
|
9738
|
+
response = self.fapiPrivateV2GetPositionRisk(params)
|
9725
9739
|
#
|
9726
9740
|
# [
|
9727
9741
|
# {
|
@@ -10096,7 +10110,7 @@ class binance(Exchange, ImplicitAPI):
|
|
10096
10110
|
longLeverage = None
|
10097
10111
|
shortLeverage = None
|
10098
10112
|
leverageValue = self.safe_integer(leverage, 'leverage')
|
10099
|
-
if side == 'both':
|
10113
|
+
if (side is None) or (side == 'both'):
|
10100
10114
|
longLeverage = leverageValue
|
10101
10115
|
shortLeverage = leverageValue
|
10102
10116
|
elif side == 'long':
|
@@ -12229,7 +12243,7 @@ class binance(Exchange, ImplicitAPI):
|
|
12229
12243
|
request['startTime'] = since
|
12230
12244
|
else:
|
12231
12245
|
request['startTime'] = now - msInThirtyDays
|
12232
|
-
endTime = self.
|
12246
|
+
endTime = self.safe_integer_2(params, 'endTime', 'until')
|
12233
12247
|
if endTime is not None:
|
12234
12248
|
request['endTime'] = endTime
|
12235
12249
|
else:
|
@@ -12267,6 +12281,8 @@ class binance(Exchange, ImplicitAPI):
|
|
12267
12281
|
# }
|
12268
12282
|
#
|
12269
12283
|
else:
|
12284
|
+
if (request['endTime'] - request['startTime']) > msInThirtyDays:
|
12285
|
+
raise BadRequest(self.id + ' fetchConvertTradeHistory() the max interval between startTime and endTime is 30 days.')
|
12270
12286
|
if limit is not None:
|
12271
12287
|
request['limit'] = limit
|
12272
12288
|
fromCurrencyKey = 'fromAsset'
|
ccxt/bybit.py
CHANGED
@@ -5760,6 +5760,8 @@ class bybit(Exchange, ImplicitAPI):
|
|
5760
5760
|
:returns dict: a `transaction structure <https://docs.ccxt.com/#/?id=transaction-structure>`
|
5761
5761
|
"""
|
5762
5762
|
tag, params = self.handle_withdraw_tag_and_params(tag, params)
|
5763
|
+
accountType = None
|
5764
|
+
accountType, params = self.handle_option_and_params(params, 'withdraw', 'accountType', 'SPOT')
|
5763
5765
|
self.load_markets()
|
5764
5766
|
self.check_address(address)
|
5765
5767
|
currency = self.currency(code)
|
@@ -5768,6 +5770,7 @@ class bybit(Exchange, ImplicitAPI):
|
|
5768
5770
|
'amount': self.number_to_string(amount),
|
5769
5771
|
'address': address,
|
5770
5772
|
'timestamp': self.milliseconds(),
|
5773
|
+
'accountType': accountType,
|
5771
5774
|
}
|
5772
5775
|
if tag is not None:
|
5773
5776
|
request['tag'] = tag
|
ccxt/gate.py
CHANGED
@@ -3968,9 +3968,9 @@ class gate(Exchange, ImplicitAPI):
|
|
3968
3968
|
request['amount'] = self.amount_to_precision(symbol, amount)
|
3969
3969
|
else:
|
3970
3970
|
if side == 'sell':
|
3971
|
-
request['size'] = Precise.string_neg(self.amount_to_precision(symbol, amount))
|
3971
|
+
request['size'] = self.parse_to_numeric(Precise.string_neg(self.amount_to_precision(symbol, amount)))
|
3972
3972
|
else:
|
3973
|
-
request['size'] = self.amount_to_precision(symbol, amount)
|
3973
|
+
request['size'] = self.parse_to_numeric(self.amount_to_precision(symbol, amount))
|
3974
3974
|
if price is not None:
|
3975
3975
|
request['price'] = self.price_to_precision(symbol, price)
|
3976
3976
|
if not market['spot']:
|
ccxt/phemex.py
CHANGED
@@ -2821,7 +2821,7 @@ class phemex(Exchange, ImplicitAPI):
|
|
2821
2821
|
if market['settle'] == 'USDT':
|
2822
2822
|
response = self.privateGetApiDataGFuturesOrdersByOrderId(self.extend(request, params))
|
2823
2823
|
elif market['spot']:
|
2824
|
-
response = self.
|
2824
|
+
response = self.privateGetApiDataSpotsOrdersByOrderId(self.extend(request, params))
|
2825
2825
|
else:
|
2826
2826
|
response = self.privateGetExchangeOrder(self.extend(request, params))
|
2827
2827
|
data = self.safe_value(response, 'data', {})
|
@@ -2833,7 +2833,10 @@ class phemex(Exchange, ImplicitAPI):
|
|
2833
2833
|
raise OrderNotFound(self.id + ' fetchOrder() ' + symbol + ' order with clientOrderId ' + clientOrderId + ' not found')
|
2834
2834
|
else:
|
2835
2835
|
raise OrderNotFound(self.id + ' fetchOrder() ' + symbol + ' order with id ' + id + ' not found')
|
2836
|
-
order = self.
|
2836
|
+
order = self.safe_dict(data, 0, {})
|
2837
|
+
elif market['spot']:
|
2838
|
+
rows = self.safe_list(data, 'rows', [])
|
2839
|
+
order = self.safe_dict(rows, 0, {})
|
2837
2840
|
return self.parse_order(order, market)
|
2838
2841
|
|
2839
2842
|
def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
|
@@ -2864,7 +2867,7 @@ class phemex(Exchange, ImplicitAPI):
|
|
2864
2867
|
elif market['swap']:
|
2865
2868
|
response = self.privateGetExchangeOrderList(self.extend(request, params))
|
2866
2869
|
else:
|
2867
|
-
response = self.
|
2870
|
+
response = self.privateGetApiDataSpotsOrders(self.extend(request, params))
|
2868
2871
|
data = self.safe_value(response, 'data', {})
|
2869
2872
|
rows = self.safe_list(data, 'rows', data)
|
2870
2873
|
return self.parse_orders(rows, market, since, limit)
|
ccxt/pro/__init__.py
CHANGED
ccxt/pro/okx.py
CHANGED
@@ -335,6 +335,8 @@ class okx(ccxt.async_support.okx):
|
|
335
335
|
channel = None
|
336
336
|
channel, params = self.handle_option_and_params(params, 'watchTicker', 'channel', 'tickers')
|
337
337
|
params['channel'] = channel
|
338
|
+
market = self.market(symbol)
|
339
|
+
symbol = market['symbol']
|
338
340
|
ticker = await self.watch_tickers([symbol], params)
|
339
341
|
return self.safe_value(ticker, symbol)
|
340
342
|
|
ccxt/pro/phemex.py
CHANGED
ccxt/wavesexchange.py
CHANGED
@@ -1238,7 +1238,8 @@ class wavesexchange(Exchange, ImplicitAPI):
|
|
1238
1238
|
if (isMarketOrder) and (price is None):
|
1239
1239
|
raise InvalidOrder(self.id + ' createOrder() requires a price argument for ' + type + ' orders to determine the max price for buy and the min price for sell')
|
1240
1240
|
timestamp = self.milliseconds()
|
1241
|
-
defaultExpiryDelta =
|
1241
|
+
defaultExpiryDelta = None
|
1242
|
+
defaultExpiryDelta, params = self.handle_option_and_params(params, 'createOrder', 'defaultExpiry', self.safe_integer(self.options, 'createOrderDefaultExpiry', 2419200000))
|
1242
1243
|
expiration = self.sum(timestamp, defaultExpiryDelta)
|
1243
1244
|
matcherFees = self.get_fees_for_asset(symbol, side, amount, price)
|
1244
1245
|
# {
|
@@ -1373,11 +1374,11 @@ class wavesexchange(Exchange, ImplicitAPI):
|
|
1373
1374
|
# }
|
1374
1375
|
#
|
1375
1376
|
if isMarketOrder:
|
1376
|
-
response = self.matcherPostMatcherOrderbookMarket(body)
|
1377
|
+
response = self.matcherPostMatcherOrderbookMarket(self.extend(body, params))
|
1377
1378
|
value = self.safe_dict(response, 'message')
|
1378
1379
|
return self.parse_order(value, market)
|
1379
1380
|
else:
|
1380
|
-
response = self.matcherPostMatcherOrderbook(body)
|
1381
|
+
response = self.matcherPostMatcherOrderbook(self.extend(body, params))
|
1381
1382
|
value = self.safe_dict(response, 'message')
|
1382
1383
|
return self.parse_order(value, market)
|
1383
1384
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.3.
|
3
|
+
Version: 4.3.83
|
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
|
@@ -70,7 +70,6 @@ Current feature list:
|
|
70
70
|
|
71
71
|
|
72
72
|
## Sponsored Promotion
|
73
|
-
[](https://bingx.com/en/act/contestNew/7947320527/)
|
74
73
|
|
75
74
|
## See Also
|
76
75
|
|
@@ -270,13 +269,13 @@ console.log(version, Object.keys(exchanges));
|
|
270
269
|
|
271
270
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
272
271
|
|
273
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.
|
274
|
-
* unpkg: https://unpkg.com/ccxt@4.3.
|
272
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.83/dist/ccxt.browser.min.js
|
273
|
+
* unpkg: https://unpkg.com/ccxt@4.3.83/dist/ccxt.browser.min.js
|
275
274
|
|
276
275
|
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.
|
277
276
|
|
278
277
|
```HTML
|
279
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.
|
278
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.83/dist/ccxt.browser.min.js"></script>
|
280
279
|
```
|
281
280
|
|
282
281
|
Creates a global `ccxt` object:
|
@@ -1,10 +1,10 @@
|
|
1
|
-
ccxt/__init__.py,sha256=
|
1
|
+
ccxt/__init__.py,sha256=8tFXcexJq_6UZubNfQ3dRitGEVyHJ7TjevH7jIeUzzQ,16417
|
2
2
|
ccxt/ace.py,sha256=Gee4ymA83iAuBFm3J8NaTb7qmu9buV2trA676KCtSVg,42383
|
3
3
|
ccxt/alpaca.py,sha256=HQuhQZSFGRlT-BaCUSEZmxpzYp6tll2zn63qn3gTmoU,47470
|
4
4
|
ccxt/ascendex.py,sha256=4aEwibO_me6khr66z8JFqDBxe2gtFOWIFBE7ulBEJPs,151933
|
5
5
|
ccxt/bequant.py,sha256=RBiAmaTbL35DgiV3Hl6uchLUd78V0z1T9riTlNsrpdc,1174
|
6
6
|
ccxt/bigone.py,sha256=PBciIENMufQQ6cxukdze5hhQ5vFOqBtMHDfTwT4nUuY,93086
|
7
|
-
ccxt/binance.py,sha256=
|
7
|
+
ccxt/binance.py,sha256=b-d3-S9ENpW8QCcHmyrOayAO6UqYnK9IRoCKg7uKKxY,641250
|
8
8
|
ccxt/binancecoinm.py,sha256=arFnEh8mErSyi23eVPWE4iwoT7PWQyxGGVJCKCy6UJY,1702
|
9
9
|
ccxt/binanceus.py,sha256=hdcT4OnadcdFFFjF3GtM0nWv90jqojqwdVS3xWGuW40,9163
|
10
10
|
ccxt/binanceusdm.py,sha256=bAPcJj5HLxoCdPolriM8sJpoTBwbV78vBTbKRmWhNP4,2632
|
@@ -35,7 +35,7 @@ ccxt/btcalpha.py,sha256=UcCCDZ_7EM-Q2tHU1IQPEA2DErFsLhrSfX-Oy-Q2uL4,36715
|
|
35
35
|
ccxt/btcbox.py,sha256=9-P15L-OiZRzz0ZOtgO3bf73kuHro9u3NYf3QjeYv4k,27744
|
36
36
|
ccxt/btcmarkets.py,sha256=0gMC0vvmuDJwcnllHMUZsQRV6QWA1-Cbq1N1F9rIUW8,52697
|
37
37
|
ccxt/btcturk.py,sha256=bQ8sJq5iEj9oq2R17uDadPWKcnIQG8id5UmdlpHfFy8,36992
|
38
|
-
ccxt/bybit.py,sha256=
|
38
|
+
ccxt/bybit.py,sha256=8RVgRPc2A4-fs2_EdLYHMB9_Lx-2e4EC4H3B84tKrUQ,418859
|
39
39
|
ccxt/cex.py,sha256=YQtARIBP7cY3y-AqRarEH_mVh7_ftt18jLebhpL3hxQ,70084
|
40
40
|
ccxt/coinbase.py,sha256=3L5CDWhg4MQlDkdZnuJxxOjmsWEh-gnqcV4R6nCq7rg,217483
|
41
41
|
ccxt/coinbaseadvanced.py,sha256=d5g6nRx-NCcCwZDdtp8FsI2D-pRjSvnAP9ISSKY_nCQ,538
|
@@ -56,7 +56,7 @@ ccxt/deribit.py,sha256=hs6yUT8s7sfmO-GJ9RZ9nQC7Y9vnp_2puTRrd9r1Plw,161350
|
|
56
56
|
ccxt/digifinex.py,sha256=pUPM7EEeRFoenX_jzNJM1RNuIUjATy6GB4J2osJJ4bY,169282
|
57
57
|
ccxt/exmo.py,sha256=KlQqGZey31br-SVwhQg6mWIESyeM_wiIKRDOzIekuSs,114638
|
58
58
|
ccxt/fmfwio.py,sha256=RbVLvzPwnqfDsE7Ea-N13ISCC82eJVPsXYjrleASmew,1236
|
59
|
-
ccxt/gate.py,sha256=
|
59
|
+
ccxt/gate.py,sha256=dlKwcUQOvriaUmopMaF4BiziBTFdIoaEgt3-LKS8lk8,327645
|
60
60
|
ccxt/gateio.py,sha256=86AETJWODl_vA5VNeQRHZprmpNIY1HAxCddKZcnKSi8,445
|
61
61
|
ccxt/gemini.py,sha256=ddoOnPZzu-l899JGVw4b9wwT9HI20mVqLz7iihhZxng,80876
|
62
62
|
ccxt/hitbtc.py,sha256=iqyd0otbWmIHUJiJ6gzIfe34IOa8PCEeS8nG6s6Ogc0,153398
|
@@ -90,7 +90,7 @@ ccxt/oxfun.py,sha256=2d8Tr3c5SC2okb7mEWi3Y1lq9UC-enln54ydtDClCnY,124657
|
|
90
90
|
ccxt/p2b.py,sha256=V_P8GTdb6SkeaVptVtc-LbjwUKUinfYFtO4nzmKG0N0,54333
|
91
91
|
ccxt/paradex.py,sha256=-o0MAEgItYeo-juKgh2D-lnQIsjRKWMCupyMVPldsG8,85602
|
92
92
|
ccxt/paymium.py,sha256=Xz-H66MQWQcQ1KJbciSMeremCD9kl2up_-IQUvBt22Y,24419
|
93
|
-
ccxt/phemex.py,sha256
|
93
|
+
ccxt/phemex.py,sha256=-8diyEiBoscia_N33w-e6hTP7dGO8qND0s8OXQBl-oM,223253
|
94
94
|
ccxt/poloniex.py,sha256=vaLhyTpZpzBvrrM6dCA_TVypLwLICXotixqiM27q-MA,102301
|
95
95
|
ccxt/poloniexfutures.py,sha256=E0S38NKWPCKRM8RV-TJVxhhOj0vjF-9qR3cbtgmsIdk,78551
|
96
96
|
ccxt/probit.py,sha256=MFA0bFG-xEx3ZDQIWebUKaP83mCjYKVcztk3e61Zx8Y,76165
|
@@ -99,7 +99,7 @@ ccxt/tokocrypto.py,sha256=aV-98hzr75iQO3GEmiUyTNufDqHfoze04Z2Fk195B3Q,123192
|
|
99
99
|
ccxt/tradeogre.py,sha256=DCxTLjtGW7ADRA-jekCkGAn81-GIgdOAxbJFcBLYOFU,24211
|
100
100
|
ccxt/upbit.py,sha256=W_W8aETJyopwhYfZd2tWvhPvi7BjQ4KSIOdn8nzyWv8,85413
|
101
101
|
ccxt/vertex.py,sha256=YoKnzxhem56C19SckA6yHUPH1bk86PfZ4Z-T01TFygg,121761
|
102
|
-
ccxt/wavesexchange.py,sha256=
|
102
|
+
ccxt/wavesexchange.py,sha256=vmzv9h1QjthvpKUGajQn_tdCJ5tWmzEA6r7ow_y6ASY,114980
|
103
103
|
ccxt/wazirx.py,sha256=LVHNdononi8FrZpT0pYiJoS-NrNi7_uIZ6Qbu8dJRPc,52405
|
104
104
|
ccxt/whitebit.py,sha256=fkM0Clt74bSiOJ_L-CehR2Gkn3v3kZksCQT0JCCG5rs,119340
|
105
105
|
ccxt/woo.py,sha256=VSW2iQ6t9SCB5GYlRClLfUD468HNW2SOhM6uEo3A_e4,153142
|
@@ -218,13 +218,13 @@ 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=m_-Y9JVCtfU0Mxb5kSMaGiOwa0zNQg1PU0azwrhbWzk,16230
|
222
222
|
ccxt/async_support/ace.py,sha256=zBmLUKH691a2BH1sPzlJPg-uO7lD6Ys92Rv8WSzNtoo,42607
|
223
223
|
ccxt/async_support/alpaca.py,sha256=495vDvdF1IWlsh9QhUnMtkMuINdD0EzeFGlUVqCf8TE,47682
|
224
224
|
ccxt/async_support/ascendex.py,sha256=LK259BdUqU0_STGRH6DmTgaR-7lXqFpZHFVACf2um5c,152721
|
225
225
|
ccxt/async_support/bequant.py,sha256=1hTwHovo1bW1XTIc8ZKjvJ-Xg6LfmpGdzT7TepykaVM,1188
|
226
226
|
ccxt/async_support/bigone.py,sha256=PZcs9u6FI6uAyJKiiNGIGDA-uainz4aKEOrC1Q6KIk4,93540
|
227
|
-
ccxt/async_support/binance.py,sha256=
|
227
|
+
ccxt/async_support/binance.py,sha256=UmSmhtKJOpSzWDbZO-OnMYjoztbduzDN2hZcKrZ1a1k,643984
|
228
228
|
ccxt/async_support/binancecoinm.py,sha256=yeE73xG5UXD_X3VPul6DMGnV_mgJfWYskpas1BUDdCU,1740
|
229
229
|
ccxt/async_support/binanceus.py,sha256=c-K3Tk7LaRJjmYdCx8vBOqsx01uXrtvt0PC2ekBiD0g,9177
|
230
230
|
ccxt/async_support/binanceusdm.py,sha256=8ugRkx7vyYmn67wdkEEf2f-DFMGAoC4t09usKlPVNyw,2670
|
@@ -255,7 +255,7 @@ ccxt/async_support/btcalpha.py,sha256=DgzrJ6cczUCDZr-QLUxMpazeudEFdQ_OzXiQiJM4Hb
|
|
255
255
|
ccxt/async_support/btcbox.py,sha256=FGIj8il6VZL56_dDYsAMwp4DpdKNt_vbMXV6VZ2boCI,27968
|
256
256
|
ccxt/async_support/btcmarkets.py,sha256=x1-s5uVioHyvNJoBxhxP8eUUslTDwQnZMU0FWfu1Fd4,53047
|
257
257
|
ccxt/async_support/btcturk.py,sha256=P3bg0XG0sAi-8ge9ZFzQqZHsoGOGfxBjkhIDo4VPSK4,37210
|
258
|
-
ccxt/async_support/bybit.py,sha256=
|
258
|
+
ccxt/async_support/bybit.py,sha256=PcNgqEEBqggWY4xHLUX2TZHhY7-U96Ne1Ps5CDGfoIw,420735
|
259
259
|
ccxt/async_support/cex.py,sha256=5KZ9qt4WsUAkH2rkHn7zW7SwlB9FumruLELdKF4LFoE,70434
|
260
260
|
ccxt/async_support/coinbase.py,sha256=Ch_hFo2zj0qp4kuDUnebGD16pUeKs6h3HJxs5Fdpkco,218637
|
261
261
|
ccxt/async_support/coinbaseadvanced.py,sha256=Kupwnuxiu_qTjwCNV2asacoDUNFQvcaHNAznUJPhdQs,552
|
@@ -276,7 +276,7 @@ ccxt/async_support/deribit.py,sha256=JfdtFswWctlKE_GOjoxFIVKTNq-LUeuVik59MAx-u8s
|
|
276
276
|
ccxt/async_support/digifinex.py,sha256=6fj4RPpxV8ArNSBXm5_y_Mt7fzjYxYOSO8mcxGKXpUU,170252
|
277
277
|
ccxt/async_support/exmo.py,sha256=uVJsy3mfNLpfbY0ndl2EF9hipUylEw8J58J3wCGyyA0,115270
|
278
278
|
ccxt/async_support/fmfwio.py,sha256=lzfSnPrB2ARcC3EIqAuBM4vyg6LJ6n8RE71Zvt3ez1s,1250
|
279
|
-
ccxt/async_support/gate.py,sha256=
|
279
|
+
ccxt/async_support/gate.py,sha256=Y4dVM0if4e3a3uG_Wgj10t4oWRBHdjt-0Sp0v3yIWNg,329365
|
280
280
|
ccxt/async_support/gateio.py,sha256=6_t032F9p9x5KGTjtSuqGXITzFOx-XAQBYLpsuQjzxw,459
|
281
281
|
ccxt/async_support/gemini.py,sha256=7X5-PE3rPrPycUVXu3FtAcDFjNR3QUwYd6lPRQYQeEw,81389
|
282
282
|
ccxt/async_support/hitbtc.py,sha256=jWmyRAy_wkpEidgjCxU0gWur99YJjYHPjD9CN4vJbUE,154444
|
@@ -310,7 +310,7 @@ ccxt/async_support/oxfun.py,sha256=_Pv8E4yIKS10iPOpPuCFQgBuqGDzxuwvxROdJjwrYvc,1
|
|
310
310
|
ccxt/async_support/p2b.py,sha256=aU_69L8hyfZEQ_yFJb6UoR_l0EbaeCTRgNvdDtk4QPs,54575
|
311
311
|
ccxt/async_support/paradex.py,sha256=iN1obpvPvLikj30KiE4I7BGlBVBRLHpHifEH8vn8JdY,86210
|
312
312
|
ccxt/async_support/paymium.py,sha256=GIAgyOjR11o1pfq8om4Pwr68jMkLoEwEz7sB8lIDMI0,24607
|
313
|
-
ccxt/async_support/phemex.py,sha256=
|
313
|
+
ccxt/async_support/phemex.py,sha256=NBo_6hAQUWCwH6EdQ8vIkBK2mV2N-qcAbW2wzROiunk,224071
|
314
314
|
ccxt/async_support/poloniex.py,sha256=hYmiGQfwKyYcaPp1Q1Qa4gPP0TaqJrG2367y-q0WxXE,102849
|
315
315
|
ccxt/async_support/poloniexfutures.py,sha256=iXEtcjHZBTEhgwkp8xbIqxObZf-OhfUr2yVwq5WlsMg,78937
|
316
316
|
ccxt/async_support/probit.py,sha256=8XCtYbAIIQNjfdLfMVwjaJ9vM_7QWnEQ86yYZYPlS8M,76557
|
@@ -319,7 +319,7 @@ ccxt/async_support/tokocrypto.py,sha256=nzJhrGTCTWMbbjI4P_IKfO1O84td8pSssCgZhTqQ
|
|
319
319
|
ccxt/async_support/tradeogre.py,sha256=A4DEbbRL_g_5WAp7WOB96s08-zgXfGQ9lYZnDX5H1eI,24405
|
320
320
|
ccxt/async_support/upbit.py,sha256=GmhV24xdjd5NSCronYkqLCM8rr_hNdpt4NEDA5jEkLw,85895
|
321
321
|
ccxt/async_support/vertex.py,sha256=_KDPAVq5Bew-w77wiGQpivZCGRs6yGKoW9HGh8PhOLc,122261
|
322
|
-
ccxt/async_support/wavesexchange.py,sha256=
|
322
|
+
ccxt/async_support/wavesexchange.py,sha256=wHxvsBQydDEYRgeAZKI9WO4TLBKmmSPTLm0eT0pKB5g,115530
|
323
323
|
ccxt/async_support/wazirx.py,sha256=bnUpw9be3o4l2Hxm3jcfNXn5bMyZlgqoG8BGPusuIzs,52707
|
324
324
|
ccxt/async_support/whitebit.py,sha256=haF5nFYGuJzkplHBIyLLDJ6N3ThIDPpgjeI3S-TYs98,119990
|
325
325
|
ccxt/async_support/woo.py,sha256=uaNh3timNm6_DNhiOn5l4Za4wagj4AhlxkDh4Fbhxfk,154110
|
@@ -329,7 +329,7 @@ ccxt/async_support/yobit.py,sha256=GQhvYrsGHQrVdTrNHQxx9isEGqUABexlllzao9HL3f8,5
|
|
329
329
|
ccxt/async_support/zaif.py,sha256=-ZTr8M2JaIRCL90VrbCDXBMAsZwbiwsFChSQ2rWODuQ,29044
|
330
330
|
ccxt/async_support/zonda.py,sha256=jncr6Wg12S72CTpu6mCKCse1pm1f8oefVQurQSrFvP0,81733
|
331
331
|
ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
|
332
|
-
ccxt/async_support/base/exchange.py,sha256=
|
332
|
+
ccxt/async_support/base/exchange.py,sha256=eiFSxjEXpVJpvTiWiWLVzJcqY8l8XmSOx1-FXqT8BvE,110799
|
333
333
|
ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
|
334
334
|
ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
|
335
335
|
ccxt/async_support/base/ws/aiohttp_client.py,sha256=5IEiT0elWI9a7Vr-KV0jgmlbpLJWBzIlrLaCkTKGaqY,5752
|
@@ -343,10 +343,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9produGjmB
|
|
343
343
|
ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
|
344
344
|
ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
|
345
345
|
ccxt/base/errors.py,sha256=tosnf1tDaBn4YMCbWVNWyDYzqft-ImVtyjqJb6q83Y4,4369
|
346
|
-
ccxt/base/exchange.py,sha256=
|
346
|
+
ccxt/base/exchange.py,sha256=jbPRXxH1ZpZALXu_XPg-v6IEzLrAhaDiG-oRfiUoVt0,295904
|
347
347
|
ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
|
348
348
|
ccxt/base/types.py,sha256=TaP_RElKjGEZWuzyp4o4u2YhREyTG3rUeVT6gDffY9A,9613
|
349
|
-
ccxt/pro/__init__.py,sha256=
|
349
|
+
ccxt/pro/__init__.py,sha256=Tpck3GHnu8DOL4i2mRnxwNBApGC4Ysth6ZHtFGiHxhw,7608
|
350
350
|
ccxt/pro/alpaca.py,sha256=xh1yg1Ok-Zh_Mfx-MBjNrfJDs6MUU0exFfEj3GuQPC4,27631
|
351
351
|
ccxt/pro/ascendex.py,sha256=181FIeztchLqGmgecRJEN8F8xEM45D5aMKhC-5nuNfU,35467
|
352
352
|
ccxt/pro/bequant.py,sha256=33OEUWBi4D9-2w8CmkwN3aF1qS-AlLqX3pxrWwNbXPY,1552
|
@@ -401,12 +401,12 @@ ccxt/pro/luno.py,sha256=AzLK0_C0Hu25ukMNkMLP_sY3D4UG9FT38oawpo4jzTg,12336
|
|
401
401
|
ccxt/pro/mexc.py,sha256=yiLfthMojs2T-sUzzhDjmTTNFc8Ob8S85ovpPb_I7Ts,43270
|
402
402
|
ccxt/pro/ndax.py,sha256=fQsoYtrTEsCZB3hl-pavQytwQAaiMAiTyaCiOy1sVTg,22715
|
403
403
|
ccxt/pro/okcoin.py,sha256=elwHzrWUSuU7Edp1oisxAnvst5IpxjyzgqLVMEHZWIU,30429
|
404
|
-
ccxt/pro/okx.py,sha256=
|
404
|
+
ccxt/pro/okx.py,sha256=J59wN1DpFT6X3_OsD2sxqnB1OczrLPBKs-xvHGmYE60,84894
|
405
405
|
ccxt/pro/onetrading.py,sha256=Qlr6LRRqO8te7QyTIhCk5nXJnupH8MtRWhQnH3Zc9yE,54769
|
406
406
|
ccxt/pro/oxfun.py,sha256=gcmnoD0pzEDVIaiHyuU2ABoQBrxi0CTP62H2xZD0T7g,43943
|
407
407
|
ccxt/pro/p2b.py,sha256=qulHrptdJ48MtOQ0bOZH3h_An8Ybu14cU6cJrySV5KQ,17897
|
408
408
|
ccxt/pro/paradex.py,sha256=9SkO-QV08sGeh5e349hL36u4snxAYuqjdVvJlKgQhH0,14299
|
409
|
-
ccxt/pro/phemex.py,sha256=
|
409
|
+
ccxt/pro/phemex.py,sha256=ZFQLhlrFKxzoFziHAvM2G1pzf-goRYjdZ-ikVGfeNXw,61107
|
410
410
|
ccxt/pro/poloniex.py,sha256=e81Vkvg2oRW51nXECf6lF7Cjj5CbHv7Np2QSy6z0h3k,52108
|
411
411
|
ccxt/pro/poloniexfutures.py,sha256=Iy8Q_Z8I3rUtNcZoxwVzMK2C1qLIiHjFXdZd_rr3Sww,41972
|
412
412
|
ccxt/pro/probit.py,sha256=ngY30aRwNClc_q_Pirajg4-K-mJ3bvipgD2-jBuPs6g,23110
|
@@ -648,8 +648,8 @@ ccxt/test/tests_async.py,sha256=NShOLO2-HzYsh07U7aiUGssiv-AZ_p88h-NuQub9OKU,8468
|
|
648
648
|
ccxt/test/tests_helpers.py,sha256=xhOILoZ_x3RSfQjtKt6AQlkp9DkOtpTQe8GAUUZoM6s,10069
|
649
649
|
ccxt/test/tests_init.py,sha256=eVwwUHujX9t4rjgo4TqEeg7DDhR1Hb_e2SJN8NVGyl0,998
|
650
650
|
ccxt/test/tests_sync.py,sha256=6Arr2TcJpNg9eEpH_JQeBbLzaMPlb94J1P11HGlbpPg,83761
|
651
|
-
ccxt-4.3.
|
652
|
-
ccxt-4.3.
|
653
|
-
ccxt-4.3.
|
654
|
-
ccxt-4.3.
|
655
|
-
ccxt-4.3.
|
651
|
+
ccxt-4.3.83.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
|
652
|
+
ccxt-4.3.83.dist-info/METADATA,sha256=ZV0KJpl5E1uFTWNFh1V-1KxFfaOqM2o0672ozfs4zJ8,116492
|
653
|
+
ccxt-4.3.83.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
|
654
|
+
ccxt-4.3.83.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
655
|
+
ccxt-4.3.83.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|