ccxt 4.3.35__py2.py3-none-any.whl → 4.3.36__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.

Potentially problematic release.


This version of ccxt might be problematic. Click here for more details.

ccxt/__init__.py CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.3.35'
25
+ __version__ = '4.3.36'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
ccxt/abstract/bitbay.py CHANGED
@@ -34,6 +34,10 @@ class ImplicitAPI:
34
34
  v1_01private_get_balances_bitbay_balance = v1_01PrivateGetBalancesBITBAYBalance = Entry('balances/BITBAY/balance', 'v1_01Private', 'GET', {})
35
35
  v1_01private_get_fiat_cantor_rate_baseid_quoteid = v1_01PrivateGetFiatCantorRateBaseIdQuoteId = Entry('fiat_cantor/rate/{baseId}/{quoteId}', 'v1_01Private', 'GET', {})
36
36
  v1_01private_get_fiat_cantor_history = v1_01PrivateGetFiatCantorHistory = Entry('fiat_cantor/history', 'v1_01Private', 'GET', {})
37
+ v1_01private_get_client_payments_v2_customer_crypto_currency_channels_deposit = v1_01PrivateGetClientPaymentsV2CustomerCryptoCurrencyChannelsDeposit = Entry('client_payments/v2/customer/crypto/{currency}/channels/deposit', 'v1_01Private', 'GET', {})
38
+ v1_01private_get_client_payments_v2_customer_crypto_currency_channels_withdrawal = v1_01PrivateGetClientPaymentsV2CustomerCryptoCurrencyChannelsWithdrawal = Entry('client_payments/v2/customer/crypto/{currency}/channels/withdrawal', 'v1_01Private', 'GET', {})
39
+ v1_01private_get_client_payments_v2_customer_crypto_deposit_fee = v1_01PrivateGetClientPaymentsV2CustomerCryptoDepositFee = Entry('client_payments/v2/customer/crypto/deposit/fee', 'v1_01Private', 'GET', {})
40
+ v1_01private_get_client_payments_v2_customer_crypto_withdrawal_fee = v1_01PrivateGetClientPaymentsV2CustomerCryptoWithdrawalFee = Entry('client_payments/v2/customer/crypto/withdrawal/fee', 'v1_01Private', 'GET', {})
37
41
  v1_01private_post_trading_offer_symbol = v1_01PrivatePostTradingOfferSymbol = Entry('trading/offer/{symbol}', 'v1_01Private', 'POST', {})
38
42
  v1_01private_post_trading_stop_offer_symbol = v1_01PrivatePostTradingStopOfferSymbol = Entry('trading/stop/offer/{symbol}', 'v1_01Private', 'POST', {})
39
43
  v1_01private_post_trading_config_symbol = v1_01PrivatePostTradingConfigSymbol = Entry('trading/config/{symbol}', 'v1_01Private', 'POST', {})
@@ -42,6 +46,8 @@ class ImplicitAPI:
42
46
  v1_01private_post_fiat_cantor_exchange = v1_01PrivatePostFiatCantorExchange = Entry('fiat_cantor/exchange', 'v1_01Private', 'POST', {})
43
47
  v1_01private_post_api_payments_withdrawals_crypto = v1_01PrivatePostApiPaymentsWithdrawalsCrypto = Entry('api_payments/withdrawals/crypto', 'v1_01Private', 'POST', {})
44
48
  v1_01private_post_api_payments_withdrawals_fiat = v1_01PrivatePostApiPaymentsWithdrawalsFiat = Entry('api_payments/withdrawals/fiat', 'v1_01Private', 'POST', {})
49
+ v1_01private_post_client_payments_v2_customer_crypto_deposit = v1_01PrivatePostClientPaymentsV2CustomerCryptoDeposit = Entry('client_payments/v2/customer/crypto/deposit', 'v1_01Private', 'POST', {})
50
+ v1_01private_post_client_payments_v2_customer_crypto_withdrawal = v1_01PrivatePostClientPaymentsV2CustomerCryptoWithdrawal = Entry('client_payments/v2/customer/crypto/withdrawal', 'v1_01Private', 'POST', {})
45
51
  v1_01private_delete_trading_offer_symbol_id_side_price = v1_01PrivateDeleteTradingOfferSymbolIdSidePrice = Entry('trading/offer/{symbol}/{id}/{side}/{price}', 'v1_01Private', 'DELETE', {})
46
52
  v1_01private_delete_trading_stop_offer_symbol_id_side_price = v1_01PrivateDeleteTradingStopOfferSymbolIdSidePrice = Entry('trading/stop/offer/{symbol}/{id}/{side}/{price}', 'v1_01Private', 'DELETE', {})
47
53
  v1_01private_put_balances_bitbay_balance_id = v1_01PrivatePutBalancesBITBAYBalanceId = Entry('balances/BITBAY/balance/{id}', 'v1_01Private', 'PUT', {})
ccxt/abstract/zonda.py CHANGED
@@ -34,6 +34,10 @@ class ImplicitAPI:
34
34
  v1_01private_get_balances_bitbay_balance = v1_01PrivateGetBalancesBITBAYBalance = Entry('balances/BITBAY/balance', 'v1_01Private', 'GET', {})
35
35
  v1_01private_get_fiat_cantor_rate_baseid_quoteid = v1_01PrivateGetFiatCantorRateBaseIdQuoteId = Entry('fiat_cantor/rate/{baseId}/{quoteId}', 'v1_01Private', 'GET', {})
36
36
  v1_01private_get_fiat_cantor_history = v1_01PrivateGetFiatCantorHistory = Entry('fiat_cantor/history', 'v1_01Private', 'GET', {})
37
+ v1_01private_get_client_payments_v2_customer_crypto_currency_channels_deposit = v1_01PrivateGetClientPaymentsV2CustomerCryptoCurrencyChannelsDeposit = Entry('client_payments/v2/customer/crypto/{currency}/channels/deposit', 'v1_01Private', 'GET', {})
38
+ v1_01private_get_client_payments_v2_customer_crypto_currency_channels_withdrawal = v1_01PrivateGetClientPaymentsV2CustomerCryptoCurrencyChannelsWithdrawal = Entry('client_payments/v2/customer/crypto/{currency}/channels/withdrawal', 'v1_01Private', 'GET', {})
39
+ v1_01private_get_client_payments_v2_customer_crypto_deposit_fee = v1_01PrivateGetClientPaymentsV2CustomerCryptoDepositFee = Entry('client_payments/v2/customer/crypto/deposit/fee', 'v1_01Private', 'GET', {})
40
+ v1_01private_get_client_payments_v2_customer_crypto_withdrawal_fee = v1_01PrivateGetClientPaymentsV2CustomerCryptoWithdrawalFee = Entry('client_payments/v2/customer/crypto/withdrawal/fee', 'v1_01Private', 'GET', {})
37
41
  v1_01private_post_trading_offer_symbol = v1_01PrivatePostTradingOfferSymbol = Entry('trading/offer/{symbol}', 'v1_01Private', 'POST', {})
38
42
  v1_01private_post_trading_stop_offer_symbol = v1_01PrivatePostTradingStopOfferSymbol = Entry('trading/stop/offer/{symbol}', 'v1_01Private', 'POST', {})
39
43
  v1_01private_post_trading_config_symbol = v1_01PrivatePostTradingConfigSymbol = Entry('trading/config/{symbol}', 'v1_01Private', 'POST', {})
@@ -42,6 +46,8 @@ class ImplicitAPI:
42
46
  v1_01private_post_fiat_cantor_exchange = v1_01PrivatePostFiatCantorExchange = Entry('fiat_cantor/exchange', 'v1_01Private', 'POST', {})
43
47
  v1_01private_post_api_payments_withdrawals_crypto = v1_01PrivatePostApiPaymentsWithdrawalsCrypto = Entry('api_payments/withdrawals/crypto', 'v1_01Private', 'POST', {})
44
48
  v1_01private_post_api_payments_withdrawals_fiat = v1_01PrivatePostApiPaymentsWithdrawalsFiat = Entry('api_payments/withdrawals/fiat', 'v1_01Private', 'POST', {})
49
+ v1_01private_post_client_payments_v2_customer_crypto_deposit = v1_01PrivatePostClientPaymentsV2CustomerCryptoDeposit = Entry('client_payments/v2/customer/crypto/deposit', 'v1_01Private', 'POST', {})
50
+ v1_01private_post_client_payments_v2_customer_crypto_withdrawal = v1_01PrivatePostClientPaymentsV2CustomerCryptoWithdrawal = Entry('client_payments/v2/customer/crypto/withdrawal', 'v1_01Private', 'POST', {})
45
51
  v1_01private_delete_trading_offer_symbol_id_side_price = v1_01PrivateDeleteTradingOfferSymbolIdSidePrice = Entry('trading/offer/{symbol}/{id}/{side}/{price}', 'v1_01Private', 'DELETE', {})
46
52
  v1_01private_delete_trading_stop_offer_symbol_id_side_price = v1_01PrivateDeleteTradingStopOfferSymbolIdSidePrice = Entry('trading/stop/offer/{symbol}/{id}/{side}/{price}', 'v1_01Private', 'DELETE', {})
47
53
  v1_01private_put_balances_bitbay_balance_id = v1_01PrivatePutBalancesBITBAYBalanceId = Entry('balances/BITBAY/balance/{id}', 'v1_01Private', 'PUT', {})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.35'
7
+ __version__ = '4.3.36'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.3.35'
5
+ __version__ = '4.3.36'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -1017,7 +1017,7 @@ class bingx(Exchange, ImplicitAPI):
1017
1017
  if time == 0:
1018
1018
  time = None
1019
1019
  cost = self.safe_string(trade, 'quoteQty')
1020
- type = 'spot' if (cost is None) else 'swap'
1020
+ # type = 'spot' if (cost is None) else 'swap'; self is not reliable
1021
1021
  currencyId = self.safe_string_n(trade, ['currency', 'N', 'commissionAsset'])
1022
1022
  currencyCode = self.safe_currency_code(currencyId)
1023
1023
  m = self.safe_bool(trade, 'm')
@@ -1048,7 +1048,7 @@ class bingx(Exchange, ImplicitAPI):
1048
1048
  'info': trade,
1049
1049
  'timestamp': time,
1050
1050
  'datetime': self.iso8601(time),
1051
- 'symbol': self.safe_symbol(marketId, market, '-', type),
1051
+ 'symbol': self.safe_symbol(marketId, market, '-'),
1052
1052
  'order': self.safe_string_2(trade, 'orderId', 'i'),
1053
1053
  'type': self.safe_string_lower(trade, 'o'),
1054
1054
  'side': self.parse_order_side(side),
@@ -448,7 +448,8 @@ class bit2c(Exchange, ImplicitAPI):
448
448
  request: dict = {
449
449
  'id': id,
450
450
  }
451
- return await self.privatePostOrderCancelOrder(self.extend(request, params))
451
+ response = await self.privatePostOrderCancelOrder(self.extend(request, params))
452
+ return self.parse_order(response)
452
453
 
453
454
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
454
455
  """
@@ -1250,6 +1250,7 @@ class bitget(Exchange, ImplicitAPI):
1250
1250
  '40712': InsufficientFunds, # Insufficient margin
1251
1251
  '40713': ExchangeError, # Cannot exceed the maximum transferable margin amount
1252
1252
  '40714': ExchangeError, # No direct margin call is allowed
1253
+ '40762': InsufficientFunds, # {"code":"40762","msg":"The order amount exceeds the balance","requestTime":1716572156622,"data":null}
1253
1254
  '40768': OrderNotFound, # Order does not exist"
1254
1255
  '41114': OnMaintenance, # {"code":"41114","msg":"The current trading pair is under maintenance, please refer to the official announcement for the opening time","requestTime":1679196062544,"data":null}
1255
1256
  '43011': InvalidOrder, # The parameter does not meet the specification executePrice <= 0
@@ -4139,18 +4140,23 @@ class bitget(Exchange, ImplicitAPI):
4139
4140
  marginMode = 'cross'
4140
4141
  marginModeRequest = 'crossed' if (marginMode == 'cross') else 'isolated'
4141
4142
  request['marginMode'] = marginModeRequest
4142
- oneWayMode = self.safe_bool(params, 'oneWayMode', False)
4143
- params = self.omit(params, 'oneWayMode')
4143
+ hedged = None
4144
+ hedged, params = self.handle_param_bool(params, 'hedged', False)
4145
+ # backward compatibility for `oneWayMode`
4146
+ oneWayMode = None
4147
+ oneWayMode, params = self.handle_param_bool(params, 'oneWayMode')
4148
+ if oneWayMode is not None:
4149
+ hedged = not oneWayMode
4144
4150
  requestSide = side
4145
4151
  if reduceOnly:
4146
- if oneWayMode:
4152
+ if not hedged:
4147
4153
  request['reduceOnly'] = 'YES'
4148
4154
  else:
4149
4155
  # on bitget hedge mode if the position is long the side is always buy, and if the position is short the side is always sell
4150
4156
  requestSide = 'sell' if (side == 'buy') else 'buy'
4151
4157
  request['tradeSide'] = 'Close'
4152
4158
  else:
4153
- if not oneWayMode:
4159
+ if hedged:
4154
4160
  request['tradeSide'] = 'Open'
4155
4161
  request['side'] = requestSide
4156
4162
  elif marketType == 'spot':
@@ -407,7 +407,10 @@ class paymium(Exchange, ImplicitAPI):
407
407
  request: dict = {
408
408
  'uuid': id,
409
409
  }
410
- return await self.privateDeleteUserOrdersUuidCancel(self.extend(request, params))
410
+ response = await self.privateDeleteUserOrdersUuidCancel(self.extend(request, params))
411
+ return self.safe_order({
412
+ 'info': response,
413
+ })
411
414
 
412
415
  async def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
413
416
  """
@@ -1341,7 +1341,27 @@ class whitebit(Exchange, ImplicitAPI):
1341
1341
  'market': market['id'],
1342
1342
  'orderId': int(id),
1343
1343
  }
1344
- return await self.v4PrivatePostOrderCancel(self.extend(request, params))
1344
+ response = await self.v4PrivatePostOrderCancel(self.extend(request, params))
1345
+ #
1346
+ # {
1347
+ # "orderId": 4180284841, # order id
1348
+ # "clientOrderId": "customId11", # custom order identifier; "clientOrderId": "" - if not specified.
1349
+ # "market": "BTC_USDT", # deal market
1350
+ # "side": "buy", # order side
1351
+ # "type": "stop market", # order type
1352
+ # "timestamp": 1595792396.165973, # current timestamp
1353
+ # "dealMoney": "0", # if order finished - amount in money currency that is finished
1354
+ # "dealStock": "0", # if order finished - amount in stock currency that is finished
1355
+ # "amount": "0.001", # amount
1356
+ # "takerFee": "0.001", # maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
1357
+ # "makerFee": "0.001", # maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
1358
+ # "left": "0.001", # if order not finished - rest of the amount that must be finished
1359
+ # "dealFee": "0", # fee in money that you pay if order is finished
1360
+ # "price": "40000", # price if price isset
1361
+ # "activation_price": "40000" # activation price if activation price is set
1362
+ # }
1363
+ #
1364
+ return self.parse_order(response)
1345
1365
 
1346
1366
  async def cancel_all_orders(self, symbol: Str = None, params={}):
1347
1367
  """
@@ -1378,7 +1398,7 @@ class whitebit(Exchange, ImplicitAPI):
1378
1398
  #
1379
1399
  # []
1380
1400
  #
1381
- return response
1401
+ return self.parse_orders(response, market)
1382
1402
 
1383
1403
  async def cancel_all_orders_after(self, timeout: Int, params={}):
1384
1404
  """
@@ -1588,7 +1608,7 @@ class whitebit(Exchange, ImplicitAPI):
1588
1608
 
1589
1609
  def parse_order(self, order: dict, market: Market = None) -> Order:
1590
1610
  #
1591
- # createOrder, fetchOpenOrders
1611
+ # createOrder, fetchOpenOrders, cancelOrder
1592
1612
  #
1593
1613
  # {
1594
1614
  # "orderId":105687928629,
@@ -1603,6 +1623,7 @@ class whitebit(Exchange, ImplicitAPI):
1603
1623
  # "takerFee":"0.001",
1604
1624
  # "makerFee":"0",
1605
1625
  # "left":"100",
1626
+ # "price": "40000", # price if price isset
1606
1627
  # "dealFee":"0",
1607
1628
  # "activation_price":"0.065" # stop price(if stop limit or stop market)
1608
1629
  # }
@@ -461,7 +461,23 @@ class zaif(Exchange, ImplicitAPI):
461
461
  request: dict = {
462
462
  'order_id': id,
463
463
  }
464
- return await self.privatePostCancelOrder(self.extend(request, params))
464
+ response = await self.privatePostCancelOrder(self.extend(request, params))
465
+ #
466
+ # {
467
+ # "success": 1,
468
+ # "return": {
469
+ # "order_id": 184,
470
+ # "funds": {
471
+ # "jpy": 15320,
472
+ # "btc": 1.392,
473
+ # "mona": 2600,
474
+ # "kaori": 0.1
475
+ # }
476
+ # }
477
+ # }
478
+ #
479
+ data = self.safe_dict(response, 'return')
480
+ return self.parse_order(data)
465
481
 
466
482
  def parse_order(self, order: dict, market: Market = None) -> Order:
467
483
  #
@@ -474,6 +490,18 @@ class zaif(Exchange, ImplicitAPI):
474
490
  # "comment" : "demo"
475
491
  # }
476
492
  #
493
+ # cancelOrder
494
+ #
495
+ # {
496
+ # "order_id": 184,
497
+ # "funds": {
498
+ # "jpy": 15320,
499
+ # "btc": 1.392,
500
+ # "mona": 2600,
501
+ # "kaori": 0.1
502
+ # }
503
+ # }
504
+ #
477
505
  side = self.safe_string(order, 'action')
478
506
  side = 'buy' if (side == 'bid') else 'sell'
479
507
  timestamp = self.safe_timestamp(order, 'timestamp')
@@ -481,7 +509,7 @@ class zaif(Exchange, ImplicitAPI):
481
509
  symbol = self.safe_symbol(marketId, market, '_')
482
510
  price = self.safe_string(order, 'price')
483
511
  amount = self.safe_string(order, 'amount')
484
- id = self.safe_string(order, 'id')
512
+ id = self.safe_string_2(order, 'id', 'order_id')
485
513
  return self.safe_order({
486
514
  'id': id,
487
515
  'clientOrderId': None,
@@ -183,6 +183,10 @@ class zonda(Exchange, ImplicitAPI):
183
183
  'balances/BITBAY/balance',
184
184
  'fiat_cantor/rate/{baseId}/{quoteId}',
185
185
  'fiat_cantor/history',
186
+ 'client_payments/v2/customer/crypto/{currency}/channels/deposit',
187
+ 'client_payments/v2/customer/crypto/{currency}/channels/withdrawal',
188
+ 'client_payments/v2/customer/crypto/deposit/fee',
189
+ 'client_payments/v2/customer/crypto/withdrawal/fee',
186
190
  ],
187
191
  'post': [
188
192
  'trading/offer/{symbol}',
@@ -193,6 +197,8 @@ class zonda(Exchange, ImplicitAPI):
193
197
  'fiat_cantor/exchange',
194
198
  'api_payments/withdrawals/crypto',
195
199
  'api_payments/withdrawals/fiat',
200
+ 'client_payments/v2/customer/crypto/deposit',
201
+ 'client_payments/v2/customer/crypto/withdrawal',
196
202
  ],
197
203
  'delete': [
198
204
  'trading/offer/{symbol}/{id}/{side}/{price}',
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.35'
7
+ __version__ = '4.3.36'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
ccxt/bingx.py CHANGED
@@ -1016,7 +1016,7 @@ class bingx(Exchange, ImplicitAPI):
1016
1016
  if time == 0:
1017
1017
  time = None
1018
1018
  cost = self.safe_string(trade, 'quoteQty')
1019
- type = 'spot' if (cost is None) else 'swap'
1019
+ # type = 'spot' if (cost is None) else 'swap'; self is not reliable
1020
1020
  currencyId = self.safe_string_n(trade, ['currency', 'N', 'commissionAsset'])
1021
1021
  currencyCode = self.safe_currency_code(currencyId)
1022
1022
  m = self.safe_bool(trade, 'm')
@@ -1047,7 +1047,7 @@ class bingx(Exchange, ImplicitAPI):
1047
1047
  'info': trade,
1048
1048
  'timestamp': time,
1049
1049
  'datetime': self.iso8601(time),
1050
- 'symbol': self.safe_symbol(marketId, market, '-', type),
1050
+ 'symbol': self.safe_symbol(marketId, market, '-'),
1051
1051
  'order': self.safe_string_2(trade, 'orderId', 'i'),
1052
1052
  'type': self.safe_string_lower(trade, 'o'),
1053
1053
  'side': self.parse_order_side(side),
ccxt/bit2c.py CHANGED
@@ -448,7 +448,8 @@ class bit2c(Exchange, ImplicitAPI):
448
448
  request: dict = {
449
449
  'id': id,
450
450
  }
451
- return self.privatePostOrderCancelOrder(self.extend(request, params))
451
+ response = self.privatePostOrderCancelOrder(self.extend(request, params))
452
+ return self.parse_order(response)
452
453
 
453
454
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
454
455
  """
ccxt/bitget.py CHANGED
@@ -1249,6 +1249,7 @@ class bitget(Exchange, ImplicitAPI):
1249
1249
  '40712': InsufficientFunds, # Insufficient margin
1250
1250
  '40713': ExchangeError, # Cannot exceed the maximum transferable margin amount
1251
1251
  '40714': ExchangeError, # No direct margin call is allowed
1252
+ '40762': InsufficientFunds, # {"code":"40762","msg":"The order amount exceeds the balance","requestTime":1716572156622,"data":null}
1252
1253
  '40768': OrderNotFound, # Order does not exist"
1253
1254
  '41114': OnMaintenance, # {"code":"41114","msg":"The current trading pair is under maintenance, please refer to the official announcement for the opening time","requestTime":1679196062544,"data":null}
1254
1255
  '43011': InvalidOrder, # The parameter does not meet the specification executePrice <= 0
@@ -4138,18 +4139,23 @@ class bitget(Exchange, ImplicitAPI):
4138
4139
  marginMode = 'cross'
4139
4140
  marginModeRequest = 'crossed' if (marginMode == 'cross') else 'isolated'
4140
4141
  request['marginMode'] = marginModeRequest
4141
- oneWayMode = self.safe_bool(params, 'oneWayMode', False)
4142
- params = self.omit(params, 'oneWayMode')
4142
+ hedged = None
4143
+ hedged, params = self.handle_param_bool(params, 'hedged', False)
4144
+ # backward compatibility for `oneWayMode`
4145
+ oneWayMode = None
4146
+ oneWayMode, params = self.handle_param_bool(params, 'oneWayMode')
4147
+ if oneWayMode is not None:
4148
+ hedged = not oneWayMode
4143
4149
  requestSide = side
4144
4150
  if reduceOnly:
4145
- if oneWayMode:
4151
+ if not hedged:
4146
4152
  request['reduceOnly'] = 'YES'
4147
4153
  else:
4148
4154
  # on bitget hedge mode if the position is long the side is always buy, and if the position is short the side is always sell
4149
4155
  requestSide = 'sell' if (side == 'buy') else 'buy'
4150
4156
  request['tradeSide'] = 'Close'
4151
4157
  else:
4152
- if not oneWayMode:
4158
+ if hedged:
4153
4159
  request['tradeSide'] = 'Open'
4154
4160
  request['side'] = requestSide
4155
4161
  elif marketType == 'spot':
ccxt/paymium.py CHANGED
@@ -407,7 +407,10 @@ class paymium(Exchange, ImplicitAPI):
407
407
  request: dict = {
408
408
  'uuid': id,
409
409
  }
410
- return self.privateDeleteUserOrdersUuidCancel(self.extend(request, params))
410
+ response = self.privateDeleteUserOrdersUuidCancel(self.extend(request, params))
411
+ return self.safe_order({
412
+ 'info': response,
413
+ })
411
414
 
412
415
  def transfer(self, code: str, amount: float, fromAccount: str, toAccount: str, params={}) -> TransferEntry:
413
416
  """
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.35'
7
+ __version__ = '4.3.36'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
ccxt/pro/binance.py CHANGED
@@ -691,10 +691,10 @@ class binance(ccxt.async_support.binance):
691
691
  # todo: self is a synch blocking call - make it async
692
692
  # default 100, max 1000, valid limits 5, 10, 20, 50, 100, 500, 1000
693
693
  snapshot = await self.fetch_rest_order_book_safe(symbol, limit, params)
694
- orderbook = self.safe_value(self.orderbooks, symbol)
695
- if orderbook is None:
694
+ if self.safe_value(self.orderbooks, symbol) is None:
696
695
  # if the orderbook is dropped before the snapshot is received
697
696
  return
697
+ orderbook = self.orderbooks[symbol]
698
698
  orderbook.reset(snapshot)
699
699
  # unroll the accumulated deltas
700
700
  messages = orderbook.cache
@@ -770,8 +770,7 @@ class binance(ccxt.async_support.binance):
770
770
  symbol = market['symbol']
771
771
  name = 'depth'
772
772
  messageHash = market['lowercaseId'] + '@' + name
773
- orderbook = self.safe_value(self.orderbooks, symbol)
774
- if orderbook is None:
773
+ if not (symbol in self.orderbooks):
775
774
  #
776
775
  # https://github.com/ccxt/ccxt/issues/6672
777
776
  #
@@ -781,6 +780,7 @@ class binance(ccxt.async_support.binance):
781
780
  # therefore it is safe to drop these premature messages.
782
781
  #
783
782
  return
783
+ orderbook = self.orderbooks[symbol]
784
784
  nonce = self.safe_integer(orderbook, 'nonce')
785
785
  if nonce is None:
786
786
  # 2. Buffer the events you receive from the stream.
ccxt/pro/bingx.py CHANGED
@@ -928,13 +928,16 @@ class bingx(ccxt.async_support.bingx):
928
928
  # }
929
929
  #
930
930
  isSpot = ('dataType' in message)
931
- result = self.safe_value_2(message, 'data', 'o', {})
931
+ result = self.safe_dict_2(message, 'data', 'o', {})
932
932
  cachedTrades = self.myTrades
933
933
  if cachedTrades is None:
934
934
  limit = self.safe_integer(self.options, 'tradesLimit', 1000)
935
935
  cachedTrades = ArrayCacheBySymbolById(limit)
936
936
  self.myTrades = cachedTrades
937
- parsed = self.parse_trade(result)
937
+ type = 'spot' if isSpot else 'swap'
938
+ marketId = self.safe_string(result, 's')
939
+ market = self.safe_market(marketId, None, '-', type)
940
+ parsed = self.parse_trade(result, market)
938
941
  symbol = parsed['symbol']
939
942
  spotHash = 'spot:mytrades'
940
943
  swapHash = 'swap:mytrades'
@@ -980,10 +983,12 @@ class bingx(ccxt.async_support.bingx):
980
983
  # }
981
984
  # }
982
985
  #
983
- a = self.safe_value(message, 'a', {})
984
- data = self.safe_value(a, 'B', [])
986
+ a = self.safe_dict(message, 'a', {})
987
+ data = self.safe_list(a, 'B', [])
985
988
  timestamp = self.safe_integer_2(message, 'T', 'E')
986
989
  type = 'swap' if ('P' in a) else 'spot'
990
+ if not (type in self.balance):
991
+ self.balance[type] = {}
987
992
  self.balance[type]['info'] = data
988
993
  self.balance[type]['timestamp'] = timestamp
989
994
  self.balance[type]['datetime'] = self.iso8601(timestamp)
ccxt/pro/bitfinex2.py CHANGED
@@ -551,8 +551,7 @@ class bitfinex2(ccxt.async_support.bitfinex2):
551
551
  prec = self.safe_string(subscription, 'prec', 'P0')
552
552
  isRaw = (prec == 'R0')
553
553
  # if it is an initial snapshot
554
- orderbook = self.safe_value(self.orderbooks, symbol)
555
- if orderbook is None:
554
+ if not (symbol in self.orderbooks):
556
555
  limit = self.safe_integer(subscription, 'len')
557
556
  if isRaw:
558
557
  # raw order books
@@ -571,7 +570,7 @@ class bitfinex2(ccxt.async_support.bitfinex2):
571
570
  bookside = orderbook[side]
572
571
  idString = self.safe_string(delta, 0)
573
572
  price = self.safe_float(delta, 1)
574
- bookside.store(price, size, idString)
573
+ bookside.storeArray([price, size, idString])
575
574
  else:
576
575
  deltas = message[1]
577
576
  for i in range(0, len(deltas)):
@@ -582,10 +581,11 @@ class bitfinex2(ccxt.async_support.bitfinex2):
582
581
  size = -amount if (amount < 0) else amount
583
582
  side = 'asks' if (amount < 0) else 'bids'
584
583
  bookside = orderbook[side]
585
- bookside.store(price, size, counter)
584
+ bookside.storeArray([price, size, counter])
586
585
  orderbook['symbol'] = symbol
587
586
  client.resolve(orderbook, messageHash)
588
587
  else:
588
+ orderbook = self.orderbooks[symbol]
589
589
  deltas = message[1]
590
590
  orderbookItem = self.orderbooks[symbol]
591
591
  if isRaw:
ccxt/pro/bitmart.py CHANGED
@@ -12,7 +12,6 @@ from ccxt.async_support.base.ws.client import Client
12
12
  from typing import List
13
13
  from ccxt.base.errors import ExchangeError
14
14
  from ccxt.base.errors import AuthenticationError
15
- from ccxt.base.errors import ArgumentsRequired
16
15
  from ccxt.base.errors import NotSupported
17
16
 
18
17
 
@@ -333,9 +332,9 @@ class bitmart(ccxt.async_support.bitmart):
333
332
 
334
333
  async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
335
334
  """
336
- :see: https://developer-pro.bitmart.com/en/spot/#private-order-channel
337
- :see: https://developer-pro.bitmart.com/en/futures/#private-order-channel
338
335
  watches information on multiple orders made by the user
336
+ :see: https://developer-pro.bitmart.com/en/spot/#private-order-progress
337
+ :see: https://developer-pro.bitmart.com/en/futures/#private-order-channel
339
338
  :param str symbol: unified market symbol of the market orders were made in
340
339
  :param int [since]: the earliest time in ms to fetch orders for
341
340
  :param int [limit]: the maximum number of order structures to retrieve
@@ -354,11 +353,14 @@ class bitmart(ccxt.async_support.bitmart):
354
353
  await self.authenticate(type, params)
355
354
  request = None
356
355
  if type == 'spot':
357
- if symbol is None:
358
- raise ArgumentsRequired(self.id + ' watchOrders() requires a symbol argument for spot markets')
356
+ argsRequest = 'spot/user/order:'
357
+ if symbol is not None:
358
+ argsRequest += market['id']
359
+ else:
360
+ argsRequest = 'spot/user/orders:ALL_SYMBOLS'
359
361
  request = {
360
362
  'op': 'subscribe',
361
- 'args': ['spot/user/order:' + market['id']],
363
+ 'args': [argsRequest],
362
364
  }
363
365
  else:
364
366
  request = {
ccxt/pro/bybit.py CHANGED
@@ -678,21 +678,21 @@ class bybit(ccxt.async_support.bybit):
678
678
  isSpot = client.url.find('spot') >= 0
679
679
  type = self.safe_string(message, 'type')
680
680
  isSnapshot = (type == 'snapshot')
681
- data = self.safe_value(message, 'data', {})
681
+ data = self.safe_dict(message, 'data', {})
682
682
  marketId = self.safe_string(data, 's')
683
683
  marketType = 'spot' if isSpot else 'contract'
684
684
  market = self.safe_market(marketId, None, None, marketType)
685
685
  symbol = market['symbol']
686
686
  timestamp = self.safe_integer(message, 'ts')
687
- orderbook = self.safe_value(self.orderbooks, symbol)
688
- if orderbook is None:
689
- orderbook = self.order_book()
687
+ if not (symbol in self.orderbooks):
688
+ self.orderbooks[symbol] = self.order_book()
689
+ orderbook = self.orderbooks[symbol]
690
690
  if isSnapshot:
691
691
  snapshot = self.parse_order_book(data, symbol, timestamp, 'b', 'a')
692
692
  orderbook.reset(snapshot)
693
693
  else:
694
- asks = self.safe_value(data, 'a', [])
695
- bids = self.safe_value(data, 'b', [])
694
+ asks = self.safe_list(data, 'a', [])
695
+ bids = self.safe_list(data, 'b', [])
696
696
  self.handle_deltas(orderbook['asks'], asks)
697
697
  self.handle_deltas(orderbook['bids'], bids)
698
698
  orderbook['timestamp'] = timestamp
ccxt/pro/htx.py CHANGED
@@ -608,19 +608,18 @@ class htx(ccxt.async_support.htx):
608
608
  # }
609
609
  #
610
610
  messageHash = self.safe_string(message, 'ch')
611
- tick = self.safe_value(message, 'tick')
611
+ tick = self.safe_dict(message, 'tick')
612
612
  event = self.safe_string(tick, 'event')
613
- ch = self.safe_value(message, 'ch')
613
+ ch = self.safe_string(message, 'ch')
614
614
  parts = ch.split('.')
615
615
  marketId = self.safe_string(parts, 1)
616
616
  symbol = self.safe_symbol(marketId)
617
- orderbook = self.safe_value(self.orderbooks, symbol)
618
- if orderbook is None:
617
+ if not (symbol in self.orderbooks):
619
618
  size = self.safe_string(parts, 3)
620
619
  sizeParts = size.split('_')
621
620
  limit = self.safe_integer(sizeParts, 1)
622
- orderbook = self.order_book({}, limit)
623
- self.orderbooks[symbol] = orderbook
621
+ self.orderbooks[symbol] = self.order_book({}, limit)
622
+ orderbook = self.orderbooks[symbol]
624
623
  if (event is None) and (orderbook['nonce'] is None):
625
624
  orderbook.cache.append(message)
626
625
  else:
ccxt/pro/okx.py CHANGED
@@ -1004,10 +1004,9 @@ class okx(ccxt.async_support.okx):
1004
1004
  self.handle_order_book_message(client, update, orderbook, messageHash)
1005
1005
  client.resolve(orderbook, messageHash)
1006
1006
  elif (channel == 'books5') or (channel == 'bbo-tbt'):
1007
- orderbook = self.safe_value(self.orderbooks, symbol)
1008
- if orderbook is None:
1009
- orderbook = self.order_book({}, limit)
1010
- self.orderbooks[symbol] = orderbook
1007
+ if not (symbol in self.orderbooks):
1008
+ self.orderbooks[symbol] = self.order_book({}, limit)
1009
+ orderbook = self.orderbooks[symbol]
1011
1010
  for i in range(0, len(data)):
1012
1011
  update = data[i]
1013
1012
  timestamp = self.safe_integer(update, 'ts')
ccxt/pro/woo.py CHANGED
@@ -130,14 +130,14 @@ class woo(ccxt.async_support.woo):
130
130
  # }
131
131
  # }
132
132
  #
133
- data = self.safe_value(message, 'data')
133
+ data = self.safe_dict(message, 'data')
134
134
  marketId = self.safe_string(data, 'symbol')
135
135
  market = self.safe_market(marketId)
136
136
  symbol = market['symbol']
137
137
  topic = self.safe_string(message, 'topic')
138
- orderbook = self.safe_value(self.orderbooks, symbol)
139
- if orderbook is None:
140
- orderbook = self.order_book({})
138
+ if not (symbol in self.orderbooks):
139
+ self.orderbooks[symbol] = self.order_book({})
140
+ orderbook = self.orderbooks[symbol]
141
141
  timestamp = self.safe_integer(message, 'ts')
142
142
  snapshot = self.parse_order_book(data, symbol, timestamp, 'bids', 'asks')
143
143
  orderbook.reset(snapshot)
ccxt/whitebit.py CHANGED
@@ -1341,7 +1341,27 @@ class whitebit(Exchange, ImplicitAPI):
1341
1341
  'market': market['id'],
1342
1342
  'orderId': int(id),
1343
1343
  }
1344
- return self.v4PrivatePostOrderCancel(self.extend(request, params))
1344
+ response = self.v4PrivatePostOrderCancel(self.extend(request, params))
1345
+ #
1346
+ # {
1347
+ # "orderId": 4180284841, # order id
1348
+ # "clientOrderId": "customId11", # custom order identifier; "clientOrderId": "" - if not specified.
1349
+ # "market": "BTC_USDT", # deal market
1350
+ # "side": "buy", # order side
1351
+ # "type": "stop market", # order type
1352
+ # "timestamp": 1595792396.165973, # current timestamp
1353
+ # "dealMoney": "0", # if order finished - amount in money currency that is finished
1354
+ # "dealStock": "0", # if order finished - amount in stock currency that is finished
1355
+ # "amount": "0.001", # amount
1356
+ # "takerFee": "0.001", # maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
1357
+ # "makerFee": "0.001", # maker fee ratio. If the number less than 0.0001 - it will be rounded to zero
1358
+ # "left": "0.001", # if order not finished - rest of the amount that must be finished
1359
+ # "dealFee": "0", # fee in money that you pay if order is finished
1360
+ # "price": "40000", # price if price isset
1361
+ # "activation_price": "40000" # activation price if activation price is set
1362
+ # }
1363
+ #
1364
+ return self.parse_order(response)
1345
1365
 
1346
1366
  def cancel_all_orders(self, symbol: Str = None, params={}):
1347
1367
  """
@@ -1378,7 +1398,7 @@ class whitebit(Exchange, ImplicitAPI):
1378
1398
  #
1379
1399
  # []
1380
1400
  #
1381
- return response
1401
+ return self.parse_orders(response, market)
1382
1402
 
1383
1403
  def cancel_all_orders_after(self, timeout: Int, params={}):
1384
1404
  """
@@ -1588,7 +1608,7 @@ class whitebit(Exchange, ImplicitAPI):
1588
1608
 
1589
1609
  def parse_order(self, order: dict, market: Market = None) -> Order:
1590
1610
  #
1591
- # createOrder, fetchOpenOrders
1611
+ # createOrder, fetchOpenOrders, cancelOrder
1592
1612
  #
1593
1613
  # {
1594
1614
  # "orderId":105687928629,
@@ -1603,6 +1623,7 @@ class whitebit(Exchange, ImplicitAPI):
1603
1623
  # "takerFee":"0.001",
1604
1624
  # "makerFee":"0",
1605
1625
  # "left":"100",
1626
+ # "price": "40000", # price if price isset
1606
1627
  # "dealFee":"0",
1607
1628
  # "activation_price":"0.065" # stop price(if stop limit or stop market)
1608
1629
  # }
ccxt/zaif.py CHANGED
@@ -461,7 +461,23 @@ class zaif(Exchange, ImplicitAPI):
461
461
  request: dict = {
462
462
  'order_id': id,
463
463
  }
464
- return self.privatePostCancelOrder(self.extend(request, params))
464
+ response = self.privatePostCancelOrder(self.extend(request, params))
465
+ #
466
+ # {
467
+ # "success": 1,
468
+ # "return": {
469
+ # "order_id": 184,
470
+ # "funds": {
471
+ # "jpy": 15320,
472
+ # "btc": 1.392,
473
+ # "mona": 2600,
474
+ # "kaori": 0.1
475
+ # }
476
+ # }
477
+ # }
478
+ #
479
+ data = self.safe_dict(response, 'return')
480
+ return self.parse_order(data)
465
481
 
466
482
  def parse_order(self, order: dict, market: Market = None) -> Order:
467
483
  #
@@ -474,6 +490,18 @@ class zaif(Exchange, ImplicitAPI):
474
490
  # "comment" : "demo"
475
491
  # }
476
492
  #
493
+ # cancelOrder
494
+ #
495
+ # {
496
+ # "order_id": 184,
497
+ # "funds": {
498
+ # "jpy": 15320,
499
+ # "btc": 1.392,
500
+ # "mona": 2600,
501
+ # "kaori": 0.1
502
+ # }
503
+ # }
504
+ #
477
505
  side = self.safe_string(order, 'action')
478
506
  side = 'buy' if (side == 'bid') else 'sell'
479
507
  timestamp = self.safe_timestamp(order, 'timestamp')
@@ -481,7 +509,7 @@ class zaif(Exchange, ImplicitAPI):
481
509
  symbol = self.safe_symbol(marketId, market, '_')
482
510
  price = self.safe_string(order, 'price')
483
511
  amount = self.safe_string(order, 'amount')
484
- id = self.safe_string(order, 'id')
512
+ id = self.safe_string_2(order, 'id', 'order_id')
485
513
  return self.safe_order({
486
514
  'id': id,
487
515
  'clientOrderId': None,
ccxt/zonda.py CHANGED
@@ -183,6 +183,10 @@ class zonda(Exchange, ImplicitAPI):
183
183
  'balances/BITBAY/balance',
184
184
  'fiat_cantor/rate/{baseId}/{quoteId}',
185
185
  'fiat_cantor/history',
186
+ 'client_payments/v2/customer/crypto/{currency}/channels/deposit',
187
+ 'client_payments/v2/customer/crypto/{currency}/channels/withdrawal',
188
+ 'client_payments/v2/customer/crypto/deposit/fee',
189
+ 'client_payments/v2/customer/crypto/withdrawal/fee',
186
190
  ],
187
191
  'post': [
188
192
  'trading/offer/{symbol}',
@@ -193,6 +197,8 @@ class zonda(Exchange, ImplicitAPI):
193
197
  'fiat_cantor/exchange',
194
198
  'api_payments/withdrawals/crypto',
195
199
  'api_payments/withdrawals/fiat',
200
+ 'client_payments/v2/customer/crypto/deposit',
201
+ 'client_payments/v2/customer/crypto/withdrawal',
196
202
  ],
197
203
  'delete': [
198
204
  'trading/offer/{symbol}/{id}/{side}/{price}',
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.3.35
3
+ Version: 4.3.36
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
@@ -264,13 +264,13 @@ console.log(version, Object.keys(exchanges));
264
264
 
265
265
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
266
266
 
267
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.35/dist/ccxt.browser.min.js
268
- * unpkg: https://unpkg.com/ccxt@4.3.35/dist/ccxt.browser.min.js
267
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.36/dist/ccxt.browser.min.js
268
+ * unpkg: https://unpkg.com/ccxt@4.3.36/dist/ccxt.browser.min.js
269
269
 
270
270
  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.
271
271
 
272
272
  ```HTML
273
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.35/dist/ccxt.browser.min.js"></script>
273
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.36/dist/ccxt.browser.min.js"></script>
274
274
  ```
275
275
 
276
276
  Creates a global `ccxt` object:
@@ -1,4 +1,4 @@
1
- ccxt/__init__.py,sha256=fZyAkx4OXk5H1fGXSi6n0JQww9Ol_Ni4_PXz-U7b5WU,15950
1
+ ccxt/__init__.py,sha256=CYsOzikJcAjJK5He1XzWN44IS_gV-IfqarntOqSltjQ,15950
2
2
  ccxt/ace.py,sha256=6x4vkcS2lGSkAQuzS-AAgYJLPDNNfNo9NMIdAoXzs18,41776
3
3
  ccxt/alpaca.py,sha256=EZ7uF3XI8EXXIsCZ-UVpruBXS96Kps6WOOukmdcgCn0,47326
4
4
  ccxt/ascendex.py,sha256=rUUU3n4j8QrMrJCk4pVwVastIYzS3eDTUAL9R2ePErk,151832
@@ -8,8 +8,8 @@ ccxt/binance.py,sha256=vCH6EpFYY1gtDHQrf7In-gYXehhFqWTSfoXShAGbUSE,618778
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=xRHO5MLkhGBdiv2_Hrv2ToUTEpfjL_Trsn8vLjX2_2o,186885
12
- ccxt/bit2c.py,sha256=miiTYRBnRqJ0A-vPEUkBq4AdXmiRl1d8vwrqLV34hvQ,37016
11
+ ccxt/bingx.py,sha256=vEOh4NXjcqmnf4sGuWhsQfV4bFagu_8DI6eb1KNF6QY,186903
12
+ ccxt/bit2c.py,sha256=un1ZuLNvEt7bkceNeue3UctEoFA-xpoKQlnq4bX5Slc,37062
13
13
  ccxt/bitbank.py,sha256=6V4AeEw2_mqErXGGx24tXWIgORSL11IX0f4kYFJ7Q1A,41989
14
14
  ccxt/bitbay.py,sha256=xAIjzGRDVGwoy-Gygd99H0YN4wiaz_0lR0Z14oxaaxc,478
15
15
  ccxt/bitbns.py,sha256=vob7RER0BJJcP2ten1UcO3sE8FihY5jNffN-emNtu6E,48270
@@ -17,7 +17,7 @@ ccxt/bitcoincom.py,sha256=PyWIl4nC4jp5Uba2lI1At0N_hhNyWD0DoZC_MSyL_s4,502
17
17
  ccxt/bitfinex.py,sha256=6O33NthP73Q-zobTf1hp8zFxJsDyAMEiOCCJn_o1iEQ,72450
18
18
  ccxt/bitfinex2.py,sha256=smVuwDShHy4m4s4i4xGzx04r197GKPL8MA3lT2End4E,160612
19
19
  ccxt/bitflyer.py,sha256=rvykeLLkDYVMEwXs4rInQClYwdXIXmj_7mxDpGT216I,41565
20
- ccxt/bitget.py,sha256=fZkDv8OCasG2Y2epnZNIPwLq7byklri6dwBiiOiF5qE,423109
20
+ ccxt/bitget.py,sha256=7ETvr_9MSWv0KlbdmVxBMd-K7z_2EAdTq1Xaj_Gi6nE,423496
21
21
  ccxt/bithumb.py,sha256=0oRYEp30LykNchRZwqbsiZlrzY4koY6EFWubVYs5hU8,45684
22
22
  ccxt/bitmart.py,sha256=FEWE-T15bUylIo8nkOwEn4ealjNZ2jsTQrnB5VvBpys,204467
23
23
  ccxt/bitmex.py,sha256=koETQgb-yVZ3ZfP6qIHyTMLTDk8eXTHauhwhaP79ZBQ,126862
@@ -87,7 +87,7 @@ ccxt/okcoin.py,sha256=ZgcUzRfL5UnquTqze3WOkQttZF-Fcq-9p13YiNHYixg,151402
87
87
  ccxt/okx.py,sha256=mRDf2a1MRn_trBLMN-pKzcuQOpROZKgvP7Q4pwgEqBs,377648
88
88
  ccxt/onetrading.py,sha256=2nSe_Z_Jy7O4rPggwbY17M6oimu-t0PkeTejTu26XcA,88340
89
89
  ccxt/p2b.py,sha256=_kQjmJ1O9sgb5HnNsefD0Jy-DejW4chndqraV5jV3ak,54334
90
- ccxt/paymium.py,sha256=TOJPiSbugDvJ2iWcW6NHZ7Cb57eRk9bDXKodJYqYpnk,24342
90
+ ccxt/paymium.py,sha256=9TfMe2ViBYYodGcbVTPm6QOyuIxI6vmbl46xa5bl8D8,24420
91
91
  ccxt/phemex.py,sha256=lr-zTRi0HKRUjC4OVv5lOQXOealRZp9hLKTPlxUcQA0,222642
92
92
  ccxt/poloniex.py,sha256=qctzvVpjtLq_mDr5d1kf0447wkp-Y_aYrCy6QubIAvU,102242
93
93
  ccxt/poloniexfutures.py,sha256=m7Fci8BYti6ijrcNrYlrojiSH-jL5kbV-ZpTXkwzAvg,78089
@@ -98,12 +98,12 @@ ccxt/tradeogre.py,sha256=-uAY4HkEPHjRkUmPKJBjrY79Y5DjhF5RrfZRMYk6kNQ,24003
98
98
  ccxt/upbit.py,sha256=zr6hkxgD_yYSfF7a5j7WaxnHpGi_KEnGSwtw9h1qCmc,81812
99
99
  ccxt/wavesexchange.py,sha256=BgqApypcGzFw4rlKR4LW2YUW7CkK2h1ICmtsYIcgZqQ,113831
100
100
  ccxt/wazirx.py,sha256=leNH1FwG_45Sim2Adx5bZc2u6zz8zqx5AUymiDxFJ54,51509
101
- ccxt/whitebit.py,sha256=fvCIq3kSlF4kU620b8lHhxLKy9fIj_opWnwV2MxS2j4,117349
101
+ ccxt/whitebit.py,sha256=xENpt5u6txhUlLfc4IR_FHCAJMw3u1nj17voGoq0zus,118756
102
102
  ccxt/woo.py,sha256=8oeJFt8SpBY1D-TH1qBJzt_vtR5Iq4KQ0v7LohMIxFY,139810
103
103
  ccxt/woofipro.py,sha256=-djja__nTUC87mVRRmyJ0-mxQw3QykMsBwGgW7rtSME,115182
104
104
  ccxt/yobit.py,sha256=MFrd_ZvzSPP0T8RWrC3aLNrQN2rDZz3m2cbCnOqXr6s,53372
105
- ccxt/zaif.py,sha256=vViSN9hdiwmXWOmhgEmeb-x27GyL_yd69qYwshs5hKo,28088
106
- ccxt/zonda.py,sha256=QVdpQxzrcqy964sBIgN642KhE4v8y7BR1cPGtRSlSeY,80753
105
+ ccxt/zaif.py,sha256=zq592UTcuXvzR2qVkSNhXwBPxJm5JE4sKbDyrImyuHU,28863
106
+ ccxt/zonda.py,sha256=mP8o4UQgLZq1-gak8BAn4hH17BCDeztHhe34Itlf7V0,81230
107
107
  ccxt/abstract/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
108
  ccxt/abstract/ace.py,sha256=2-jmtQUedebJ-M88oI3WhmenPElcRlOQHe-gfHjL5BQ,1448
109
109
  ccxt/abstract/alpaca.py,sha256=vgzqnRTvEnAbLYgfDzGpmVUZxRLWC8BWA6nQ16m-xXY,10382
@@ -117,7 +117,7 @@ ccxt/abstract/binanceusdm.py,sha256=5jn1CQzA5z3rHjM8Cq1Dr_tfdIARqZbas3HlYzFId2E,
117
117
  ccxt/abstract/bingx.py,sha256=-Aepusv-LrrUAwLjJBhtbQBcFJzn4Blo_u8Sa09Re9o,17110
118
118
  ccxt/abstract/bit2c.py,sha256=np6i756kSB5dO3Nj6POLKxkWkpYcsGg-4LS8BwPrizI,2830
119
119
  ccxt/abstract/bitbank.py,sha256=hrHsD7Uvtyy2o2lzCHau3-eNq16pnZ3-YDQ6Tq_sxYU,2735
120
- ccxt/abstract/bitbay.py,sha256=aSfewvRojzmuymX6QbOnDR8v9VFqWTULMHX9Y7kKD1M,5820
120
+ ccxt/abstract/bitbay.py,sha256=X-hCW0SdX3YKZWixDyW-O2211M58Rno8kKJ6quY7rw4,7183
121
121
  ccxt/abstract/bitbns.py,sha256=3T3cHS7SgzGipd6F8vzPnmM0x3XNfQXEPjoInD-C1Sw,4082
122
122
  ccxt/abstract/bitcoincom.py,sha256=OTBtNu3DQeAqAC_Lbi0NePUs-ZQQllcLrVDI2G04nwQ,15601
123
123
  ccxt/abstract/bitfinex.py,sha256=OLUXdJEycyN_qrBhPuTTOVlwu3jkqVWenoTmS-W3bOE,7605
@@ -209,8 +209,8 @@ ccxt/abstract/woo.py,sha256=yH0aXeyohXdyS3jZrztapwRmzNWk7JGpbrrf7pX_LKU,10368
209
209
  ccxt/abstract/woofipro.py,sha256=El50vWGAV-4QPIDhgSnd4egfvk246NB6vTC-8h722vs,16016
210
210
  ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
211
211
  ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
212
- ccxt/abstract/zonda.py,sha256=aSfewvRojzmuymX6QbOnDR8v9VFqWTULMHX9Y7kKD1M,5820
213
- ccxt/async_support/__init__.py,sha256=Ok4msHDZgUL7x6zTQiyvSah_mYUbeS-AUkYT5TSpAR8,15723
212
+ ccxt/abstract/zonda.py,sha256=X-hCW0SdX3YKZWixDyW-O2211M58Rno8kKJ6quY7rw4,7183
213
+ ccxt/async_support/__init__.py,sha256=1xe5nA9zCLUX8-EJqABf-Mn5VBSb8kktGMEWt8Ri98s,15723
214
214
  ccxt/async_support/ace.py,sha256=tsRgs_o4Iq7q8IkD83FUdC-2ztylhgO4cp2hww3rlqQ,42000
215
215
  ccxt/async_support/alpaca.py,sha256=3845DgojoA1p0pxrqnDIqHbbRcEwZhZIkE4aygD5ics,47538
216
216
  ccxt/async_support/ascendex.py,sha256=7tZ4C7FfzmuB_ADYjl6IkyQQ5JG0Vt1AD_B3fTeY6V0,152620
@@ -220,8 +220,8 @@ ccxt/async_support/binance.py,sha256=dBRcoYqL2UcYNg_H4j6SdUgxUIEZdXMUhJX67afc2PI
220
220
  ccxt/async_support/binancecoinm.py,sha256=IY3RLZptQA2nmZaUYRGfTa5ZY4VMWBpFYfwHc8zTHw0,1683
221
221
  ccxt/async_support/binanceus.py,sha256=c-K3Tk7LaRJjmYdCx8vBOqsx01uXrtvt0PC2ekBiD0g,9177
222
222
  ccxt/async_support/binanceusdm.py,sha256=-1r4A4tmV2pCiLGO80hzq7MIIj4MTzOD7buZGv6JauA,2518
223
- ccxt/async_support/bingx.py,sha256=iHZevpURgfC5WxSTcrdJAXkR4qRxYZfdhmeajRNtKrE,187921
224
- ccxt/async_support/bit2c.py,sha256=tQweN-rgvD9q-BHzWvgJArd7cO__TGa9AzNvGXe6MEc,37228
223
+ ccxt/async_support/bingx.py,sha256=PJQEf8tCzw8VB7TjDIEKzk-MwZSAtt4msqFeZzf6eFc,187939
224
+ ccxt/async_support/bit2c.py,sha256=5div5D1LV3QHZUqL3CDdKaBDATQ3c2Phglx9JpAb7fY,37274
225
225
  ccxt/async_support/bitbank.py,sha256=xcG6QiyYZE1MmWHcd4x3slaW5XwR6dMeByEKXnEp2rA,42249
226
226
  ccxt/async_support/bitbay.py,sha256=jcaEXi2IhYTva8ezO_SfJhwxEZk7HST4J3NaxD16BQA,492
227
227
  ccxt/async_support/bitbns.py,sha256=qiW_A43mb7CdKuHupPSzTiIn8gD0T_vuvdyu3qcX2p4,48524
@@ -229,7 +229,7 @@ ccxt/async_support/bitcoincom.py,sha256=RiqwhK3RfxQ_PXTa860fphDCvwA8dalL-_rXlK85
229
229
  ccxt/async_support/bitfinex.py,sha256=K-Lm2aIrw1a_H9rrSK_M-a_aZCc-9vfaSpCiMCGiHZY,72890
230
230
  ccxt/async_support/bitfinex2.py,sha256=QQstleJSkjDRMHGSFZQIUHJ5fx55Bgdytk35gMWkeS0,161346
231
231
  ccxt/async_support/bitflyer.py,sha256=RWrRkrZJow4M5uwoqTCD0bcITItbC5WZ57Mcmv0_1nk,41873
232
- ccxt/async_support/bitget.py,sha256=q8eCJSGEOYKCwe_4WWGvtYhsCfpL-bm5WZBZji0GYzI,424733
232
+ ccxt/async_support/bitget.py,sha256=BLMe-ofDnsehCgJSJZkKK2JN7NbsBFZGop_cuM57cyU,425120
233
233
  ccxt/async_support/bithumb.py,sha256=0_SehUTG-pqL8uBHE_IhwJ5BjNTFfbxwF0A_IufTNuA,45914
234
234
  ccxt/async_support/bitmart.py,sha256=ttjLEDra7QR8zgD2PyOlm004Whvof2tRcwElT0cBhI0,205423
235
235
  ccxt/async_support/bitmex.py,sha256=JCRSgTWNwB97A1vwvEpajD8VQ4AE8Qs5ZU1yd8KaiYc,127440
@@ -299,7 +299,7 @@ ccxt/async_support/okcoin.py,sha256=3l0dRwsxG9u5hyFYxlHRFfKJ4gzvcXOQ3FTTAkHHwx4,
299
299
  ccxt/async_support/okx.py,sha256=Gi-iDBxcH9-ciaZsWrufAWVfUZWK6dXfzzN22YooufM,379235
300
300
  ccxt/async_support/onetrading.py,sha256=u6Y7zWjfVBVBl9RLIUfwAneZzE4fOENx7Y11zE7MChM,88792
301
301
  ccxt/async_support/p2b.py,sha256=vwavNnMyU7tJF1FIIBhZe4az58clzptk0bEuIDPmOAA,54576
302
- ccxt/async_support/paymium.py,sha256=dGmTtzZjbyIR25ULZ0B_0uKj3JJkZ2QmbOTD9vJloe4,24530
302
+ ccxt/async_support/paymium.py,sha256=WKPElafAfmg06ATcLLIS0V09kZIGlSbn0L7Z3rcLvQA,24608
303
303
  ccxt/async_support/phemex.py,sha256=aXT0fIm-9maFccEGpDn4vVRHy8YEi053yChAtncZtpE,223454
304
304
  ccxt/async_support/poloniex.py,sha256=ReU0bRFEkEvQ3TdQ7SPYWE0uuecIL6AQdkSq34yJ9UQ,102790
305
305
  ccxt/async_support/poloniexfutures.py,sha256=Hetf5NbSAQg66xBsSnmrp5m25pmnEzz4OOt2h21aiM8,78475
@@ -310,14 +310,14 @@ ccxt/async_support/tradeogre.py,sha256=9TvqQ6OzxajkIC_6eMzuUs8pfHQiiyEHTR7uky5FZ
310
310
  ccxt/async_support/upbit.py,sha256=TrIqCL7jfOkIwJS4cTSzrI79e0uG56wNThMIpQutwJg,82294
311
311
  ccxt/async_support/wavesexchange.py,sha256=iLrg2z3npMfiUUcaqVgDJZsi2EVstwgTRThWTyeLxmQ,114381
312
312
  ccxt/async_support/wazirx.py,sha256=FOv4rrTDhhuFVnCYS47EqgtyPEqCO0gJIJKcWA2FMTE,51811
313
- ccxt/async_support/whitebit.py,sha256=L9SGl5dhLR596gngtny-Jahti70sTmEX3FUE2WxtWCE,117999
313
+ ccxt/async_support/whitebit.py,sha256=mwoolQKWL_9ZpC-zU5Ti4rM7QsK3Fmmo_MRUgj_Nno8,119406
314
314
  ccxt/async_support/woo.py,sha256=uMfhQF8Drm6tMo3SuyrTM3hq8Tb_4a6eJw4AKuE0bcE,140700
315
315
  ccxt/async_support/woofipro.py,sha256=FEkqK94zCiBmb0vDefnFplMtVcj3iQhR4LoTaE48A-o,115862
316
316
  ccxt/async_support/yobit.py,sha256=KQcu9nXJPDlAodZyxOXKIn6eTSLmlvUlgRFE6EBLfug,53656
317
- ccxt/async_support/zaif.py,sha256=bKkknF4yjJtajvrEN-9M0qi-s8O9v6tVX8eBGLfQwiA,28270
318
- ccxt/async_support/zonda.py,sha256=qdX7J9m6mZfdkZDz8dKnqaCuQNn7rVzcYlCC10shmkg,81067
317
+ ccxt/async_support/zaif.py,sha256=jTK5pLZSpKL1Pt0qAJTjN09TDS5AfhptGgGAqw7sNwE,29045
318
+ ccxt/async_support/zonda.py,sha256=e5sSXcFM7NZSyCGPoKmeyNe5wLIxJZJhDAetMknwAYo,81544
319
319
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
320
- ccxt/async_support/base/exchange.py,sha256=qL5PGagZU2RzriT1kC6ks1KlDVEFf7e5CTdJ-PTtaA8,109872
320
+ ccxt/async_support/base/exchange.py,sha256=MmuyZc6gSSGlF3PmxxlNAQxeawp5uxyBL9t8OWiYW7o,109872
321
321
  ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
322
322
  ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
323
323
  ccxt/async_support/base/ws/aiohttp_client.py,sha256=5IEiT0elWI9a7Vr-KV0jgmlbpLJWBzIlrLaCkTKGaqY,5752
@@ -331,24 +331,24 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9produGjmB
331
331
  ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
332
332
  ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
333
333
  ccxt/base/errors.py,sha256=FGdyULeNCNcl52gA_CNhe2dZmat9GJGkTdlIyDXAF_A,4213
334
- ccxt/base/exchange.py,sha256=1VGLCY6gWXUmbb8vV27QFp6aOBZFgy6qn7SqkdqJZFU,280871
334
+ ccxt/base/exchange.py,sha256=LdZOLqZKTf1D1zHEHEfx-0RTcz201x6hauayBdN8-d0,280871
335
335
  ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
336
336
  ccxt/base/types.py,sha256=RGGcbz86cVtrmU602zoFO5gSWrv_J7IHxQkPnzmNirs,9247
337
- ccxt/pro/__init__.py,sha256=Tic3luFgg7OtPiZQOpDF2n7y-nRqA7UFLMmLbpUJR4Q,7107
337
+ ccxt/pro/__init__.py,sha256=WxyBWNBICF6P3mdUh3-cGlYr--2aVTVwD9yJiq4rJAA,7107
338
338
  ccxt/pro/alpaca.py,sha256=81nFwDKyNlmUnhSyRyDLmLU6LGt3yqip1L_Ms2UyAmw,27215
339
339
  ccxt/pro/ascendex.py,sha256=e4WZqmTkIz9sVAWtKAaV6BvanrM2ylRdzjxrclZYmOE,35456
340
340
  ccxt/pro/bequant.py,sha256=5zbsP8BHQTUZ8ZNL6uaACxDbUClgkOV4SYfXT_LfQVg,1351
341
- ccxt/pro/binance.py,sha256=ndG3kdfcJbrHfxBtB4iUYAgREbUn0_2PZpcvOHmAGP0,170611
341
+ ccxt/pro/binance.py,sha256=T04Vyy8OspWUULgta-nFiSauzrEFqzN49P1gDbIi4-I,170622
342
342
  ccxt/pro/binancecoinm.py,sha256=s_evAyeT23VqscMRuSjrCK2CSaNsP-oc8A8noSuaLwQ,976
343
343
  ccxt/pro/binanceus.py,sha256=mpvmzc7kK3cGShM5EOvadOvwlj1xWsWzX9fIapuq2eQ,2321
344
344
  ccxt/pro/binanceusdm.py,sha256=S0eT662O2ReplsihWk42nhJWqw1XsODpeDQa9eFVVt8,1357
345
- ccxt/pro/bingx.py,sha256=b_NRCufa4-kXeVY9D5xP5bFK7LsiYEWy_B-M66Z8BVQ,42133
345
+ ccxt/pro/bingx.py,sha256=GrEb2vYX6LfM0WTmaR3o6k-3sWUhmxv5fSMLg0k2t50,42367
346
346
  ccxt/pro/bitcoincom.py,sha256=zAX6hiz4hS6Un8dSGp88rpnvItxQHfNmsfF0IZ2xIVA,1181
347
347
  ccxt/pro/bitfinex.py,sha256=55-BovgmV3cHjys5GSRk36RiNQtGgW4NWPI1goRrDic,24890
348
- ccxt/pro/bitfinex2.py,sha256=FRbiqzPWZ-3BW8VXitDEC-KsAtkqMCXoYRuki6IrfUM,42908
348
+ ccxt/pro/bitfinex2.py,sha256=u9utq8U4s1l77uFB-b1AXfKqHGMaShg_f8699stsMQw,42923
349
349
  ccxt/pro/bitget.py,sha256=VS854ESz4uIxAfSJ3dqoaThESzrcyZhBWFFlmQjp8rE,73832
350
350
  ccxt/pro/bithumb.py,sha256=dqYKWebxFg4rsP7jg3oBnCUBcpZAoqAmZsozAU9pYds,16835
351
- ccxt/pro/bitmart.py,sha256=rr8ZuA8CDIdmc_CDkex_93cR3RAmpmr3oS0D5B0gVcE,62434
351
+ ccxt/pro/bitmart.py,sha256=LEL8l7AYRzmxilMiVRUW6JuEY7La1CYxlbQbYHnPfmc,62426
352
352
  ccxt/pro/bitmex.py,sha256=37rOYjBoNMAG_idlVu8wP1FQ5QpqF2z616xrsXiqPxk,73691
353
353
  ccxt/pro/bitopro.py,sha256=xOmXbO9BZj0dr-LbWqW7zU2aLvVVYcoOgXcit4PP0cc,18748
354
354
  ccxt/pro/bitpanda.py,sha256=ELrhfFKN9YJJdmm9wBf-vpk6WsXGWGf-SyJdqm-E_Lg,415
@@ -356,7 +356,7 @@ ccxt/pro/bitrue.py,sha256=FFIeIeeV_vh4iM2hMg85vOqxWrrpv0Gi7XO5B5Z0VyY,16496
356
356
  ccxt/pro/bitstamp.py,sha256=P8Td5HqWiO6GMdLj-cKqPTZD28fltWlZQ7Z-omDbO60,20916
357
357
  ccxt/pro/bitvavo.py,sha256=vn70dtyWs2TSZieCevvwKliRInmvvzMrvTyGq0fTIYM,56229
358
358
  ccxt/pro/blockchaincom.py,sha256=LtCL3habcuB2IRXXK_oeqdzqpnkj01Gr79X82nK8Mnk,29600
359
- ccxt/pro/bybit.py,sha256=jdslLAXhN_mhW0x4soBhkCNY8CPe0h6LE2bgDVr28Ek,88918
359
+ ccxt/pro/bybit.py,sha256=JmqA7Le1Pcdgr5TElu_kFAHHu0-tLQDsqamjfJoaKz4,88926
360
360
  ccxt/pro/cex.py,sha256=ri0fnWYa4tFeeuJ_edqUziI5VJ921rRjIapion9Emug,58495
361
361
  ccxt/pro/coinbase.py,sha256=q5PQ--k9q50UrgWCPYV0y2tx5hQ32nmWXBp4nvJsQag,30628
362
362
  ccxt/pro/coinbaseexchange.py,sha256=taV-mCliIcc6XQjxSl2HmYHpBkOIDkxUxF2LrBSXfCc,39035
@@ -373,7 +373,7 @@ ccxt/pro/gateio.py,sha256=_uBWXYQbmsHRivKnZOJDmxJ9tWLO_0HAxmOjAEUy9nE,391
373
373
  ccxt/pro/gemini.py,sha256=xE9GW1tgdH18e3sOzNmjFpr8DZIO1bQk49CUg7o1abM,36707
374
374
  ccxt/pro/hitbtc.py,sha256=CclIDdz1BjgmFCd2kaN6vTwIzY7kfPrRAspSn18Hbdo,56362
375
375
  ccxt/pro/hollaex.py,sha256=45uB6wD_9MbiLaa6v7K6xMwj4aRwk5Rtq8gIbw_nLZA,21993
376
- ccxt/pro/htx.py,sha256=YSXv7tZF6GrNrGGRMv_XLZx5HHXOhrztWAWEtJ7YoeQ,96142
376
+ ccxt/pro/htx.py,sha256=OecrPkIXzNIG-BHbqwTFKYW0WkKbcGY_kwKN-HlWg1U,96105
377
377
  ccxt/pro/huobi.py,sha256=rKZVgYqEr-MmZzTqAk4FoJt8qWFjCi_FY0ci_mWZrL0,385
378
378
  ccxt/pro/huobijp.py,sha256=aL6wEqAfnZp15mvfxbCsKI5OJqeCLN5IM5QO0OvJRSk,23270
379
379
  ccxt/pro/hyperliquid.py,sha256=S1mgOMz-7IwtFgC-xJL3YjKim10qVgj7XpvtmpOq4w8,20845
@@ -388,7 +388,7 @@ ccxt/pro/luno.py,sha256=AzLK0_C0Hu25ukMNkMLP_sY3D4UG9FT38oawpo4jzTg,12336
388
388
  ccxt/pro/mexc.py,sha256=F33IK9npVfdTkp0i7OX9UqJYoVrFhsX_JXmm2vHvs2E,43265
389
389
  ccxt/pro/ndax.py,sha256=fQsoYtrTEsCZB3hl-pavQytwQAaiMAiTyaCiOy1sVTg,22715
390
390
  ccxt/pro/okcoin.py,sha256=M9x9p9umvIdP13uw_Wyx-TCg7QLMI7ov5DnukCXTBNE,30421
391
- ccxt/pro/okx.py,sha256=pVO5mODzj9ToJHhL0Tbxiy49bACbVv7xtBMQ98n-FQE,83827
391
+ ccxt/pro/okx.py,sha256=wDGxy_IoM9XYMySAhtoYuOFGeyGWqEP3lOjorjVw3Lo,83790
392
392
  ccxt/pro/onetrading.py,sha256=lovj_9_bhEASahK2bREMHEjRNUjgl8G51ciuxFIsALM,54712
393
393
  ccxt/pro/p2b.py,sha256=Vdm2wc4RF3IDMKivSlNyWjrh9IR0c-Zm5lDjY4AIass,17889
394
394
  ccxt/pro/phemex.py,sha256=8lB5OJb6QNvcLkbDKB4eQOS6r0KjLrxTgRxQhO950Is,61086
@@ -398,7 +398,7 @@ ccxt/pro/probit.py,sha256=9VrgL_4-rSjRBmYjkVcHB7una78glQm6LIU0lxTQV9U,22870
398
398
  ccxt/pro/upbit.py,sha256=sxtqXbJ7efOkiVr80dcm-EB7MZPz9bxjGwrNlICgx0Y,9660
399
399
  ccxt/pro/wazirx.py,sha256=wD-1CqN9gMXvU-bef09LkSwql_KdsEIn_vBPka5tLzM,30103
400
400
  ccxt/pro/whitebit.py,sha256=ZoWKxOYFG3flOYHosUo6LGRs83PVgCC3trLxJbbFLpk,35069
401
- ccxt/pro/woo.py,sha256=topKFxXI7LbMDBpaVSqIDsUGcLX0dy5Kn6J_U4LwihY,43668
401
+ ccxt/pro/woo.py,sha256=rxos2u5iRIJrhQTPRy_pmsNnI4ooleBagstVwLYX-H8,43678
402
402
  ccxt/pro/woofipro.py,sha256=rWsxJxQsJEpLmu-W-rLwc3OO2b_Uq-dxaJ_8sZ_Q4aM,48976
403
403
  ccxt/static_dependencies/__init__.py,sha256=GpOAh5lJ5Kyk1K1lWf9DzDZeZ-prHXXK38dVpW5GPfc,84
404
404
  ccxt/static_dependencies/ecdsa/__init__.py,sha256=Xaj0G79BLtBt2YZcOOMV8qOlQZ7fIJznNiHhiEEZfQA,594
@@ -535,7 +535,7 @@ ccxt/test/base/test_ticker.py,sha256=cMTIMb1oySNORUCmqI5ZzMswlEyCF6gJMah3vfvo8wQ
535
535
  ccxt/test/base/test_trade.py,sha256=PMtmB8V38dpaP-eb8h488xYMlR6D69yCOhsA1RuWrUA,2336
536
536
  ccxt/test/base/test_trading_fee.py,sha256=2aDCNJtqBkTC_AieO0l1HYGq5hz5qkWlkWb9Nv_fcwk,1066
537
537
  ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
538
- ccxt-4.3.35.dist-info/METADATA,sha256=3zh4ksEI4RxmsDtqKu19LgTOJFGZenK_UwGFccDNFrU,112807
539
- ccxt-4.3.35.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
540
- ccxt-4.3.35.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
541
- ccxt-4.3.35.dist-info/RECORD,,
538
+ ccxt-4.3.36.dist-info/METADATA,sha256=UMScllpu9MtdaOWcb_wT1xB8i6VR6zW3EtAQBY_NhSI,112807
539
+ ccxt-4.3.36.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
540
+ ccxt-4.3.36.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
541
+ ccxt-4.3.36.dist-info/RECORD,,
File without changes