ccxt 4.4.87__py2.py3-none-any.whl → 4.4.88__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 CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.4.87'
25
+ __version__ = '4.4.88'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.87'
7
+ __version__ = '4.4.88'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.4.87'
5
+ __version__ = '4.4.88'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -282,7 +282,10 @@ class Exchange(BaseExchange):
282
282
  currencies = None
283
283
  if self.has['fetchCurrencies'] is True:
284
284
  currencies = await self.fetch_currencies()
285
+ self.options['cachedCurrencies'] = currencies
285
286
  markets = await self.fetch_markets(params)
287
+ if 'cachedCurrencies' in self.options:
288
+ del self.options['cachedCurrencies']
286
289
  return self.set_markets(markets, currencies)
287
290
 
288
291
 
@@ -2302,15 +2302,9 @@ class bybit(Exchange, ImplicitAPI):
2302
2302
  # 'baseCoin': '', Base coin. For option only
2303
2303
  # 'expDate': '', Expiry date. e.g., 25DEC22. For option only
2304
2304
  }
2305
- if market['spot']:
2306
- request['category'] = 'spot'
2307
- else:
2308
- if market['option']:
2309
- request['category'] = 'option'
2310
- elif market['linear']:
2311
- request['category'] = 'linear'
2312
- elif market['inverse']:
2313
- request['category'] = 'inverse'
2305
+ category = None
2306
+ category, params = self.get_bybit_type('fetchTicker', market, params)
2307
+ request['category'] = category
2314
2308
  response = await self.publicGetV5MarketTickers(self.extend(request, params))
2315
2309
  #
2316
2310
  # {
@@ -2402,24 +2396,14 @@ class bybit(Exchange, ImplicitAPI):
2402
2396
  # 'baseCoin': '', # Base coin. For option only
2403
2397
  # 'expDate': '', # Expiry date. e.g., 25DEC22. For option only
2404
2398
  }
2405
- type = None
2406
- type, params = self.handle_market_type_and_params('fetchTickers', market, params)
2407
- # Calls like `.fetchTickers(None, {subType:'inverse'})` should be supported for self exchange, so
2408
- # as "options.defaultSubType" is also set in exchange options, we should consider `params.subType`
2409
- # with higher priority and only default to spot, if `subType` is not set in params
2410
- passedSubType = self.safe_string(params, 'subType')
2411
- subType = None
2412
- subType, params = self.handle_sub_type_and_params('fetchTickers', market, params, 'linear')
2413
- # only if passedSubType is None, then use spot
2414
- if type == 'spot' and passedSubType is None:
2415
- request['category'] = 'spot'
2416
- elif type == 'option':
2399
+ category = None
2400
+ category, params = self.get_bybit_type('fetchTickers', market, params)
2401
+ request['category'] = category
2402
+ if category == 'option':
2417
2403
  request['category'] = 'option'
2418
2404
  if code is None:
2419
2405
  code = 'BTC'
2420
2406
  request['baseCoin'] = code
2421
- elif type == 'swap' or type == 'future' or subType is not None:
2422
- request['category'] = subType
2423
2407
  response = await self.publicGetV5MarketTickers(self.extend(request, params))
2424
2408
  #
2425
2409
  # {
@@ -3891,14 +3875,9 @@ class bybit(Exchange, ImplicitAPI):
3891
3875
  request['orderLinkId'] = self.uuid16()
3892
3876
  if isLimit:
3893
3877
  request['price'] = priceString
3894
- if market['spot']:
3895
- request['category'] = 'spot'
3896
- elif market['option']:
3897
- request['category'] = 'option'
3898
- elif market['linear']:
3899
- request['category'] = 'linear'
3900
- elif market['inverse']:
3901
- request['category'] = 'inverse'
3878
+ category = None
3879
+ category, params = self.get_bybit_type('createOrderRequest', market, params)
3880
+ request['category'] = category
3902
3881
  cost = self.safe_string(params, 'cost')
3903
3882
  params = self.omit(params, 'cost')
3904
3883
  # if the cost is inferable, let's keep the old logic and ignore marketUnit, to minimize the impact of the changes
@@ -4091,14 +4070,9 @@ class bybit(Exchange, ImplicitAPI):
4091
4070
  # Valid for option only.
4092
4071
  # 'orderIv': '0', # Implied volatility; parameters are passed according to the real value; for example, for 10%, 0.1 is passed
4093
4072
  }
4094
- if market['spot']:
4095
- request['category'] = 'spot'
4096
- elif market['linear']:
4097
- request['category'] = 'linear'
4098
- elif market['inverse']:
4099
- request['category'] = 'inverse'
4100
- elif market['option']:
4101
- request['category'] = 'option'
4073
+ category = None
4074
+ category, params = self.get_bybit_type('editOrderRequest', market, params)
4075
+ request['category'] = category
4102
4076
  if amount is not None:
4103
4077
  request['qty'] = self.get_amount(symbol, amount)
4104
4078
  if price is not None:
@@ -4289,14 +4263,9 @@ class bybit(Exchange, ImplicitAPI):
4289
4263
  request['orderFilter'] = 'StopOrder' if isTrigger else 'Order'
4290
4264
  if id is not None: # The user can also use argument params["orderLinkId"]
4291
4265
  request['orderId'] = id
4292
- if market['spot']:
4293
- request['category'] = 'spot'
4294
- elif market['linear']:
4295
- request['category'] = 'linear'
4296
- elif market['inverse']:
4297
- request['category'] = 'inverse'
4298
- elif market['option']:
4299
- request['category'] = 'option'
4266
+ category = None
4267
+ category, params = self.get_bybit_type('cancelOrderRequest', market, params)
4268
+ request['category'] = category
4300
4269
  return self.extend(request, params)
4301
4270
 
4302
4271
  async def cancel_order(self, id: str, symbol: Str = None, params={}) -> Order:
@@ -7189,14 +7158,7 @@ classic accounts only/ spot not supported* fetches information on an order made
7189
7158
  'symbol': market['id'],
7190
7159
  }
7191
7160
  category = None
7192
- if market['linear']:
7193
- category = 'linear'
7194
- elif market['inverse']:
7195
- category = 'inverse'
7196
- elif market['spot']:
7197
- category = 'spot'
7198
- else:
7199
- category = 'option'
7161
+ category, params = self.get_bybit_type('fetchTradingFee', market, params)
7200
7162
  request['category'] = category
7201
7163
  response = await self.privateGetV5AccountFeeRate(self.extend(request, params))
7202
7164
  #
@@ -7435,9 +7397,9 @@ classic accounts only/ spot not supported* fetches information on an order made
7435
7397
  request['symbol'] = market['id']
7436
7398
  type = None
7437
7399
  type, params = self.get_bybit_type('fetchMySettlementHistory', market, params)
7438
- if type == 'spot' or type == 'inverse':
7400
+ if type == 'spot':
7439
7401
  raise NotSupported(self.id + ' fetchMySettlementHistory() is not supported for spot market')
7440
- request['category'] = 'linear'
7402
+ request['category'] = type
7441
7403
  if limit is not None:
7442
7404
  request['limit'] = limit
7443
7405
  response = await self.privateGetV5AssetDeliveryRecord(self.extend(request, params))
@@ -50,16 +50,16 @@ class modetrade(Exchange, ImplicitAPI):
50
50
  'createConvertTrade': False,
51
51
  'createDepositAddress': False,
52
52
  'createMarketBuyOrderWithCost': False,
53
- 'createMarketOrder': False,
53
+ 'createMarketOrder': True,
54
54
  'createMarketOrderWithCost': False,
55
55
  'createMarketSellOrderWithCost': False,
56
56
  'createOrder': True,
57
57
  'createOrderWithTakeProfitAndStopLoss': True,
58
58
  'createReduceOnlyOrder': True,
59
- 'createStopLimitOrder': False,
59
+ 'createStopLimitOrder': True,
60
60
  'createStopLossOrder': True,
61
- 'createStopMarketOrder': False,
62
- 'createStopOrder': False,
61
+ 'createStopMarketOrder': True,
62
+ 'createStopOrder': True,
63
63
  'createTakeProfitOrder': True,
64
64
  'createTrailingAmountOrder': False,
65
65
  'createTrailingPercentOrder': False,
@@ -298,7 +298,7 @@ class modetrade(Exchange, ImplicitAPI):
298
298
  },
299
299
  'options': {
300
300
  'sandboxMode': False,
301
- 'brokerId': 'CCXT',
301
+ 'brokerId': 'CCXTMODE',
302
302
  'verifyingContractAddress': '0x6F7a338F2aA472838dEFD3283eB360d4Dff5D203',
303
303
  },
304
304
  'features': {
@@ -2069,7 +2069,7 @@ class modetrade(Exchange, ImplicitAPI):
2069
2069
  code = self.safe_currency_code(self.safe_string(balance, 'token'))
2070
2070
  account = self.account()
2071
2071
  account['total'] = self.safe_string(balance, 'holding')
2072
- account['frozen'] = self.safe_string(balance, 'frozen')
2072
+ account['used'] = self.safe_string(balance, 'frozen')
2073
2073
  result[code] = account
2074
2074
  return self.safe_balance(result)
2075
2075
 
@@ -2671,7 +2671,7 @@ class modetrade(Exchange, ImplicitAPI):
2671
2671
  if isPostOrPut and isOrder:
2672
2672
  isSandboxMode = self.safe_bool(self.options, 'sandboxMode', False)
2673
2673
  if not isSandboxMode:
2674
- brokerId = self.safe_string(self.options, 'brokerId', 'CCXT')
2674
+ brokerId = self.safe_string(self.options, 'brokerId', 'CCXTMODE')
2675
2675
  if path == 'batch-order':
2676
2676
  ordersList = self.safe_list(params, 'orders', [])
2677
2677
  for i in range(0, len(ordersList)):
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.87'
7
+ __version__ = '4.4.88'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -1536,7 +1536,8 @@ class Exchange(object):
1536
1536
  currencies = self.fetch_currencies()
1537
1537
  self.options['cachedCurrencies'] = currencies
1538
1538
  markets = self.fetch_markets(params)
1539
- del self.options['cachedCurrencies']
1539
+ if 'cachedCurrencies' in self.options:
1540
+ del self.options['cachedCurrencies']
1540
1541
  return self.set_markets(markets, currencies)
1541
1542
 
1542
1543
  def fetch_markets(self, params={}):
ccxt/bybit.py CHANGED
@@ -2301,15 +2301,9 @@ class bybit(Exchange, ImplicitAPI):
2301
2301
  # 'baseCoin': '', Base coin. For option only
2302
2302
  # 'expDate': '', Expiry date. e.g., 25DEC22. For option only
2303
2303
  }
2304
- if market['spot']:
2305
- request['category'] = 'spot'
2306
- else:
2307
- if market['option']:
2308
- request['category'] = 'option'
2309
- elif market['linear']:
2310
- request['category'] = 'linear'
2311
- elif market['inverse']:
2312
- request['category'] = 'inverse'
2304
+ category = None
2305
+ category, params = self.get_bybit_type('fetchTicker', market, params)
2306
+ request['category'] = category
2313
2307
  response = self.publicGetV5MarketTickers(self.extend(request, params))
2314
2308
  #
2315
2309
  # {
@@ -2401,24 +2395,14 @@ class bybit(Exchange, ImplicitAPI):
2401
2395
  # 'baseCoin': '', # Base coin. For option only
2402
2396
  # 'expDate': '', # Expiry date. e.g., 25DEC22. For option only
2403
2397
  }
2404
- type = None
2405
- type, params = self.handle_market_type_and_params('fetchTickers', market, params)
2406
- # Calls like `.fetchTickers(None, {subType:'inverse'})` should be supported for self exchange, so
2407
- # as "options.defaultSubType" is also set in exchange options, we should consider `params.subType`
2408
- # with higher priority and only default to spot, if `subType` is not set in params
2409
- passedSubType = self.safe_string(params, 'subType')
2410
- subType = None
2411
- subType, params = self.handle_sub_type_and_params('fetchTickers', market, params, 'linear')
2412
- # only if passedSubType is None, then use spot
2413
- if type == 'spot' and passedSubType is None:
2414
- request['category'] = 'spot'
2415
- elif type == 'option':
2398
+ category = None
2399
+ category, params = self.get_bybit_type('fetchTickers', market, params)
2400
+ request['category'] = category
2401
+ if category == 'option':
2416
2402
  request['category'] = 'option'
2417
2403
  if code is None:
2418
2404
  code = 'BTC'
2419
2405
  request['baseCoin'] = code
2420
- elif type == 'swap' or type == 'future' or subType is not None:
2421
- request['category'] = subType
2422
2406
  response = self.publicGetV5MarketTickers(self.extend(request, params))
2423
2407
  #
2424
2408
  # {
@@ -3890,14 +3874,9 @@ class bybit(Exchange, ImplicitAPI):
3890
3874
  request['orderLinkId'] = self.uuid16()
3891
3875
  if isLimit:
3892
3876
  request['price'] = priceString
3893
- if market['spot']:
3894
- request['category'] = 'spot'
3895
- elif market['option']:
3896
- request['category'] = 'option'
3897
- elif market['linear']:
3898
- request['category'] = 'linear'
3899
- elif market['inverse']:
3900
- request['category'] = 'inverse'
3877
+ category = None
3878
+ category, params = self.get_bybit_type('createOrderRequest', market, params)
3879
+ request['category'] = category
3901
3880
  cost = self.safe_string(params, 'cost')
3902
3881
  params = self.omit(params, 'cost')
3903
3882
  # if the cost is inferable, let's keep the old logic and ignore marketUnit, to minimize the impact of the changes
@@ -4090,14 +4069,9 @@ class bybit(Exchange, ImplicitAPI):
4090
4069
  # Valid for option only.
4091
4070
  # 'orderIv': '0', # Implied volatility; parameters are passed according to the real value; for example, for 10%, 0.1 is passed
4092
4071
  }
4093
- if market['spot']:
4094
- request['category'] = 'spot'
4095
- elif market['linear']:
4096
- request['category'] = 'linear'
4097
- elif market['inverse']:
4098
- request['category'] = 'inverse'
4099
- elif market['option']:
4100
- request['category'] = 'option'
4072
+ category = None
4073
+ category, params = self.get_bybit_type('editOrderRequest', market, params)
4074
+ request['category'] = category
4101
4075
  if amount is not None:
4102
4076
  request['qty'] = self.get_amount(symbol, amount)
4103
4077
  if price is not None:
@@ -4288,14 +4262,9 @@ class bybit(Exchange, ImplicitAPI):
4288
4262
  request['orderFilter'] = 'StopOrder' if isTrigger else 'Order'
4289
4263
  if id is not None: # The user can also use argument params["orderLinkId"]
4290
4264
  request['orderId'] = id
4291
- if market['spot']:
4292
- request['category'] = 'spot'
4293
- elif market['linear']:
4294
- request['category'] = 'linear'
4295
- elif market['inverse']:
4296
- request['category'] = 'inverse'
4297
- elif market['option']:
4298
- request['category'] = 'option'
4265
+ category = None
4266
+ category, params = self.get_bybit_type('cancelOrderRequest', market, params)
4267
+ request['category'] = category
4299
4268
  return self.extend(request, params)
4300
4269
 
4301
4270
  def cancel_order(self, id: str, symbol: Str = None, params={}) -> Order:
@@ -7188,14 +7157,7 @@ classic accounts only/ spot not supported* fetches information on an order made
7188
7157
  'symbol': market['id'],
7189
7158
  }
7190
7159
  category = None
7191
- if market['linear']:
7192
- category = 'linear'
7193
- elif market['inverse']:
7194
- category = 'inverse'
7195
- elif market['spot']:
7196
- category = 'spot'
7197
- else:
7198
- category = 'option'
7160
+ category, params = self.get_bybit_type('fetchTradingFee', market, params)
7199
7161
  request['category'] = category
7200
7162
  response = self.privateGetV5AccountFeeRate(self.extend(request, params))
7201
7163
  #
@@ -7434,9 +7396,9 @@ classic accounts only/ spot not supported* fetches information on an order made
7434
7396
  request['symbol'] = market['id']
7435
7397
  type = None
7436
7398
  type, params = self.get_bybit_type('fetchMySettlementHistory', market, params)
7437
- if type == 'spot' or type == 'inverse':
7399
+ if type == 'spot':
7438
7400
  raise NotSupported(self.id + ' fetchMySettlementHistory() is not supported for spot market')
7439
- request['category'] = 'linear'
7401
+ request['category'] = type
7440
7402
  if limit is not None:
7441
7403
  request['limit'] = limit
7442
7404
  response = self.privateGetV5AssetDeliveryRecord(self.extend(request, params))
ccxt/modetrade.py CHANGED
@@ -50,16 +50,16 @@ class modetrade(Exchange, ImplicitAPI):
50
50
  'createConvertTrade': False,
51
51
  'createDepositAddress': False,
52
52
  'createMarketBuyOrderWithCost': False,
53
- 'createMarketOrder': False,
53
+ 'createMarketOrder': True,
54
54
  'createMarketOrderWithCost': False,
55
55
  'createMarketSellOrderWithCost': False,
56
56
  'createOrder': True,
57
57
  'createOrderWithTakeProfitAndStopLoss': True,
58
58
  'createReduceOnlyOrder': True,
59
- 'createStopLimitOrder': False,
59
+ 'createStopLimitOrder': True,
60
60
  'createStopLossOrder': True,
61
- 'createStopMarketOrder': False,
62
- 'createStopOrder': False,
61
+ 'createStopMarketOrder': True,
62
+ 'createStopOrder': True,
63
63
  'createTakeProfitOrder': True,
64
64
  'createTrailingAmountOrder': False,
65
65
  'createTrailingPercentOrder': False,
@@ -298,7 +298,7 @@ class modetrade(Exchange, ImplicitAPI):
298
298
  },
299
299
  'options': {
300
300
  'sandboxMode': False,
301
- 'brokerId': 'CCXT',
301
+ 'brokerId': 'CCXTMODE',
302
302
  'verifyingContractAddress': '0x6F7a338F2aA472838dEFD3283eB360d4Dff5D203',
303
303
  },
304
304
  'features': {
@@ -2069,7 +2069,7 @@ class modetrade(Exchange, ImplicitAPI):
2069
2069
  code = self.safe_currency_code(self.safe_string(balance, 'token'))
2070
2070
  account = self.account()
2071
2071
  account['total'] = self.safe_string(balance, 'holding')
2072
- account['frozen'] = self.safe_string(balance, 'frozen')
2072
+ account['used'] = self.safe_string(balance, 'frozen')
2073
2073
  result[code] = account
2074
2074
  return self.safe_balance(result)
2075
2075
 
@@ -2671,7 +2671,7 @@ class modetrade(Exchange, ImplicitAPI):
2671
2671
  if isPostOrPut and isOrder:
2672
2672
  isSandboxMode = self.safe_bool(self.options, 'sandboxMode', False)
2673
2673
  if not isSandboxMode:
2674
- brokerId = self.safe_string(self.options, 'brokerId', 'CCXT')
2674
+ brokerId = self.safe_string(self.options, 'brokerId', 'CCXTMODE')
2675
2675
  if path == 'batch-order':
2676
2676
  ordersList = self.safe_list(params, 'orders', [])
2677
2677
  for i in range(0, len(ordersList)):
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.87'
7
+ __version__ = '4.4.88'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
@@ -165,6 +165,14 @@ from ccxt.base.errors import error_hierarchy # noqa: F4
165
165
 
166
166
 
167
167
 
168
+
169
+
170
+
171
+
172
+
173
+
174
+
175
+
168
176
 
169
177
 
170
178
 
ccxt/test/tests_async.py CHANGED
@@ -1731,7 +1731,7 @@ class testMainClass:
1731
1731
  async def test_mode_trade(self):
1732
1732
  exchange = self.init_offline_exchange('modetrade')
1733
1733
  exchange.secret = 'secretsecretsecretsecretsecretsecretsecrets'
1734
- id = 'CCXT'
1734
+ id = 'CCXTMODE'
1735
1735
  await exchange.load_markets()
1736
1736
  request = None
1737
1737
  try:
ccxt/test/tests_sync.py CHANGED
@@ -1728,7 +1728,7 @@ class testMainClass:
1728
1728
  def test_mode_trade(self):
1729
1729
  exchange = self.init_offline_exchange('modetrade')
1730
1730
  exchange.secret = 'secretsecretsecretsecretsecretsecretsecrets'
1731
- id = 'CCXT'
1731
+ id = 'CCXTMODE'
1732
1732
  exchange.load_markets()
1733
1733
  request = None
1734
1734
  try:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.4.87
3
+ Version: 4.4.88
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
@@ -280,13 +280,13 @@ console.log(version, Object.keys(exchanges));
280
280
 
281
281
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
282
282
 
283
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.87/dist/ccxt.browser.min.js
284
- * unpkg: https://unpkg.com/ccxt@4.4.87/dist/ccxt.browser.min.js
283
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.88/dist/ccxt.browser.min.js
284
+ * unpkg: https://unpkg.com/ccxt@4.4.88/dist/ccxt.browser.min.js
285
285
 
286
286
  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.
287
287
 
288
288
  ```HTML
289
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.87/dist/ccxt.browser.min.js"></script>
289
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.88/dist/ccxt.browser.min.js"></script>
290
290
  ```
291
291
 
292
292
  Creates a global `ccxt` object:
@@ -1,4 +1,4 @@
1
- ccxt/__init__.py,sha256=_PgJ91C6uQjky8xQbSrtAsxW4cffrKOHxCktfAGzkQ0,16283
1
+ ccxt/__init__.py,sha256=BGDLdHsOBvgbuZS9KCxoJ4_lxgd6kMfqw35nv-efthk,16283
2
2
  ccxt/alpaca.py,sha256=S-PvXknJDcYUqHZWg4isZKGbTa8oU2G4Z0BqbvObNPI,80687
3
3
  ccxt/apex.py,sha256=zNACpzgcqESJBg73H7gdDoA7ixjDVhCwFRr5hVtcT5g,82680
4
4
  ccxt/ascendex.py,sha256=J1Ob6JJ-GXLfm5NHKETN985sAPN3nYlzWi57GYB1zpE,158608
@@ -34,7 +34,7 @@ ccxt/btcalpha.py,sha256=Qu1-AQMHwXc_-0iSDo48cZDl1v5gIbaU1ITwvzQnHIE,39706
34
34
  ccxt/btcbox.py,sha256=kNfz-rnGpVyJ1dnWKcv5gaz4-DwdK-zOT7-f5u0qfFk,31000
35
35
  ccxt/btcmarkets.py,sha256=f157cn1ERJoudlZu-qYbr-nb5EdOYHqmcqJ6JSOS2eY,55829
36
36
  ccxt/btcturk.py,sha256=qy2VlkpclOKMgqmrPHccONIJZQVvGcJy2PG-f6KVKTg,39482
37
- ccxt/bybit.py,sha256=3i5hhaRv9O6w8uUYRCewDxu8QRqvbBvIZWDm44C98pY,437593
37
+ ccxt/bybit.py,sha256=Amhb0bOzfGShTWdQ0qcZAM9teZnsoAxrdj_E3P1Zqgg,436082
38
38
  ccxt/cex.py,sha256=3w-RPApgT6JNGQZmc9L0ze6IqycO97Xna69_aT17Lzc,72456
39
39
  ccxt/coinbase.py,sha256=kPQ5_rfs7Qtu_yGCa91R2ylFa2WDbrT_PaAJpA5tQEM,236454
40
40
  ccxt/coinbaseadvanced.py,sha256=Eb1X4_VtdNEu1q0Anr-MzdHG55OhCiZYgdeZv2kFuPg,577
@@ -79,7 +79,7 @@ ccxt/lbank.py,sha256=wboC02jnDOCj4Q1QNuwgMJ6umoXuYS1CySiXP4valCg,123621
79
79
  ccxt/luno.py,sha256=GE6oeD1cmS56KmATCX-BE5_1IyRYUvKKjEV72KSkKhY,53714
80
80
  ccxt/mercado.py,sha256=xdbHqVJgj570KETzQSUftP_I73ewdVqSg0Sj_oORt0w,38466
81
81
  ccxt/mexc.py,sha256=EuxghSeUvzVJr0QUm6tzC3Hdt0019W6sTOc16NYyXO0,258910
82
- ccxt/modetrade.py,sha256=QDGV8z0A0e1k4YW_KLPw6rPKGR_zd8PjOuaUMEi4Upg,120865
82
+ ccxt/modetrade.py,sha256=bKD93Irhu4x08dnV9RFR9u10xnqbSjQcc2KrhI3uVH8,120867
83
83
  ccxt/myokx.py,sha256=1fuUUuz5HuhSzTefnqUayu4NWVLNXzK58LPdpi0GYu4,1773
84
84
  ccxt/ndax.py,sha256=lnfDM_ogPiR5E9SL4iKt9iCeVbeTp8EUrM2N6J0_vM4,113853
85
85
  ccxt/novadax.py,sha256=8K6mKIBY5KyyunyBsYJEosfkr2yDrPVgJfFUpET242k,67583
@@ -216,7 +216,7 @@ ccxt/abstract/xt.py,sha256=n3eX1cItL_J0j8prOViV-C_tRwIFv_GO8JTvZZw8jv8,27837
216
216
  ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
217
217
  ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
218
218
  ccxt/abstract/zonda.py,sha256=X-hCW0SdX3YKZWixDyW-O2211M58Rno8kKJ6quY7rw4,7183
219
- ccxt/async_support/__init__.py,sha256=fAanPPjpM_F_1uGz7hxfndh57vIEeQMkNMQyiLdRVZc,16066
219
+ ccxt/async_support/__init__.py,sha256=4gocvvCSqlr_5DcV5pcLPeXq4SDf61rkq5Y2pYD8lpM,16066
220
220
  ccxt/async_support/alpaca.py,sha256=Tag0HpHxho_qrXoQ8rjZBVJZj9T38qg8g-mZR39_m18,81133
221
221
  ccxt/async_support/apex.py,sha256=Lf740Qrx0kRb2fVZWS0FwZeysyMz65IEFD66jzn-NfA,83168
222
222
  ccxt/async_support/ascendex.py,sha256=sbL_sajKakTo1-Qw87oipkxrA5Qk-ol6bnY3kqh_5Bk,159445
@@ -252,7 +252,7 @@ ccxt/async_support/btcalpha.py,sha256=60k6itHUZebFUStxORVOcImG6qeFiad8mKlhTsLqVG
252
252
  ccxt/async_support/btcbox.py,sha256=LDK_Pc2RIdvuQ6nD3CxozOKXAZjGUwYFEdXa7OcWdUA,31256
253
253
  ccxt/async_support/btcmarkets.py,sha256=Zg3yrl0Gep_0_-pbRW3og0YUxutQe2iWXPorOhypAkQ,56179
254
254
  ccxt/async_support/btcturk.py,sha256=f2xZPMhw-4CKf9e5DYoNdDkbdqgyWvWRAZ9faaUPUyI,39700
255
- ccxt/async_support/bybit.py,sha256=OYcXpzKLFfHWDDp0kRAaDbH5YNPmjaNnJDcBOUjhBTQ,439413
255
+ ccxt/async_support/bybit.py,sha256=wCgkgnkPi8EMNTHbEE1RujWLMMU7b_h0aDMX9btK19I,437902
256
256
  ccxt/async_support/cex.py,sha256=glezHtzVpvdGI6GvN2kpwah5uJGStbg2e1rIh7UKRLE,72928
257
257
  ccxt/async_support/coinbase.py,sha256=We_HoNT5JuAFrQngrYC_T69HLbaaEq9_uMjNz2zPQM4,237715
258
258
  ccxt/async_support/coinbaseadvanced.py,sha256=TnsUS2r5fvHIEfQmJh7J6Muyg8tPqDJphKYmK7gUQGE,591
@@ -297,7 +297,7 @@ ccxt/async_support/lbank.py,sha256=cIEIQYDUTzTbnCZTxkfSS4ef80zlwlw1GBIRJJReopU,1
297
297
  ccxt/async_support/luno.py,sha256=B8VWaNjEYO_vdHypHP_iEpPlo0FQwrO4LMhkhmuYAwk,54088
298
298
  ccxt/async_support/mercado.py,sha256=rC48RX-XpLRd2u0roaGc5JY046mHrI6nq1b-4vhNeGU,38708
299
299
  ccxt/async_support/mexc.py,sha256=y8iNLQZMRq9aH0q456_XgA0nxX4iS6x2nf9YmjT6zG0,260174
300
- ccxt/async_support/modetrade.py,sha256=-8n3I_MvRlPetH0iz0ojfFjCpTlgj7UgGZHCeQf76TQ,121557
300
+ ccxt/async_support/modetrade.py,sha256=WrNDl7kVXZNHnXUkbU-Xc4M8_umWE_88GAoe0PLaOD8,121559
301
301
  ccxt/async_support/myokx.py,sha256=hU24R4SOpmyjnvgZe5YSU4ELucsSZlENBox4U0P862w,1787
302
302
  ccxt/async_support/ndax.py,sha256=UPHLwLNELb-CU4uSpxemsH3S4ZhosLmUwUwl1IYrCmA,114377
303
303
  ccxt/async_support/novadax.py,sha256=QIFIoZdkkq2odkX7V0wGn9ytgtzEDOTr4MnFGlgnKEk,67951
@@ -328,7 +328,7 @@ ccxt/async_support/yobit.py,sha256=B2T9UXo0ke-YyXxNW9avOPJ8cReVGXWD9OpkORI9ZSU,5
328
328
  ccxt/async_support/zaif.py,sha256=jZZv3ZjGQgkPNRfY5B5p5DNMvanHWTTS8m6BLBWm9tA,31357
329
329
  ccxt/async_support/zonda.py,sha256=2QL_B9CmBu4SU4K-Y8segpj57vzAd4aUT2H2cD3b07g,85320
330
330
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
331
- ccxt/async_support/base/exchange.py,sha256=pPVR10gnuBSN2R_vwgfnsqrvTXv7H30sXdPFls3skCk,119007
331
+ ccxt/async_support/base/exchange.py,sha256=fbgJlT00ihhKWP1xWzUWIR32BYHsi6WuAPxDH_Toe9Q,119161
332
332
  ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
333
333
  ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
334
334
  ccxt/async_support/base/ws/aiohttp_client.py,sha256=Y5HxAVXyyYduj6b6SbbUZETlq3GrVMzrkW1r-TMgpb8,6329
@@ -341,10 +341,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9produGjmB
341
341
  ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
342
342
  ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
343
343
  ccxt/base/errors.py,sha256=MvCrL_sAM3de616T6RE0PSxiF2xV6Qqz5b1y1ghidbk,4888
344
- ccxt/base/exchange.py,sha256=NGY9v0WAuFqoAPgiDPVR87xTwsjeKE78GxTz0TZe23Q,328149
344
+ ccxt/base/exchange.py,sha256=5k_lyLt0b6iu84H4u7pq1TpLtLC-jUPxlqmG0gQfElo,328200
345
345
  ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
346
346
  ccxt/base/types.py,sha256=IbLO7Ni-plO36xlOdJQFqujSJBq0q9qll009ShZ0M_U,11468
347
- ccxt/pro/__init__.py,sha256=b8wSg-YOoiB0EpQ88dOPL7E4Q97Ko6oQWzhjCLrjDtM,11499
347
+ ccxt/pro/__init__.py,sha256=xSFYX5hiCH7icEfmWVF_fgJCU6RI39brGH4P9B8n8Rs,11507
348
348
  ccxt/pro/alpaca.py,sha256=_WEorh5thYhvhn7R8hBvHW2m1P2foIbp8URjIt_9vcg,27623
349
349
  ccxt/pro/apex.py,sha256=fiKLT2R4vSCtTBXtXOgw_rJc6jPGINrpEJagzfvlL9c,42004
350
350
  ccxt/pro/ascendex.py,sha256=aSbIEzJ0Og_Nc5UGTYj3DVjGfIJ0-q0DdXSWJcQCKb4,37512
@@ -650,12 +650,12 @@ ccxt/static_dependencies/toolz/curried/operator.py,sha256=ML92mknkAwzBl2NCm-4wer
650
650
  ccxt/static_dependencies/typing_inspect/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
651
651
  ccxt/static_dependencies/typing_inspect/typing_inspect.py,sha256=5gIWomLPfuDpgd3gX1GlnX0MuXM3VorR4j2W2qXORiQ,28269
652
652
  ccxt/test/__init__.py,sha256=GKPbEcj0Rrz5HG-GUm-iY1IHhDYmlvcBXZAGk6-m2CI,141
653
- ccxt/test/tests_async.py,sha256=lRuPASSoguUlusgyj2e7EOXJuBBsVs0_ZIVSW_hN8as,94692
653
+ ccxt/test/tests_async.py,sha256=eRqVzaBGt3NGNbWs6HS85x_fNARypXYtaxDe3h-U0jc,94696
654
654
  ccxt/test/tests_helpers.py,sha256=egM69A2ZFYeVF5hwC1Qt-c5DOeClY5bv4jowmceeFV8,9736
655
655
  ccxt/test/tests_init.py,sha256=qM0-Gb0h0p6CANWTkyYZI7wl-iYOcrPur7aj_OKh7m0,1212
656
- ccxt/test/tests_sync.py,sha256=8jqAJHqIbPJGqTibQe0KcjJ8siGzQ67JT3Se_VtRT-U,93652
657
- ccxt-4.4.87.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
658
- ccxt-4.4.87.dist-info/METADATA,sha256=vTi0RaLZK05kpqkQZ0lgGVFWD_sjCIc8BqsheEWY04g,130748
659
- ccxt-4.4.87.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
660
- ccxt-4.4.87.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
661
- ccxt-4.4.87.dist-info/RECORD,,
656
+ ccxt/test/tests_sync.py,sha256=rlvVBtTTdQ92rof64feV-BQX3x1nzIE4HNcxUCF17O0,93656
657
+ ccxt-4.4.88.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
658
+ ccxt-4.4.88.dist-info/METADATA,sha256=9yUN_HIA1CHmjhTgiqr2Hu6zDvHrW60Ex6MsS3iwMrg,130748
659
+ ccxt-4.4.88.dist-info/WHEEL,sha256=Kh9pAotZVRFj97E15yTA4iADqXdQfIVTHcNaZTjxeGM,110
660
+ ccxt-4.4.88.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
661
+ ccxt-4.4.88.dist-info/RECORD,,
File without changes