ccxt 4.2.39__py2.py3-none-any.whl → 4.2.40__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/okx.py CHANGED
@@ -3461,10 +3461,8 @@ class okx(Exchange, ImplicitAPI):
3461
3461
  method = 'privateGetTradeOrdersAlgoPending'
3462
3462
  if trailing:
3463
3463
  request['ordType'] = 'move_order_stop'
3464
- elif stop or (ordType in algoOrderTypes):
3465
- if stop:
3466
- if ordType is None:
3467
- raise ArgumentsRequired(self.id + ' fetchOpenOrders() requires an "ordType" string parameter, "conditional", "oco", "trigger", "move_order_stop", "iceberg", or "twap"')
3464
+ elif stop and (ordType is None):
3465
+ request['ordType'] = 'trigger'
3468
3466
  query = self.omit(params, ['method', 'stop', 'trigger', 'trailing'])
3469
3467
  response = None
3470
3468
  if method == 'privateGetTradeOrdersAlgoPending':
@@ -3752,7 +3750,7 @@ class okx(Exchange, ImplicitAPI):
3752
3750
  :param int [since]: the earliest time in ms to fetch orders for
3753
3751
  :param int [limit]: the maximum number of order structures to retrieve
3754
3752
  :param dict [params]: extra parameters specific to the exchange API endpoint
3755
- :param bool [params.stop]: True if fetching trigger or conditional orders
3753
+ :param bool [params.trigger]: True if fetching trigger or conditional orders
3756
3754
  :param str [params.ordType]: "conditional", "oco", "trigger", "move_order_stop", "iceberg", or "twap"
3757
3755
  :param str [params.algoId]: Algo ID "'433845797218942976'"
3758
3756
  :param int [params.until]: timestamp in ms to fetch orders for
@@ -3787,22 +3785,21 @@ class okx(Exchange, ImplicitAPI):
3787
3785
  request['instType'] = self.convert_to_instrument_type(type)
3788
3786
  if limit is not None:
3789
3787
  request['limit'] = limit # default 100, max 100
3790
- options = self.safe_value(self.options, 'fetchClosedOrders', {})
3791
- algoOrderTypes = self.safe_value(self.options, 'algoOrderTypes', {})
3788
+ options = self.safe_dict(self.options, 'fetchClosedOrders', {})
3789
+ algoOrderTypes = self.safe_dict(self.options, 'algoOrderTypes', {})
3792
3790
  defaultMethod = self.safe_string(options, 'method', 'privateGetTradeOrdersHistory')
3793
3791
  method = self.safe_string(params, 'method', defaultMethod)
3794
3792
  ordType = self.safe_string(params, 'ordType')
3795
- stop = self.safe_value_2(params, 'stop', 'trigger')
3793
+ stop = self.safe_bool_2(params, 'stop', 'trigger')
3796
3794
  trailing = self.safe_bool(params, 'trailing', False)
3797
3795
  if trailing or stop or (ordType in algoOrderTypes):
3798
3796
  method = 'privateGetTradeOrdersAlgoHistory'
3799
3797
  request['state'] = 'effective'
3800
3798
  if trailing:
3801
3799
  request['ordType'] = 'move_order_stop'
3802
- elif stop or (ordType in algoOrderTypes):
3803
- if stop:
3804
- if ordType is None:
3805
- raise ArgumentsRequired(self.id + ' fetchClosedOrders() requires an "ordType" string parameter, "conditional", "oco", "trigger", "move_order_stop", "iceberg", or "twap"')
3800
+ elif stop:
3801
+ if ordType is None:
3802
+ request['ordType'] = 'trigger'
3806
3803
  else:
3807
3804
  if since is not None:
3808
3805
  request['begin'] = since
ccxt/phemex.py CHANGED
@@ -50,6 +50,7 @@ class phemex(Exchange, ImplicitAPI):
50
50
  'addMargin': False,
51
51
  'cancelAllOrders': True,
52
52
  'cancelOrder': True,
53
+ 'closePosition': False,
53
54
  'createOrder': True,
54
55
  'createReduceOnlyOrder': True,
55
56
  'createStopLimitOrder': True,
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.2.39'
7
+ __version__ = '4.2.40'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
ccxt/pro/bitmart.py CHANGED
@@ -36,6 +36,7 @@ class bitmart(ccxt.async_support.bitmart):
36
36
  'watchOrderBookForSymbols': True,
37
37
  'watchOrders': True,
38
38
  'watchTrades': True,
39
+ 'watchTradesForSymbols': True,
39
40
  'watchOHLCV': True,
40
41
  'watchPosition': 'emulated',
41
42
  'watchPositions': True,
@@ -261,16 +262,39 @@ class bitmart(ccxt.async_support.bitmart):
261
262
  :param dict [params]: extra parameters specific to the exchange API endpoint
262
263
  :returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
263
264
  """
265
+ return await self.watch_trades_for_symbols([symbol], since, limit, params)
266
+
267
+ async def watch_trades_for_symbols(self, symbols: List[str], since: Int = None, limit: Int = None, params={}) -> List[Trade]:
268
+ """
269
+ :see: https://developer-pro.bitmart.com/en/spot/#public-trade-channel
270
+ get the list of most recent trades for a list of symbols
271
+ :param str[] symbols: unified symbol of the market to fetch trades for
272
+ :param int [since]: timestamp in ms of the earliest trade to fetch
273
+ :param int [limit]: the maximum amount of trades to fetch
274
+ :param dict [params]: extra parameters specific to the exchange API endpoint
275
+ :returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
276
+ """
264
277
  await self.load_markets()
265
- symbol = self.symbol(symbol)
266
- market = self.market(symbol)
267
- type = 'spot'
268
- type, params = self.handle_market_type_and_params('watchTrades', market, params)
269
- trades = await self.subscribe('trade', symbol, type, params)
278
+ marketType = None
279
+ symbols, marketType, params = self.get_params_for_multiple_sub('watchTradesForSymbols', symbols, limit, params)
280
+ channelName = 'trade'
281
+ trades = await self.subscribe_multiple(channelName, marketType, symbols, params)
270
282
  if self.newUpdates:
271
- limit = trades.getLimit(symbol, limit)
283
+ first = self.safe_dict(trades, 0)
284
+ tradeSymbol = self.safe_string(first, 'symbol')
285
+ limit = trades.getLimit(tradeSymbol, limit)
272
286
  return self.filter_by_since_limit(trades, since, limit, 'timestamp', True)
273
287
 
288
+ def get_params_for_multiple_sub(self, methodName: str, symbols: List[str], limit: Int = None, params={}):
289
+ symbols = self.market_symbols(symbols, None, False, True)
290
+ length = len(symbols)
291
+ if length > 20:
292
+ raise NotSupported(self.id + ' ' + methodName + '() accepts a maximum of 20 symbols in one request')
293
+ market = self.market(symbols[0])
294
+ marketType = None
295
+ marketType, params = self.handle_market_type_and_params(methodName, market, params)
296
+ return [symbols, marketType, params]
297
+
274
298
  async def watch_ticker(self, symbol: str, params={}) -> Ticker:
275
299
  """
276
300
  :see: https://developer-pro.bitmart.com/en/spot/#public-ticker-channel
@@ -772,12 +796,11 @@ class bitmart(ccxt.async_support.bitmart):
772
796
  # ]
773
797
  # }
774
798
  #
775
- channel = self.safe_string_2(message, 'table', 'group')
776
- isSpot = (channel.find('spot') >= 0)
777
799
  data = self.safe_value(message, 'data')
778
800
  if data is None:
779
801
  return
780
802
  stored = None
803
+ symbol = None
781
804
  for i in range(0, len(data)):
782
805
  trade = self.parse_ws_trade(data[i])
783
806
  symbol = trade['symbol']
@@ -787,9 +810,7 @@ class bitmart(ccxt.async_support.bitmart):
787
810
  stored = ArrayCache(tradesLimit)
788
811
  self.trades[symbol] = stored
789
812
  stored.append(trade)
790
- messageHash = channel
791
- if isSpot:
792
- messageHash += ':' + self.safe_string(data[0], 'symbol')
813
+ messageHash = 'trade:' + symbol
793
814
  client.resolve(stored, messageHash)
794
815
 
795
816
  def parse_ws_trade(self, trade, market: Market = None):
@@ -1281,14 +1302,10 @@ class bitmart(ccxt.async_support.bitmart):
1281
1302
  :returns dict: A dictionary of `order book structures <https://docs.ccxt.com/#/?id=order-book-structure>` indexed by market symbols
1282
1303
  """
1283
1304
  await self.load_markets()
1284
- symbols = self.market_symbols(symbols, None, False, True)
1285
- if len(symbols) > 20:
1286
- raise NotSupported(self.id + ' watchOrderBookForSymbols() accepts a maximum of 20 symbols in one request')
1287
- market = self.market(symbols[0])
1305
+ type = None
1306
+ symbols, type, params = self.get_params_for_multiple_sub('watchOrderBookForSymbols', symbols, limit, params)
1288
1307
  channel = None
1289
1308
  channel, params = self.handle_option_and_params(params, 'watchOrderBookForSymbols', 'depth', 'depth/increase100')
1290
- type = 'spot'
1291
- type, params = self.handle_market_type_and_params('watchOrderBookForSymbols', market, params)
1292
1309
  if type == 'swap' and channel == 'depth/increase100':
1293
1310
  channel = 'depth50'
1294
1311
  orderbook = await self.subscribe_multiple(channel, type, symbols, params)
ccxt/pro/bybit.py CHANGED
@@ -136,7 +136,7 @@ class bybit(ccxt.async_support.bybit):
136
136
  self.options['requestId'] = requestId
137
137
  return requestId
138
138
 
139
- def get_url_by_market_type(self, symbol: Str = None, isPrivate=False, method=None, params={}):
139
+ def get_url_by_market_type(self, symbol: Str = None, isPrivate=False, method: str = None, params={}):
140
140
  accessibility = 'private' if isPrivate else 'public'
141
141
  isUsdcSettled = None
142
142
  isSpot = None
@@ -185,7 +185,7 @@ class bybit(ccxt.async_support.bybit):
185
185
  market = self.market(symbol)
186
186
  symbol = market['symbol']
187
187
  messageHash = 'ticker:' + symbol
188
- url = self.get_url_by_market_type(symbol, False, params)
188
+ url = self.get_url_by_market_type(symbol, False, 'watchTicker', params)
189
189
  params = self.clean_params(params)
190
190
  options = self.safe_value(self.options, 'watchTicker', {})
191
191
  topic = self.safe_string(options, 'name', 'tickers')
@@ -207,7 +207,7 @@ class bybit(ccxt.async_support.bybit):
207
207
  await self.load_markets()
208
208
  symbols = self.market_symbols(symbols, None, False)
209
209
  messageHashes = []
210
- url = self.get_url_by_market_type(symbols[0], False, params)
210
+ url = self.get_url_by_market_type(symbols[0], False, 'watchTickers', params)
211
211
  params = self.clean_params(params)
212
212
  options = self.safe_value(self.options, 'watchTickers', {})
213
213
  topic = self.safe_string(options, 'name', 'tickers')
@@ -368,7 +368,7 @@ class bybit(ccxt.async_support.bybit):
368
368
  await self.load_markets()
369
369
  market = self.market(symbol)
370
370
  symbol = market['symbol']
371
- url = self.get_url_by_market_type(symbol, False, params)
371
+ url = self.get_url_by_market_type(symbol, False, 'watchOHLCV', params)
372
372
  params = self.clean_params(params)
373
373
  ohlcv = None
374
374
  timeframeId = self.safe_string(self.timeframes, timeframe, timeframe)
@@ -477,7 +477,7 @@ class bybit(ccxt.async_support.bybit):
477
477
  if symbolsLength == 0:
478
478
  raise ArgumentsRequired(self.id + ' watchOrderBookForSymbols() requires a non-empty array of symbols')
479
479
  symbols = self.market_symbols(symbols)
480
- url = self.get_url_by_market_type(symbols[0], False, params)
480
+ url = self.get_url_by_market_type(symbols[0], False, 'watchOrderBook', params)
481
481
  params = self.clean_params(params)
482
482
  market = self.market(symbols[0])
483
483
  if limit is None:
@@ -595,7 +595,7 @@ class bybit(ccxt.async_support.bybit):
595
595
  if symbolsLength == 0:
596
596
  raise ArgumentsRequired(self.id + ' watchTradesForSymbols() requires a non-empty array of symbols')
597
597
  params = self.clean_params(params)
598
- url = self.get_url_by_market_type(symbols[0], False, params)
598
+ url = self.get_url_by_market_type(symbols[0], False, 'watchTrades', params)
599
599
  topics = []
600
600
  messageHashes = []
601
601
  for i in range(0, len(symbols)):
ccxt/test/test_async.py CHANGED
@@ -373,7 +373,8 @@ class testMainClass(baseMainTestClass):
373
373
  final_value = exchange_settings[key]
374
374
  set_exchange_prop(exchange, key, final_value)
375
375
  # credentials
376
- self.load_credentials_from_env(exchange)
376
+ if self.load_keys:
377
+ self.load_credentials_from_env(exchange)
377
378
  # skipped tests
378
379
  skipped_file = self.root_dir_for_skips + 'skip-tests.json'
379
380
  skipped_settings = io_file_read(skipped_file)
ccxt/test/test_sync.py CHANGED
@@ -372,7 +372,8 @@ class testMainClass(baseMainTestClass):
372
372
  final_value = exchange_settings[key]
373
373
  set_exchange_prop(exchange, key, final_value)
374
374
  # credentials
375
- self.load_credentials_from_env(exchange)
375
+ if self.load_keys:
376
+ self.load_credentials_from_env(exchange)
376
377
  # skipped tests
377
378
  skipped_file = self.root_dir_for_skips + 'skip-tests.json'
378
379
  skipped_settings = io_file_read(skipped_file)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.2.39
3
+ Version: 4.2.40
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
@@ -259,13 +259,13 @@ console.log(version, Object.keys(exchanges));
259
259
 
260
260
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
261
261
 
262
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.39/dist/ccxt.browser.js
263
- * unpkg: https://unpkg.com/ccxt@4.2.39/dist/ccxt.browser.js
262
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.2.40/dist/ccxt.browser.js
263
+ * unpkg: https://unpkg.com/ccxt@4.2.40/dist/ccxt.browser.js
264
264
 
265
265
  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.
266
266
 
267
267
  ```HTML
268
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.39/dist/ccxt.browser.js"></script>
268
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.2.40/dist/ccxt.browser.js"></script>
269
269
  ```
270
270
 
271
271
  Creates a global `ccxt` object:
@@ -1,14 +1,14 @@
1
- ccxt/__init__.py,sha256=6PXT7bRZZl46vil9W8q3Z9O0F-67MPXBass0dqKBTbI,15441
1
+ ccxt/__init__.py,sha256=BQLllpzkWIjqHqAuAIbI_JYLP8ZUipVB4vZFF4ms6i0,15441
2
2
  ccxt/ace.py,sha256=pIA1Ipres_-IcaIF1hiSewvx3gLNH_19ZPykd4OO5zc,41406
3
3
  ccxt/alpaca.py,sha256=Ac1M6PUcbOQIPQp5DzOX2g1bDRlHf_Nt1EeZN7QpUSE,46260
4
- ccxt/ascendex.py,sha256=Q1Aki2oYP8VEHzuHS5jpOTi_E0iSrIS1UoOb3Jb41ws,143819
4
+ ccxt/ascendex.py,sha256=LvkEOorRw8DK9fu34XN2boyj5RUZDHbY4e1r7VftV9M,144243
5
5
  ccxt/bequant.py,sha256=RBiAmaTbL35DgiV3Hl6uchLUd78V0z1T9riTlNsrpdc,1174
6
6
  ccxt/bigone.py,sha256=4-WMAFaXTdJ_W4v-VBanys2zYDnp1X_7-9MdaOWP_ho,91965
7
- ccxt/binance.py,sha256=Pd4VkEGSPTw6MwKVjC0f9aIdSbN7q9Sjfubf6YVzgKU,537188
7
+ ccxt/binance.py,sha256=j9KIeDoYVgjnkL3aCBNgWXbcoziyQg3wG7kymYT4rPE,546723
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=2_7OeIQEMXRvTUz1E8bl8oHl6Op3bkFO1TtWmbSUmN4,156594
11
+ ccxt/bingx.py,sha256=Ectm3F3iN5Dj0wd9iRe-JVmjdqk6z8nO0jZM14I4Emc,167896
12
12
  ccxt/bit2c.py,sha256=CqqcR58gFVOsG43SazN_EEGwwtkhdqZvxBiGS78MUhU,36871
13
13
  ccxt/bitbank.py,sha256=wvtM2PqiOtTA2pzSGdGLUuu30Zr5gCrGVj17gHYjpSU,41669
14
14
  ccxt/bitbay.py,sha256=xAIjzGRDVGwoy-Gygd99H0YN4wiaz_0lR0Z14oxaaxc,478
@@ -18,7 +18,7 @@ ccxt/bitfinex.py,sha256=e4k5Flv2W4DFLa12jdcmJ0z9fIyaIqpDV72SYOf5OPc,71434
18
18
  ccxt/bitfinex2.py,sha256=fBmfG9l4qmKz62O-NH7X9wPBA_8BPdaPXW8hAMW6Wkw,156379
19
19
  ccxt/bitflyer.py,sha256=4p6VZl4A6WzKMtOzyJDkEZceCAt0vfhtPoU0dZ_avHA,40255
20
20
  ccxt/bitforex.py,sha256=2jV1_cd7rFnIDjIPEda67Ks2NXG8yAcRk9-VE7IcVn0,34985
21
- ccxt/bitget.py,sha256=lnG52FnbfYWJ44l_1sylXpHL6oooBRTLHGORADm_LzE,397218
21
+ ccxt/bitget.py,sha256=hMMm2gfGdaPujJnVTR_VLjbd7N9CVtS_VvnMVFvXhVw,397755
22
22
  ccxt/bithumb.py,sha256=3cj2LShmu63VN3TWmDr7o5jgMjhpR7IRJAUCFCVbliQ,44968
23
23
  ccxt/bitmart.py,sha256=DZSD6dw2Q2w5iHopinwpWtCckYLkiGZdp47ZOdpCBEA,196979
24
24
  ccxt/bitmex.py,sha256=78K0QidhtJXRohMQFamtCqHVhNV6EBVZiNjX0ri-CTo,124098
@@ -36,15 +36,15 @@ ccxt/btcalpha.py,sha256=HvX6D-7gN2jkBe9Z1UfVlv_NYahiQ2Gj8IezCq3vIb8,36333
36
36
  ccxt/btcbox.py,sha256=8kiMehk9EV5XjE7YTCgghjtc1QW1RHcaScIgY8fZrUQ,23338
37
37
  ccxt/btcmarkets.py,sha256=zG-f29tZOxC363RpYwyLXJy7ynpYKfuQsM4lcrS53Yk,50323
38
38
  ccxt/btcturk.py,sha256=Lh2ds8tK1XgqDAqGnm8PQk4EZ14n5tULdD2Om6Zrqpc,35474
39
- ccxt/bybit.py,sha256=aaaRZ3l0y7MayaiSaHhR6mTJhCmHVc7j7HrUw0kC_-Y,359193
39
+ ccxt/bybit.py,sha256=MWMuVF2p5iWlziBoKZNuGmu-mCzNFNJ1zDUYB_PFp6E,359345
40
40
  ccxt/cex.py,sha256=zAQcSPC5IforNdgxOy8R-eB7udzq57vHXm71RKjYEoU,69584
41
- ccxt/coinbase.py,sha256=GUyey6D0j9t4OQ9WpTfIB_jcTGFGtU9AOX1BzDXwVAs,155878
42
- ccxt/coinbasepro.py,sha256=HsA22fyWE2KVupKJdlF_J9nekeXOwDWjOC7ZceuQyEE,78234
41
+ ccxt/coinbase.py,sha256=ixI_8zV1i6wdLuNHwvEeN58iiUYgbt2aUncwZxBnl-Y,155922
42
+ ccxt/coinbasepro.py,sha256=4kVD0VR-k-6ghs07A1umAIH5-yfeeEmFzDWmkGDuJbc,78278
43
43
  ccxt/coincheck.py,sha256=Y_HAJCI_1ejqcXM1Z1TomeZ7i5qPSnG3mlf8IUljoAI,34670
44
44
  ccxt/coinex.py,sha256=Dr0XpOeNFzQzNkqITs982xwlxKrgzMLujRk4nbMPcs4,227284
45
- ccxt/coinlist.py,sha256=NfIjrgjyiPcnoQZ6-VOrtyu6ctEpSPoJDk-YKOsBY6A,102787
45
+ ccxt/coinlist.py,sha256=7L4RCd9aMV9HcVGug3b1ZcRImRjsvJtkLfgZWIfoMTY,102913
46
46
  ccxt/coinmate.py,sha256=pwRrzx3dW72HyEvuKG9bxgL0s_dC67UW_DMs6mmSyTA,39976
47
- ccxt/coinmetro.py,sha256=-yrNSA-vU3jICnesTOWt6H-vYcQX-e8fRWGgh2o0UdA,80343
47
+ ccxt/coinmetro.py,sha256=rrJ5gueJRt0y0_zkvu3y8th7lL2Ao6-gn8OS-QXqXRU,80367
48
48
  ccxt/coinone.py,sha256=nPXWyc-hdykkkHqiUAlj4CIPXJB61eawPR1OfVnW7mk,46705
49
49
  ccxt/coinsph.py,sha256=ziUTxi3lFt8Rut4FQd_hb9W4lZzNsX8PZpNKMESLkDg,88197
50
50
  ccxt/coinspot.py,sha256=NQhB6z-8IOI1h8Mu0A98q5Do4kvb5-0wnH2ZArFdrgA,23040
@@ -69,7 +69,7 @@ ccxt/idex.py,sha256=vM7r9jFwBpZQitV2xq8P1soWPZJ9PF6dECmqkFCvd5Y,68281
69
69
  ccxt/independentreserve.py,sha256=D_9zOenzFKpM1I3yUa11qSFeY39k33wr0ukB5J3lCNM,29958
70
70
  ccxt/indodax.py,sha256=R-DGjnlRnhQgFT3lGfu6QjiU5-ZizDOZuZkIIb9O2XA,42772
71
71
  ccxt/kraken.py,sha256=O4NvoBboqMnECUI8XpZ629XTDb7HBPbG5xBka6pgdys,121578
72
- ccxt/krakenfutures.py,sha256=BWn6w7P4ui9fV85cyUYx3qRLnqZhTb9qBW5lzgKIZio,102738
72
+ ccxt/krakenfutures.py,sha256=GvsAnE0YzqQlTH8w2zSTyn6BGMTA-bjioLcpTiAQNu0,107937
73
73
  ccxt/kucoin.py,sha256=sMJieVta8cFmehihTXvf9O4qFFid5Bhk8D6r7Foq7mA,199796
74
74
  ccxt/kucoinfutures.py,sha256=dnSiG5_gxatByfSHX5vQzyjmIulr79Q_enKuOkQryTg,110477
75
75
  ccxt/kuna.py,sha256=Dkb4DtRTmT76EPsmMz_M8WL29zs7T51kci5KHeUIiYw,96400
@@ -78,16 +78,16 @@ ccxt/lbank.py,sha256=8ejncNaLMp4ZU9IraLdIdwu2QMGvForFiqjA_kEXkBA,114923
78
78
  ccxt/luno.py,sha256=UXCV0xYPq_xCI0NOPGFV7HkKoUSye4h-zvFpYnEl-XU,43937
79
79
  ccxt/lykke.py,sha256=U-ys4TzHTrc6vwChjPS2UxRg-qwzGgrDSSkr6l-EzAk,49283
80
80
  ccxt/mercado.py,sha256=c2oVbxuQb9NNtCZOClrlSM6Ev3ORjjWKEyJKATDugX4,35018
81
- ccxt/mexc.py,sha256=lLKT0dA7yXoePtbj4tcRwih8IaoiF2-BN5SqJlXcz-Q,226219
81
+ ccxt/mexc.py,sha256=wpY-yPTc3ELGu5ZZtyfThRMbXiQkMmFZ2nZf2_sNa04,226218
82
82
  ccxt/ndax.py,sha256=HQxcovs0oDFenAaFGu6tymw0K_e4RECetGzLjn0DXi8,107338
83
83
  ccxt/novadax.py,sha256=4We_2lMTdbOo_E5MF4HGj66fLaEKBZEc1a6FOrlr9mY,64069
84
84
  ccxt/oceanex.py,sha256=CFmSu68GDxJuBTU3NX-Cz3n-eJKZM9VbNlyUFbl7SDM,37657
85
85
  ccxt/okcoin.py,sha256=8Kla5cXQaSV2Ct6sKW0UYgMG4ATXBXWo9DFAGROa3pQ,148251
86
- ccxt/okx.py,sha256=RPTHVFC2pt2Osntrr92iBYFjJy7TZbVSrHkBl5Mdgj0,333564
86
+ ccxt/okx.py,sha256=H-HQyBL_bdY8MBifWSdiyurg-lTDoyndmiCvNCeuuIo,333152
87
87
  ccxt/onetrading.py,sha256=wVeNFnE8stSoqCmrw4eGmtck5CrcUOKy5l-8lPA4URA,87888
88
88
  ccxt/p2b.py,sha256=8C4x-xPO-JsXByjcGub3DIqD6X061D4NJi2mW3GFtlM,54062
89
89
  ccxt/paymium.py,sha256=E2_kKOFtw3TMECr_ltX4EuSk85PMsk1n03vr3LPxGRI,24200
90
- ccxt/phemex.py,sha256=5cAMFEdYEeJn4qyItPcXOhGXq7ki_CvmXwBkJp7ci18,218273
90
+ ccxt/phemex.py,sha256=XDNg8VsvLlR-yDAHZN1_60pKK0al2S8UO4OWldX1rSA,218313
91
91
  ccxt/poloniex.py,sha256=55fukWC68Ke6rs8dofSLlHb-bKbxU0PDXGr2ky-1wYA,101806
92
92
  ccxt/poloniexfutures.py,sha256=k8QQg8o7SGDM4v2l_7MpBaN1B6xVqSjISYj8MYA6y7M,77356
93
93
  ccxt/probit.py,sha256=JEQeauwy3iEo2QcWzG3QJ-cibBoYCAvi8MFVc7S6YrE,76140
@@ -111,7 +111,7 @@ ccxt/abstract/binance.py,sha256=ooFVLTfJfs56OMYtmjsgo49jHY55AkzZXlPmdnedFjc,9004
111
111
  ccxt/abstract/binancecoinm.py,sha256=ooFVLTfJfs56OMYtmjsgo49jHY55AkzZXlPmdnedFjc,90048
112
112
  ccxt/abstract/binanceus.py,sha256=Mr9E8bXIDPBQjWYFVZpbmrOoVZ9kA0ywUZl_MESypi8,96707
113
113
  ccxt/abstract/binanceusdm.py,sha256=ooFVLTfJfs56OMYtmjsgo49jHY55AkzZXlPmdnedFjc,90048
114
- ccxt/abstract/bingx.py,sha256=vThtmeEPp7o8oLMtWKW1v62uCi_4vczTAges1yB2bHo,14432
114
+ ccxt/abstract/bingx.py,sha256=_RGKbd2MClDWClmZAlALZBrxnH8b-LaplMjccmfMVOE,15082
115
115
  ccxt/abstract/bit2c.py,sha256=np6i756kSB5dO3Nj6POLKxkWkpYcsGg-4LS8BwPrizI,2830
116
116
  ccxt/abstract/bitbank.py,sha256=hrHsD7Uvtyy2o2lzCHau3-eNq16pnZ3-YDQ6Tq_sxYU,2735
117
117
  ccxt/abstract/bitbay.py,sha256=aSfewvRojzmuymX6QbOnDR8v9VFqWTULMHX9Y7kKD1M,5820
@@ -142,7 +142,7 @@ ccxt/abstract/btcturk.py,sha256=duM-QrB9MvGpopOtxkfbeYlY49bgvXQLiosRVmnQYFw,1777
142
142
  ccxt/abstract/bybit.py,sha256=YvcW-0aZtbkadcmaojNfR4-s4dCbql-nV63ObuC53Jc,48114
143
143
  ccxt/abstract/cex.py,sha256=Q0NJeDuJ4Kn_mtokYqBenhXWvLIiMSVTqbgbfcLGgv4,3311
144
144
  ccxt/abstract/coinbase.py,sha256=mFGT7rDw7uNy29_NAH6JTMQBGRHLGqsZ4POR3m75st4,13030
145
- ccxt/abstract/coinbasepro.py,sha256=lMb-1kO7uKtLZZUTJnIkuwQyX2W-AFQnr2juuCl-k4o,7051
145
+ ccxt/abstract/coinbasepro.py,sha256=eQMtsIw94xJqQO_xXmrrHdc_YFmhVZNW4OXCWv4Nx1w,7162
146
146
  ccxt/abstract/coincheck.py,sha256=3IIVmryXmzxXqi6IleUmfDZIUMOn_L_4G9Iw8BuEEGo,3417
147
147
  ccxt/abstract/coinex.py,sha256=uVuBfIPALbHVYO1_g72T-HoEqLVMbQCUBq_OGmGVaeA,16948
148
148
  ccxt/abstract/coinlist.py,sha256=t4Xc9xyWNHgHAz7nyplj8PmgrX4knA3cnk2uEJCvkQk,6538
@@ -203,17 +203,17 @@ ccxt/abstract/woo.py,sha256=xilL7EbvUmJ_zBb_r1Q7cTi4bHsBQN2mFu0TGu7WHG0,8890
203
203
  ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
204
204
  ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
205
205
  ccxt/abstract/zonda.py,sha256=aSfewvRojzmuymX6QbOnDR8v9VFqWTULMHX9Y7kKD1M,5820
206
- ccxt/async_support/__init__.py,sha256=5lTgBX45cMgY3VkuKY1t6XubQKAnC295xDyTxw9EbFU,15174
206
+ ccxt/async_support/__init__.py,sha256=KwVWyBzXbXpBwzIsWEt1lqWZ9GZIThMa78O2ND7l0qE,15174
207
207
  ccxt/async_support/ace.py,sha256=LjNrCLc5OA9CTZ-SCNkBBeSUa144U1ayh6lSw_6GVgI,41630
208
208
  ccxt/async_support/alpaca.py,sha256=Z8cGI1uazQqK7RCLCSw1JEGx03bGTJhxI1_qLQWkmKg,46472
209
- ccxt/async_support/ascendex.py,sha256=fm6bXvXiRrEJ51ChF2TbhjlHPgPm_Wh0N7pw0ZNGlGc,144559
209
+ ccxt/async_support/ascendex.py,sha256=66-1Q9nGHEZtVkZk-ZWrTK3gbTzPh2WVP-lzlFM9g6w,144983
210
210
  ccxt/async_support/bequant.py,sha256=1hTwHovo1bW1XTIc8ZKjvJ-Xg6LfmpGdzT7TepykaVM,1188
211
211
  ccxt/async_support/bigone.py,sha256=SOflK947fUGU9AViKiK6a9rvmIjzD5-Ui1QZMuXVtd0,92419
212
- ccxt/async_support/binance.py,sha256=QrKH5tq95MTDOVWoJgGaRBsARpswYtVlY01abmbAbLg,539370
212
+ ccxt/async_support/binance.py,sha256=1XiMFon51iV7QN6dPJAIjXt4ejcZaxJAi-zfoaLdfHQ,548989
213
213
  ccxt/async_support/binancecoinm.py,sha256=IY3RLZptQA2nmZaUYRGfTa5ZY4VMWBpFYfwHc8zTHw0,1683
214
214
  ccxt/async_support/binanceus.py,sha256=c-K3Tk7LaRJjmYdCx8vBOqsx01uXrtvt0PC2ekBiD0g,9177
215
215
  ccxt/async_support/binanceusdm.py,sha256=-1r4A4tmV2pCiLGO80hzq7MIIj4MTzOD7buZGv6JauA,2518
216
- ccxt/async_support/bingx.py,sha256=VYLkQm48ULkIGbSJRLd6Mr4mRW7LOUJmv32OcqfL2b8,157486
216
+ ccxt/async_support/bingx.py,sha256=58yJo56GXj3BSeHS2r8BVn5NN-GR5KeYyesTirjdQjA,168812
217
217
  ccxt/async_support/bit2c.py,sha256=RDRT1O-AnjlD62XFEGdaN-RFY3sk3wUWwF60q_wYkwc,37083
218
218
  ccxt/async_support/bitbank.py,sha256=V4gPkGl0HaSXo6IKWYbzPEuJDChaIClzSQfzKKBf8yI,41929
219
219
  ccxt/async_support/bitbay.py,sha256=jcaEXi2IhYTva8ezO_SfJhwxEZk7HST4J3NaxD16BQA,492
@@ -223,7 +223,7 @@ ccxt/async_support/bitfinex.py,sha256=YoIJEYhhMnvf6nTsScz4DKLI0oi98xfWnwgY8V-G0d
223
223
  ccxt/async_support/bitfinex2.py,sha256=MGs41q9FRqh3CLAqTHAQkyiaFezB4BgW2VgBUhDpk-U,157107
224
224
  ccxt/async_support/bitflyer.py,sha256=eiahvUWnJS85H2-T-QSrKL0tsbjwAcr6qBm42Ex9y30,40563
225
225
  ccxt/async_support/bitforex.py,sha256=FVuTzD6_PA2FvoGg6738C1SovO24514b316LMbCp3MM,35227
226
- ccxt/async_support/bitget.py,sha256=cAUGXe3qfEA75KRr2kgviodOIMNYmePf0QxuYrsyP74,398728
226
+ ccxt/async_support/bitget.py,sha256=_y9SsUa1zeoAovdOkS5YrlL__gfgI9ohxFcLhxX45bI,399265
227
227
  ccxt/async_support/bithumb.py,sha256=FgtgWvDa4KE3-zAF-yS2z8RjlZOGl539W3JVBc2Gjek,45198
228
228
  ccxt/async_support/bitmart.py,sha256=vexJDkm9cGOvAlSJpgd_M33hENvPZNBCZkVOMeW3pgU,197899
229
229
  ccxt/async_support/bitmex.py,sha256=h_qlr578hAdoy83_GwjtTYwmKoh153jQPQkRRYSjeCI,124640
@@ -241,15 +241,15 @@ ccxt/async_support/btcalpha.py,sha256=GAj2vmXfqhenDUH3HGp3yte2cqCjM6p4uHQLqL532p
241
241
  ccxt/async_support/btcbox.py,sha256=Z2o48tGnFzKD54IrkRLe8y4H7lKtWokMFjH_E8YPStI,23532
242
242
  ccxt/async_support/btcmarkets.py,sha256=eKz5wzgi-FibJGf2dnP7YmhSnzvyG3bh3za9_Nscbe4,50673
243
243
  ccxt/async_support/btcturk.py,sha256=cvRZl9cIZ9LooMUQRgpXZB5pMQtFXDM1ByVPxIC5KQs,35692
244
- ccxt/async_support/bybit.py,sha256=54BoGtg46Pv15S3zp7tQWD1YpfqEqV7AhkttmAF79Ag,360691
244
+ ccxt/async_support/bybit.py,sha256=nBN2t7DMtiFV8pyt21rMgWT5RO9CbjRHnA9lOyXL7ss,360843
245
245
  ccxt/async_support/cex.py,sha256=O8KSKMG-D7xDzl8q_AFWHitgVZqJMBTlbbMFEi2lRbM,69934
246
- ccxt/async_support/coinbase.py,sha256=zUbXa7xcgX46m-3sBWbDSXraWnXS5Qq32WihRbszUAM,156690
247
- ccxt/async_support/coinbasepro.py,sha256=Xr2FYaCdesVG8ogErl8uar5XTEK-mRA9IvHlObYF550,78740
246
+ ccxt/async_support/coinbase.py,sha256=hUb7mxIrDKKal-zBBth7FUigK9-kKMIxYKwmOi3nboo,156734
247
+ ccxt/async_support/coinbasepro.py,sha256=Zvx0RnfozkrPcn_OaQ9NcuNfbrLI0d7a3yof-hQg6bs,78784
248
248
  ccxt/async_support/coincheck.py,sha256=cky-Pho51IgiPRqZlTbYx16ppGJypx958vS9HvIqHps,34876
249
249
  ccxt/async_support/coinex.py,sha256=vbAX0z1QmEcR1cdqtU__k4zPHnUKRBHABCeHNa6K-Mw,228506
250
- ccxt/async_support/coinlist.py,sha256=iomQMUnxbGCMekC_51pm2f4tKT4RZpcyn9kwHzWNRF0,103275
250
+ ccxt/async_support/coinlist.py,sha256=9qd9uh5E4ynAJapUIGyJqJ2Vkzl69SLB5iacxTn5ozA,103401
251
251
  ccxt/async_support/coinmate.py,sha256=zGrbTj2V8F24qOYxNT23MyJmE0e_kxDqONE32qlqF0o,40224
252
- ccxt/async_support/coinmetro.py,sha256=Dtccw86tZ1OmUi6dk8YlwMCSALwGPrVejUju-vQTbiQ,80663
252
+ ccxt/async_support/coinmetro.py,sha256=Ns6GYpbmpfiNNpfdAppQzo30qxkOKYdJR9rx0bLnv7k,80687
253
253
  ccxt/async_support/coinone.py,sha256=pN7H4kZXijk2CyWPkA6dLpqeR6pVZr6F__rcI_UFdDg,46947
254
254
  ccxt/async_support/coinsph.py,sha256=aryXzkJ_SBnoKFyZuzGPswxstOZ7j3OuXftws-dH2SQ,88625
255
255
  ccxt/async_support/coinspot.py,sha256=KnlG2QLUr9zkhZPvQwRoaf0jJsOTPooIQyFk9INlP_I,23192
@@ -274,7 +274,7 @@ ccxt/async_support/idex.py,sha256=PLexeZJE25iq0PWgk8a_5momKLoG1jklF9TDVM0BZo0,68
274
274
  ccxt/async_support/independentreserve.py,sha256=FVASfA3ix3fCUcw9c9QAkvUjosruUZedweD3LpPw_Io,30200
275
275
  ccxt/async_support/indodax.py,sha256=ak_cF6hhP8rgYmTezn1mqSviOlzUU_31Iq2a1LLXRog,43044
276
276
  ccxt/async_support/kraken.py,sha256=XlaJXRKJwonKOcMPqgfKHy777KjzFOVI_lUHrsC_0t4,122162
277
- ccxt/async_support/krakenfutures.py,sha256=dv7CR0TowSBg5OmS9oGCB3BMyDBHAW7ccvdP5NmVY1k,103148
277
+ ccxt/async_support/krakenfutures.py,sha256=LvR1WR6t3EXiJm7oyO4-IQv4e04WaW-59EYbVXt2Isk,108383
278
278
  ccxt/async_support/kucoin.py,sha256=Js08RHQiQ5LJ_0vnrHM9KS6IvAIIADqFIv5Iuc4xPpw,200814
279
279
  ccxt/async_support/kucoinfutures.py,sha256=yHOWpRZd2cVcb4R7Z5ecnSLo3zhqdVej0Hk4rMhemUI,111037
280
280
  ccxt/async_support/kuna.py,sha256=JohZb15C5iDiqweePeY3GzWVMsSBrtFiV7w8L8dnUgo,96816
@@ -283,16 +283,16 @@ ccxt/async_support/lbank.py,sha256=rK8OdFxbDSDimSIkT2GOyLaKU7OFs2d2e5CPTWpXH58,1
283
283
  ccxt/async_support/luno.py,sha256=oasBPSu3Cjjj-B_dUAI1wdAZ-h0ooOHLn__8t-3dMSQ,44275
284
284
  ccxt/async_support/lykke.py,sha256=c0OyP8Yh7crXqRxX0ZPQTUJAAXoahHX_iB3t9Dmpftc,49597
285
285
  ccxt/async_support/mercado.py,sha256=qkfVItj-ZW-S_IiiTGvRFSniin29tYXO49FLjp9FGCk,35260
286
- ccxt/async_support/mexc.py,sha256=MBgyH4VtBazPg_iHanhgnPSbn8cIEPm3FesBxYlihbo,227361
286
+ ccxt/async_support/mexc.py,sha256=Ryjodxz9VukMjOHECrMB0d1J3l6nDVmslySbxVVYSUA,227360
287
287
  ccxt/async_support/ndax.py,sha256=V4ChRo0B46HDI3PMCJskHNJ0OoeDbhIoIvXJ6Qk6R1Q,107862
288
288
  ccxt/async_support/novadax.py,sha256=TrZtbxXGxCYVwK56bEKqbmLpW8OcuLHDeCj_3FCi-Ek,64437
289
289
  ccxt/async_support/oceanex.py,sha256=8Y8kVdQIoWMjBGsflfVnF9EQA-SrgxkKMMvNSER6lrU,37977
290
290
  ccxt/async_support/okcoin.py,sha256=-h1mPs9LAALPFae8gPEvqY53OsG_Yl28JdWPGpvP-K8,148775
291
- ccxt/async_support/okx.py,sha256=hLQnVioXWLYr-2UWVmZsVmDx8LLXJ7DbjC5cGC3K5AM,334947
291
+ ccxt/async_support/okx.py,sha256=S1bRlsyJfT9qqyFOG9eajWuc3LWo1S55VGJAm0qxdxQ,334535
292
292
  ccxt/async_support/onetrading.py,sha256=SWYnWF8lpqENY2hGUyNWwvT4Pu4oapz4Hh7uqSUUd8w,88340
293
293
  ccxt/async_support/p2b.py,sha256=LtZlT_xEZDpVOY-qwIwxUtS4yQldrgUTh_397p2jsZ4,54304
294
294
  ccxt/async_support/paymium.py,sha256=BDWin5fLU_J1Bmn4H0MgD54dKFqe2orF4SEe_wxZ-SM,24388
295
- ccxt/async_support/phemex.py,sha256=hB7e7OODWByiyU9kUlN-lNN0Iz_OTL9GvHjVQLXzutI,219085
295
+ ccxt/async_support/phemex.py,sha256=5QZOm-njLukvoCd0ANFFGzyI6xdzWEAh8GdyBV8WFOM,219125
296
296
  ccxt/async_support/poloniex.py,sha256=B9J90db1nqHknwGMt6cGRpofRF6dtuyjC65n17_rOxE,102354
297
297
  ccxt/async_support/poloniexfutures.py,sha256=9zKeljKOOW9xCtctQA16xhB_qlustXxj0If-xG-3lSo,77742
298
298
  ccxt/async_support/probit.py,sha256=VYXrIbC23NQV2zTGnJqCIOhwfVzIQiWKXntIV_VbmjI,76532
@@ -307,7 +307,7 @@ ccxt/async_support/yobit.py,sha256=MqUDLiaMLL8kTyViJeeJNMaJpbPJH2OXcxykjSvDGio,5
307
307
  ccxt/async_support/zaif.py,sha256=A4lhLoQNHt8EWeCH067sQrSiziNZ9nJU_-ZyVE59Xgo,28116
308
308
  ccxt/async_support/zonda.py,sha256=GqTR3gmRA9dcC2dCpSUVK-k19b_DiNGpIRfmmvfchiM,80763
309
309
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
310
- ccxt/async_support/base/exchange.py,sha256=sugpyBQ1ogKQJbwxvpV-xpRM0jSBJ6oehuOIdXfVESE,88776
310
+ ccxt/async_support/base/exchange.py,sha256=6mistgsiBKTzaLTm9eDaMgrc7XMG01DSHL4J4EW439k,88776
311
311
  ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
312
312
  ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
313
313
  ccxt/async_support/base/ws/aiohttp_client.py,sha256=Ed1765emEde2Hj8Ys6f5EjS54ZI1wQ0qIhd04eB7yhU,5751
@@ -321,10 +321,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=Pxrq22nCODckJ6G1OXkYEmUunIu
321
321
  ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
322
322
  ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
323
323
  ccxt/base/errors.py,sha256=JBn3zTrtru7tLgyEi6MzKAUwiZe0fltQLYoJcsdP-AA,4099
324
- ccxt/base/exchange.py,sha256=s_Hik8YBVclhTvsWshhiJzKE9rgw4tDTziSl0VtCdRA,239296
324
+ ccxt/base/exchange.py,sha256=cdVpoAs63lx8V1QnvZ-kdIrCx5Y2Kr4g1XuFddxcnZM,239391
325
325
  ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
326
326
  ccxt/base/types.py,sha256=IkX5BhJtK19kqTNKgq6LsLV0bYmS8YHDASPVOD3AC64,5886
327
- ccxt/pro/__init__.py,sha256=9jTEny9ApZFKdYIlZ3lVlfI0fY3ns5wG01euPF2psBw,6675
327
+ ccxt/pro/__init__.py,sha256=MFs4JV8B1B527MGGVYzluw8FVopO337bwJT6ki-oPC8,6675
328
328
  ccxt/pro/alpaca.py,sha256=wd8yRqrzCApryVuM4Q_6xZRekxI7wvPso5C_mQorsec,27164
329
329
  ccxt/pro/ascendex.py,sha256=JmnteciSLZXo3gkCvu8rMc7hKI1tgRsUqlADkOpHizM,34841
330
330
  ccxt/pro/bequant.py,sha256=q6i8k79WVw8JMzCB4moxXzbolx5RT242Oe-Y4ybE1Fs,1330
@@ -337,7 +337,7 @@ ccxt/pro/bitcoincom.py,sha256=__CLfFlQ4VyEwQP2Z5ZjHmkhGdz6AdYHf5LfuAtKk_k,1151
337
337
  ccxt/pro/bitfinex.py,sha256=VdvMikgWO7htYSAEKmGkDBYISWCJon1bnkv3JkV4nv0,24826
338
338
  ccxt/pro/bitfinex2.py,sha256=30_DKBwoeypLLO4uGKLG_yOhDeGa3RpOIEqPb888p0k,42606
339
339
  ccxt/pro/bitget.py,sha256=ZlQg6N4h36tYrtBSO8R1dPSYtR0OBSy0OSPHS8fHfn4,70975
340
- ccxt/pro/bitmart.py,sha256=WB9s8-La8NJl5KGM3FdmvAfREbv8teCNpgCWdux0fKU,62206
340
+ ccxt/pro/bitmart.py,sha256=I8FfB5x5f7oatuLRnVCeKugRu2Urt_mVdqt9AAmC6no,63299
341
341
  ccxt/pro/bitmex.py,sha256=0IvkPysRo_DbHgCKy6qqH2QlnUbxtPMPlGKvgHj_8z8,67912
342
342
  ccxt/pro/bitopro.py,sha256=QtM5bK7IY8Lh-p5Y8AJPPNF7YcKstzgegA_JgbZe-kc,18669
343
343
  ccxt/pro/bitpanda.py,sha256=ELrhfFKN9YJJdmm9wBf-vpk6WsXGWGf-SyJdqm-E_Lg,415
@@ -345,7 +345,7 @@ ccxt/pro/bitrue.py,sha256=gPN1lVaDZ4IBYGhaS-1WCkcNQ5__RMbtn2dC2sKZUI4,16448
345
345
  ccxt/pro/bitstamp.py,sha256=_769QjYHwotd_i0jSqrjzHXh8_ldpLGIjWXUnoUqJOo,20876
346
346
  ccxt/pro/bitvavo.py,sha256=crobobvZwtgAar_UMU-ACnpXW77nmttSKaPaFMiEkeI,56098
347
347
  ccxt/pro/blockchaincom.py,sha256=yx0h9nKLgPtilSqWaqx82gtUO-tyKr2W61UGha41LXs,30348
348
- ccxt/pro/bybit.py,sha256=FwlJ6eAc0CzsVKfMXfFICddtXKfClJkuQSNeROjlXws,73866
348
+ ccxt/pro/bybit.py,sha256=_GVcXb2ALt3odSKOSz7nkk7D-JrCvIs9VLr6e3-3-yo,73951
349
349
  ccxt/pro/cex.py,sha256=9PDCXF5ECr4x85cfCPXfQUaBBOVkvO9e90SILDhH6ys,57488
350
350
  ccxt/pro/coinbase.py,sha256=pNn9TlSh_Jz3VDfNhgmPynaPjan1wUEemUZ7P03iAYM,22573
351
351
  ccxt/pro/coinbasepro.py,sha256=GTrYwUuwhOFJ4cMLFEHUVqNPpaJgzZewLfpQND6A7ks,38945
@@ -400,8 +400,8 @@ ccxt/static_dependencies/ecdsa/util.py,sha256=M0NQZ4dDQFTd8afSkF-7YyP9KbsXzOn-VU
400
400
  ccxt/static_dependencies/keccak/__init__.py,sha256=mfcrTChnMXsr-JmfN2VbzscTRt9XA2RRGchfHRMYncU,45
401
401
  ccxt/static_dependencies/keccak/keccak.py,sha256=RblmQEQkGpMhug0EU3hyE0kBjs1NDfGQqbwrBK7ZycY,6934
402
402
  ccxt/test/__init__.py,sha256=GKPbEcj0Rrz5HG-GUm-iY1IHhDYmlvcBXZAGk6-m2CI,141
403
- ccxt/test/test_async.py,sha256=XJ8U00JKcS3QWrpXAC3tM8HMk4rDtghOEpw9OpFIo9s,71020
404
- ccxt/test/test_sync.py,sha256=WKDBlNrWPjr5Rx6ewGjVNt3zRO-G6KuzMIhXglU9OEw,70055
403
+ ccxt/test/test_async.py,sha256=sbd7yKMUjlOGbOw-Wh5LRDX3tQKzpeeWD9ouGQmfIFA,71051
404
+ ccxt/test/test_sync.py,sha256=9X9NZzJcJsh2dFO3SbPIwmwnUNPl3DzsZdcOjOvxq6Q,70086
405
405
  ccxt/test/base/__init__.py,sha256=ds8P0F0yUif2RRYwKNIks8Tef3j6Kg_bCAOxZJqgxtA,1816
406
406
  ccxt/test/base/test_account.py,sha256=lxwZXsY8qZgomBoEiomUmWcseSp--orJx-xmm3E1vYs,978
407
407
  ccxt/test/base/test_balance.py,sha256=j8pa_6EJoWadWk-JcL--gI6kUrb6wiwffchOqjBY2_A,2614
@@ -435,7 +435,7 @@ ccxt/test/base/test_ticker.py,sha256=AMlFK-U3W64B0QQ_zzWZC_8OflDh0PFJrs4l3iv9lFk
435
435
  ccxt/test/base/test_trade.py,sha256=lhT9nxiSr0AEvKbdGXL9qJOkz1EiKEmA0TDfdCbubg8,2295
436
436
  ccxt/test/base/test_trading_fee.py,sha256=2aDCNJtqBkTC_AieO0l1HYGq5hz5qkWlkWb9Nv_fcwk,1066
437
437
  ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
438
- ccxt-4.2.39.dist-info/METADATA,sha256=-3B6VclWmeVz3i0YmIQ_LOA9Tynl_SP3xmr4ZB52tjk,107554
439
- ccxt-4.2.39.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
440
- ccxt-4.2.39.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
441
- ccxt-4.2.39.dist-info/RECORD,,
438
+ ccxt-4.2.40.dist-info/METADATA,sha256=wDrrvm2Il4UO3FzonqsrFiW8Nt5M_sns1wuRocEK30c,107554
439
+ ccxt-4.2.40.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
440
+ ccxt-4.2.40.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
441
+ ccxt-4.2.40.dist-info/RECORD,,
File without changes