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

Files changed (49) hide show
  1. ccxt/__init__.py +1 -1
  2. ccxt/async_support/__init__.py +1 -1
  3. ccxt/async_support/base/exchange.py +3 -3
  4. ccxt/async_support/binance.py +1 -1
  5. ccxt/async_support/bitforex.py +2 -0
  6. ccxt/async_support/bitget.py +9 -4
  7. ccxt/async_support/bitmex.py +2 -0
  8. ccxt/async_support/blockchaincom.py +0 -37
  9. ccxt/async_support/bybit.py +23 -14
  10. ccxt/async_support/coinlist.py +2 -0
  11. ccxt/async_support/coinsph.py +2 -0
  12. ccxt/async_support/cryptocom.py +2 -0
  13. ccxt/async_support/gate.py +258 -11
  14. ccxt/async_support/htx.py +223 -207
  15. ccxt/async_support/kuna.py +2 -0
  16. ccxt/async_support/mexc.py +2 -0
  17. ccxt/async_support/okcoin.py +3 -1
  18. ccxt/async_support/phemex.py +48 -1
  19. ccxt/async_support/poloniex.py +23 -2
  20. ccxt/async_support/tokocrypto.py +2 -0
  21. ccxt/async_support/wazirx.py +2 -0
  22. ccxt/async_support/whitebit.py +2 -0
  23. ccxt/base/exchange.py +3 -3
  24. ccxt/binance.py +1 -1
  25. ccxt/bitforex.py +2 -0
  26. ccxt/bitget.py +9 -4
  27. ccxt/bitmex.py +2 -0
  28. ccxt/blockchaincom.py +0 -37
  29. ccxt/bybit.py +23 -14
  30. ccxt/coinlist.py +2 -0
  31. ccxt/coinsph.py +2 -0
  32. ccxt/cryptocom.py +2 -0
  33. ccxt/gate.py +258 -11
  34. ccxt/htx.py +223 -207
  35. ccxt/kuna.py +2 -0
  36. ccxt/mexc.py +2 -0
  37. ccxt/okcoin.py +3 -1
  38. ccxt/phemex.py +48 -1
  39. ccxt/poloniex.py +23 -2
  40. ccxt/pro/__init__.py +1 -1
  41. ccxt/pro/binance.py +6 -6
  42. ccxt/pro/poloniex.py +15 -11
  43. ccxt/tokocrypto.py +2 -0
  44. ccxt/wazirx.py +2 -0
  45. ccxt/whitebit.py +2 -0
  46. {ccxt-4.1.89.dist-info → ccxt-4.1.90.dist-info}/METADATA +4 -4
  47. {ccxt-4.1.89.dist-info → ccxt-4.1.90.dist-info}/RECORD +49 -49
  48. {ccxt-4.1.89.dist-info → ccxt-4.1.90.dist-info}/WHEEL +0 -0
  49. {ccxt-4.1.89.dist-info → ccxt-4.1.90.dist-info}/top_level.txt +0 -0
ccxt/kuna.py CHANGED
@@ -101,6 +101,8 @@ class kuna(Exchange, ImplicitAPI):
101
101
  'fetchWithdrawal': True,
102
102
  'fetchWithdrawals': True,
103
103
  'reduceMargin': False,
104
+ 'repayCrossMargin': False,
105
+ 'repayIsolatedMargin': False,
104
106
  'setLeverage': False,
105
107
  'setMargin': False,
106
108
  'setMarginMode': False,
ccxt/mexc.py CHANGED
@@ -120,6 +120,8 @@ class mexc(Exchange, ImplicitAPI):
120
120
  'fetchWithdrawal': None,
121
121
  'fetchWithdrawals': True,
122
122
  'reduceMargin': True,
123
+ 'repayCrossMargin': False,
124
+ 'repayIsolatedMargin': False,
123
125
  'setLeverage': True,
124
126
  'setMarginMode': None,
125
127
  'setPositionMode': True,
ccxt/okcoin.py CHANGED
@@ -1383,7 +1383,7 @@ class okcoin(Exchange, ImplicitAPI):
1383
1383
  request['tgtCcy'] = tgtCcy
1384
1384
  if isMarketOrder or marketIOC:
1385
1385
  request['ordType'] = 'market'
1386
- if (side == 'buy'):
1386
+ if side == 'buy':
1387
1387
  # spot market buy: "sz" can refer either to base currency units or to quote currency units
1388
1388
  # see documentation: https://www.okx.com/docs-v5/en/#rest-api-trade-place-order
1389
1389
  if tgtCcy == 'quote_ccy':
@@ -1408,6 +1408,8 @@ class okcoin(Exchange, ImplicitAPI):
1408
1408
  request['sz'] = quoteAmount
1409
1409
  else:
1410
1410
  request['sz'] = self.amount_to_precision(symbol, amount)
1411
+ else:
1412
+ request['sz'] = self.amount_to_precision(symbol, amount)
1411
1413
  else:
1412
1414
  request['sz'] = self.amount_to_precision(symbol, amount)
1413
1415
  if (not trigger) and (not conditional):
ccxt/phemex.py CHANGED
@@ -100,7 +100,7 @@ class phemex(Exchange, ImplicitAPI):
100
100
  'setMarginMode': True,
101
101
  'setPositionMode': True,
102
102
  'transfer': True,
103
- 'withdraw': None,
103
+ 'withdraw': True,
104
104
  },
105
105
  'urls': {
106
106
  'logo': 'https://user-images.githubusercontent.com/1294454/85225056-221eb600-b3d7-11ea-930d-564d2690e3f6.jpg',
@@ -239,6 +239,7 @@ class phemex(Exchange, ImplicitAPI):
239
239
  'assets/spots/sub-accounts/transfer': 5, # ?currency=<currency>&start=<start>&end=<end>&limit=<limit>&offset=<offset>
240
240
  'assets/futures/sub-accounts/transfer': 5, # ?currency=<currency>&start=<start>&end=<end>&limit=<limit>&offset=<offset>
241
241
  'assets/quote': 5, # ?fromCurrency=<currency>&toCurrency=<currency>&amountEv=<amount>
242
+ # deposit/withdraw
242
243
  },
243
244
  'post': {
244
245
  # spot
@@ -482,6 +483,16 @@ class phemex(Exchange, ImplicitAPI):
482
483
  'spot': 'spot',
483
484
  'swap': 'future',
484
485
  },
486
+ 'stableCoins': [
487
+ 'BUSD',
488
+ 'FEI',
489
+ 'TUSD',
490
+ 'USD',
491
+ 'USDC',
492
+ 'USDD',
493
+ 'USDP',
494
+ 'USDT',
495
+ ],
485
496
  'transfer': {
486
497
  'fillResponseFromRequest': True,
487
498
  },
@@ -4227,6 +4238,42 @@ class phemex(Exchange, ImplicitAPI):
4227
4238
  sorted = self.sort_by(result, 'timestamp')
4228
4239
  return self.filter_by_symbol_since_limit(sorted, symbol, since, limit)
4229
4240
 
4241
+ def withdraw(self, code: str, amount, address, tag=None, params={}):
4242
+ """
4243
+ make a withdrawal
4244
+ :see: https://phemex-docs.github.io/#create-withdraw-request
4245
+ :param str code: unified currency code
4246
+ :param float amount: the amount to withdraw
4247
+ :param str address: the address to withdraw to
4248
+ :param str tag:
4249
+ :param dict [params]: extra parameters specific to the phemex api endpoint
4250
+ :param str [params.network]: unified network code
4251
+ :returns dict: a `transaction structure <https://github.com/ccxt/ccxt/wiki/Manual#transaction-structure>`
4252
+ """
4253
+ tag, params = self.handle_withdraw_tag_and_params(tag, params)
4254
+ self.load_markets()
4255
+ self.check_address(address)
4256
+ currency = self.currency(code)
4257
+ networkCode = None
4258
+ networkCode, params = self.handle_network_code_and_params(params)
4259
+ networkId = self.network_code_to_id(networkCode)
4260
+ stableCoins = self.safe_value(self.options, 'stableCoins')
4261
+ if networkId is None:
4262
+ if not (self.in_array(code, stableCoins)):
4263
+ networkId = currency['id']
4264
+ else:
4265
+ raise ArgumentsRequired(self.id + ' withdraw() requires an extra argument params["network"]')
4266
+ request = {
4267
+ 'currency': currency['id'],
4268
+ 'address': address,
4269
+ 'amount': amount,
4270
+ 'chainName': networkId.upper(),
4271
+ }
4272
+ if tag is not None:
4273
+ request['tag'] = tag
4274
+ response = self.privatePostPhemexWithdrawWalletsApiCreateWithdraw(self.extend(request, params))
4275
+ return self.parse_transaction(response, currency)
4276
+
4230
4277
  def handle_errors(self, httpCode, reason, url, method, headers, body, response, requestHeaders, requestBody):
4231
4278
  if response is None:
4232
4279
  return None # fallback to default error handler
ccxt/poloniex.py CHANGED
@@ -47,6 +47,9 @@ class poloniex(Exchange, ImplicitAPI):
47
47
  'cancelAllOrders': True,
48
48
  'cancelOrder': True,
49
49
  'createDepositAddress': True,
50
+ 'createMarketBuyOrderWithCost': True,
51
+ 'createMarketOrderWithCost': False,
52
+ 'createMarketSellOrderWithCost': False,
50
53
  'createOrder': True,
51
54
  'editOrder': True,
52
55
  'fetchBalance': True,
@@ -240,6 +243,7 @@ class poloniex(Exchange, ImplicitAPI):
240
243
  'UST': 'USTC',
241
244
  },
242
245
  'options': {
246
+ 'createMarketBuyOrderRequiresPrice': True,
243
247
  'networks': {
244
248
  'BEP20': 'BSC',
245
249
  'ERC20': 'ETH',
@@ -1219,6 +1223,7 @@ class poloniex(Exchange, ImplicitAPI):
1219
1223
  :param float [price]: the price at which the order is to be fullfilled, in units of the quote currency, ignored in market orders
1220
1224
  :param dict [params]: extra parameters specific to the exchange API endpoint
1221
1225
  :param float [params.triggerPrice]: *spot only* The price at which a trigger order is triggered at
1226
+ :param float [params.cost]: *spot market buy only* the quote quantity that can be used alternative for the amount
1222
1227
  :returns dict: an `order structure <https://docs.ccxt.com/#/?id=order-structure>`
1223
1228
  """
1224
1229
  self.load_markets()
@@ -1251,7 +1256,6 @@ class poloniex(Exchange, ImplicitAPI):
1251
1256
  return self.parse_order(response, market)
1252
1257
 
1253
1258
  def order_request(self, symbol, type, side, amount, request, price=None, params={}):
1254
- market = self.market(symbol)
1255
1259
  upperCaseType = type.upper()
1256
1260
  isMarket = upperCaseType == 'MARKET'
1257
1261
  isPostOnly = self.is_post_only(isMarket, upperCaseType == 'LIMIT_MAKER', params)
@@ -1265,7 +1269,24 @@ class poloniex(Exchange, ImplicitAPI):
1265
1269
  request['type'] = upperCaseType
1266
1270
  if isMarket:
1267
1271
  if side == 'buy':
1268
- request['amount'] = self.currency_to_precision(market['quote'], amount)
1272
+ quoteAmount = None
1273
+ createMarketBuyOrderRequiresPrice = True
1274
+ createMarketBuyOrderRequiresPrice, params = self.handle_option_and_params(params, 'createOrder', 'createMarketBuyOrderRequiresPrice', True)
1275
+ cost = self.safe_number(params, 'cost')
1276
+ params = self.omit(params, 'cost')
1277
+ if cost is not None:
1278
+ quoteAmount = self.cost_to_precision(symbol, cost)
1279
+ elif createMarketBuyOrderRequiresPrice:
1280
+ if price is None:
1281
+ raise InvalidOrder(self.id + ' createOrder() requires the price argument for market buy orders to calculate the total cost to spend(amount * price), alternatively set the createMarketBuyOrderRequiresPrice option or param to False and pass the cost to spend(quote quantity) in the amount argument')
1282
+ else:
1283
+ amountString = self.number_to_string(amount)
1284
+ priceString = self.number_to_string(price)
1285
+ costRequest = Precise.string_mul(amountString, priceString)
1286
+ quoteAmount = self.cost_to_precision(symbol, costRequest)
1287
+ else:
1288
+ quoteAmount = self.cost_to_precision(symbol, amount)
1289
+ request['amount'] = quoteAmount
1269
1290
  else:
1270
1291
  request['quantity'] = self.amount_to_precision(symbol, amount)
1271
1292
  else:
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.1.89'
7
+ __version__ = '4.1.90'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
ccxt/pro/binance.py CHANGED
@@ -444,7 +444,7 @@ class binance(ccxt.async_support.binance):
444
444
  subscribe = {
445
445
  'id': requestId,
446
446
  }
447
- trades = await self.watch(url, subParams, self.extend(request, query), subParams, subscribe)
447
+ trades = await self.watch_multiple(url, subParams, self.extend(request, query), subParams, subscribe)
448
448
  if self.newUpdates:
449
449
  first = self.safe_value(trades, 0)
450
450
  tradeSymbol = self.safe_string(first, 'symbol')
@@ -1802,10 +1802,10 @@ class binance(ccxt.async_support.binance):
1802
1802
  self.set_balance_cache(client, type)
1803
1803
  self.set_positions_cache(client, type)
1804
1804
  message = None
1805
- newOrder = await self.watch(url, messageHash, message, type)
1805
+ orders = await self.watch(url, messageHash, message, type)
1806
1806
  if self.newUpdates:
1807
- return newOrder
1808
- return self.filter_by_symbol_since_limit(self.orders, symbol, since, limit, True)
1807
+ limit = orders.getLimit(symbol, limit)
1808
+ return self.filter_by_symbol_since_limit(orders, symbol, since, limit, True)
1809
1809
 
1810
1810
  def parse_ws_order(self, order, market=None):
1811
1811
  #
@@ -2405,8 +2405,8 @@ class binance(ccxt.async_support.binance):
2405
2405
  cachedOrders.append(parsed)
2406
2406
  messageHash = 'orders'
2407
2407
  symbolSpecificMessageHash = 'orders:' + symbol
2408
- client.resolve(parsed, messageHash)
2409
- client.resolve(parsed, symbolSpecificMessageHash)
2408
+ client.resolve(cachedOrders, messageHash)
2409
+ client.resolve(cachedOrders, symbolSpecificMessageHash)
2410
2410
 
2411
2411
  def handle_acount_update(self, client, message):
2412
2412
  self.handle_balance(client, message)
ccxt/pro/poloniex.py CHANGED
@@ -10,8 +10,8 @@ from ccxt.base.types import Balances, Int, Order, OrderBook, OrderSide, OrderTyp
10
10
  from ccxt.async_support.base.ws.client import Client
11
11
  from typing import List
12
12
  from ccxt.base.errors import ExchangeError
13
- from ccxt.base.errors import ArgumentsRequired
14
13
  from ccxt.base.errors import BadRequest
14
+ from ccxt.base.errors import InvalidOrder
15
15
  from ccxt.base.errors import AuthenticationError
16
16
  from ccxt.base.precise import Precise
17
17
 
@@ -194,6 +194,7 @@ class poloniex(ccxt.async_support.poloniex):
194
194
  :param dict [params]: extra parameters specific to the poloniex api endpoint
195
195
  :param str [params.timeInForce]: GTC(default), IOC, FOK
196
196
  :param str [params.clientOrderId]: Maximum 64-character length.*
197
+ :param float [params.cost]: *spot market buy only* the quote quantity that can be used alternative for the amount
197
198
  *
198
199
  * EXCHANGE SPECIFIC PARAMETERS
199
200
  :param str [params.amount]: quote units for the order
@@ -216,21 +217,24 @@ class poloniex(ccxt.async_support.poloniex):
216
217
  'type': type.upper(),
217
218
  }
218
219
  if (uppercaseType == 'MARKET') and (uppercaseSide == 'BUY'):
219
- quoteAmount = self.safe_string(params, 'amount')
220
- if (quoteAmount is None) and (self.options['createMarketBuyOrderRequiresPrice']):
221
- cost = self.safe_number(params, 'cost')
222
- params = self.omit(params, 'cost')
223
- if price is None and cost is None:
224
- raise ArgumentsRequired(self.id + ' createOrder() requires the price argument with market buy orders to calculate total order cost(amount to spend), where cost = amount * price. Supply a price argument to createOrder() call if you want the cost to be calculated for you from price and amount, or, alternatively, add .options["createMarketBuyOrderRequiresPrice"] = False to supply the cost in the amount argument(the exchange-specific behaviour)')
220
+ quoteAmount = None
221
+ createMarketBuyOrderRequiresPrice = True
222
+ createMarketBuyOrderRequiresPrice, params = self.handle_option_and_params(params, 'createOrder', 'createMarketBuyOrderRequiresPrice', True)
223
+ cost = self.safe_number(params, 'cost')
224
+ params = self.omit(params, 'cost')
225
+ if cost is not None:
226
+ quoteAmount = self.cost_to_precision(symbol, cost)
227
+ elif createMarketBuyOrderRequiresPrice:
228
+ if price is None:
229
+ raise InvalidOrder(self.id + ' createOrder() requires the price argument for market buy orders to calculate the total cost to spend(amount * price), alternatively set the createMarketBuyOrderRequiresPrice option or param to False and pass the cost to spend(quote quantity) in the amount argument')
225
230
  else:
226
231
  amountString = self.number_to_string(amount)
227
232
  priceString = self.number_to_string(price)
228
- quote = Precise.string_mul(amountString, priceString)
229
- amount = cost if (cost is not None) else self.parse_number(quote)
230
- quoteAmount = self.cost_to_precision(symbol, amount)
233
+ costRequest = Precise.string_mul(amountString, priceString)
234
+ quoteAmount = self.cost_to_precision(symbol, costRequest)
231
235
  else:
232
236
  quoteAmount = self.cost_to_precision(symbol, amount)
233
- request['amount'] = self.amount_to_precision(market['symbol'], quoteAmount)
237
+ request['amount'] = quoteAmount
234
238
  else:
235
239
  request['quantity'] = self.amount_to_precision(market['symbol'], amount)
236
240
  if price is not None:
ccxt/tokocrypto.py CHANGED
@@ -129,6 +129,8 @@ class tokocrypto(Exchange, ImplicitAPI):
129
129
  'fetchWithdrawals': True,
130
130
  'fetchWithdrawalWhitelist': False,
131
131
  'reduceMargin': False,
132
+ 'repayCrossMargin': False,
133
+ 'repayIsolatedMargin': False,
132
134
  'setLeverage': False,
133
135
  'setMargin': False,
134
136
  'setMarginMode': False,
ccxt/wazirx.py CHANGED
@@ -98,6 +98,8 @@ class wazirx(Exchange, ImplicitAPI):
98
98
  'fetchTransfers': False,
99
99
  'fetchWithdrawals': False,
100
100
  'reduceMargin': False,
101
+ 'repayCrossMargin': False,
102
+ 'repayIsolatedMargin': False,
101
103
  'setLeverage': False,
102
104
  'setMargin': False,
103
105
  'setMarginMode': False,
ccxt/whitebit.py CHANGED
@@ -86,6 +86,8 @@ class whitebit(Exchange, ImplicitAPI):
86
86
  'fetchTradingFee': False,
87
87
  'fetchTradingFees': True,
88
88
  'fetchTransactionFees': True,
89
+ 'repayCrossMargin': False,
90
+ 'repayIsolatedMargin': False,
89
91
  'setLeverage': True,
90
92
  'transfer': True,
91
93
  'withdraw': True,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.1.89
3
+ Version: 4.1.90
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
@@ -257,13 +257,13 @@ console.log(version, Object.keys(exchanges));
257
257
 
258
258
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
259
259
 
260
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.1.89/dist/ccxt.browser.js
261
- * unpkg: https://unpkg.com/ccxt@4.1.89/dist/ccxt.browser.js
260
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.1.90/dist/ccxt.browser.js
261
+ * unpkg: https://unpkg.com/ccxt@4.1.90/dist/ccxt.browser.js
262
262
 
263
263
  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.
264
264
 
265
265
  ```HTML
266
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.1.89/dist/ccxt.browser.js"></script>
266
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.1.90/dist/ccxt.browser.js"></script>
267
267
  ```
268
268
 
269
269
  Creates a global `ccxt` object:
@@ -1,10 +1,10 @@
1
- ccxt/__init__.py,sha256=CgZtGadJn4HwDxtumrd_c5Hp-bS0ATKeVmBa1qhF3pg,14879
1
+ ccxt/__init__.py,sha256=Pnr-RQOS2i0W0k8N-6PRdTkluTkot-Ua0w1dDPrO5Bw,14879
2
2
  ccxt/ace.py,sha256=bB8RjymWAEI2MYEHMW70GwbIowmOMN9r4RY1tlj4gjY,41348
3
3
  ccxt/alpaca.py,sha256=95D1m218p28MXCHzibPZ2XpfpkVw7qsS9niLGpXR_z4,46029
4
4
  ccxt/ascendex.py,sha256=ds46YV2dVeADiYUgp3SUHNcSwRbH_rFlOpSPJgFSKRc,143331
5
5
  ccxt/bequant.py,sha256=O9tDvk7O1De-k3-G5lwXUVoNqzgfo_AJqQy4bXifdhM,1148
6
6
  ccxt/bigone.py,sha256=fM8bABciTFsyFVgoiQX7BZWFz_855MrYXqBlQJE23H8,79878
7
- ccxt/binance.py,sha256=X_-yawVHEENoCSshcfbHNEvWxiu5CnyqAKpLqrpzgFY,440623
7
+ ccxt/binance.py,sha256=k-bnEihgO5naj8RWgOCw-13uoNsmAXVP44so4WemVM8,440744
8
8
  ccxt/binancecoinm.py,sha256=pncdw6Xw2X1Po-vEvAB4nL37scoS_axGAVxetPy1YQs,1645
9
9
  ccxt/binanceus.py,sha256=CS7rpvZ-PT3mFqhKde1IxmBoPMk5AWkFfkjezidTY1E,3477
10
10
  ccxt/binanceusdm.py,sha256=KPQGlCalQ0eGlPCs2tSanOxaP8O0zFRQjGntA16Yprw,2480
@@ -17,11 +17,11 @@ ccxt/bitcoincom.py,sha256=PyWIl4nC4jp5Uba2lI1At0N_hhNyWD0DoZC_MSyL_s4,502
17
17
  ccxt/bitfinex.py,sha256=jZaKtVwezPEjvRmPI1P2hvBKLmHzz3BysCiXJjprfyw,69725
18
18
  ccxt/bitfinex2.py,sha256=6fxd__vHHZ0CjXWLrg2JShLkoT8Szdm3ueT-rYX_ZRE,128904
19
19
  ccxt/bitflyer.py,sha256=q-lKdcT9mZ6jdswP4AGIj_6yhKxcCXyePueTd_nrmAk,40105
20
- ccxt/bitforex.py,sha256=wTwRfnX2UmgL5lEKXayo8BEvgYhWD-xNfelscPAEI0A,33684
21
- ccxt/bitget.py,sha256=EHRWpRX6K0rJKcn66GbBP_IoZkh0jfTj1jj7O7Kg7P8,387615
20
+ ccxt/bitforex.py,sha256=nqYgHhub2u2I2S7U91MvPZGip8tGl6NEsyQgyHUvEG4,33773
21
+ ccxt/bitget.py,sha256=wuxGGiTmgrYGJm5i72wKfsewgoSawPRX4RY_OYy2hfI,387907
22
22
  ccxt/bithumb.py,sha256=mji93l7rEBQVhoJKxHQnEIMtMvk7wkIRrfN7o0hxYPI,43325
23
23
  ccxt/bitmart.py,sha256=1bPOwvk-bsUcDmItWQAzVO34J8qPjJEgUDF-5fuV2sY,185678
24
- ccxt/bitmex.py,sha256=alMWVBGJex6Dofq6RHpuh9OVZVXkFPKz8MoxKchoBzc,119675
24
+ ccxt/bitmex.py,sha256=_f9mAzgVTEo5FYRFmO0N57mVE9Jj4HKYdU3Qq19oj5Y,119758
25
25
  ccxt/bitopro.py,sha256=ziUX4lmEIcgQgnGIXvcot97X9tvZ0pBLr8jZMCDYREQ,68055
26
26
  ccxt/bitpanda.py,sha256=udZVycV9g-XXGNYudNwvnHZL7eEK16zp8AlSoQbGmQk,87916
27
27
  ccxt/bitrue.py,sha256=bTjy5FdKi5KfutpQDBaR7Vbpltkq1RCkEK2AidmRAN4,136147
@@ -29,23 +29,23 @@ ccxt/bitso.py,sha256=tXGh_sjBF3xWciIBR26Ql6VzJvkBcarNIVy8V6w5_iI,69522
29
29
  ccxt/bitstamp.py,sha256=6d8S_jBUBsHh8QfmEal_zmbsysc93qSuVk2SQfaDqZQ,85459
30
30
  ccxt/bitvavo.py,sha256=hiSDtxO3fNsuTDM99cyuBsD4lMlsRUYUUjba6BTBA5E,84672
31
31
  ccxt/bl3p.py,sha256=X9vdABvIrH0-PyPX2nwJM_3ErKYdxmnq8WJTvsOAWts,17767
32
- ccxt/blockchaincom.py,sha256=0IBSGRcpO39-CS0zqW59WYCZzRoM_f-_KLIJ0aSa_ik,48593
32
+ ccxt/blockchaincom.py,sha256=gHsqKZ9JR7Nkr_mSxapVmFU0kwCwQhPYXFkL7ATvIOc,47152
33
33
  ccxt/btcalpha.py,sha256=TxEyASsptUwEXr1sQBM4Fc2RZy_iZOrQ8SMwo6iPXN0,35628
34
34
  ccxt/btcbox.py,sha256=ZrOJ_VC4n5113Sn2C1whQZTAhMxX5gYYe0QoayvvmKY,22849
35
35
  ccxt/btcmarkets.py,sha256=d9il29c2YsdPO56SKy1WsfxuILIHxQJRF-fVJ37rl4E,48582
36
36
  ccxt/btcturk.py,sha256=j51LBBkUqnikl6Xa7AZ1Wl8XAvA_KnFLzb42dMZoSds,35458
37
- ccxt/bybit.py,sha256=opRM2MFZJIUQ_FDEwCvJks8vszINzjhZ4i6rxtdA44I,354599
37
+ ccxt/bybit.py,sha256=vRMK72IA0ZGsZviSPm3R9PcV8LkqFuoV-oGj4jW3G40,355478
38
38
  ccxt/cex.py,sha256=vz2cWRDEOLVBJQOWEFK4CwuASndkUe8ZmgIw80v0sAE,69502
39
39
  ccxt/coinbase.py,sha256=ovFQUhKFOByMjKmWC0oICTmdfdy6rnM1PW0uqHzg3Ug,145559
40
40
  ccxt/coinbasepro.py,sha256=S5Aw_2jXTIBOaL2_eVKZxlmBEEiwzDQZhRRX0631e68,78168
41
41
  ccxt/coincheck.py,sha256=g_gMrlcnNimI3k1SxI9Du7gmmpqd9dZSn-u3SVgHgkQ,34627
42
42
  ccxt/coinex.py,sha256=Ppn99_GVPo2IgZWhRk4R46Q_SNnjtThn7oGFB-wXW1M,222784
43
- ccxt/coinlist.py,sha256=oxNtENSvLT2XGpdklcIdz8mYeBmQR5gWI-pkvyKGU0U,102157
43
+ ccxt/coinlist.py,sha256=qnStsQ6-J5P47CQ_xn_slOp6EtLsdUPU12dz1T224c0,102246
44
44
  ccxt/coinmate.py,sha256=CpLkuF-T12P_q-W-nYrnl4PXcHjnGKt8us66ebHSFtI,39954
45
45
  ccxt/coinone.py,sha256=LE5LfNq5q6Ryg7Rw6FNSIpimvQAcDFIm8vpDfnMu-nA,35708
46
- ccxt/coinsph.py,sha256=gkj5Iwvl5T0-_1H7f1O5PLmgCsm3wwNFxO31Hq15oyk,87412
46
+ ccxt/coinsph.py,sha256=p-TqoSbhqAo0v7Tx37cH6a7XLl0HbTLaNeAG2UBseVA,87501
47
47
  ccxt/coinspot.py,sha256=j8xSGIHF_WhLGZcDmdIwpCMw77vjvdaNcNNk0_kEu-Y,23024
48
- ccxt/cryptocom.py,sha256=QzlyzkY0Nxso5_MOWZ3aCjsB3Ovu1PDYcQBzRGYpGv8,127627
48
+ ccxt/cryptocom.py,sha256=7VDNuf7qolcV4xJ4h8ABGoxlJiynNr5oQ_rJicRRXuA,127716
49
49
  ccxt/currencycom.py,sha256=JqJEzS_6UBomIGqf_y5LwsnBTOXCwbgiQfnSghvIGuU,84218
50
50
  ccxt/delta.py,sha256=qdmqSJ_P2S0eOiodtcquSd9LxTGwt1uWMMRGamVgmbw,138693
51
51
  ccxt/deribit.py,sha256=sRg16zOi9PGxaexxsa9ewCEeknFvM7OHqd2fp77GmgQ,143732
@@ -53,13 +53,13 @@ ccxt/digifinex.py,sha256=aEkzcqY4fkoYd8fB31z2-PlCEXB3RO2CdWhxnAvVgLA,168932
53
53
  ccxt/exmo.py,sha256=Vpp-5PSHf4sC8C_2aNIQG9MO2vavYftf2WpZHK3DIhs,111768
54
54
  ccxt/flowbtc.py,sha256=YPvm6tbsHJJUQBspFcHuVPQfVmiWzwnVvfzRqBdQX6U,1169
55
55
  ccxt/fmfwio.py,sha256=RbVLvzPwnqfDsE7Ea-N13ISCC82eJVPsXYjrleASmew,1236
56
- ccxt/gate.py,sha256=nwaq3BfDySwOHE0MieJ8OzBftbDKmWnkhbnZ3GWE_5o,286061
56
+ ccxt/gate.py,sha256=sKIol1b0rcGkMJd8jCU45PR7kTY_Grg_I2zaNeg0yjM,297267
57
57
  ccxt/gateio.py,sha256=86AETJWODl_vA5VNeQRHZprmpNIY1HAxCddKZcnKSi8,445
58
58
  ccxt/gemini.py,sha256=rkaX7CKqeOQZW8PyR96uV-yn5nMwsql6wg1pvaW9IGQ,74656
59
59
  ccxt/hitbtc.py,sha256=fn6sMiijdfiwC_sEDR4VGrxS5MMHjXAgiJQgqOH1PCU,148532
60
60
  ccxt/hitbtc3.py,sha256=qRAr4Zvaju9IQWRZUohdoN7xRnzIMPq8AyYb3gPv-Is,455
61
61
  ccxt/hollaex.py,sha256=Be8erGcnmxZGOdlgmSmsJSVq4xf9_zIgW5Epg6_cbkI,74416
62
- ccxt/htx.py,sha256=euaq1vmeJinwDSI1PCphmefbMBbssqvSLmlCPTy0Y2k,396320
62
+ ccxt/htx.py,sha256=GyCvveplGUoReW02QLl4NbizSTeLbCd4KvyGKwT6r7Y,399154
63
63
  ccxt/huobi.py,sha256=4vaG7IRN7fyjaJ_ac6S-njlHOfSEN5de7aq0noznxYw,438
64
64
  ccxt/huobijp.py,sha256=22xidSkRT0KKKo_lrntNh0TJivI3OWS_X4JeqAu7Azc,87899
65
65
  ccxt/idex.py,sha256=gBerY3h1aZQ4UuuVcBaPOkaqMTTDSYlnHDhdPrGWfck,68258
@@ -69,30 +69,30 @@ ccxt/kraken.py,sha256=iJYVRxuwbl2jFjA5oDUqppCCReDIeD7ogLNwUZjNuoU,117064
69
69
  ccxt/krakenfutures.py,sha256=vzsDHSK6QJBv6vu-Maj-n9zrs6eAggxhvL51FABeKR4,99971
70
70
  ccxt/kucoin.py,sha256=nIoP9LRmJDbHYBrE4MeDWAC7PzwvfDJ-66tX0H-pct8,194616
71
71
  ccxt/kucoinfutures.py,sha256=behtGE7lxmaSJXGl96rIU9Idk4TdSaW-mpvMSUJ7gpY,105682
72
- ccxt/kuna.py,sha256=_Jqxo4b4jBo51ngQ9Oxq789maxN5_-94kr8h39NYnR4,96288
72
+ ccxt/kuna.py,sha256=J8eCBlZyQuPzCykn4tb2KZU3htBcfR5L2Ngwdtx9bts,96377
73
73
  ccxt/latoken.py,sha256=FAB-I6B--KVBeU4ekcc9hFF1qjHhN-HaRkBJhVN4zV0,77015
74
74
  ccxt/lbank.py,sha256=6qxMqDzrXGbRtbJIWF-9kdc1geWt2CjRsFMTlicJPMQ,113644
75
75
  ccxt/luno.py,sha256=9hmecvOA6F_BgAh8rzmjziGlCnOXkewjPzNHLGuhLmg,40842
76
76
  ccxt/lykke.py,sha256=OmKlgb4HOkumUQSgTh3EC0k8_2VeMtg7YWGEmUQz_Ho,48929
77
77
  ccxt/mercado.py,sha256=IAFK2QHvTD7ImkzFNDClp5i1QYRe6LGAvdcfufz_Ii4,34995
78
- ccxt/mexc.py,sha256=7RR0UG_UxKEHiMpiLhZURFI1CAqhEbE5RRvncNv8BlQ,226028
78
+ ccxt/mexc.py,sha256=lNa7co0ZZtI1m3AOku3x54NSuY8PbhdJuNMNeE-4hKE,226117
79
79
  ccxt/ndax.py,sha256=sVd5ZqZf1UnOlF58WNBMp-8mgT7qbchDz59w8E_I_GQ,107204
80
80
  ccxt/novadax.py,sha256=xx2cGnSX0CRyA3PQUkbXBggyqFZUVcRStDqTZDE1YeU,63817
81
81
  ccxt/oceanex.py,sha256=aEnK9rjZYACIw_heL0NQ9AsvxlTq2dnhXx_LTkZyIgw,37630
82
- ccxt/okcoin.py,sha256=NkGxcpvbVuRggujW7SY_9cdBSORYhHmg-zaE8Qwdm4I,147906
82
+ ccxt/okcoin.py,sha256=OgBUWV1ubrhXAw8xJFXxheQyhkJMzWXsEoffZwmNTqM,147995
83
83
  ccxt/okx.py,sha256=dBD6tXnCoQVmfU0NZRlRA7S9_CP93SAadDAPPPh35gI,327159
84
84
  ccxt/p2b.py,sha256=KIdfah9Mwiiw9Zk2tLhdW8ZpDPj8Sp_3NF-k4Xfxh9E,54021
85
85
  ccxt/paymium.py,sha256=oH4zQkMF7IGkq9co953Riz8wuhUj6xxKSmqs7Rz2n1s,24122
86
- ccxt/phemex.py,sha256=kfj7V8w809hKn5JyJClbVjWrOiOpsdWZMcgFdTtwjIw,210625
87
- ccxt/poloniex.py,sha256=Mm2qIZTRtSJ5IkVdypcNtJA1l1NZO-nHHniVGbH84l8,100078
86
+ ccxt/phemex.py,sha256=oKOrR-UEGbB2IjlbA5nnaze7lJqxb6YZgVTBu4l7BQI,212622
87
+ ccxt/poloniex.py,sha256=KEnUepy3vo13fpkMNC96b9Nw9v42WwP8AmFnt0qNQow,101646
88
88
  ccxt/poloniexfutures.py,sha256=T35rN-4OvNbTHmDgZCIpSclK8jophgbeVoVi4At0vv4,76628
89
89
  ccxt/probit.py,sha256=dHW7O5q3GVaRLiyki-GnKR0Or2_BuIe4UOz3drlciG8,76059
90
90
  ccxt/timex.py,sha256=vRX_heY_zVk374MKBMZSmWL_csBTCkAwgwTBGaN9iJY,65632
91
- ccxt/tokocrypto.py,sha256=338-6vrhV-2b3HLZdwpg2L6j7_ktQf4WABrOk6vSMSc,122137
91
+ ccxt/tokocrypto.py,sha256=7X-3WFq7Ez-_X1vU_0uXATtpBlW02oB_0ECHUAIye44,122226
92
92
  ccxt/upbit.py,sha256=Z8NwMhDhmneVWIuPb3pA_dgY-UO8bHYOtrzTxWN9bqA,77093
93
93
  ccxt/wavesexchange.py,sha256=NmThO0R-81ctpRs6N2goiIr-xq1E6WNd1JywmcCPMFM,113315
94
- ccxt/wazirx.py,sha256=OaJM_kFILhhrbvCsO60ZME8hxpf377v_hwQ7EgCkMyM,36776
95
- ccxt/whitebit.py,sha256=XUQCScaIP8ziplg7ECvzDKndKS8pWxpkAPDcacI2-8s,100570
94
+ ccxt/wazirx.py,sha256=DyQ67oqkCNk3F0jCRDRMVPPhy34Z5LOqY9RmAGpV-2Y,36865
95
+ ccxt/whitebit.py,sha256=s0L8Pv1uSOwD2iuyCw-8dJ7UP_QFJrB-oeUkzJq4Dco,100659
96
96
  ccxt/woo.py,sha256=k62IFajoan3gpSMyV5cnwJfSiwadjakgA_JJ1ivADUs,109132
97
97
  ccxt/yobit.py,sha256=gIVMiECMs6-Cl8qmMnWfgX3lokiSYzfuq7ngS9hRqw4,51888
98
98
  ccxt/zaif.py,sha256=MiJlnoWHd3gMGSoQc-_FzeU9F0y9uG4jxKrPGbn2I-0,27976
@@ -195,13 +195,13 @@ ccxt/abstract/woo.py,sha256=xilL7EbvUmJ_zBb_r1Q7cTi4bHsBQN2mFu0TGu7WHG0,8890
195
195
  ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
196
196
  ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
197
197
  ccxt/abstract/zonda.py,sha256=aSfewvRojzmuymX6QbOnDR8v9VFqWTULMHX9Y7kKD1M,5820
198
- ccxt/async_support/__init__.py,sha256=vgoGLvCQhbzmVtoOl4r8eaH_QPr4ZrVo8X4u0gM-Qyk,14572
198
+ ccxt/async_support/__init__.py,sha256=U2--Jm_2EeOlnuVR-en1d1yHGSp-SIFfX39CU80ZFic,14572
199
199
  ccxt/async_support/ace.py,sha256=5fHmmLyH7G-Dh0RvvHYmO7X6kmuMlanS4LmD_RqX8-s,41572
200
200
  ccxt/async_support/alpaca.py,sha256=PBZqBViTt3fAzlIABvszvXBQJzjC8ub4vKTcaKVRtZQ,46241
201
201
  ccxt/async_support/ascendex.py,sha256=SP6sXuN3V2A8hwTCxvBqxMdZ-5VwOVDDtnrX2q_i2Pk,144071
202
202
  ccxt/async_support/bequant.py,sha256=kLA0e9URC1rDEHgpb61pEGAn5jZXzE715lEcJjPdLRo,1162
203
203
  ccxt/async_support/bigone.py,sha256=IrzxL7K3cUYjHuklb4GDJQaD_ZUvB0eJAh_cm-aeoEE,80282
204
- ccxt/async_support/binance.py,sha256=oT8eQb25UlBR9OuislsG45yw1MOPgV3vpLYDHYYRt3k,442139
204
+ ccxt/async_support/binance.py,sha256=EO0UmLNAQ1fQZKx-czxGyOnzfnJVNBNVUDu1HjtNYuc,442260
205
205
  ccxt/async_support/binancecoinm.py,sha256=IY3RLZptQA2nmZaUYRGfTa5ZY4VMWBpFYfwHc8zTHw0,1683
206
206
  ccxt/async_support/binanceus.py,sha256=lZIb9M5xcWxqiq5LgLWB1-Ouarrn36rMVKTchZERINk,3491
207
207
  ccxt/async_support/binanceusdm.py,sha256=-1r4A4tmV2pCiLGO80hzq7MIIj4MTzOD7buZGv6JauA,2518
@@ -214,11 +214,11 @@ ccxt/async_support/bitcoincom.py,sha256=RiqwhK3RfxQ_PXTa860fphDCvwA8dalL-_rXlK85
214
214
  ccxt/async_support/bitfinex.py,sha256=PNzSR9cYWQRIsTG4uz6tcYg0jrH0nqH2N7WDtbVUEXo,70165
215
215
  ccxt/async_support/bitfinex2.py,sha256=A1krXmnYd8UsQwPYgqzU_lYYxx8mjHbFih61_i6EeAI,129464
216
216
  ccxt/async_support/bitflyer.py,sha256=mmoPJEr2nBxfthieD8rLH7gxo0Wn5c_FkRm4DD5_1Ns,40413
217
- ccxt/async_support/bitforex.py,sha256=cFaclUm_1dTjg00eG_ttJaZRJmY89rM_dgV0M6w7Ww4,33908
218
- ccxt/async_support/bitget.py,sha256=P-s7G4XSQdM5b-S8KLvVCi_FP_hydqQA5I-aFmb_dy8,389083
217
+ ccxt/async_support/bitforex.py,sha256=JNuA3x41Sss39FW4WzzV4sIQkThtOIatcOm9cXabE_k,33997
218
+ ccxt/async_support/bitget.py,sha256=2pO10BovYHgTBkniZ6RUN9urOVvsSq3GFVSW0BIu0yU,389375
219
219
  ccxt/async_support/bithumb.py,sha256=6Ml9aysmbCwFHKaFvLnkSZRlvIu9Xfyowix3fIr65xE,43555
220
220
  ccxt/async_support/bitmart.py,sha256=DOLAXSkZL0j2Y5RscYsXkTZJJdy_74j9LvO34HUOHq8,186586
221
- ccxt/async_support/bitmex.py,sha256=oZq7iHyDQrvrJkW9rbVL2oQpfwi-7s2qYQkrJFyaPcs,120217
221
+ ccxt/async_support/bitmex.py,sha256=A3099-IhFKy7V0087jBTparLSmpBOltIwe7iPDoBN0c,120300
222
222
  ccxt/async_support/bitopro.py,sha256=5OskBAj2d2Uk8REg6CaRJ9nxSQZSmHmRonuXWJFWW4Y,68459
223
223
  ccxt/async_support/bitpanda.py,sha256=4kMrriboIdTLslQUHV7wQkOC9wavo7tXDU5ArAmtWT8,88368
224
224
  ccxt/async_support/bitrue.py,sha256=0urgKMo9epxQgBKn41LdYGamM99jvmwoDfqFyDdPBiY,136817
@@ -226,23 +226,23 @@ ccxt/async_support/bitso.py,sha256=pzY1N0FQZOY23yVn4Gln3M5tGBCOmMzrQ_SWdPZOoCk,6
226
226
  ccxt/async_support/bitstamp.py,sha256=Yj-a1f6f-ua3kf7uCTYMrJv2zehvYIi-30XuqTLMsTM,85899
227
227
  ccxt/async_support/bitvavo.py,sha256=MOhbZQ21Z4QRtG3tP29Ltsq5eybQuhFolBhwkW5QpLk,85106
228
228
  ccxt/async_support/bl3p.py,sha256=8fvFQCUOGLYe2q2ElCTdpAWyqt0a4k09kbZ207leADM,17877
229
- ccxt/async_support/blockchaincom.py,sha256=VnQtvcW0zo8wfgNOWSltwzPEN6R1wHfSGSgj993GAWc,49021
229
+ ccxt/async_support/blockchaincom.py,sha256=y_jLjzBVniYFNBGWWwXE7ufPXXicHxQ--VVqu_vpxIU,47544
230
230
  ccxt/async_support/btcalpha.py,sha256=7OVYRu01mPKOnn73NrVT5TTO1QnvVJsqEi0TVS-63Ro,35906
231
231
  ccxt/async_support/btcbox.py,sha256=EywXOm_odHotrJdsaGMYfB3n3jKCIai0pWbShX-Z06I,23043
232
232
  ccxt/async_support/btcmarkets.py,sha256=i1H6KESr8nL7xDuFqmRvy0VQmHnAKrQkD_RPP7ZtV2Y,48932
233
233
  ccxt/async_support/btcturk.py,sha256=3zAGyyBqjTTbMhQNijsf5C9I1CdpElWz8B8gOkNYYCM,35676
234
- ccxt/async_support/bybit.py,sha256=nec36g-BMzQAiMzJaZ1nA5BizpYPW7qXL3v2O-NxCi0,356061
234
+ ccxt/async_support/bybit.py,sha256=GTHItqyOsB7BkloXZKk78HsxXNi9AlXU0XtVwHIsW6A,356940
235
235
  ccxt/async_support/cex.py,sha256=cQEKg7b7m8StCLiAqTqIgzJ_3j6LcTxG0gFO_x_fLTs,69846
236
236
  ccxt/async_support/coinbase.py,sha256=fNtDoQ0IdBBT29PSmOhW6m3aORe3FwYJaPIFbd7JIbE,146341
237
237
  ccxt/async_support/coinbasepro.py,sha256=B0HuqfS9teMp82UJcuhntI763uW7GHOzZwFHwBnIpTs,78674
238
238
  ccxt/async_support/coincheck.py,sha256=5W5TXe7eDAwy1LkuMOB1JE6wzQIQYlZ9orS2ct9uRk4,34833
239
239
  ccxt/async_support/coinex.py,sha256=DXP4d6eiPCNI5tbeFf5sfe8zD8U21F-tQ075XgOiieg,223976
240
- ccxt/async_support/coinlist.py,sha256=6CbqUjtEbTWZpS69k5GkU1Z7Vpc5cD4qHewhvhyybLM,102645
240
+ ccxt/async_support/coinlist.py,sha256=tOWc4iBB_VlHwGzD5iFuCfe3jYWpgzP4Qu3LgMAf7FQ,102734
241
241
  ccxt/async_support/coinmate.py,sha256=BGiq-0tma9yngBGGyXoqDVRhiVfUxOo_IfKpX9h-pv0,40202
242
242
  ccxt/async_support/coinone.py,sha256=VywuP8WcZonpRAj4pB99RJNpaGSTvGtVBuKN1eR__K0,35932
243
- ccxt/async_support/coinsph.py,sha256=hNDLMtlAMuyfoo0Zj6sNk3vutc_gVmUU_nMbxhJA2sw,87816
243
+ ccxt/async_support/coinsph.py,sha256=JOCanh_WV0FaF1ufhfyiep4kFSpkUMp2RvYvrnWKfec,87905
244
244
  ccxt/async_support/coinspot.py,sha256=py_wOzt-2jYuD6W8LyD9Vtij2NbwcfmTAJRb-tPJUa0,23176
245
- ccxt/async_support/cryptocom.py,sha256=xbHkBKNzBDbYOInRsEx-SC1LaCGgR1V7auBgf4rmfm8,128181
245
+ ccxt/async_support/cryptocom.py,sha256=3QciU2YndDCPFWlMTm-QpKpsQ8N-Q0llM7zDDTFbBKE,128270
246
246
  ccxt/async_support/currencycom.py,sha256=1b_wbCu-M74vRVpTQHBc7ELkWP0YEtPBm0axIGJ7yEs,84640
247
247
  ccxt/async_support/delta.py,sha256=Bh7341LXF70gqLe5NfbP76-a1vWP8Kf5Aa_DH05rnH0,139241
248
248
  ccxt/async_support/deribit.py,sha256=62Z2o98VFpB-5q2m71lXb4PO-IHXN38OD8SCjr5zGvo,144406
@@ -250,13 +250,13 @@ ccxt/async_support/digifinex.py,sha256=alDU8uwSdhb-NiDkVmXqUJvDde5tleJzpii5LB9UO
250
250
  ccxt/async_support/exmo.py,sha256=PsAnyAt10JIr9sN0SsMiNOywcxoU6k_kz9qO-U4gv6I,112400
251
251
  ccxt/async_support/flowbtc.py,sha256=bCnvtcNnPxxaxqVjI1GGXKhIpz_1r4GIFWqqPokvCR0,1183
252
252
  ccxt/async_support/fmfwio.py,sha256=lzfSnPrB2ARcC3EIqAuBM4vyg6LJ6n8RE71Zvt3ez1s,1250
253
- ccxt/async_support/gate.py,sha256=PC5LLI6Nw2qu2lyitZldeCRevYV9ntCBotrbpB-fcHo,287505
253
+ ccxt/async_support/gate.py,sha256=Vy5sFc7jAt6HcMRPnstPH88YvJ_8gBAPyzxbT47XNUI,298813
254
254
  ccxt/async_support/gateio.py,sha256=6_t032F9p9x5KGTjtSuqGXITzFOx-XAQBYLpsuQjzxw,459
255
255
  ccxt/async_support/gemini.py,sha256=0RoCTcBqLiqhogTdZ07axXJqaqJHBcNrUX5BWwL8vBo,75158
256
256
  ccxt/async_support/hitbtc.py,sha256=vmn93xmvAWWOW9H3XojeF4M0WWAAyqx0Pv6JF07_1mg,149566
257
257
  ccxt/async_support/hitbtc3.py,sha256=dmSYoD2o4av_zzbZI8HNIoj8BWxA7QozsVpy8JaOXzU,469
258
258
  ccxt/async_support/hollaex.py,sha256=XftSb4pI6PhLJClM34Im7XVqzuzPRWNKPjDiYUZvIFA,74850
259
- ccxt/async_support/htx.py,sha256=ghb8LHU3xWlcj5din3srjhZcnxSlnWiC4bJobcUqcCA,398052
259
+ ccxt/async_support/htx.py,sha256=008yVHsAFBmNnnqFf-pT9Z8_X_llyIzMh7lHls4VM6I,401306
260
260
  ccxt/async_support/huobi.py,sha256=fup0j6wQ1khAtfbb1H4CSyJAOzhxuoHMmrM6sgTuhr8,452
261
261
  ccxt/async_support/huobijp.py,sha256=IIExVoDzxnQqhel296-CMKZiO3yQPle7YUc2bNHdg_0,88399
262
262
  ccxt/async_support/idex.py,sha256=gBc4Ps3iYtImjQlRb_QTFG05kKsA6R3uYu9bHzZUI58,68704
@@ -266,36 +266,36 @@ ccxt/async_support/kraken.py,sha256=pfY8pU_RlUKGuSj8IiHp_rGBJh3CwwgDYvppN77tcJc,
266
266
  ccxt/async_support/krakenfutures.py,sha256=Oj187yP-RmaapdKuaLo5f-bC25t7l26K89KnoXor560,100381
267
267
  ccxt/async_support/kucoin.py,sha256=gc33pEehHFjPkwTVAVQ4jNTBF8OrRZrZJ4rsoxHi4OQ,195562
268
268
  ccxt/async_support/kucoinfutures.py,sha256=tdU1xdV5uvbjmOmqduccjaOwSQ-x8Teypp_V40gusMQ,106200
269
- ccxt/async_support/kuna.py,sha256=whEDhy7yfXMrOAA_aIdYUPq_S809G9D2wd00puSLuS8,96704
269
+ ccxt/async_support/kuna.py,sha256=t_0KiEzeJmUdhvzTnL7IfUGGJUCabquZkgDVzh7fi_k,96793
270
270
  ccxt/async_support/latoken.py,sha256=f7_Z3N84I31z3ayCEbhYaAdO2OqUd9_D7K9O-A6r4YA,77491
271
271
  ccxt/async_support/lbank.py,sha256=dlYtCiD0SsuoWUxzL4zMmAYMUr8-sh7ETx_bkhy7-nQ,114308
272
272
  ccxt/async_support/luno.py,sha256=XC5WjZZ6tYQ-95bKyR_Z8TE7rolGLwi3z9eciXv-Qbk,41162
273
273
  ccxt/async_support/lykke.py,sha256=u5c1AF0kX68uFPcyM6X6JgO3aRTbFyCHFl0dnpTz1C8,49231
274
274
  ccxt/async_support/mercado.py,sha256=iWrbY3e0vLQupTsclLaD21jH8r6Nd3FlOLC9va-WZz0,35237
275
- ccxt/async_support/mexc.py,sha256=HafGj9tOWTG0_5otMCxER4nsyPJLDYbc0UVKFH4q6lU,227170
275
+ ccxt/async_support/mexc.py,sha256=0I6WScqPp4uPla-Q7NN08wSDbcXLTAyM0UJwkQrV9LI,227259
276
276
  ccxt/async_support/ndax.py,sha256=zK8hVmTJwum2ilEOyjHpq44M3nyePE2xiEgfsD0m_n8,107728
277
277
  ccxt/async_support/novadax.py,sha256=MhJuvidmZdR8dqFYVStIiihInIiG2xS_9P5a_zcjoLg,64185
278
278
  ccxt/async_support/oceanex.py,sha256=fvjFGdRVza2wPzwLCeShmf9ujJfsoSG2mieY-jiPxXU,37950
279
- ccxt/async_support/okcoin.py,sha256=0QAn4JkmUzdsRf8j2l1jICfZZrBYlv3ZalZFxiZbwB8,148430
279
+ ccxt/async_support/okcoin.py,sha256=G0wUxLNLdiBL7snzByYWxN5Vd7RFwWcD9VkeaUNRza4,148519
280
280
  ccxt/async_support/okx.py,sha256=QPXJQ4is0RO8ebhhid5EbsC8yBlqXTy72gfumiGHHN8,328524
281
281
  ccxt/async_support/p2b.py,sha256=lkrN13F1rNj6WsFkoPa2O5eBtDe4iKnl5v3dNc4ZI0M,54263
282
282
  ccxt/async_support/paymium.py,sha256=ytSECSpo34-Uz_AcKYmcXgfewmymtBEspkHlVyHLPAE,24310
283
- ccxt/async_support/phemex.py,sha256=Bx2TVXRuS7d_ijwe4Tt8HpDnOlgJ9lmZogseJXckPSo,211407
284
- ccxt/async_support/poloniex.py,sha256=DV5P0PAnZ3M9PdnglwBz5Pd4b8j-kxcJauPAUGmdwOg,100626
283
+ ccxt/async_support/phemex.py,sha256=yaRi6ta0_nj7BsUVpn-KRzGPVyPq-fnnjpanLQ5YtPo,213422
284
+ ccxt/async_support/poloniex.py,sha256=PPjukxoXwVxSOyv6JoMusAgPdWrBnmhFW7pQmSQzm6g,102194
285
285
  ccxt/async_support/poloniexfutures.py,sha256=MhEvZecnoy95lgv1kex4O-WkM3X2xqM-MZwqgoiKlf0,76996
286
286
  ccxt/async_support/probit.py,sha256=ZHIvcGJ_4V0hiI7k8Sr_idLndi2080eSv6VowJw3MU4,76451
287
287
  ccxt/async_support/timex.py,sha256=Stx6uS0xuN2BndKy6ivwdGXguT1K1M1jzfvy6SKgmHc,65964
288
- ccxt/async_support/tokocrypto.py,sha256=9G6lYHfJxjxj3dgvT9uSUKWwnYshPPARxRh4_MEqTHY,122499
288
+ ccxt/async_support/tokocrypto.py,sha256=-t3PF1hzQhhUL4xwqyM2iHiscFS-Lr6xqOslLX7iErM,122588
289
289
  ccxt/async_support/upbit.py,sha256=uoCYyJDB3OqPuecuAXrfX9uaqAFu6oUTouW66hUCbXE,77539
290
290
  ccxt/async_support/wavesexchange.py,sha256=YQnBsUcZChdm1z4S56wiaTKTea37R5D8yASZkEfOnoU,113865
291
- ccxt/async_support/wazirx.py,sha256=iUvUxBb53TunSWYh0hRILTRsg0S8c7msl95IXgrPZFE,37030
292
- ccxt/async_support/whitebit.py,sha256=Ve0uNPzEQasflRcA9E62vqeHmxyw8Ci_nM5OxlgLKfs,101118
291
+ ccxt/async_support/wazirx.py,sha256=63p9wpoc-xZpMOyagQAcJU8nRGos-9W7jt04-28-LOI,37119
292
+ ccxt/async_support/whitebit.py,sha256=OAYEOev6Li5CwusqiXZPEQNKq7KSVzmDjDxXOCayQPY,101207
293
293
  ccxt/async_support/woo.py,sha256=TjLfDmjOWYUrrf6vglhXGwthPGeRU60gmx2uXHBfA5I,109800
294
294
  ccxt/async_support/yobit.py,sha256=d9bkNQqL47g7zwt4g_PnhoTQETISVwL8TfhmInvKvkU,52172
295
295
  ccxt/async_support/zaif.py,sha256=-YCjZLw87m9m-JXxUCr6AEC8KfnNX8b7IVSv5caW3QQ,28158
296
296
  ccxt/async_support/zonda.py,sha256=huZYyfwcqQ6kxkxnkf7CW0nXbYWe6nTWnSJjxy5W3po,80676
297
297
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
298
- ccxt/async_support/base/exchange.py,sha256=4u1m8evCX7MB0V6QE9x9Bo5L8a2X1NIe9WDs5IpgGAw,72150
298
+ ccxt/async_support/base/exchange.py,sha256=rWf7sI1DLGiKzvGo5s2hWtpCAby5ZR_k-MQlzD9cwOE,72134
299
299
  ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
300
300
  ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
301
301
  ccxt/async_support/base/ws/aiohttp_client.py,sha256=_qjsl_x-rd88QmzQeGVWovMDK0XoD3f4m5GHqxZRajs,5203
@@ -309,14 +309,14 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=Pxrq22nCODckJ6G1OXkYEmUunIu
309
309
  ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
310
310
  ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
311
311
  ccxt/base/errors.py,sha256=1C38u76jlNGq06N_uwfw8b8FZHK8_3_90wM1rKfU_Rg,3878
312
- ccxt/base/exchange.py,sha256=6Ud6w5nbN-A8suAqLC1fbjJRVZ9spzZ_KtjWKztOHHM,216271
312
+ ccxt/base/exchange.py,sha256=esWXGX7Ho_6NOXbdaW_a0U0lMuwURCC5pWB-Iv2-QO4,216255
313
313
  ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
314
314
  ccxt/base/types.py,sha256=_kkShzrcaWsH-YMr1J2FttpxXQq0oAMpOGmVQWg6X1Y,5690
315
- ccxt/pro/__init__.py,sha256=K1Au58DHbVnYqE0daD0FBwJza06mfdX2G_LQTFel75s,6166
315
+ ccxt/pro/__init__.py,sha256=rlAc0iqpkuVt7130_CgUrS-3gzFiUhSeC_mhA7enH3M,6166
316
316
  ccxt/pro/alpaca.py,sha256=RKNzGSV6WXuxygIzB4JrWyU7HRrKKRVxnFR--AVOedw,27105
317
317
  ccxt/pro/ascendex.py,sha256=2OX2v_774DDIlqEbAd2UWb-8hx-YfhjC0eXQhk2d_d4,34858
318
318
  ccxt/pro/bequant.py,sha256=3IeQ0vPg-eVqPiGMfX7yqH9qtXKm1ZqocQDeLwpA8EE,1093
319
- ccxt/pro/binance.py,sha256=7dgMeBFVnDbzE7-XIyS7uXsG67drQUoSLA_g-41KRSU,119849
319
+ ccxt/pro/binance.py,sha256=nq5cxy6VPevIn3nQoeg1CkzIUGHa79Ez1x93v-Sw_Sg,119886
320
320
  ccxt/pro/binancecoinm.py,sha256=vu5SUgP70T1Dax-Am3rch7ZldGrmUwxr_rI51Y38xjw,724
321
321
  ccxt/pro/binanceus.py,sha256=z3nif7plrd5DVrgqdnx9n-ZUbc826IkvudQ1Ec1DHpU,2078
322
322
  ccxt/pro/binanceusdm.py,sha256=S0eT662O2ReplsihWk42nhJWqw1XsODpeDQa9eFVVt8,1357
@@ -362,7 +362,7 @@ ccxt/pro/ndax.py,sha256=WvQju-OBHWNU63vxa4A_iQyVChjg-xmRCPsNhuU06Ms,22763
362
362
  ccxt/pro/okcoin.py,sha256=k4rngXz3IcMiQalWuLb49FrcsCxJCQhyHl5D8doAB2k,30485
363
363
  ccxt/pro/okx.py,sha256=_LBlXny8Oe6oKrqXfYSI8vEVbaPtGJMqhdr-4lnFg80,64464
364
364
  ccxt/pro/phemex.py,sha256=88UNbPjRQOA_qffCCT7VsCBw_ypnr-HxzA5nCTEleDs,60562
365
- ccxt/pro/poloniex.py,sha256=Tz4JHfiGtoOnGi7k2S6x7Gix8CUyU2y2WGOBGw4c9aQ,50970
365
+ ccxt/pro/poloniex.py,sha256=gnTqHg6XBBM3TJS6SAwP0-YEyLge5HKUFN2lpPtbvGo,51027
366
366
  ccxt/pro/poloniexfutures.py,sha256=uLH7_Yu6VlgEc8Z8bv7j3XQ4zCitHPW2aaf7ISsTgsM,41023
367
367
  ccxt/pro/probit.py,sha256=MfZyluWDkCSysRKz7fQ18idYUA9hreoS5DHJmPwGDYw,22819
368
368
  ccxt/pro/upbit.py,sha256=j3F_t2iWgUKIa7gN0OxLjpr8a5RUynT1-X8991fp8qY,9654
@@ -417,7 +417,7 @@ ccxt/test/base/test_ticker.py,sha256=5J8KHgFhJLgcWyFwt3bhJ-tldMho3K7LD5yJnnUyrT4
417
417
  ccxt/test/base/test_trade.py,sha256=AN3emAdEPhdFyunap43cKqZTS1cbaShZKTjYue67jEU,2297
418
418
  ccxt/test/base/test_trading_fee.py,sha256=2_WCp3qJ2UpraQQoGFlGJYwHD-T0Bm5W7KIw4zpFvSM,1068
419
419
  ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
420
- ccxt-4.1.89.dist-info/METADATA,sha256=TcrHFbJWpjOrd5Wymx9jmlDopWrQpLZYEpZoYek0LKw,105684
421
- ccxt-4.1.89.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
422
- ccxt-4.1.89.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
423
- ccxt-4.1.89.dist-info/RECORD,,
420
+ ccxt-4.1.90.dist-info/METADATA,sha256=tkZooj0FXbIJH3DREAwXBJtfLwVOjQ949yhaQI6OVFE,105684
421
+ ccxt-4.1.90.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
422
+ ccxt-4.1.90.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
423
+ ccxt-4.1.90.dist-info/RECORD,,
File without changes