ccxt 4.3.82__py2.py3-none-any.whl → 4.3.84__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 +21 -5
- ccxt/async_support/bitfinex2.py +2 -2
- ccxt/async_support/gate.py +2 -2
- ccxt/async_support/kraken.py +4 -6
- ccxt/async_support/phemex.py +6 -3
- ccxt/base/exchange.py +1 -1
- ccxt/binance.py +21 -5
- ccxt/bitfinex2.py +2 -2
- ccxt/gate.py +2 -2
- ccxt/kraken.py +4 -6
- ccxt/phemex.py +6 -3
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/binance.py +6 -1
- ccxt/pro/bitrue.py +1 -7
- ccxt/pro/gate.py +4 -4
- ccxt/pro/okx.py +2 -0
- ccxt/pro/phemex.py +1 -0
- {ccxt-4.3.82.dist-info → ccxt-4.3.84.dist-info}/METADATA +4 -5
- {ccxt-4.3.82.dist-info → ccxt-4.3.84.dist-info}/RECORD +25 -25
- {ccxt-4.3.82.dist-info → ccxt-4.3.84.dist-info}/LICENSE.txt +0 -0
- {ccxt-4.3.82.dist-info → ccxt-4.3.84.dist-info}/WHEEL +0 -0
- {ccxt-4.3.82.dist-info → ccxt-4.3.84.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':
|
@@ -10512,7 +10526,7 @@ class binance(Exchange, ImplicitAPI):
|
|
10512
10526
|
extendedParams['recvWindow'] = recvWindow
|
10513
10527
|
if (api == 'sapi') and (path == 'asset/dust'):
|
10514
10528
|
query = self.urlencode_with_array_repeat(extendedParams)
|
10515
|
-
elif (path == 'batchOrders') or (path.find('sub-account') >= 0) or (path == 'capital/withdraw/apply') or (path.find('staking') >= 0):
|
10529
|
+
elif (path == 'batchOrders') or (path.find('sub-account') >= 0) or (path == 'capital/withdraw/apply') or (path.find('staking') >= 0) or (path.find('simple-earn') >= 0):
|
10516
10530
|
if (method == 'DELETE') and (path == 'batchOrders'):
|
10517
10531
|
orderidlist = self.safe_list(extendedParams, 'orderidlist', [])
|
10518
10532
|
origclientorderidlist = self.safe_list(extendedParams, 'origclientorderidlist', [])
|
@@ -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/bitfinex2.py
CHANGED
@@ -354,9 +354,9 @@ class bitfinex2(Exchange, ImplicitAPI):
|
|
354
354
|
# convert 'EXCHANGE LIMIT' to lowercase 'limit'
|
355
355
|
# everything else remains uppercase
|
356
356
|
'exchangeTypes': {
|
357
|
-
|
357
|
+
'MARKET': 'market',
|
358
358
|
'EXCHANGE MARKET': 'market',
|
359
|
-
|
359
|
+
'LIMIT': 'limit',
|
360
360
|
'EXCHANGE LIMIT': 'limit',
|
361
361
|
# 'STOP': None,
|
362
362
|
'EXCHANGE STOP': 'market',
|
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/kraken.py
CHANGED
@@ -2367,13 +2367,11 @@ class kraken(Exchange, ImplicitAPI):
|
|
2367
2367
|
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
|
2368
2368
|
"""
|
2369
2369
|
# https://www.kraken.com/en-us/help/api#deposit-status
|
2370
|
-
if code is None:
|
2371
|
-
raise ArgumentsRequired(self.id + ' fetchDeposits() requires a currency code argument')
|
2372
2370
|
await self.load_markets()
|
2373
|
-
|
2374
|
-
|
2375
|
-
|
2376
|
-
|
2371
|
+
request: dict = {}
|
2372
|
+
if code is not None:
|
2373
|
+
currency = self.currency(code)
|
2374
|
+
request['asset'] = currency['id']
|
2377
2375
|
if since is not None:
|
2378
2376
|
request['start'] = since
|
2379
2377
|
response = await self.privatePostDepositStatus(self.extend(request, params))
|
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)
|
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':
|
@@ -10511,7 +10525,7 @@ class binance(Exchange, ImplicitAPI):
|
|
10511
10525
|
extendedParams['recvWindow'] = recvWindow
|
10512
10526
|
if (api == 'sapi') and (path == 'asset/dust'):
|
10513
10527
|
query = self.urlencode_with_array_repeat(extendedParams)
|
10514
|
-
elif (path == 'batchOrders') or (path.find('sub-account') >= 0) or (path == 'capital/withdraw/apply') or (path.find('staking') >= 0):
|
10528
|
+
elif (path == 'batchOrders') or (path.find('sub-account') >= 0) or (path == 'capital/withdraw/apply') or (path.find('staking') >= 0) or (path.find('simple-earn') >= 0):
|
10515
10529
|
if (method == 'DELETE') and (path == 'batchOrders'):
|
10516
10530
|
orderidlist = self.safe_list(extendedParams, 'orderidlist', [])
|
10517
10531
|
origclientorderidlist = self.safe_list(extendedParams, 'origclientorderidlist', [])
|
@@ -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/bitfinex2.py
CHANGED
@@ -354,9 +354,9 @@ class bitfinex2(Exchange, ImplicitAPI):
|
|
354
354
|
# convert 'EXCHANGE LIMIT' to lowercase 'limit'
|
355
355
|
# everything else remains uppercase
|
356
356
|
'exchangeTypes': {
|
357
|
-
|
357
|
+
'MARKET': 'market',
|
358
358
|
'EXCHANGE MARKET': 'market',
|
359
|
-
|
359
|
+
'LIMIT': 'limit',
|
360
360
|
'EXCHANGE LIMIT': 'limit',
|
361
361
|
# 'STOP': None,
|
362
362
|
'EXCHANGE STOP': 'market',
|
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/kraken.py
CHANGED
@@ -2367,13 +2367,11 @@ class kraken(Exchange, ImplicitAPI):
|
|
2367
2367
|
:returns dict[]: a list of `transaction structures <https://docs.ccxt.com/#/?id=transaction-structure>`
|
2368
2368
|
"""
|
2369
2369
|
# https://www.kraken.com/en-us/help/api#deposit-status
|
2370
|
-
if code is None:
|
2371
|
-
raise ArgumentsRequired(self.id + ' fetchDeposits() requires a currency code argument')
|
2372
2370
|
self.load_markets()
|
2373
|
-
|
2374
|
-
|
2375
|
-
|
2376
|
-
|
2371
|
+
request: dict = {}
|
2372
|
+
if code is not None:
|
2373
|
+
currency = self.currency(code)
|
2374
|
+
request['asset'] = currency['id']
|
2377
2375
|
if since is not None:
|
2378
2376
|
request['start'] = since
|
2379
2377
|
response = self.privatePostDepositStatus(self.extend(request, params))
|
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/binance.py
CHANGED
@@ -1133,6 +1133,9 @@ class binance(ccxt.async_support.binance):
|
|
1133
1133
|
:param dict [params.timezone]: if provided, kline intervals are interpreted in that timezone instead of UTC, example '+08:00'
|
1134
1134
|
:returns int[][]: A list of candles ordered, open, high, low, close, volume
|
1135
1135
|
"""
|
1136
|
+
await self.load_markets()
|
1137
|
+
market = self.market(symbol)
|
1138
|
+
symbol = market['symbol']
|
1136
1139
|
params['callerMethodName'] = 'watchOHLCV'
|
1137
1140
|
result = await self.watch_ohlcv_for_symbols([[symbol, timeframe]], since, limit, params)
|
1138
1141
|
return result[symbol][timeframe]
|
@@ -1179,7 +1182,7 @@ class binance(ccxt.async_support.binance):
|
|
1179
1182
|
suffix = '@+08:00'
|
1180
1183
|
utcSuffix = suffix if shouldUseUTC8 else ''
|
1181
1184
|
rawHashes.append(marketId + '@' + klineType + '_' + interval + utcSuffix)
|
1182
|
-
messageHashes.append('ohlcv::' +
|
1185
|
+
messageHashes.append('ohlcv::' + market['symbol'] + '::' + timeframeString)
|
1183
1186
|
url = self.urls['api']['ws'][type] + '/' + self.stream(type, 'multipleOHLCV')
|
1184
1187
|
requestId = self.request_id(url)
|
1185
1188
|
request = {
|
@@ -1434,6 +1437,8 @@ class binance(ccxt.async_support.binance):
|
|
1434
1437
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
1435
1438
|
:returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
|
1436
1439
|
"""
|
1440
|
+
await self.load_markets()
|
1441
|
+
symbols = self.market_symbols(symbols, None, True, False, True)
|
1437
1442
|
result = await self.watch_multi_ticker_helper('watchBidsAsks', 'bookTicker', symbols, params)
|
1438
1443
|
if self.newUpdates:
|
1439
1444
|
return result
|
ccxt/pro/bitrue.py
CHANGED
@@ -401,13 +401,7 @@ class bitrue(ccxt.async_support.bitrue):
|
|
401
401
|
async def authenticate(self, params={}):
|
402
402
|
listenKey = self.safe_value(self.options, 'listenKey')
|
403
403
|
if listenKey is None:
|
404
|
-
response =
|
405
|
-
try:
|
406
|
-
response = await self.openPrivatePostPoseidonApiV1ListenKey(params)
|
407
|
-
except Exception as error:
|
408
|
-
self.options['listenKey'] = None
|
409
|
-
self.options['listenKeyUrl'] = None
|
410
|
-
return None
|
404
|
+
response = await self.openPrivatePostPoseidonApiV1ListenKey(params)
|
411
405
|
#
|
412
406
|
# {
|
413
407
|
# "msg": "succ",
|
ccxt/pro/gate.py
CHANGED
@@ -1408,7 +1408,7 @@ class gate(ccxt.async_support.gate):
|
|
1408
1408
|
errs = self.safe_dict(data, 'errs')
|
1409
1409
|
error = self.safe_dict(message, 'error', errs)
|
1410
1410
|
code = self.safe_string_2(error, 'code', 'label')
|
1411
|
-
id = self.
|
1411
|
+
id = self.safe_string_n(message, ['id', 'requestId', 'request_id'])
|
1412
1412
|
if error is not None:
|
1413
1413
|
messageHash = self.safe_string(client.subscriptions, id)
|
1414
1414
|
try:
|
@@ -1421,7 +1421,7 @@ class gate(ccxt.async_support.gate):
|
|
1421
1421
|
client.reject(e, messageHash)
|
1422
1422
|
if (messageHash is not None) and (messageHash in client.subscriptions):
|
1423
1423
|
del client.subscriptions[messageHash]
|
1424
|
-
if id is not None:
|
1424
|
+
if (id is not None) and (id in client.subscriptions):
|
1425
1425
|
del client.subscriptions[id]
|
1426
1426
|
return True
|
1427
1427
|
return False
|
@@ -1686,7 +1686,7 @@ class gate(ccxt.async_support.gate):
|
|
1686
1686
|
'event': event,
|
1687
1687
|
'payload': payload,
|
1688
1688
|
}
|
1689
|
-
return await self.watch(url, messageHash, request, messageHash)
|
1689
|
+
return await self.watch(url, messageHash, request, messageHash, requestId)
|
1690
1690
|
|
1691
1691
|
async def subscribe_private(self, url, messageHash, payload, channel, params, requiresUid=False):
|
1692
1692
|
self.check_required_credentials()
|
@@ -1724,4 +1724,4 @@ class gate(ccxt.async_support.gate):
|
|
1724
1724
|
# in case of authenticationError we will throw
|
1725
1725
|
client.subscriptions[tempSubscriptionHash] = messageHash
|
1726
1726
|
message = self.extend(request, params)
|
1727
|
-
return await self.watch(url, messageHash, message, messageHash)
|
1727
|
+
return await self.watch(url, messageHash, message, messageHash, messageHash)
|
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
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.3.
|
3
|
+
Version: 4.3.84
|
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.84/dist/ccxt.browser.min.js
|
273
|
+
* unpkg: https://unpkg.com/ccxt@4.3.84/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.84/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=xC-AxNjzbac79_XlYeB4TOvksN8yURGPaJPdT4Uqjxk,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=4Y-6ug_A4l-1zGNgD5XkN14CfvD-JT27oH_YT8PP0JY,641285
|
8
8
|
ccxt/binancecoinm.py,sha256=arFnEh8mErSyi23eVPWE4iwoT7PWQyxGGVJCKCy6UJY,1702
|
9
9
|
ccxt/binanceus.py,sha256=hdcT4OnadcdFFFjF3GtM0nWv90jqojqwdVS3xWGuW40,9163
|
10
10
|
ccxt/binanceusdm.py,sha256=bAPcJj5HLxoCdPolriM8sJpoTBwbV78vBTbKRmWhNP4,2632
|
@@ -15,7 +15,7 @@ ccxt/bitbay.py,sha256=xAIjzGRDVGwoy-Gygd99H0YN4wiaz_0lR0Z14oxaaxc,478
|
|
15
15
|
ccxt/bitbns.py,sha256=BxvljEPDCGPnaFGaWIIPF_xs079B2OnnbGWNfYlraHE,48269
|
16
16
|
ccxt/bitcoincom.py,sha256=PyWIl4nC4jp5Uba2lI1At0N_hhNyWD0DoZC_MSyL_s4,502
|
17
17
|
ccxt/bitfinex.py,sha256=8GoogNrMLM0UZoWkrxXehN8AN77DHxdD3p1aVarLlp4,73440
|
18
|
-
ccxt/bitfinex2.py,sha256=
|
18
|
+
ccxt/bitfinex2.py,sha256=U1A_zTHPCh85eC69u3X6aHfQ4te68XA0KtM5Q-vbrWE,160644
|
19
19
|
ccxt/bitflyer.py,sha256=biQ8-J_HSb9_S6HE1LBDd6BGpIZSMxK5JyTZ3Xg1SdI,41683
|
20
20
|
ccxt/bitget.py,sha256=ZQvtdW3pnv-LVHG3a1UwR72b-K8Fq-BZ-tu_haz-v60,424620
|
21
21
|
ccxt/bithumb.py,sha256=8oTnFWi8Ai9fnm5FPXvNmaUAVJEOqYi-18VC23cWmXY,47935
|
@@ -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
|
@@ -69,7 +69,7 @@ ccxt/hyperliquid.py,sha256=r_xDktfiSdLDbxwkN_vCKSAu4n9uPyKVlWio-ligUms,109612
|
|
69
69
|
ccxt/idex.py,sha256=P2jNsxiwIlMgrfPKbtmjLJQrzFcWp_TjgJaLq793oco,73255
|
70
70
|
ccxt/independentreserve.py,sha256=ChkSnahGsn0aN_cfaAonSk-V2Aa1UB-0cPTa1d3AdI4,37713
|
71
71
|
ccxt/indodax.py,sha256=rFfAwlYalCXdHQvhjmb7Zt4fGYqjoPv_koL21CBv-O8,53431
|
72
|
-
ccxt/kraken.py,sha256=
|
72
|
+
ccxt/kraken.py,sha256=mn5wIpTR2TnoKFIm5A1N8AxZAE-Ck2hPsVSKJSOtJdE,130190
|
73
73
|
ccxt/krakenfutures.py,sha256=2K40RYEqHB2kgo9715eXc8O2SKcZpAb26iRdC70ftts,119521
|
74
74
|
ccxt/kucoin.py,sha256=rwv5bdlaeFAMbo2vYpT3_mX_keeJmz5Nk5HF26Br3vA,226576
|
75
75
|
ccxt/kucoinfutures.py,sha256=Mn9eflwmD_FmTCHYkRvyfxG3SU3Pgv9Hpj-6umYT3h8,124558
|
@@ -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
|
@@ -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=aORcbHfP4KpEc5qfYT1R7RlyB5TqUoyD-w1OXyfFs1U,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=QLNndO20b-A6sjSoaFnkSDMT7xwNh3lD3pA57r-gHis,644019
|
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
|
@@ -235,7 +235,7 @@ ccxt/async_support/bitbay.py,sha256=jcaEXi2IhYTva8ezO_SfJhwxEZk7HST4J3NaxD16BQA,
|
|
235
235
|
ccxt/async_support/bitbns.py,sha256=-z6MBwHpn0FXwfKffbOXSdZD2ZYEepMz1VU2ii84xN0,48523
|
236
236
|
ccxt/async_support/bitcoincom.py,sha256=RiqwhK3RfxQ_PXTa860fphDCvwA8dalL-_rXlK85-8A,516
|
237
237
|
ccxt/async_support/bitfinex.py,sha256=gypR-TDeWWlamJIjEYwbsEhMQYgu9kqAVvuNxOVWVTo,73880
|
238
|
-
ccxt/async_support/bitfinex2.py,sha256=
|
238
|
+
ccxt/async_support/bitfinex2.py,sha256=qMKpCv8q2VyssI6acoIKHjJrKBmyLGdK-oG7_a-mxzo,161378
|
239
239
|
ccxt/async_support/bitflyer.py,sha256=hIrGMxaM78V1i-gHN2FRFAhI2aaLR21mPAoIE33fW70,41991
|
240
240
|
ccxt/async_support/bitget.py,sha256=JloBQJwLONpLsNjzTxfabc-poDryi3xqwl66UNYi8DU,426244
|
241
241
|
ccxt/async_support/bithumb.py,sha256=Q0Cx_cRKZRfdpBAhQyINm63Qw3M6BRYQRiF0UqYzfis,48214
|
@@ -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
|
@@ -289,7 +289,7 @@ ccxt/async_support/hyperliquid.py,sha256=wFj9yXEojlPWK4JT6aOWFI08P9EwkWT9m7Furqi
|
|
289
289
|
ccxt/async_support/idex.py,sha256=UcAvdMc2CP_6E8lET4rmQiIP-RaUfZHSo6pQeA17v-g,73731
|
290
290
|
ccxt/async_support/independentreserve.py,sha256=fCTAQ1U74KOZHIoYbDxzEly1xSgykcYcdpeiJiCEXkU,37991
|
291
291
|
ccxt/async_support/indodax.py,sha256=m6F8bSiEz9c6UQuadeOfC40rnmlAVKkj94C1uvsc9k0,53739
|
292
|
-
ccxt/async_support/kraken.py,sha256=
|
292
|
+
ccxt/async_support/kraken.py,sha256=7NcBanzzk-4vzZ6mMbQocLJM6NnIEddLqyPmfFDgOUg,130840
|
293
293
|
ccxt/async_support/krakenfutures.py,sha256=2r88_rC1cY7t4s8dgeqRUlwNC2NVaagS9wPAEonLAQs,120009
|
294
294
|
ccxt/async_support/kucoin.py,sha256=XAOfLEyRUeHfS3pB5elec6F1M_ryPyaEKZle2rPFZDM,227677
|
295
295
|
ccxt/async_support/kucoinfutures.py,sha256=uy8gNsJOI6SggxhYMH1TSTFM6rlzWvLknZL_KgCDLBE,125196
|
@@ -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
|
@@ -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=2OWQI4yYKUSFlbMvsIC2P5VQsDw9az1g51QcxOoL3R4,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,14 +343,14 @@ 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=noOssd9lkOx65w0VZTT28RhoaTYEAa11Q8qtZm-djh0,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=zJvE5fm49Ypdtd26y5jxcipKgh6nJZEulWqYFpO4IiQ,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
|
353
|
-
ccxt/pro/binance.py,sha256=
|
353
|
+
ccxt/pro/binance.py,sha256=pFuGKmbf2gi6cTtQOuEwOWtczOQW5K9SYOTxswNuDlU,178067
|
354
354
|
ccxt/pro/binancecoinm.py,sha256=LlgF4rXHHrsQMaklhTEzSiE6U9V25AjHHg_DRat7Mf0,1036
|
355
355
|
ccxt/pro/binanceus.py,sha256=_IXpS_wyH0nEtsLR7cJLtrUlsNQoG0MSUVo3PV0RDDc,1946
|
356
356
|
ccxt/pro/binanceusdm.py,sha256=lLdOv0d-lM-1wfCc_y_POb6GdmVIiX7PFzmKTWsVyNw,1512
|
@@ -364,7 +364,7 @@ ccxt/pro/bitmart.py,sha256=LxcP6aiCdwN-euseCMhsXZkhqesPJM-eLh549sGHHfo,62556
|
|
364
364
|
ccxt/pro/bitmex.py,sha256=dNQf2EAim7kxgCM6I1TgFDl-e2zrXa2veicTEqu8WbQ,73949
|
365
365
|
ccxt/pro/bitopro.py,sha256=2pCutMnav21uVEkqjUhrI80opxW5NWUkn2IK9-Y2hNQ,18750
|
366
366
|
ccxt/pro/bitpanda.py,sha256=ELrhfFKN9YJJdmm9wBf-vpk6WsXGWGf-SyJdqm-E_Lg,415
|
367
|
-
ccxt/pro/bitrue.py,sha256=
|
367
|
+
ccxt/pro/bitrue.py,sha256=0-aa3Q8oGLnq71fJQYLyy0jI3NHHTFJuMQAyM0XRLFY,16246
|
368
368
|
ccxt/pro/bitstamp.py,sha256=P8Td5HqWiO6GMdLj-cKqPTZD28fltWlZQ7Z-omDbO60,20916
|
369
369
|
ccxt/pro/bitvavo.py,sha256=POivGXYmz8GqYc_uErpS6BdG2Gv087BStiJ3lQwod-A,56219
|
370
370
|
ccxt/pro/blockchaincom.py,sha256=LtCL3habcuB2IRXXK_oeqdzqpnkj01Gr79X82nK8Mnk,29600
|
@@ -381,7 +381,7 @@ ccxt/pro/cryptocom.py,sha256=Zrh6noBvrMIcSLgVUuzxW7SPcJzUQDlcqMFU4JsnwLE,43318
|
|
381
381
|
ccxt/pro/currencycom.py,sha256=8B9pSuPyO0ROCWOROUFoNbJBeOU3bRmlKXSj1CBMkPI,22459
|
382
382
|
ccxt/pro/deribit.py,sha256=DG3UJE8VWuydP64_CJzDqmRC0vqc9ViBvQr28gW_nhY,41094
|
383
383
|
ccxt/pro/exmo.py,sha256=n44MqOwY-tSt0TFNhQKydjxRJoSbrMVBzL4NNswOZm4,24542
|
384
|
-
ccxt/pro/gate.py,sha256=
|
384
|
+
ccxt/pro/gate.py,sha256=PhhmAgeY2IcSIpCdeQcZlhc19neXJkYrRL4W8Bocs84,79322
|
385
385
|
ccxt/pro/gateio.py,sha256=_uBWXYQbmsHRivKnZOJDmxJ9tWLO_0HAxmOjAEUy9nE,391
|
386
386
|
ccxt/pro/gemini.py,sha256=8B8dbYPbKbZb3lzhlt8-x0oybQxOHr8Q4R_f5edLwbU,36899
|
387
387
|
ccxt/pro/hitbtc.py,sha256=hhzNO9qGnALrRlMc7Bw0acIGHhFXVA6sUsTRGrWwYkc,56889
|
@@ -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.84.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
|
652
|
+
ccxt-4.3.84.dist-info/METADATA,sha256=pGkNPDyr3HOUr1NMfiFmukg_XRKm00rSb5i1URnR0bE,116492
|
653
|
+
ccxt-4.3.84.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
|
654
|
+
ccxt-4.3.84.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
655
|
+
ccxt-4.3.84.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|