ccxt 4.3.14__py2.py3-none-any.whl → 4.3.15__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 +2 -1
- ccxt/abstract/luno.py +2 -0
- ccxt/async_support/__init__.py +2 -1
- ccxt/async_support/base/exchange.py +1 -1
- ccxt/async_support/binance.py +4 -3
- ccxt/async_support/bingx.py +1 -0
- ccxt/async_support/bybit.py +6 -6
- ccxt/async_support/coinex.py +35 -33
- ccxt/async_support/cryptocom.py +2 -1
- ccxt/async_support/hitbtc.py +1 -0
- ccxt/async_support/luno.py +2 -0
- ccxt/async_support/phemex.py +1 -1
- ccxt/base/errors.py +6 -0
- ccxt/base/exchange.py +7 -7
- ccxt/binance.py +4 -3
- ccxt/bingx.py +1 -0
- ccxt/bybit.py +6 -6
- ccxt/coinex.py +35 -33
- ccxt/cryptocom.py +2 -1
- ccxt/hitbtc.py +1 -0
- ccxt/luno.py +2 -0
- ccxt/phemex.py +1 -1
- ccxt/pro/__init__.py +1 -1
- ccxt/pro/hitbtc.py +1 -1
- ccxt/pro/independentreserve.py +3 -3
- ccxt/pro/poloniex.py +3 -3
- {ccxt-4.3.14.dist-info → ccxt-4.3.15.dist-info}/METADATA +4 -4
- {ccxt-4.3.14.dist-info → ccxt-4.3.15.dist-info}/RECORD +30 -30
- {ccxt-4.3.14.dist-info → ccxt-4.3.15.dist-info}/WHEEL +0 -0
- {ccxt-4.3.14.dist-info → ccxt-4.3.15.dist-info}/top_level.txt +0 -0
ccxt/__init__.py
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
# ----------------------------------------------------------------------------
|
24
24
|
|
25
|
-
__version__ = '4.3.
|
25
|
+
__version__ = '4.3.15'
|
26
26
|
|
27
27
|
# ----------------------------------------------------------------------------
|
28
28
|
|
@@ -53,6 +53,7 @@ from ccxt.base.errors import BadSymbol # noqa: F4
|
|
53
53
|
from ccxt.base.errors import OperationRejected # noqa: F401
|
54
54
|
from ccxt.base.errors import NoChange # noqa: F401
|
55
55
|
from ccxt.base.errors import MarginModeAlreadySet # noqa: F401
|
56
|
+
from ccxt.base.errors import MarketClosed # noqa: F401
|
56
57
|
from ccxt.base.errors import BadResponse # noqa: F401
|
57
58
|
from ccxt.base.errors import NullResponse # noqa: F401
|
58
59
|
from ccxt.base.errors import InsufficientFunds # noqa: F401
|
ccxt/abstract/luno.py
CHANGED
@@ -31,5 +31,7 @@ class ImplicitAPI:
|
|
31
31
|
private_post_withdrawals = privatePostWithdrawals = Entry('withdrawals', 'private', 'POST', {'cost': 1})
|
32
32
|
private_post_send = privatePostSend = Entry('send', 'private', 'POST', {'cost': 1})
|
33
33
|
private_post_oauth2_grant = privatePostOauth2Grant = Entry('oauth2/grant', 'private', 'POST', {'cost': 1})
|
34
|
+
private_post_beneficiaries = privatePostBeneficiaries = Entry('beneficiaries', 'private', 'POST', {'cost': 1})
|
34
35
|
private_put_accounts_id_name = privatePutAccountsIdName = Entry('accounts/{id}/name', 'private', 'PUT', {'cost': 1})
|
35
36
|
private_delete_withdrawals_id = privateDeleteWithdrawalsId = Entry('withdrawals/{id}', 'private', 'DELETE', {'cost': 1})
|
37
|
+
private_delete_beneficiaries_id = privateDeleteBeneficiariesId = Entry('beneficiaries/{id}', 'private', 'DELETE', {'cost': 1})
|
ccxt/async_support/__init__.py
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# -----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '4.3.
|
7
|
+
__version__ = '4.3.15'
|
8
8
|
|
9
9
|
# -----------------------------------------------------------------------------
|
10
10
|
|
@@ -32,6 +32,7 @@ from ccxt.base.errors import BadSymbol # noqa: F4
|
|
32
32
|
from ccxt.base.errors import OperationRejected # noqa: F401
|
33
33
|
from ccxt.base.errors import NoChange # noqa: F401
|
34
34
|
from ccxt.base.errors import MarginModeAlreadySet # noqa: F401
|
35
|
+
from ccxt.base.errors import MarketClosed # noqa: F401
|
35
36
|
from ccxt.base.errors import BadResponse # noqa: F401
|
36
37
|
from ccxt.base.errors import NullResponse # noqa: F401
|
37
38
|
from ccxt.base.errors import InsufficientFunds # noqa: F401
|
ccxt/async_support/binance.py
CHANGED
@@ -19,6 +19,7 @@ from ccxt.base.errors import BadRequest
|
|
19
19
|
from ccxt.base.errors import BadSymbol
|
20
20
|
from ccxt.base.errors import OperationRejected
|
21
21
|
from ccxt.base.errors import MarginModeAlreadySet
|
22
|
+
from ccxt.base.errors import MarketClosed
|
22
23
|
from ccxt.base.errors import BadResponse
|
23
24
|
from ccxt.base.errors import InsufficientFunds
|
24
25
|
from ccxt.base.errors import InvalidOrder
|
@@ -2419,7 +2420,7 @@ class binance(Exchange, ImplicitAPI):
|
|
2419
2420
|
'Rest API trading is not enabled.': PermissionDenied,
|
2420
2421
|
'This account may not place or cancel orders.': PermissionDenied,
|
2421
2422
|
"You don't have permission.": PermissionDenied, # {"msg":"You don't have permission.","success":false}
|
2422
|
-
'Market is closed.':
|
2423
|
+
'Market is closed.': MarketClosed, # {"code":-1013,"msg":"Market is closed."}
|
2423
2424
|
'Too many requests. Please try again later.': RateLimitExceeded, # {"msg":"Too many requests. Please try again later.","success":false}
|
2424
2425
|
'This action is disabled on self account.': AccountSuspended, # {"code":-2011,"msg":"This action is disabled on self account."}
|
2425
2426
|
'Limit orders require GTC for self phase.': BadRequest,
|
@@ -3886,8 +3887,8 @@ class binance(Exchange, ImplicitAPI):
|
|
3886
3887
|
"""
|
3887
3888
|
fetches the last price for multiple markets
|
3888
3889
|
:see: https://binance-docs.github.io/apidocs/spot/en/#symbol-price-ticker # spot
|
3889
|
-
:see: https://binance-docs.github.io/apidocs/
|
3890
|
-
:see: https://binance-docs.github.io/apidocs/delivery/en/#symbol-price-
|
3890
|
+
:see: https://binance-docs.github.io/apidocs/futures/en/#symbol-price-ticker # swap
|
3891
|
+
:see: https://binance-docs.github.io/apidocs/delivery/en/#symbol-price-tickers # future
|
3891
3892
|
:param str[]|None symbols: unified symbols of the markets to fetch the last prices
|
3892
3893
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
3893
3894
|
:param str [params.subType]: "linear" or "inverse"
|
ccxt/async_support/bingx.py
CHANGED
@@ -401,6 +401,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
401
401
|
'100202': InsufficientFunds,
|
402
402
|
'100204': BadRequest,
|
403
403
|
'100400': BadRequest,
|
404
|
+
'100410': OperationFailed, # {"code":100410,"msg":"The current system is busy, please try again later"}
|
404
405
|
'100421': BadSymbol, # {"code":100421,"msg":"This pair is currently restricted from API trading","debugMsg":""}
|
405
406
|
'100440': ExchangeError,
|
406
407
|
'100500': OperationFailed, # {"code":100500,"msg":"The current system is busy, please try again later","debugMsg":""}
|
ccxt/async_support/bybit.py
CHANGED
@@ -6268,19 +6268,19 @@ class bybit(Exchange, ImplicitAPI):
|
|
6268
6268
|
isUsdcSettled = market['settle'] == 'USDC'
|
6269
6269
|
# engage in leverage setting
|
6270
6270
|
# we reuse the code here instead of having two methods
|
6271
|
-
|
6271
|
+
leverageString = self.number_to_string(leverage)
|
6272
6272
|
request = {
|
6273
6273
|
'symbol': market['id'],
|
6274
|
-
'buyLeverage':
|
6275
|
-
'sellLeverage':
|
6274
|
+
'buyLeverage': leverageString,
|
6275
|
+
'sellLeverage': leverageString,
|
6276
6276
|
}
|
6277
6277
|
response = None
|
6278
6278
|
if isUsdcSettled and not isUnifiedAccount:
|
6279
|
-
request['leverage'] =
|
6279
|
+
request['leverage'] = leverageString
|
6280
6280
|
response = await self.privatePostPerpetualUsdcOpenapiPrivateV1PositionLeverageSave(self.extend(request, params))
|
6281
6281
|
else:
|
6282
|
-
request['buyLeverage'] =
|
6283
|
-
request['sellLeverage'] =
|
6282
|
+
request['buyLeverage'] = leverageString
|
6283
|
+
request['sellLeverage'] = leverageString
|
6284
6284
|
if market['linear']:
|
6285
6285
|
request['category'] = 'linear'
|
6286
6286
|
elif market['inverse']:
|
ccxt/async_support/coinex.py
CHANGED
@@ -3488,48 +3488,49 @@ class coinex(Exchange, ImplicitAPI):
|
|
3488
3488
|
async def create_deposit_address(self, code: str, params={}):
|
3489
3489
|
"""
|
3490
3490
|
create a currency deposit address
|
3491
|
-
:see: https://
|
3491
|
+
:see: https://docs.coinex.com/api/v2/assets/deposit-withdrawal/http/update-deposit-address
|
3492
3492
|
:param str code: unified currency code of the currency for the deposit address
|
3493
3493
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
3494
|
+
:param str [params.network]: the blockchain network to create a deposit address on
|
3494
3495
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
3495
3496
|
"""
|
3496
3497
|
await self.load_markets()
|
3497
3498
|
currency = self.currency(code)
|
3499
|
+
network = self.safe_string_2(params, 'chain', 'network')
|
3500
|
+
if network is None:
|
3501
|
+
raise ArgumentsRequired(self.id + ' createDepositAddress() requires a network parameter')
|
3502
|
+
params = self.omit(params, 'network')
|
3498
3503
|
request = {
|
3499
|
-
'
|
3504
|
+
'ccy': currency['id'],
|
3505
|
+
'chain': self.network_code_to_id(network, currency['code']),
|
3500
3506
|
}
|
3501
|
-
|
3502
|
-
network = self.safe_string(params, 'network')
|
3503
|
-
params = self.omit(params, 'network')
|
3504
|
-
request['smart_contract_name'] = network
|
3505
|
-
response = await self.v1PrivatePutBalanceDepositAddressCoinType(self.extend(request, params))
|
3507
|
+
response = await self.v2PrivatePostAssetsRenewalDepositAddress(self.extend(request, params))
|
3506
3508
|
#
|
3507
3509
|
# {
|
3508
3510
|
# "code": 0,
|
3509
3511
|
# "data": {
|
3510
|
-
# "
|
3511
|
-
# "
|
3512
|
+
# "address": "0x321bd6479355142334f45653ad5d8b76105a1234",
|
3513
|
+
# "memo": ""
|
3512
3514
|
# },
|
3513
|
-
# "message": "
|
3515
|
+
# "message": "OK"
|
3514
3516
|
# }
|
3517
|
+
#
|
3515
3518
|
data = self.safe_dict(response, 'data', {})
|
3516
3519
|
return self.parse_deposit_address(data, currency)
|
3517
3520
|
|
3518
3521
|
async def fetch_deposit_address(self, code: str, params={}):
|
3519
3522
|
"""
|
3520
3523
|
fetch the deposit address for a currency associated with self account
|
3521
|
-
:see: https://
|
3524
|
+
:see: https://docs.coinex.com/api/v2/assets/deposit-withdrawal/http/get-deposit-address
|
3522
3525
|
:param str code: unified currency code
|
3523
3526
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
3527
|
+
:param str [params.network]: the blockchain network to create a deposit address on
|
3524
3528
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
3525
3529
|
"""
|
3526
3530
|
await self.load_markets()
|
3527
3531
|
currency = self.currency(code)
|
3528
|
-
|
3529
|
-
|
3530
|
-
}
|
3531
|
-
networks = self.safe_value(currency, 'networks', {})
|
3532
|
-
network = self.safe_string(params, 'network')
|
3532
|
+
networks = self.safe_dict(currency, 'networks', {})
|
3533
|
+
network = self.safe_string_2(params, 'network', 'chain')
|
3533
3534
|
params = self.omit(params, 'network')
|
3534
3535
|
networksKeys = list(networks.keys())
|
3535
3536
|
numOfNetworks = len(networksKeys)
|
@@ -3538,23 +3539,24 @@ class coinex(Exchange, ImplicitAPI):
|
|
3538
3539
|
raise ArgumentsRequired(self.id + ' fetchDepositAddress() ' + code + ' requires a network parameter')
|
3539
3540
|
if not (network in networks):
|
3540
3541
|
raise ExchangeError(self.id + ' fetchDepositAddress() ' + network + ' network not supported for ' + code)
|
3541
|
-
|
3542
|
-
|
3543
|
-
|
3542
|
+
request = {
|
3543
|
+
'ccy': currency['id'],
|
3544
|
+
'chain': network,
|
3545
|
+
}
|
3546
|
+
response = await self.v2PrivateGetAssetsDepositAddress(self.extend(request, params))
|
3544
3547
|
#
|
3545
|
-
#
|
3546
|
-
#
|
3547
|
-
#
|
3548
|
-
#
|
3549
|
-
#
|
3550
|
-
#
|
3551
|
-
#
|
3552
|
-
#
|
3553
|
-
# }
|
3548
|
+
# {
|
3549
|
+
# "code": 0,
|
3550
|
+
# "data": {
|
3551
|
+
# "address": "0x321bd6479355142334f45653ad5d8b76105a1234",
|
3552
|
+
# "memo": ""
|
3553
|
+
# },
|
3554
|
+
# "message": "OK"
|
3555
|
+
# }
|
3554
3556
|
#
|
3555
|
-
data = self.
|
3557
|
+
data = self.safe_dict(response, 'data', {})
|
3556
3558
|
depositAddress = self.parse_deposit_address(data, currency)
|
3557
|
-
options = self.
|
3559
|
+
options = self.safe_dict(self.options, 'fetchDepositAddress', {})
|
3558
3560
|
fillResponseFromRequest = self.safe_bool(options, 'fillResponseFromRequest', True)
|
3559
3561
|
if fillResponseFromRequest:
|
3560
3562
|
depositAddress['network'] = self.safe_network_code(network, currency)
|
@@ -3578,11 +3580,11 @@ class coinex(Exchange, ImplicitAPI):
|
|
3578
3580
|
def parse_deposit_address(self, depositAddress, currency: Currency = None):
|
3579
3581
|
#
|
3580
3582
|
# {
|
3581
|
-
# "
|
3582
|
-
# "
|
3583
|
+
# "address": "1P1JqozxioQwaqPwgMAQdNDYNyaVSqgARq",
|
3584
|
+
# "memo": ""
|
3583
3585
|
# }
|
3584
3586
|
#
|
3585
|
-
coinAddress = self.safe_string(depositAddress, '
|
3587
|
+
coinAddress = self.safe_string(depositAddress, 'address')
|
3586
3588
|
parts = coinAddress.split(':')
|
3587
3589
|
address = None
|
3588
3590
|
tag = None
|
ccxt/async_support/cryptocom.py
CHANGED
@@ -509,7 +509,8 @@ class cryptocom(Exchange, ImplicitAPI):
|
|
509
509
|
strike = self.safe_string(market, 'strike')
|
510
510
|
marginBuyEnabled = self.safe_value(market, 'margin_buy_enabled')
|
511
511
|
marginSellEnabled = self.safe_value(market, 'margin_sell_enabled')
|
512
|
-
|
512
|
+
expiryString = self.omit_zero(self.safe_string(market, 'expiry_timestamp_ms'))
|
513
|
+
expiry = int(expiryString) if (expiryString is not None) else None
|
513
514
|
symbol = base + '/' + quote
|
514
515
|
type = None
|
515
516
|
contract = None
|
ccxt/async_support/hitbtc.py
CHANGED
ccxt/async_support/luno.py
CHANGED
@@ -150,6 +150,7 @@ class luno(Exchange, ImplicitAPI):
|
|
150
150
|
'withdrawals': 1,
|
151
151
|
'send': 1,
|
152
152
|
'oauth2/grant': 1,
|
153
|
+
'beneficiaries': 1,
|
153
154
|
# POST /api/exchange/1/move
|
154
155
|
},
|
155
156
|
'put': {
|
@@ -157,6 +158,7 @@ class luno(Exchange, ImplicitAPI):
|
|
157
158
|
},
|
158
159
|
'delete': {
|
159
160
|
'withdrawals/{id}': 1,
|
161
|
+
'beneficiaries/{id}': 1,
|
160
162
|
},
|
161
163
|
},
|
162
164
|
},
|
ccxt/async_support/phemex.py
CHANGED
@@ -2299,7 +2299,7 @@ class phemex(Exchange, ImplicitAPI):
|
|
2299
2299
|
if lastTradeTimestamp == 0:
|
2300
2300
|
lastTradeTimestamp = None
|
2301
2301
|
timeInForce = self.parse_time_in_force(self.safe_string(order, 'timeInForce'))
|
2302
|
-
stopPrice = self.omit_zero(self.
|
2302
|
+
stopPrice = self.omit_zero(self.safe_string_2(order, 'stopPx', 'stopPxRp'))
|
2303
2303
|
postOnly = (timeInForce == 'PO')
|
2304
2304
|
reduceOnly = self.safe_value(order, 'reduceOnly')
|
2305
2305
|
execInst = self.safe_string(order, 'execInst')
|
ccxt/base/errors.py
CHANGED
@@ -15,6 +15,7 @@ error_hierarchy = {
|
|
15
15
|
'NoChange': {
|
16
16
|
'MarginModeAlreadySet': {},
|
17
17
|
},
|
18
|
+
'MarketClosed': {},
|
18
19
|
},
|
19
20
|
'BadResponse': {
|
20
21
|
'NullResponse': {},
|
@@ -99,6 +100,10 @@ class MarginModeAlreadySet(NoChange):
|
|
99
100
|
pass
|
100
101
|
|
101
102
|
|
103
|
+
class MarketClosed(OperationRejected):
|
104
|
+
pass
|
105
|
+
|
106
|
+
|
102
107
|
class BadResponse(ExchangeError):
|
103
108
|
pass
|
104
109
|
|
@@ -209,6 +214,7 @@ __all__ = [
|
|
209
214
|
'OperationRejected',
|
210
215
|
'NoChange',
|
211
216
|
'MarginModeAlreadySet',
|
217
|
+
'MarketClosed',
|
212
218
|
'BadResponse',
|
213
219
|
'NullResponse',
|
214
220
|
'InsufficientFunds',
|
ccxt/base/exchange.py
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
# -----------------------------------------------------------------------------
|
6
6
|
|
7
|
-
__version__ = '4.3.
|
7
|
+
__version__ = '4.3.15'
|
8
8
|
|
9
9
|
# -----------------------------------------------------------------------------
|
10
10
|
|
@@ -3092,15 +3092,15 @@ class Exchange(object):
|
|
3092
3092
|
# timestamp and symbol operations don't belong in safeTicker
|
3093
3093
|
# they should be done in the derived classes
|
3094
3094
|
return self.extend(ticker, {
|
3095
|
-
'bid': self.parse_number(self.omit_zero(self.
|
3095
|
+
'bid': self.parse_number(self.omit_zero(self.safe_string(ticker, 'bid'))),
|
3096
3096
|
'bidVolume': self.safe_number(ticker, 'bidVolume'),
|
3097
|
-
'ask': self.parse_number(self.omit_zero(self.
|
3097
|
+
'ask': self.parse_number(self.omit_zero(self.safe_string(ticker, 'ask'))),
|
3098
3098
|
'askVolume': self.safe_number(ticker, 'askVolume'),
|
3099
3099
|
'high': self.parse_number(self.omit_zero(self.safe_string(ticker, 'high'))),
|
3100
|
-
'low': self.parse_number(self.omit_zero(self.
|
3101
|
-
'open': self.parse_number(self.omit_zero(
|
3102
|
-
'close': self.parse_number(self.omit_zero(
|
3103
|
-
'last': self.parse_number(self.omit_zero(
|
3100
|
+
'low': self.parse_number(self.omit_zero(self.safe_string(ticker, 'low'))),
|
3101
|
+
'open': self.parse_number(self.omit_zero(open)),
|
3102
|
+
'close': self.parse_number(self.omit_zero(close)),
|
3103
|
+
'last': self.parse_number(self.omit_zero(last)),
|
3104
3104
|
'change': self.parse_number(change),
|
3105
3105
|
'percentage': self.parse_number(percentage),
|
3106
3106
|
'average': self.parse_number(average),
|
ccxt/binance.py
CHANGED
@@ -18,6 +18,7 @@ from ccxt.base.errors import BadRequest
|
|
18
18
|
from ccxt.base.errors import BadSymbol
|
19
19
|
from ccxt.base.errors import OperationRejected
|
20
20
|
from ccxt.base.errors import MarginModeAlreadySet
|
21
|
+
from ccxt.base.errors import MarketClosed
|
21
22
|
from ccxt.base.errors import BadResponse
|
22
23
|
from ccxt.base.errors import InsufficientFunds
|
23
24
|
from ccxt.base.errors import InvalidOrder
|
@@ -2418,7 +2419,7 @@ class binance(Exchange, ImplicitAPI):
|
|
2418
2419
|
'Rest API trading is not enabled.': PermissionDenied,
|
2419
2420
|
'This account may not place or cancel orders.': PermissionDenied,
|
2420
2421
|
"You don't have permission.": PermissionDenied, # {"msg":"You don't have permission.","success":false}
|
2421
|
-
'Market is closed.':
|
2422
|
+
'Market is closed.': MarketClosed, # {"code":-1013,"msg":"Market is closed."}
|
2422
2423
|
'Too many requests. Please try again later.': RateLimitExceeded, # {"msg":"Too many requests. Please try again later.","success":false}
|
2423
2424
|
'This action is disabled on self account.': AccountSuspended, # {"code":-2011,"msg":"This action is disabled on self account."}
|
2424
2425
|
'Limit orders require GTC for self phase.': BadRequest,
|
@@ -3885,8 +3886,8 @@ class binance(Exchange, ImplicitAPI):
|
|
3885
3886
|
"""
|
3886
3887
|
fetches the last price for multiple markets
|
3887
3888
|
:see: https://binance-docs.github.io/apidocs/spot/en/#symbol-price-ticker # spot
|
3888
|
-
:see: https://binance-docs.github.io/apidocs/
|
3889
|
-
:see: https://binance-docs.github.io/apidocs/delivery/en/#symbol-price-
|
3889
|
+
:see: https://binance-docs.github.io/apidocs/futures/en/#symbol-price-ticker # swap
|
3890
|
+
:see: https://binance-docs.github.io/apidocs/delivery/en/#symbol-price-tickers # future
|
3890
3891
|
:param str[]|None symbols: unified symbols of the markets to fetch the last prices
|
3891
3892
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
3892
3893
|
:param str [params.subType]: "linear" or "inverse"
|
ccxt/bingx.py
CHANGED
@@ -400,6 +400,7 @@ class bingx(Exchange, ImplicitAPI):
|
|
400
400
|
'100202': InsufficientFunds,
|
401
401
|
'100204': BadRequest,
|
402
402
|
'100400': BadRequest,
|
403
|
+
'100410': OperationFailed, # {"code":100410,"msg":"The current system is busy, please try again later"}
|
403
404
|
'100421': BadSymbol, # {"code":100421,"msg":"This pair is currently restricted from API trading","debugMsg":""}
|
404
405
|
'100440': ExchangeError,
|
405
406
|
'100500': OperationFailed, # {"code":100500,"msg":"The current system is busy, please try again later","debugMsg":""}
|
ccxt/bybit.py
CHANGED
@@ -6267,19 +6267,19 @@ class bybit(Exchange, ImplicitAPI):
|
|
6267
6267
|
isUsdcSettled = market['settle'] == 'USDC'
|
6268
6268
|
# engage in leverage setting
|
6269
6269
|
# we reuse the code here instead of having two methods
|
6270
|
-
|
6270
|
+
leverageString = self.number_to_string(leverage)
|
6271
6271
|
request = {
|
6272
6272
|
'symbol': market['id'],
|
6273
|
-
'buyLeverage':
|
6274
|
-
'sellLeverage':
|
6273
|
+
'buyLeverage': leverageString,
|
6274
|
+
'sellLeverage': leverageString,
|
6275
6275
|
}
|
6276
6276
|
response = None
|
6277
6277
|
if isUsdcSettled and not isUnifiedAccount:
|
6278
|
-
request['leverage'] =
|
6278
|
+
request['leverage'] = leverageString
|
6279
6279
|
response = self.privatePostPerpetualUsdcOpenapiPrivateV1PositionLeverageSave(self.extend(request, params))
|
6280
6280
|
else:
|
6281
|
-
request['buyLeverage'] =
|
6282
|
-
request['sellLeverage'] =
|
6281
|
+
request['buyLeverage'] = leverageString
|
6282
|
+
request['sellLeverage'] = leverageString
|
6283
6283
|
if market['linear']:
|
6284
6284
|
request['category'] = 'linear'
|
6285
6285
|
elif market['inverse']:
|
ccxt/coinex.py
CHANGED
@@ -3487,48 +3487,49 @@ class coinex(Exchange, ImplicitAPI):
|
|
3487
3487
|
def create_deposit_address(self, code: str, params={}):
|
3488
3488
|
"""
|
3489
3489
|
create a currency deposit address
|
3490
|
-
:see: https://
|
3490
|
+
:see: https://docs.coinex.com/api/v2/assets/deposit-withdrawal/http/update-deposit-address
|
3491
3491
|
:param str code: unified currency code of the currency for the deposit address
|
3492
3492
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
3493
|
+
:param str [params.network]: the blockchain network to create a deposit address on
|
3493
3494
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
3494
3495
|
"""
|
3495
3496
|
self.load_markets()
|
3496
3497
|
currency = self.currency(code)
|
3498
|
+
network = self.safe_string_2(params, 'chain', 'network')
|
3499
|
+
if network is None:
|
3500
|
+
raise ArgumentsRequired(self.id + ' createDepositAddress() requires a network parameter')
|
3501
|
+
params = self.omit(params, 'network')
|
3497
3502
|
request = {
|
3498
|
-
'
|
3503
|
+
'ccy': currency['id'],
|
3504
|
+
'chain': self.network_code_to_id(network, currency['code']),
|
3499
3505
|
}
|
3500
|
-
|
3501
|
-
network = self.safe_string(params, 'network')
|
3502
|
-
params = self.omit(params, 'network')
|
3503
|
-
request['smart_contract_name'] = network
|
3504
|
-
response = self.v1PrivatePutBalanceDepositAddressCoinType(self.extend(request, params))
|
3506
|
+
response = self.v2PrivatePostAssetsRenewalDepositAddress(self.extend(request, params))
|
3505
3507
|
#
|
3506
3508
|
# {
|
3507
3509
|
# "code": 0,
|
3508
3510
|
# "data": {
|
3509
|
-
# "
|
3510
|
-
# "
|
3511
|
+
# "address": "0x321bd6479355142334f45653ad5d8b76105a1234",
|
3512
|
+
# "memo": ""
|
3511
3513
|
# },
|
3512
|
-
# "message": "
|
3514
|
+
# "message": "OK"
|
3513
3515
|
# }
|
3516
|
+
#
|
3514
3517
|
data = self.safe_dict(response, 'data', {})
|
3515
3518
|
return self.parse_deposit_address(data, currency)
|
3516
3519
|
|
3517
3520
|
def fetch_deposit_address(self, code: str, params={}):
|
3518
3521
|
"""
|
3519
3522
|
fetch the deposit address for a currency associated with self account
|
3520
|
-
:see: https://
|
3523
|
+
:see: https://docs.coinex.com/api/v2/assets/deposit-withdrawal/http/get-deposit-address
|
3521
3524
|
:param str code: unified currency code
|
3522
3525
|
:param dict [params]: extra parameters specific to the exchange API endpoint
|
3526
|
+
:param str [params.network]: the blockchain network to create a deposit address on
|
3523
3527
|
:returns dict: an `address structure <https://docs.ccxt.com/#/?id=address-structure>`
|
3524
3528
|
"""
|
3525
3529
|
self.load_markets()
|
3526
3530
|
currency = self.currency(code)
|
3527
|
-
|
3528
|
-
|
3529
|
-
}
|
3530
|
-
networks = self.safe_value(currency, 'networks', {})
|
3531
|
-
network = self.safe_string(params, 'network')
|
3531
|
+
networks = self.safe_dict(currency, 'networks', {})
|
3532
|
+
network = self.safe_string_2(params, 'network', 'chain')
|
3532
3533
|
params = self.omit(params, 'network')
|
3533
3534
|
networksKeys = list(networks.keys())
|
3534
3535
|
numOfNetworks = len(networksKeys)
|
@@ -3537,23 +3538,24 @@ class coinex(Exchange, ImplicitAPI):
|
|
3537
3538
|
raise ArgumentsRequired(self.id + ' fetchDepositAddress() ' + code + ' requires a network parameter')
|
3538
3539
|
if not (network in networks):
|
3539
3540
|
raise ExchangeError(self.id + ' fetchDepositAddress() ' + network + ' network not supported for ' + code)
|
3540
|
-
|
3541
|
-
|
3542
|
-
|
3541
|
+
request = {
|
3542
|
+
'ccy': currency['id'],
|
3543
|
+
'chain': network,
|
3544
|
+
}
|
3545
|
+
response = self.v2PrivateGetAssetsDepositAddress(self.extend(request, params))
|
3543
3546
|
#
|
3544
|
-
#
|
3545
|
-
#
|
3546
|
-
#
|
3547
|
-
#
|
3548
|
-
#
|
3549
|
-
#
|
3550
|
-
#
|
3551
|
-
#
|
3552
|
-
# }
|
3547
|
+
# {
|
3548
|
+
# "code": 0,
|
3549
|
+
# "data": {
|
3550
|
+
# "address": "0x321bd6479355142334f45653ad5d8b76105a1234",
|
3551
|
+
# "memo": ""
|
3552
|
+
# },
|
3553
|
+
# "message": "OK"
|
3554
|
+
# }
|
3553
3555
|
#
|
3554
|
-
data = self.
|
3556
|
+
data = self.safe_dict(response, 'data', {})
|
3555
3557
|
depositAddress = self.parse_deposit_address(data, currency)
|
3556
|
-
options = self.
|
3558
|
+
options = self.safe_dict(self.options, 'fetchDepositAddress', {})
|
3557
3559
|
fillResponseFromRequest = self.safe_bool(options, 'fillResponseFromRequest', True)
|
3558
3560
|
if fillResponseFromRequest:
|
3559
3561
|
depositAddress['network'] = self.safe_network_code(network, currency)
|
@@ -3577,11 +3579,11 @@ class coinex(Exchange, ImplicitAPI):
|
|
3577
3579
|
def parse_deposit_address(self, depositAddress, currency: Currency = None):
|
3578
3580
|
#
|
3579
3581
|
# {
|
3580
|
-
# "
|
3581
|
-
# "
|
3582
|
+
# "address": "1P1JqozxioQwaqPwgMAQdNDYNyaVSqgARq",
|
3583
|
+
# "memo": ""
|
3582
3584
|
# }
|
3583
3585
|
#
|
3584
|
-
coinAddress = self.safe_string(depositAddress, '
|
3586
|
+
coinAddress = self.safe_string(depositAddress, 'address')
|
3585
3587
|
parts = coinAddress.split(':')
|
3586
3588
|
address = None
|
3587
3589
|
tag = None
|
ccxt/cryptocom.py
CHANGED
@@ -509,7 +509,8 @@ class cryptocom(Exchange, ImplicitAPI):
|
|
509
509
|
strike = self.safe_string(market, 'strike')
|
510
510
|
marginBuyEnabled = self.safe_value(market, 'margin_buy_enabled')
|
511
511
|
marginSellEnabled = self.safe_value(market, 'margin_sell_enabled')
|
512
|
-
|
512
|
+
expiryString = self.omit_zero(self.safe_string(market, 'expiry_timestamp_ms'))
|
513
|
+
expiry = int(expiryString) if (expiryString is not None) else None
|
513
514
|
symbol = base + '/' + quote
|
514
515
|
type = None
|
515
516
|
contract = None
|
ccxt/hitbtc.py
CHANGED
ccxt/luno.py
CHANGED
@@ -150,6 +150,7 @@ class luno(Exchange, ImplicitAPI):
|
|
150
150
|
'withdrawals': 1,
|
151
151
|
'send': 1,
|
152
152
|
'oauth2/grant': 1,
|
153
|
+
'beneficiaries': 1,
|
153
154
|
# POST /api/exchange/1/move
|
154
155
|
},
|
155
156
|
'put': {
|
@@ -157,6 +158,7 @@ class luno(Exchange, ImplicitAPI):
|
|
157
158
|
},
|
158
159
|
'delete': {
|
159
160
|
'withdrawals/{id}': 1,
|
161
|
+
'beneficiaries/{id}': 1,
|
160
162
|
},
|
161
163
|
},
|
162
164
|
},
|
ccxt/phemex.py
CHANGED
@@ -2299,7 +2299,7 @@ class phemex(Exchange, ImplicitAPI):
|
|
2299
2299
|
if lastTradeTimestamp == 0:
|
2300
2300
|
lastTradeTimestamp = None
|
2301
2301
|
timeInForce = self.parse_time_in_force(self.safe_string(order, 'timeInForce'))
|
2302
|
-
stopPrice = self.omit_zero(self.
|
2302
|
+
stopPrice = self.omit_zero(self.safe_string_2(order, 'stopPx', 'stopPxRp'))
|
2303
2303
|
postOnly = (timeInForce == 'PO')
|
2304
2304
|
reduceOnly = self.safe_value(order, 'reduceOnly')
|
2305
2305
|
execInst = self.safe_string(order, 'execInst')
|
ccxt/pro/__init__.py
CHANGED
ccxt/pro/hitbtc.py
CHANGED
@@ -1123,7 +1123,7 @@ class hitbtc(ccxt.async_support.hitbtc):
|
|
1123
1123
|
# "id": 1700233093414
|
1124
1124
|
# }
|
1125
1125
|
#
|
1126
|
-
messageHash = self.
|
1126
|
+
messageHash = self.safe_string(message, 'id')
|
1127
1127
|
result = self.safe_value(message, 'result', {})
|
1128
1128
|
if isinstance(result, list):
|
1129
1129
|
parsedOrders = []
|
ccxt/pro/independentreserve.py
CHANGED
@@ -135,9 +135,9 @@ class independentreserve(ccxt.async_support.independentreserve):
|
|
135
135
|
symbol = market['symbol']
|
136
136
|
if limit is None:
|
137
137
|
limit = 100
|
138
|
-
|
139
|
-
url = self.urls['api']['ws'] + '/orderbook/' +
|
140
|
-
messageHash = 'orderbook:' + symbol + ':' +
|
138
|
+
limitString = self.number_to_string(limit)
|
139
|
+
url = self.urls['api']['ws'] + '/orderbook/' + limitString + '?subscribe=' + market['base'] + '-' + market['quote']
|
140
|
+
messageHash = 'orderbook:' + symbol + ':' + limitString
|
141
141
|
subscription = {
|
142
142
|
'receivedSnapshot': False,
|
143
143
|
}
|
ccxt/pro/poloniex.py
CHANGED
@@ -298,7 +298,7 @@ class poloniex(ccxt.async_support.poloniex):
|
|
298
298
|
# }]
|
299
299
|
# }
|
300
300
|
#
|
301
|
-
messageHash = self.
|
301
|
+
messageHash = self.safe_string(message, 'id')
|
302
302
|
data = self.safe_value(message, 'data', [])
|
303
303
|
orders = []
|
304
304
|
for i in range(0, len(data)):
|
@@ -606,8 +606,8 @@ class poloniex(ccxt.async_support.poloniex):
|
|
606
606
|
'type': self.safe_string_lower(trade, 'type'),
|
607
607
|
'side': self.safe_string_lower_2(trade, 'takerSide', 'side'),
|
608
608
|
'takerOrMaker': takerMaker,
|
609
|
-
'price': self.omit_zero(self.
|
610
|
-
'amount': self.omit_zero(self.
|
609
|
+
'price': self.omit_zero(self.safe_string_2(trade, 'tradePrice', 'price')),
|
610
|
+
'amount': self.omit_zero(self.safe_string_2(trade, 'filledQuantity', 'quantity')),
|
611
611
|
'cost': self.safe_string_2(trade, 'amount', 'filledAmount'),
|
612
612
|
'fee': {
|
613
613
|
'rate': None,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ccxt
|
3
|
-
Version: 4.3.
|
3
|
+
Version: 4.3.15
|
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
|
@@ -262,13 +262,13 @@ console.log(version, Object.keys(exchanges));
|
|
262
262
|
|
263
263
|
All-in-one browser bundle (dependencies included), served from a CDN of your choice:
|
264
264
|
|
265
|
-
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.
|
266
|
-
* unpkg: https://unpkg.com/ccxt@4.3.
|
265
|
+
* jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.15/dist/ccxt.browser.js
|
266
|
+
* unpkg: https://unpkg.com/ccxt@4.3.15/dist/ccxt.browser.js
|
267
267
|
|
268
268
|
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.
|
269
269
|
|
270
270
|
```HTML
|
271
|
-
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.
|
271
|
+
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.15/dist/ccxt.browser.js"></script>
|
272
272
|
```
|
273
273
|
|
274
274
|
Creates a global `ccxt` object:
|
@@ -1,14 +1,14 @@
|
|
1
|
-
ccxt/__init__.py,sha256=
|
1
|
+
ccxt/__init__.py,sha256=tTh-nI_rfZEgz_Azhlc6qJGL2d0jyLzHX0niK9CHja4,15739
|
2
2
|
ccxt/ace.py,sha256=j7Aq0hnsMTcUCIrWCm-ZZMkptWzAY23D8zi3jZWjq3c,41650
|
3
3
|
ccxt/alpaca.py,sha256=h9GWMKpoPOXTcYESHQKM3MWGrrqEgFvs8sLkQx0YSLs,47182
|
4
4
|
ccxt/ascendex.py,sha256=kxKDSqysYC_VHWsRHgNqEwGbQmKw8WIH_Cp2z6vouyg,151398
|
5
5
|
ccxt/bequant.py,sha256=RBiAmaTbL35DgiV3Hl6uchLUd78V0z1T9riTlNsrpdc,1174
|
6
6
|
ccxt/bigone.py,sha256=e9bOBUENqxUI1IjcCRBpc_eb7CilAxgk0tHGguESOEU,92168
|
7
|
-
ccxt/binance.py,sha256=
|
7
|
+
ccxt/binance.py,sha256=Yfd-gObsdcxLhdkWgEu_oaseQgmDWwOeT_jKAT6kCJw,615682
|
8
8
|
ccxt/binancecoinm.py,sha256=pncdw6Xw2X1Po-vEvAB4nL37scoS_axGAVxetPy1YQs,1645
|
9
9
|
ccxt/binanceus.py,sha256=hdcT4OnadcdFFFjF3GtM0nWv90jqojqwdVS3xWGuW40,9163
|
10
10
|
ccxt/binanceusdm.py,sha256=KPQGlCalQ0eGlPCs2tSanOxaP8O0zFRQjGntA16Yprw,2480
|
11
|
-
ccxt/bingx.py,sha256=
|
11
|
+
ccxt/bingx.py,sha256=hnsQauPUdWF6YS8F63-8D9Q5XLD2pvSKQuFfM0jg6VQ,184719
|
12
12
|
ccxt/bit2c.py,sha256=zDMcQVszvO39Lo4Km_aU16AN0MoVz7WhJrLnTua5Pm0,36901
|
13
13
|
ccxt/bitbank.py,sha256=XC2n0jpXEV7L7JoaIgjroAd__FQzucDRZnNJPfmwHWg,41839
|
14
14
|
ccxt/bitbay.py,sha256=xAIjzGRDVGwoy-Gygd99H0YN4wiaz_0lR0Z14oxaaxc,478
|
@@ -35,20 +35,20 @@ ccxt/btcalpha.py,sha256=9cjW8u3j3L5Jok3G0_WbILreo5MG40yo7OxNTkArewY,36695
|
|
35
35
|
ccxt/btcbox.py,sha256=fI62e8f0CBMbSrVD1Cukk2SHcd4o4PcNfiEEbrIUETQ,23486
|
36
36
|
ccxt/btcmarkets.py,sha256=R_LqHslDyQeJ6rQdN3sH02ICf4M91Dt_MegrpEi19lY,51478
|
37
37
|
ccxt/btcturk.py,sha256=yz2w0eRyWju4znaIovBkVrQN-mjm3XlR_5F7AmQaogU,36651
|
38
|
-
ccxt/bybit.py,sha256=
|
38
|
+
ccxt/bybit.py,sha256=FgbHJDebwmJDHgUPOEnVtFksQlM_ADWRTJ0RnuzN9D8,410634
|
39
39
|
ccxt/cex.py,sha256=nIBZhdCtCeKLapnwHDZ9QSkjoIlgLmTggh-7BTEL3ug,69924
|
40
40
|
ccxt/coinbase.py,sha256=zrPkfEPaiX8LVfqpQ7VoLtefxZmOPMoBASlLa4v9wtk,211987
|
41
41
|
ccxt/coinbaseinternational.py,sha256=YHt9l8lf78A-UPwPPP_uQ7U8qom-1wnxD-UAgDHYl0k,87207
|
42
42
|
ccxt/coinbasepro.py,sha256=MHlfA0VS0PrYyTjcwcit7I04nD-P6zgICkYzAI611Rc,78665
|
43
43
|
ccxt/coincheck.py,sha256=GYkK5BTSFsJOuR5fSCysUqNK5b2FjEjz7dIBHXmc1Xs,35658
|
44
|
-
ccxt/coinex.py,sha256=
|
44
|
+
ccxt/coinex.py,sha256=7e6A4yjx5hAVmUlEzOO1hn5VJ7kzVJYU_t5YoLOWsxc,269475
|
45
45
|
ccxt/coinlist.py,sha256=KFP4eawW0ce-xJ15t3kuPQCLKSXQQTvkDjWfzRXtS3w,103087
|
46
46
|
ccxt/coinmate.py,sha256=bFSSHuOSL2OQdMZXa_5sNkXoM0FIxWgiCd0tgJjIo4M,45940
|
47
47
|
ccxt/coinmetro.py,sha256=13ibUWPJ5EOGaaBoZyeit23VMkV-fqfyw01XI2vdyLU,80661
|
48
48
|
ccxt/coinone.py,sha256=q0Wxrp9RWjR_zz38DnR-l60MkROsUKxcRYnJcIK9EwE,46890
|
49
49
|
ccxt/coinsph.py,sha256=FCtZiitRluc6j8v97o1cwW4R7CT1BsX2AMVV5XU9z-U,90626
|
50
50
|
ccxt/coinspot.py,sha256=JLL9adBf137shW_vLr3LfGS5zxN6oTnEjzJkVaCkDbs,23608
|
51
|
-
ccxt/cryptocom.py,sha256=
|
51
|
+
ccxt/cryptocom.py,sha256=4fzjcJLCdtHNPZp3E01wt_1Pte5ycIs604si4bA_Hyo,129718
|
52
52
|
ccxt/currencycom.py,sha256=Y0foIftGaqxSRpkjgO-XTGifgFKnAINXYtrJRtBODYM,86759
|
53
53
|
ccxt/delta.py,sha256=BspjNAbU6nY9vKdnotWOtROIxkEuVJjpR0FNLIwLzJQ,150451
|
54
54
|
ccxt/deribit.py,sha256=8cHi-ceBc1SwWTyzuanmhofDvh_zMbiCrch6SUxkR6U,160453
|
@@ -58,7 +58,7 @@ ccxt/fmfwio.py,sha256=RbVLvzPwnqfDsE7Ea-N13ISCC82eJVPsXYjrleASmew,1236
|
|
58
58
|
ccxt/gate.py,sha256=8TODmWPxKDRZ18n03tHWdmeZVDEmctF37sZ8vGp_gPw,319742
|
59
59
|
ccxt/gateio.py,sha256=86AETJWODl_vA5VNeQRHZprmpNIY1HAxCddKZcnKSi8,445
|
60
60
|
ccxt/gemini.py,sha256=JlnV4G-papCiPymgNQsWMwlwg6YMo0YHd370AuAaVPk,80619
|
61
|
-
ccxt/hitbtc.py,sha256
|
61
|
+
ccxt/hitbtc.py,sha256=-Vprl-XJ2Wr6vw2GMQpGlHjCFHH14HjeCGVEGfgW6h4,152964
|
62
62
|
ccxt/hitbtc3.py,sha256=qRAr4Zvaju9IQWRZUohdoN7xRnzIMPq8AyYb3gPv-Is,455
|
63
63
|
ccxt/hollaex.py,sha256=leWQXb90dDdCdFDKQav5S5X82HN3D7S-dciORAOBA-g,75898
|
64
64
|
ccxt/htx.py,sha256=VwErziLq0kj3BH0Yt4cbpIgfXZlLkE7Ap1QTqYzcRNA,420397
|
@@ -75,7 +75,7 @@ ccxt/kucoinfutures.py,sha256=xlT3-JJxMhnQxxfoiQ_Und_FJO7l-pzeonv9f1Dk9fU,124286
|
|
75
75
|
ccxt/kuna.py,sha256=Io7T-gg43lTJI0ZoVp6ZQ8MOVPP21raUvDbCKgonuiE,95985
|
76
76
|
ccxt/latoken.py,sha256=wzrKCGTfp9qN6pfuzHqi8bg9q6MifGqUt9zLMaIlgA0,79051
|
77
77
|
ccxt/lbank.py,sha256=lx8kBrKsLJlnhphUzMcQe-JOmZd6N_PeIxQFrxL9M1k,115169
|
78
|
-
ccxt/luno.py,sha256=
|
78
|
+
ccxt/luno.py,sha256=A3qSj-mu1C_wIJxeQwRg_MTwdNcN1gZzBcDcdEfudNQ,45881
|
79
79
|
ccxt/lykke.py,sha256=Uv2kUW7RtNoFxZlGTEjBu3P-N9dBW3CcuNCaUjsnXeE,51064
|
80
80
|
ccxt/mercado.py,sha256=BZb5a0_SDKAz7CUCeiftkVtZnfnos8GpgwNyk57aa-s,35333
|
81
81
|
ccxt/mexc.py,sha256=6c7Ecdq6vCJwfXqOO4bhS8BYq1sY2kB5pQrRyOGejYY,240769
|
@@ -87,7 +87,7 @@ ccxt/okx.py,sha256=Zv0gbbCOE9ZpszIZ5QqABdhC3BmBCExVQqvtiBbQ9uQ,373701
|
|
87
87
|
ccxt/onetrading.py,sha256=T68x4qfncbcnXU-YdMTVEGwnr3zKvcbbfdQZa8Zourc,88107
|
88
88
|
ccxt/p2b.py,sha256=FYxL36KwtaLIIQ793frJEtqtHyzm39hNK0mJEzAAH0U,54213
|
89
89
|
ccxt/paymium.py,sha256=2mBwmyT93k-dXBEKEix48G8PsA2IEN_5yScEM985Z10,24203
|
90
|
-
ccxt/phemex.py,sha256=
|
90
|
+
ccxt/phemex.py,sha256=wSEbzDt6Hi6QRNR1vmLr7em1hbKm8tmiwB_Pu3sqoJQ,218811
|
91
91
|
ccxt/poloniex.py,sha256=IKCZrQG0h_j7Pl1br-3fMTG-9O6hivwUzl0HzScPLDM,101953
|
92
92
|
ccxt/poloniexfutures.py,sha256=e3zuDY21yjI-7BASSWPQ-3r0c5EQY-W6QAcUCwhOSP8,77793
|
93
93
|
ccxt/probit.py,sha256=CxH2YTWaOBISrzbpdSZQ0DbaXUoOeFwc2ieQjYF4its,76340
|
@@ -179,7 +179,7 @@ ccxt/abstract/kucoinfutures.py,sha256=W6BLMw26kIxIPQJh77lrSHjvsf2wXCshvBCzxYGEpj
|
|
179
179
|
ccxt/abstract/kuna.py,sha256=IsaLq8A4DUOlQ8Esyk0WqBU6hHm5Q4sIqhgnMIvDGX0,24579
|
180
180
|
ccxt/abstract/latoken.py,sha256=1GqE9WxrubgZILnYvg7W_dGyui-FKeIv0bU4z1dQj1k,7168
|
181
181
|
ccxt/abstract/lbank.py,sha256=pdut_cIcwcUhN_ZCyWJxixBc4dgeQqvENYqFCrUYrvA,8675
|
182
|
-
ccxt/abstract/luno.py,sha256=
|
182
|
+
ccxt/abstract/luno.py,sha256=QUsEL2MMhv6qF-4pW0o0xs9lI8HsZtlrAp3sBskq7i4,3619
|
183
183
|
ccxt/abstract/lykke.py,sha256=PyLaU4RVPYTkPYsGgL2e2c9mtnz0xiy-LMOBSA4w_1g,2960
|
184
184
|
ccxt/abstract/mercado.py,sha256=qs3Fr6C_K8M-YIsGx-W9iUiFXcgQ0SA8uADvhV8mDQM,2357
|
185
185
|
ccxt/abstract/mexc.py,sha256=flgbnn-U3tmK0RMAoz1k2uHx3ZJGWB5DXlmkgxvxrrY,25902
|
@@ -206,17 +206,17 @@ ccxt/abstract/woo.py,sha256=yH0aXeyohXdyS3jZrztapwRmzNWk7JGpbrrf7pX_LKU,10368
|
|
206
206
|
ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
|
207
207
|
ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
|
208
208
|
ccxt/abstract/zonda.py,sha256=aSfewvRojzmuymX6QbOnDR8v9VFqWTULMHX9Y7kKD1M,5820
|
209
|
-
ccxt/async_support/__init__.py,sha256=
|
209
|
+
ccxt/async_support/__init__.py,sha256=8AM_g5d9XtA2ZhXcgYfK8Cy5cdMMqcUCn5QBW2IdWl4,15492
|
210
210
|
ccxt/async_support/ace.py,sha256=FNZKajNtvFhDEmBYzgv46pGMwvHbPQcqhsWRpAk9iwU,41874
|
211
211
|
ccxt/async_support/alpaca.py,sha256=A1g6mT4lc8Ab5f5Hi7U_10XltruXHlE8268s45dDd6I,47394
|
212
212
|
ccxt/async_support/ascendex.py,sha256=GJJxZnAu_OSTv3l15DbAaIsIz5QdyWAgD0-yfsTjAf4,152186
|
213
213
|
ccxt/async_support/bequant.py,sha256=1hTwHovo1bW1XTIc8ZKjvJ-Xg6LfmpGdzT7TepykaVM,1188
|
214
214
|
ccxt/async_support/bigone.py,sha256=VRcmcf65P0Uw-EpEf78u_KQdE9J6MVOKdd311z-thRA,92622
|
215
|
-
ccxt/async_support/binance.py,sha256=
|
215
|
+
ccxt/async_support/binance.py,sha256=0SdQ7KXFEBF8ThRmj6tiKhTfi-xLTjYibOgijHE9vpA,618380
|
216
216
|
ccxt/async_support/binancecoinm.py,sha256=IY3RLZptQA2nmZaUYRGfTa5ZY4VMWBpFYfwHc8zTHw0,1683
|
217
217
|
ccxt/async_support/binanceus.py,sha256=c-K3Tk7LaRJjmYdCx8vBOqsx01uXrtvt0PC2ekBiD0g,9177
|
218
218
|
ccxt/async_support/binanceusdm.py,sha256=-1r4A4tmV2pCiLGO80hzq7MIIj4MTzOD7buZGv6JauA,2518
|
219
|
-
ccxt/async_support/bingx.py,sha256=
|
219
|
+
ccxt/async_support/bingx.py,sha256=e4T7Y2teRXofJ_sG6lOThWv3c6l-lvCD1NmmMFq94wg,185755
|
220
220
|
ccxt/async_support/bit2c.py,sha256=vCfbtsUTI0j9wU51FnvzPpFwmzC3ozN4h1I4IXVgMGI,37113
|
221
221
|
ccxt/async_support/bitbank.py,sha256=48plnjcFdy6Ovd66hm32fa0qjedmkkjfnSwDB99NwbI,42099
|
222
222
|
ccxt/async_support/bitbay.py,sha256=jcaEXi2IhYTva8ezO_SfJhwxEZk7HST4J3NaxD16BQA,492
|
@@ -243,20 +243,20 @@ ccxt/async_support/btcalpha.py,sha256=tfGT1xE4_tgWhyBx5UMiwhll-xf5FWx7NZZ6v7dOt1
|
|
243
243
|
ccxt/async_support/btcbox.py,sha256=DUVQQhJSlH9QCg3RToVL4cSUtFsRomArZIav1YdLxzo,23680
|
244
244
|
ccxt/async_support/btcmarkets.py,sha256=aHWHZNsllU8dBEUPGLe78K3B0X_Q1f0PGYS7TUSSwUM,51828
|
245
245
|
ccxt/async_support/btcturk.py,sha256=tkhs24jrrjhiwPvzmAXSGZVnmrlvQxqfIi3PCP-iwN0,36869
|
246
|
-
ccxt/async_support/bybit.py,sha256=
|
246
|
+
ccxt/async_support/bybit.py,sha256=xU0mmiBxsquw54z7PuWgRsamolT-t20LRw2Mg-Qgtkc,412414
|
247
247
|
ccxt/async_support/cex.py,sha256=28Bixn0KAtlz-I171izhzgxR59sOx0tMV6d32XUkOnY,70274
|
248
248
|
ccxt/async_support/coinbase.py,sha256=TQiVDuE9ga8gwmmmFG1bpollPCoUcE3UWiNtmlbW-tM,213093
|
249
249
|
ccxt/async_support/coinbaseinternational.py,sha256=NnsZZexHNFeSFoVbJe76PCud0MZHoCWe5ZVx9SxcWhw,87761
|
250
250
|
ccxt/async_support/coinbasepro.py,sha256=450ObJYcli-6Fkpqx8iTT-Z6TB4Uek0bIXmSWLWVsFA,79171
|
251
251
|
ccxt/async_support/coincheck.py,sha256=B_qzNQzd3j-me0km8lEg7bnfp--A16fpa_W902ut5Lo,35864
|
252
|
-
ccxt/async_support/coinex.py,sha256=
|
252
|
+
ccxt/async_support/coinex.py,sha256=zESaEm_SiaiaqPuzoMDTZV3cKVcBrb9mooXM61djAxA,270769
|
253
253
|
ccxt/async_support/coinlist.py,sha256=pz2Kj7wr8yl_VojRHApidVYCfr7Kz_KkjtKSxLg-fAY,103575
|
254
254
|
ccxt/async_support/coinmate.py,sha256=XQJDqDPD2JFBDZqKzWC9AfBKV3MY3msBuYkMgUaT5M0,46206
|
255
255
|
ccxt/async_support/coinmetro.py,sha256=VPi7zqunFxgFzcedh5cOApHea1ztooxk2Mug5889q_4,80981
|
256
256
|
ccxt/async_support/coinone.py,sha256=_ypMnoeBgvfhl3N9i4x7ZeUR--PAKwm1xOt8Z_8UweI,47132
|
257
257
|
ccxt/async_support/coinsph.py,sha256=NuRYfAg8qYoYuCwtdnBCPDgX5sdQtpUx_RFRudPM4Vo,91060
|
258
258
|
ccxt/async_support/coinspot.py,sha256=eYMpIjpGdJhV1MeLBQXxJS56ArYnL-sqcUjgkb9wmjQ,23760
|
259
|
-
ccxt/async_support/cryptocom.py,sha256=
|
259
|
+
ccxt/async_support/cryptocom.py,sha256=6UdQ4VJAYvfdTyL1xiQjbQGpH3Bs8U6MAyh1ims_w3Y,130290
|
260
260
|
ccxt/async_support/currencycom.py,sha256=6mRnCI8zMKEUqiB-eyKE7i1fRsxPKIvxWRF6xMbMTf0,87181
|
261
261
|
ccxt/async_support/delta.py,sha256=FBfleA6tyZ5--6MSeqEHTf_tdWiteIkM2z2cH-Xz5ac,151059
|
262
262
|
ccxt/async_support/deribit.py,sha256=BG5mh0jsVbtRV_nYN8K1h38alM97hEB5Kho7apTHxiE,161229
|
@@ -266,7 +266,7 @@ ccxt/async_support/fmfwio.py,sha256=lzfSnPrB2ARcC3EIqAuBM4vyg6LJ6n8RE71Zvt3ez1s,
|
|
266
266
|
ccxt/async_support/gate.py,sha256=BxC6vwwVAbT2czMMwihql16QjT8xfgbTr7wirr_Zkw8,321420
|
267
267
|
ccxt/async_support/gateio.py,sha256=6_t032F9p9x5KGTjtSuqGXITzFOx-XAQBYLpsuQjzxw,459
|
268
268
|
ccxt/async_support/gemini.py,sha256=IJRx47vtwQtVjaieCH2CTWJpJqHcb1PKsq3cuMZGcIY,81132
|
269
|
-
ccxt/async_support/hitbtc.py,sha256=
|
269
|
+
ccxt/async_support/hitbtc.py,sha256=RqQuOJNznoGm1UtZfSp0zB1k79F5hdOyzUcd5p3HAoM,154010
|
270
270
|
ccxt/async_support/hitbtc3.py,sha256=dmSYoD2o4av_zzbZI8HNIoj8BWxA7QozsVpy8JaOXzU,469
|
271
271
|
ccxt/async_support/hollaex.py,sha256=LwFfI7aYpywxJlQlJ_YNnqCbmBKRcZpLILPZYPQRkh0,76332
|
272
272
|
ccxt/async_support/htx.py,sha256=L6pNRAQQam7sV7dCEDfp1-DApVIwt2fqykM_LqIU_aA,422753
|
@@ -283,7 +283,7 @@ ccxt/async_support/kucoinfutures.py,sha256=Peqak4JNEnZkcKSEP10wCuQHU9sb7HQm6BoqH
|
|
283
283
|
ccxt/async_support/kuna.py,sha256=h9rrxeXVmiLkqJhRq8eVzxjOlcFOpJos0wInSdXAW4k,96401
|
284
284
|
ccxt/async_support/latoken.py,sha256=nHDcBT-8DZMFEUp3kYeCRGpL6xRbhk8A7FM-VU8JZr4,79527
|
285
285
|
ccxt/async_support/lbank.py,sha256=QLVr6kP3ngX_2j3BMsl7wSPiWIt5t3I2VBojn-vNqzk,115881
|
286
|
-
ccxt/async_support/luno.py,sha256=
|
286
|
+
ccxt/async_support/luno.py,sha256=zCe5fQMRd7a3QMw8HhG0P7nFB75N0Xpbc9CW88K1Z44,46219
|
287
287
|
ccxt/async_support/lykke.py,sha256=-CjpYZzDY_iI1dTKUKukhJMjRb9t5u0cYbxnL7-sJpQ,51378
|
288
288
|
ccxt/async_support/mercado.py,sha256=_NFenAD-YA5LCZI-r07iwXYHAL2U3RQXGmXiIdbA5W4,35575
|
289
289
|
ccxt/async_support/mexc.py,sha256=F_vVK8nr3etdf_ip-0SjOa30pcuYuz-fQ8t4AtP_-ds,241947
|
@@ -295,7 +295,7 @@ ccxt/async_support/okx.py,sha256=r_6_AfHUlyIGaxXvxXx8JBkVzqW9o-EL8zsPv4MsYdg,375
|
|
295
295
|
ccxt/async_support/onetrading.py,sha256=2O3d2_E-oUZABQEyR9igcke0AJ-to-_J9579iDyGKfo,88559
|
296
296
|
ccxt/async_support/p2b.py,sha256=KrNc3sLbHQCxbgShyqWytuQVaQfKa42Q6_HcUYNUaKI,54455
|
297
297
|
ccxt/async_support/paymium.py,sha256=3P1J9OcDOqQKG5fUs6Xte9Xu8NB5lWu-OD-AHHGZbkM,24391
|
298
|
-
ccxt/async_support/phemex.py,sha256=
|
298
|
+
ccxt/async_support/phemex.py,sha256=i2Im9LKtOUjKguJcYXUwXVtH5D885rWS3-RFwTcr1LQ,219623
|
299
299
|
ccxt/async_support/poloniex.py,sha256=Y4eDB-JYuQUtq_QNXKbZdcCyncvFwhIiNQgMIQohDMI,102501
|
300
300
|
ccxt/async_support/poloniexfutures.py,sha256=AG2t7T7tcayFNUsRU9LGoRbYA1whYSEC2PDpFZuPVdc,78179
|
301
301
|
ccxt/async_support/probit.py,sha256=7uJBTd-R2GvAY9KEuG5CYFRk7M_hlocapcSo-MUmDh0,76732
|
@@ -311,7 +311,7 @@ ccxt/async_support/yobit.py,sha256=6eqYOcSBmXhJgcKDRMj8oRH_7aoz2E21hxgzvA1TzrA,5
|
|
311
311
|
ccxt/async_support/zaif.py,sha256=chPFWbPvYNn0KPHY0fX_nXl60WuvueRO9GNnNMpuYeo,28139
|
312
312
|
ccxt/async_support/zonda.py,sha256=nHlJJSlr_zBSiw4WrKOp2FbO33_UFMK5YyLuf2Pvjr0,80871
|
313
313
|
ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
|
314
|
-
ccxt/async_support/base/exchange.py,sha256=
|
314
|
+
ccxt/async_support/base/exchange.py,sha256=eWtRJP4dZQp7uBL0IoB5W2PP4-tZiQxqdriSHqz3jWg,107191
|
315
315
|
ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
|
316
316
|
ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
|
317
317
|
ccxt/async_support/base/ws/aiohttp_client.py,sha256=Ed1765emEde2Hj8Ys6f5EjS54ZI1wQ0qIhd04eB7yhU,5751
|
@@ -324,11 +324,11 @@ ccxt/async_support/base/ws/order_book.py,sha256=uBUaIHhzMRykpmo4BCsdJ-t_HozS6Vxh
|
|
324
324
|
ccxt/async_support/base/ws/order_book_side.py,sha256=Pxrq22nCODckJ6G1OXkYEmUunIuybSz6sh9MsDB1WMY,6478
|
325
325
|
ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
|
326
326
|
ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
|
327
|
-
ccxt/base/errors.py,sha256=
|
328
|
-
ccxt/base/exchange.py,sha256=
|
327
|
+
ccxt/base/errors.py,sha256=FGdyULeNCNcl52gA_CNhe2dZmat9GJGkTdlIyDXAF_A,4213
|
328
|
+
ccxt/base/exchange.py,sha256=jRrjam_qU9RUuD_CNsUZIN4J5qdKGQ8L4XXdIXQYxKk,275690
|
329
329
|
ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
|
330
330
|
ccxt/base/types.py,sha256=m9kkJ1elksA8JwVeoSZyL6BBH4qu3l8h5zhi3W22-1o,8495
|
331
|
-
ccxt/pro/__init__.py,sha256=
|
331
|
+
ccxt/pro/__init__.py,sha256=XqJBWVNnr1mojI_kKHkMDmIGivalVi4MHhCTV6kcZ08,6999
|
332
332
|
ccxt/pro/alpaca.py,sha256=7ePyWli0949ti5UheIn553xmnFpedrNc2W5CKauSZio,27167
|
333
333
|
ccxt/pro/ascendex.py,sha256=fCM3EujSfJvtvffqI56UAstTtwjXFIocwukm15cF8rE,35432
|
334
334
|
ccxt/pro/bequant.py,sha256=5zbsP8BHQTUZ8ZNL6uaACxDbUClgkOV4SYfXT_LfQVg,1351
|
@@ -365,14 +365,14 @@ ccxt/pro/exmo.py,sha256=gLCAObkmAyL_4BTRnftfDTejsW3-isi18ppKIipidyo,24527
|
|
365
365
|
ccxt/pro/gate.py,sha256=1PPvBNDByPUaDG475jMaBhMTVTjtyEoJdkfxiSs9jZw,52489
|
366
366
|
ccxt/pro/gateio.py,sha256=_uBWXYQbmsHRivKnZOJDmxJ9tWLO_0HAxmOjAEUy9nE,391
|
367
367
|
ccxt/pro/gemini.py,sha256=a8yZNyLnv1VI6FPhSK-d8MzG7wEX60wL8uUJrqeWmOI,36641
|
368
|
-
ccxt/pro/hitbtc.py,sha256=
|
368
|
+
ccxt/pro/hitbtc.py,sha256=JLlqcR0h6yz02FPZ2zT_hC1QEyvMwtkej4jnaDp7XE8,56284
|
369
369
|
ccxt/pro/hollaex.py,sha256=q233J-P83OZj1DN_WRRgoq2gfur5AjlW2krlkKUoQTs,21957
|
370
370
|
ccxt/pro/htx.py,sha256=tP7x0sgQqj4S2CP05nUmoq0k-DWe3okQpStSwx7SuqU,95779
|
371
371
|
ccxt/pro/huobi.py,sha256=rKZVgYqEr-MmZzTqAk4FoJt8qWFjCi_FY0ci_mWZrL0,385
|
372
372
|
ccxt/pro/huobijp.py,sha256=fcC66ECLwrR9LN_AYZZltoE_w9EltT5DcXimPOHKJk0,23174
|
373
373
|
ccxt/pro/hyperliquid.py,sha256=V6ev_19ttD0jmlaejvJwTl429_K1eyt0O3mUusQcrgk,20791
|
374
374
|
ccxt/pro/idex.py,sha256=MJWG56eMN8rAE4Tmz-WxXDDO2KacfY7eFSoCwL15DnQ,28282
|
375
|
-
ccxt/pro/independentreserve.py,sha256=
|
375
|
+
ccxt/pro/independentreserve.py,sha256=QuEULuFQN-769Tga3JjucFYlo8Ifui4LSl5RMDnTJ1Q,11081
|
376
376
|
ccxt/pro/kraken.py,sha256=YCC_Qtq-C3Ds-reEkkF2qpEh_XY1zUV3SLVzEGKkko8,60658
|
377
377
|
ccxt/pro/krakenfutures.py,sha256=QTeLsAXmM3CxLbDI6ktESj8LYQYhJISsB95Za1nFzh8,63917
|
378
378
|
ccxt/pro/kucoin.py,sha256=wxUoyXjTV0iU5X4C2EdWRFFTzljICccpRJq4b9MWmmg,50705
|
@@ -386,7 +386,7 @@ ccxt/pro/okx.py,sha256=3mwiUgBWsGLUhNQ3eXqdmlCbcL9Ni-7PuPjBEpHtA90,68821
|
|
386
386
|
ccxt/pro/onetrading.py,sha256=9-WTi6ZNjsG7TJ6CA6pGpnm_6Jg2gg21ny4GZypjr6s,54634
|
387
387
|
ccxt/pro/p2b.py,sha256=lO8mTtBCOU1yHQnmOQAI3USn67tsZd4nTGHDqFd4qEE,17877
|
388
388
|
ccxt/pro/phemex.py,sha256=lD4r2KQdpkgeXGors3jtEMxoaxpEF0tl6MYXZ99GSYg,61032
|
389
|
-
ccxt/pro/poloniex.py,sha256=
|
389
|
+
ccxt/pro/poloniex.py,sha256=uEi3hlt7rLPSIN05r6wrFgaghXoIm4l7Ynu8ChMTpX0,51235
|
390
390
|
ccxt/pro/poloniexfutures.py,sha256=8qEEqKc7_zMgv-iz0KffE8RnYBqmiyNCiDcmuyqM0Xs,41652
|
391
391
|
ccxt/pro/probit.py,sha256=RLTnROQUmX31XQ3ymIZkiDkop3eiSVK70Yw81yDcde4,22822
|
392
392
|
ccxt/pro/upbit.py,sha256=CSqwaNCxECo9FI7aq_7ege0c8IjWEmsoPZL06Kw9KDo,9654
|
@@ -527,7 +527,7 @@ ccxt/test/base/test_ticker.py,sha256=cMTIMb1oySNORUCmqI5ZzMswlEyCF6gJMah3vfvo8wQ
|
|
527
527
|
ccxt/test/base/test_trade.py,sha256=PMtmB8V38dpaP-eb8h488xYMlR6D69yCOhsA1RuWrUA,2336
|
528
528
|
ccxt/test/base/test_trading_fee.py,sha256=2aDCNJtqBkTC_AieO0l1HYGq5hz5qkWlkWb9Nv_fcwk,1066
|
529
529
|
ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
|
530
|
-
ccxt-4.3.
|
531
|
-
ccxt-4.3.
|
532
|
-
ccxt-4.3.
|
533
|
-
ccxt-4.3.
|
530
|
+
ccxt-4.3.15.dist-info/METADATA,sha256=t5fRW45ZIX8JQ4Rprd-EE86T6JuofRvIqINE5mDCQ3w,111193
|
531
|
+
ccxt-4.3.15.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
|
532
|
+
ccxt-4.3.15.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
|
533
|
+
ccxt-4.3.15.dist-info/RECORD,,
|
File without changes
|
File without changes
|