ccxt 4.4.7__py2.py3-none-any.whl → 4.4.8__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/okx.py CHANGED
@@ -290,6 +290,7 @@ class okx(Exchange, ImplicitAPI):
290
290
  'copytrading/public-preference-currency': 4,
291
291
  'copytrading/public-current-subpositions': 4,
292
292
  'copytrading/public-subpositions-history': 4,
293
+ 'support/announcements-types': 20,
293
294
  },
294
295
  },
295
296
  'private': {
@@ -435,6 +436,7 @@ class okx(Exchange, ImplicitAPI):
435
436
  # affiliate
436
437
  'affiliate/invitee/detail': 1,
437
438
  'users/partner/if-rebate': 1,
439
+ 'support/announcements': 4,
438
440
  },
439
441
  'post': {
440
442
  # rfq
@@ -814,6 +816,8 @@ class okx(Exchange, ImplicitAPI):
814
816
  # SPOT/MARGIN error codes 54000-54999
815
817
  '54000': ExchangeError, # Margin transactions unavailable
816
818
  '54001': ExchangeError, # Only Multi-currency margin account can be set to borrow coins automatically
819
+ '54008': InvalidOrder, # This operation is disabled by the 'mass cancel order' endpoint. Please enable it using self endpoint.
820
+ '54009': InvalidOrder, # The range of {param0} should be [{param1}, {param2}].
817
821
  '54011': InvalidOrder, # 200 Pre-market trading contracts are only allowed to reduce the number of positions within 1 hour before delivery. Please modify or cancel the order.
818
822
  # Trading bot Error Code from 55100 to 55999
819
823
  '55100': InvalidOrder, # Take profit % should be within the range of {parameter1}-{parameter2}
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.7'
7
+ __version__ = '4.4.8'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
ccxt/pro/bitmart.py CHANGED
@@ -31,6 +31,7 @@ class bitmart(ccxt.async_support.bitmart):
31
31
  'watchBalance': True,
32
32
  'watchTicker': True,
33
33
  'watchTickers': True,
34
+ 'watchBidsAsks': True,
34
35
  'watchOrderBook': True,
35
36
  'watchOrderBookForSymbols': True,
36
37
  'watchOrders': True,
@@ -314,6 +315,7 @@ class bitmart(ccxt.async_support.bitmart):
314
315
 
315
316
  async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
316
317
  """
318
+ :see: https://developer-pro.bitmart.com/en/spot/#public-ticker-channel
317
319
  :see: https://developer-pro.bitmart.com/en/futuresv2/#public-ticker-channel
318
320
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
319
321
  :param str[] symbols: unified symbol of the market to fetch the ticker for
@@ -331,6 +333,75 @@ class bitmart(ccxt.async_support.bitmart):
331
333
  return tickers
332
334
  return self.filter_by_array(self.tickers, 'symbol', symbols)
333
335
 
336
+ async def watch_bids_asks(self, symbols: Strings = None, params={}) -> Tickers:
337
+ """
338
+ :see: https://developer-pro.bitmart.com/en/spot/#public-ticker-channel
339
+ :see: https://developer-pro.bitmart.com/en/futuresv2/#public-ticker-channel
340
+ watches best bid & ask for symbols
341
+ :param str[] symbols: unified symbol of the market to fetch the ticker for
342
+ :param dict [params]: extra parameters specific to the exchange API endpoint
343
+ :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
344
+ """
345
+ await self.load_markets()
346
+ symbols = self.market_symbols(symbols, None, False)
347
+ firstMarket = self.get_market_from_symbols(symbols)
348
+ marketType = None
349
+ marketType, params = self.handle_market_type_and_params('watchBidsAsks', firstMarket, params)
350
+ url = self.implode_hostname(self.urls['api']['ws'][marketType]['public'])
351
+ channelType = 'spot' if (marketType == 'spot') else 'futures'
352
+ actionType = 'op' if (marketType == 'spot') else 'action'
353
+ rawSubscriptions = []
354
+ messageHashes = []
355
+ for i in range(0, len(symbols)):
356
+ market = self.market(symbols[i])
357
+ rawSubscriptions.append(channelType + '/ticker:' + market['id'])
358
+ messageHashes.append('bidask:' + symbols[i])
359
+ if marketType != 'spot':
360
+ rawSubscriptions = [channelType + '/ticker']
361
+ request: dict = {
362
+ 'args': rawSubscriptions,
363
+ }
364
+ request[actionType] = 'subscribe'
365
+ newTickers = await self.watch_multiple(url, messageHashes, request, rawSubscriptions)
366
+ if self.newUpdates:
367
+ tickers: dict = {}
368
+ tickers[newTickers['symbol']] = newTickers
369
+ return tickers
370
+ return self.filter_by_array(self.bidsasks, 'symbol', symbols)
371
+
372
+ def handle_bid_ask(self, client: Client, message):
373
+ table = self.safe_string(message, 'table')
374
+ isSpot = (table is not None)
375
+ rawTickers = []
376
+ if isSpot:
377
+ rawTickers = self.safe_list(message, 'data', [])
378
+ else:
379
+ rawTickers = [self.safe_value(message, 'data', {})]
380
+ if not len(rawTickers):
381
+ return
382
+ for i in range(0, len(rawTickers)):
383
+ ticker = self.parse_ws_bid_ask(rawTickers[i])
384
+ symbol = ticker['symbol']
385
+ self.bidsasks[symbol] = ticker
386
+ messageHash = 'bidask:' + symbol
387
+ client.resolve(ticker, messageHash)
388
+
389
+ def parse_ws_bid_ask(self, ticker, market=None):
390
+ marketId = self.safe_string(ticker, 'symbol')
391
+ market = self.safe_market(marketId, market)
392
+ symbol = self.safe_string(market, 'symbol')
393
+ timestamp = self.safe_integer(ticker, 'ms_t')
394
+ return self.safe_ticker({
395
+ 'symbol': symbol,
396
+ 'timestamp': timestamp,
397
+ 'datetime': self.iso8601(timestamp),
398
+ 'ask': self.safe_string_2(ticker, 'ask_px', 'ask_price'),
399
+ 'askVolume': self.safe_string_2(ticker, 'ask_sz', 'ask_vol'),
400
+ 'bid': self.safe_string_2(ticker, 'bid_px', 'bid_price'),
401
+ 'bidVolume': self.safe_string_2(ticker, 'bid_sz', 'bid_vol'),
402
+ 'info': ticker,
403
+ }, market)
404
+
334
405
  async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
335
406
  """
336
407
  watches information on multiple orders made by the user
@@ -878,6 +949,7 @@ class bitmart(ccxt.async_support.bitmart):
878
949
  # }
879
950
  # }
880
951
  #
952
+ self.handle_bid_ask(client, message)
881
953
  table = self.safe_string(message, 'table')
882
954
  isSpot = (table is not None)
883
955
  rawTickers = []
ccxt/pro/bitvavo.py CHANGED
@@ -6,7 +6,7 @@
6
6
  import ccxt.async_support
7
7
  from ccxt.async_support.base.ws.cache import ArrayCache, ArrayCacheBySymbolById, ArrayCacheByTimestamp
8
8
  import hashlib
9
- from ccxt.base.types import Balances, Int, Num, Order, OrderBook, OrderSide, OrderType, Str, Ticker, Trade, TradingFees
9
+ from ccxt.base.types import Balances, Int, Num, Order, OrderBook, OrderSide, OrderType, Str, Strings, Ticker, Tickers, Trade, TradingFees
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
@@ -25,6 +25,8 @@ class bitvavo(ccxt.async_support.bitvavo):
25
25
  'watchOrderBook': True,
26
26
  'watchTrades': True,
27
27
  'watchTicker': True,
28
+ 'watchTickers': True,
29
+ 'watchBidsAsks': True,
28
30
  'watchOHLCV': True,
29
31
  'watchOrders': True,
30
32
  'watchMyTrades': True,
@@ -85,15 +87,51 @@ class bitvavo(ccxt.async_support.bitvavo):
85
87
  message = self.extend(request, params)
86
88
  return await self.watch(url, messageHash, message, messageHash)
87
89
 
90
+ async def watch_public_multiple(self, methodName, channelName: str, symbols, params={}):
91
+ await self.load_markets()
92
+ symbols = self.market_symbols(symbols)
93
+ messageHashes = [methodName]
94
+ args = []
95
+ for i in range(0, len(symbols)):
96
+ market = self.market(symbols[i])
97
+ args.append(market['id'])
98
+ url = self.urls['api']['ws']
99
+ request: dict = {
100
+ 'action': 'subscribe',
101
+ 'channels': [
102
+ {
103
+ 'name': channelName,
104
+ 'markets': args,
105
+ },
106
+ ],
107
+ }
108
+ message = self.extend(request, params)
109
+ return await self.watch_multiple(url, messageHashes, message, messageHashes)
110
+
88
111
  async def watch_ticker(self, symbol: str, params={}) -> Ticker:
89
112
  """
90
113
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
114
+ :see: https://docs.bitvavo.com/#tag/Market-data-subscription-WebSocket/paths/~1subscribeTicker24h/post
91
115
  :param str symbol: unified symbol of the market to fetch the ticker for
92
116
  :param dict [params]: extra parameters specific to the exchange API endpoint
93
117
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
94
118
  """
95
119
  return await self.watch_public('ticker24h', symbol, params)
96
120
 
121
+ async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
122
+ """
123
+ watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for all markets of a specific list
124
+ :see: https://docs.bitvavo.com/#tag/Market-data-subscription-WebSocket/paths/~1subscribeTicker24h/post
125
+ :param str[] [symbols]: unified symbol of the market to fetch the ticker for
126
+ :param dict [params]: extra parameters specific to the exchange API endpoint
127
+ :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
128
+ """
129
+ await self.load_markets()
130
+ symbols = self.market_symbols(symbols, None, False)
131
+ channel = 'ticker24h'
132
+ tickers = await self.watch_public_multiple(channel, channel, symbols, params)
133
+ return self.filter_by_array(tickers, 'symbol', symbols)
134
+
97
135
  def handle_ticker(self, client: Client, message):
98
136
  #
99
137
  # {
@@ -116,8 +154,10 @@ class bitvavo(ccxt.async_support.bitvavo):
116
154
  # ]
117
155
  # }
118
156
  #
157
+ self.handle_bid_ask(client, message)
119
158
  event = self.safe_string(message, 'event')
120
159
  tickers = self.safe_value(message, 'data', [])
160
+ result = []
121
161
  for i in range(0, len(tickers)):
122
162
  data = tickers[i]
123
163
  marketId = self.safe_string(data, 'market')
@@ -126,8 +166,53 @@ class bitvavo(ccxt.async_support.bitvavo):
126
166
  ticker = self.parse_ticker(data, market)
127
167
  symbol = ticker['symbol']
128
168
  self.tickers[symbol] = ticker
169
+ result.append(ticker)
129
170
  client.resolve(ticker, messageHash)
130
- return message
171
+ client.resolve(result, event)
172
+
173
+ async def watch_bids_asks(self, symbols: Strings = None, params={}) -> Tickers:
174
+ """
175
+ watches best bid & ask for symbols
176
+ :see: https://docs.bitvavo.com/#tag/Market-data-subscription-WebSocket/paths/~1subscribeTicker24h/post
177
+ :param str[] symbols: unified symbol of the market to fetch the ticker for
178
+ :param dict [params]: extra parameters specific to the exchange API endpoint
179
+ :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
180
+ """
181
+ await self.load_markets()
182
+ symbols = self.market_symbols(symbols, None, False)
183
+ channel = 'ticker24h'
184
+ tickers = await self.watch_public_multiple('bidask', channel, symbols, params)
185
+ return self.filter_by_array(tickers, 'symbol', symbols)
186
+
187
+ def handle_bid_ask(self, client: Client, message):
188
+ event = 'bidask'
189
+ tickers = self.safe_value(message, 'data', [])
190
+ result = []
191
+ for i in range(0, len(tickers)):
192
+ data = tickers[i]
193
+ ticker = self.parse_ws_bid_ask(data)
194
+ symbol = ticker['symbol']
195
+ self.bidsasks[symbol] = ticker
196
+ result.append(ticker)
197
+ messageHash = event + ':' + symbol
198
+ client.resolve(ticker, messageHash)
199
+ client.resolve(result, event)
200
+
201
+ def parse_ws_bid_ask(self, ticker, market=None):
202
+ marketId = self.safe_string(ticker, 'market')
203
+ market = self.safe_market(marketId, None, '-')
204
+ symbol = self.safe_string(market, 'symbol')
205
+ timestamp = self.safe_integer(ticker, 'timestamp')
206
+ return self.safe_ticker({
207
+ 'symbol': symbol,
208
+ 'timestamp': timestamp,
209
+ 'datetime': self.iso8601(timestamp),
210
+ 'ask': self.safe_number(ticker, 'ask'),
211
+ 'askVolume': self.safe_number(ticker, 'askSize'),
212
+ 'bid': self.safe_number(ticker, 'bid'),
213
+ 'bidVolume': self.safe_number(ticker, 'bidSize'),
214
+ 'info': ticker,
215
+ }, market)
131
216
 
132
217
  async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
133
218
  """
ccxt/pro/blofin.py CHANGED
@@ -26,6 +26,7 @@ class blofin(ccxt.async_support.blofin):
26
26
  'watchOrderBookForSymbols': True,
27
27
  'watchTicker': True,
28
28
  'watchTickers': True,
29
+ 'watchBidsAsks': True,
29
30
  'watchOHLCV': True,
30
31
  'watchOHLCVForSymbols': True,
31
32
  'watchOrders': True,
@@ -256,6 +257,7 @@ class blofin(ccxt.async_support.blofin):
256
257
  # ],
257
258
  # }
258
259
  #
260
+ self.handle_bid_ask(client, message)
259
261
  arg = self.safe_dict(message, 'arg')
260
262
  channelName = self.safe_string(arg, 'channel')
261
263
  data = self.safe_list(message, 'data')
@@ -269,6 +271,63 @@ class blofin(ccxt.async_support.blofin):
269
271
  def parse_ws_ticker(self, ticker, market: Market = None) -> Ticker:
270
272
  return self.parse_ticker(ticker, market)
271
273
 
274
+ async def watch_bids_asks(self, symbols: Strings = None, params={}) -> Tickers:
275
+ """
276
+ watches best bid & ask for symbols
277
+ :see: https://docs.blofin.com/index.html#ws-tickers-channel
278
+ :param str[] symbols: unified symbol of the market to fetch the ticker for
279
+ :param dict [params]: extra parameters specific to the exchange API endpoint
280
+ :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
281
+ """
282
+ await self.load_markets()
283
+ symbols = self.market_symbols(symbols, None, False)
284
+ firstMarket = self.market(symbols[0])
285
+ channel = 'tickers'
286
+ marketType = None
287
+ marketType, params = self.handle_market_type_and_params('watchBidsAsks', firstMarket, params)
288
+ url = self.implode_hostname(self.urls['api']['ws'][marketType]['public'])
289
+ messageHashes = []
290
+ args = []
291
+ for i in range(0, len(symbols)):
292
+ market = self.market(symbols[i])
293
+ messageHashes.append('bidask:' + market['symbol'])
294
+ args.append({
295
+ 'channel': channel,
296
+ 'instId': market['id'],
297
+ })
298
+ request = self.get_subscription_request(args)
299
+ ticker = await self.watch_multiple(url, messageHashes, self.deep_extend(request, params), messageHashes)
300
+ if self.newUpdates:
301
+ tickers = {}
302
+ tickers[ticker['symbol']] = ticker
303
+ return tickers
304
+ return self.filter_by_array(self.bidsasks, 'symbol', symbols)
305
+
306
+ def handle_bid_ask(self, client: Client, message):
307
+ data = self.safe_list(message, 'data')
308
+ for i in range(0, len(data)):
309
+ ticker = self.parse_ws_bid_ask(data[i])
310
+ symbol = ticker['symbol']
311
+ messageHash = 'bidask:' + symbol
312
+ self.bidsasks[symbol] = ticker
313
+ client.resolve(ticker, messageHash)
314
+
315
+ def parse_ws_bid_ask(self, ticker, market=None):
316
+ marketId = self.safe_string(ticker, 'instId')
317
+ market = self.safe_market(marketId, market, '-')
318
+ symbol = self.safe_string(market, 'symbol')
319
+ timestamp = self.safe_integer(ticker, 'ts')
320
+ return self.safe_ticker({
321
+ 'symbol': symbol,
322
+ 'timestamp': timestamp,
323
+ 'datetime': self.iso8601(timestamp),
324
+ 'ask': self.safe_string(ticker, 'askPrice'),
325
+ 'askVolume': self.safe_string(ticker, 'askSize'),
326
+ 'bid': self.safe_string(ticker, 'bidPrice'),
327
+ 'bidVolume': self.safe_string(ticker, 'bidSize'),
328
+ 'info': ticker,
329
+ }, market)
330
+
272
331
  async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
273
332
  """
274
333
  watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.4.7
3
+ Version: 4.4.8
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
@@ -272,13 +272,13 @@ console.log(version, Object.keys(exchanges));
272
272
 
273
273
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
274
274
 
275
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.7/dist/ccxt.browser.min.js
276
- * unpkg: https://unpkg.com/ccxt@4.4.7/dist/ccxt.browser.min.js
275
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.8/dist/ccxt.browser.min.js
276
+ * unpkg: https://unpkg.com/ccxt@4.4.8/dist/ccxt.browser.min.js
277
277
 
278
278
  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.
279
279
 
280
280
  ```HTML
281
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.7/dist/ccxt.browser.min.js"></script>
281
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.8/dist/ccxt.browser.min.js"></script>
282
282
  ```
283
283
 
284
284
  Creates a global `ccxt` object:
@@ -1,10 +1,10 @@
1
- ccxt/__init__.py,sha256=qL0UXziYpeqksmBG31F-N7zWMtdWGgYOUTw2u2fpF28,16485
1
+ ccxt/__init__.py,sha256=KPgV_rJWYSYgc-G8yB_hnjYytvf11A5LPwTD3k3BZVU,16485
2
2
  ccxt/ace.py,sha256=3KFlbRm6N9hXsKUsgZbQCFPZT5WGLm4HOjR19Q3uPts,42419
3
3
  ccxt/alpaca.py,sha256=nVQJ8vG4JrjEvMlu_nPoyR2lBq41j9Z2smPq95nDhng,47504
4
4
  ccxt/ascendex.py,sha256=qYzddORwUgXBOuvuRi3AtaH2srPYr21MOT2THdrXyLE,151540
5
5
  ccxt/bequant.py,sha256=RBiAmaTbL35DgiV3Hl6uchLUd78V0z1T9riTlNsrpdc,1174
6
6
  ccxt/bigone.py,sha256=RiEDQutD2BtvKfwVvAo2T9_DPqr0oa6ZJFDXph_g1UI,93122
7
- ccxt/binance.py,sha256=yYprugM8aiWmmrlX4CFA0XnQxBhqAfsczNLQpVv6sBA,645870
7
+ ccxt/binance.py,sha256=5AC8KXffPoNlknZe8yAXBg9sXYldTGfl_OsiFO-ZleU,647748
8
8
  ccxt/binancecoinm.py,sha256=arFnEh8mErSyi23eVPWE4iwoT7PWQyxGGVJCKCy6UJY,1702
9
9
  ccxt/binanceus.py,sha256=HRsk0fIoi8AAFdzRCUMkkXUGLqBrf0guUOfUxupHFeY,9202
10
10
  ccxt/binanceusdm.py,sha256=bAPcJj5HLxoCdPolriM8sJpoTBwbV78vBTbKRmWhNP4,2632
@@ -35,7 +35,7 @@ ccxt/btcalpha.py,sha256=plU5SSsJn0ZMLW7I8sXb_L0Woc3-kamGMSlqPGujUzE,36751
35
35
  ccxt/btcbox.py,sha256=lvY7cgoe4tglaQiTJZ4vILmzvoEjAWxgswRuB2iYzmE,27780
36
36
  ccxt/btcmarkets.py,sha256=WDDbtbUQ9I0odVZp8nJdIjc4-zv4li49EDSt8EqQbRU,52733
37
37
  ccxt/btcturk.py,sha256=jSA4UnD1GiJu24gXNkfb94f-zXifP5By_Ptery_cMnY,37024
38
- ccxt/bybit.py,sha256=JsDHnb--Jx6Kzjik53oWxOkBsqeFww5e9Fpkm06h3Ak,424143
38
+ ccxt/bybit.py,sha256=fF9k2h9-6NcJgU6gSm_dBKpfPC9Jn3LrF9Fgt7uTiJg,440635
39
39
  ccxt/cex.py,sha256=WkzjeUi22kVFNU_f2PB7SwGiddOulKS6DDzmxdVDkXs,70120
40
40
  ccxt/coinbase.py,sha256=pHPkUkGRC9UzpGAl3-QEFUEHT2tts-NoSvbc7s3EMP8,218667
41
41
  ccxt/coinbaseadvanced.py,sha256=d5g6nRx-NCcCwZDdtp8FsI2D-pRjSvnAP9ISSKY_nCQ,538
@@ -63,7 +63,7 @@ ccxt/hashkey.py,sha256=vXsIxy_ba5qG1IGlyP9DJf2UanyrHlksgpklHJlN0wQ,191920
63
63
  ccxt/hitbtc.py,sha256=5peKNygeAdvaH4GZ7mQebFQKcjN2N7S9GL7HhMLYd5g,153469
64
64
  ccxt/hitbtc3.py,sha256=qRAr4Zvaju9IQWRZUohdoN7xRnzIMPq8AyYb3gPv-Is,455
65
65
  ccxt/hollaex.py,sha256=2KIbenZ3vcBDN_rs2CxG5_foKLaYxJd73vVV7M8n_8E,76140
66
- ccxt/htx.py,sha256=IjwiV1DRZA3Gqq5cfkbNzAhyu-pt2-cgre3afX4hIOQ,427929
66
+ ccxt/htx.py,sha256=4MRcu_ovfN495T7N_Wt1fbXQwQdeohm3k2jBDRi8J-k,429301
67
67
  ccxt/huobi.py,sha256=4vaG7IRN7fyjaJ_ac6S-njlHOfSEN5de7aq0noznxYw,438
68
68
  ccxt/huobijp.py,sha256=m9rYCCApGDtpbiqCK6Gw4GDd5EskEmho4xSemGbY1kY,89852
69
69
  ccxt/hyperliquid.py,sha256=3rj8I7SLZYNwjvBlVaIGy1_lcmkaeTPZf22mNoFmxFw,122833
@@ -85,7 +85,7 @@ ccxt/ndax.py,sha256=m9MhE8i8JmaSf7Lc-I_CcvUpQ5VNTRcfYZLrFEwk3UI,109097
85
85
  ccxt/novadax.py,sha256=_xFkuZ72vHhpJb1N9h_MQHRD05GDWlqUeLQQcOp43BM,64436
86
86
  ccxt/oceanex.py,sha256=DrsNIW-eXvaSHCB2l1valmiU9xMztxm1VNBJodMkWIY,38021
87
87
  ccxt/okcoin.py,sha256=nKWsJTRprIODYHUTIoXRz6eANM2zdRPF7BHY86ExEyQ,151126
88
- ccxt/okx.py,sha256=urOG4bj8v3LXzNx0npChkhrkPu8lAWeHyi6AkYptB6g,379285
88
+ ccxt/okx.py,sha256=57t6dcNZkAOaMLkEQrzjDmvtlxuA9Ndup2aDPadw2Fc,379644
89
89
  ccxt/onetrading.py,sha256=evWWr4z7-HglV2ma2z-R34_JYJqlr6LQT0rV_OyWKGs,88375
90
90
  ccxt/oxfun.py,sha256=2d8Tr3c5SC2okb7mEWi3Y1lq9UC-enln54ydtDClCnY,124657
91
91
  ccxt/p2b.py,sha256=iPzHv663K8F1F0uTWEYpfQBcaqowY8MQ5tZt2ZNpoQE,54290
@@ -115,10 +115,10 @@ ccxt/abstract/alpaca.py,sha256=vgzqnRTvEnAbLYgfDzGpmVUZxRLWC8BWA6nQ16m-xXY,10382
115
115
  ccxt/abstract/ascendex.py,sha256=5A8Zgq77jsdHlEzlTW_2nDybUUVfNVVOu6BgY3TWqRM,11394
116
116
  ccxt/abstract/bequant.py,sha256=OTBtNu3DQeAqAC_Lbi0NePUs-ZQQllcLrVDI2G04nwQ,15601
117
117
  ccxt/abstract/bigone.py,sha256=bQdIXCVkKgnZ7ZjpQ1widGDlXNe0PtP_12EQKoEN9z0,4895
118
- ccxt/abstract/binance.py,sha256=AGiq9_FXfAmnmU0iRLPJLGlTmC4KIFCe0pql03WnOMo,93737
119
- ccxt/abstract/binancecoinm.py,sha256=AGiq9_FXfAmnmU0iRLPJLGlTmC4KIFCe0pql03WnOMo,93737
120
- ccxt/abstract/binanceus.py,sha256=IqPGWt4VWsMOKvh-c-gFeNfF-1Q53Dm-lqXZ1D2-PQQ,100399
121
- ccxt/abstract/binanceusdm.py,sha256=AGiq9_FXfAmnmU0iRLPJLGlTmC4KIFCe0pql03WnOMo,93737
118
+ ccxt/abstract/binance.py,sha256=bBVbWDLVNHrWooslouXQQOF5Tdru2jYHvuQdFSvjkgk,93855
119
+ ccxt/abstract/binancecoinm.py,sha256=bBVbWDLVNHrWooslouXQQOF5Tdru2jYHvuQdFSvjkgk,93855
120
+ ccxt/abstract/binanceus.py,sha256=zs74hB3U8Fl4uYiIlXXuxRc5-QWdEhlAh2iX1Fx-L8A,100517
121
+ ccxt/abstract/binanceusdm.py,sha256=bBVbWDLVNHrWooslouXQQOF5Tdru2jYHvuQdFSvjkgk,93855
122
122
  ccxt/abstract/bingx.py,sha256=Rb93j2sCYAi0egAE4TAAOG7XuC5XdHQaGQZC9V-meqQ,20662
123
123
  ccxt/abstract/bit2c.py,sha256=np6i756kSB5dO3Nj6POLKxkWkpYcsGg-4LS8BwPrizI,2830
124
124
  ccxt/abstract/bitbank.py,sha256=hrHsD7Uvtyy2o2lzCHau3-eNq16pnZ3-YDQ6Tq_sxYU,2735
@@ -145,7 +145,7 @@ ccxt/abstract/btcalpha.py,sha256=sbF4SAkTJq01QPQw4D2GMkKrPhKfFIsG-PNtMAC9WwU,138
145
145
  ccxt/abstract/btcbox.py,sha256=pifkHEayyfVN4lhO2s8oKg_wjQChwWo0g5-vw4rcm1s,931
146
146
  ccxt/abstract/btcmarkets.py,sha256=dQ2yTZ_8T2TEeAYIuKE0ATImbOLDLGSK7HbbBd8XVJQ,3690
147
147
  ccxt/abstract/btcturk.py,sha256=duM-QrB9MvGpopOtxkfbeYlY49bgvXQLiosRVmnQYFw,1777
148
- ccxt/abstract/bybit.py,sha256=d2Fx_iBoe7XXsCK8mxQubRqYSz_qaVneIfD31CqAoDA,49071
148
+ ccxt/abstract/bybit.py,sha256=LF6CubceoBU3HHAb17zz8uDIEDmJ9T_7bDrySao8txk,49941
149
149
  ccxt/abstract/cex.py,sha256=Q0NJeDuJ4Kn_mtokYqBenhXWvLIiMSVTqbgbfcLGgv4,3311
150
150
  ccxt/abstract/coinbase.py,sha256=GFXDh_Bf65Gsx_DmgOrRG2jpM3IdITE3Agqz_LZTJfo,15507
151
151
  ccxt/abstract/coinbaseadvanced.py,sha256=GFXDh_Bf65Gsx_DmgOrRG2jpM3IdITE3Agqz_LZTJfo,15507
@@ -194,7 +194,7 @@ ccxt/abstract/ndax.py,sha256=M98Ys406KT6T19Y98dXriD6YjzfglHHbnfQw-PDYWtM,11878
194
194
  ccxt/abstract/novadax.py,sha256=IvQFP_v2Q-Sx0tK2bXx4oY81rtNwC7gkc75p_E2jhKw,3093
195
195
  ccxt/abstract/oceanex.py,sha256=a0xAelMYDY_J3QwwLyIX2tGQcv4z2gmX_yJyC6FqoFg,1721
196
196
  ccxt/abstract/okcoin.py,sha256=3NmYh-68W_4AXmkqjkf9dRaJcPgNYQG5mKZssJKT4gs,9414
197
- ccxt/abstract/okx.py,sha256=hbwXaCaBwRmEeKBE3e2pZfymKCNqaZqtzHFWucp-ybU,48759
197
+ ccxt/abstract/okx.py,sha256=-sm_TfCw_iND9vt_xX-iPRoV7rdvEhhAH5lhduioRsg,49044
198
198
  ccxt/abstract/onetrading.py,sha256=TtJq4d44lrutV8wcK0lX4v0EfQ72ly6fxR-zB7-FSuI,3859
199
199
  ccxt/abstract/oxfun.py,sha256=bv4FJPe1H5ouMT_gRHVQtvV0MrMZhc3US-DMwnDM4Js,3457
200
200
  ccxt/abstract/p2b.py,sha256=XwaH1hLIi2T6RHltUwFj28Y5fbo6dc0jbjI01sVeOJw,2054
@@ -218,13 +218,13 @@ ccxt/abstract/xt.py,sha256=JkWvsic3L2O968BCr9H5Wd5NIbRE9aTT2A-9WbAtl0c,27146
218
218
  ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
219
219
  ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
220
220
  ccxt/abstract/zonda.py,sha256=X-hCW0SdX3YKZWixDyW-O2211M58Rno8kKJ6quY7rw4,7183
221
- ccxt/async_support/__init__.py,sha256=aQ16Wl-DPOYW47O1VxKbBo7D1BJIVpJJvCWbE6HSwuY,16288
221
+ ccxt/async_support/__init__.py,sha256=mROqhao4x1GcxsNE8IOXNboo8oWm20V8xfuK9q_aYGQ,16288
222
222
  ccxt/async_support/ace.py,sha256=ucCkKaWRkILAIK9g4iEi1Q_-zmn0V89-rX8Al4WdK8s,42643
223
223
  ccxt/async_support/alpaca.py,sha256=HxonsP_MzbE7Z9r6hZ1rgmf_jPcP4H7H3z1YQgCv4qc,47716
224
224
  ccxt/async_support/ascendex.py,sha256=Yj4_0UHGd-cYY8s3vqu_zEwa6BLmqPYy6ztKapkuEaw,152353
225
225
  ccxt/async_support/bequant.py,sha256=1hTwHovo1bW1XTIc8ZKjvJ-Xg6LfmpGdzT7TepykaVM,1188
226
226
  ccxt/async_support/bigone.py,sha256=A7AjX0iWl2twYRwOc-2tKUbnI4KNmO2QVetMaAJujpg,93576
227
- ccxt/async_support/binance.py,sha256=LgUuo52uvJau_NT0-JGuqAi7TiAnR27OTMfJbDLngME,648621
227
+ ccxt/async_support/binance.py,sha256=SuqidDZ7Fc9CESx2Qg9MTO7d0H7ycbvzGeuc7ltmZCU,650505
228
228
  ccxt/async_support/binancecoinm.py,sha256=yeE73xG5UXD_X3VPul6DMGnV_mgJfWYskpas1BUDdCU,1740
229
229
  ccxt/async_support/binanceus.py,sha256=ZkGgQGB0bWYZTz7PqBCgw22yyOZbvd7GuJAJzzgDTCA,9216
230
230
  ccxt/async_support/binanceusdm.py,sha256=8ugRkx7vyYmn67wdkEEf2f-DFMGAoC4t09usKlPVNyw,2670
@@ -255,7 +255,7 @@ ccxt/async_support/btcalpha.py,sha256=8OefA3GsJ27eAL44yQQcRNOruHXAwTemjTPkpLKwjE
255
255
  ccxt/async_support/btcbox.py,sha256=rBXxuvdQaku5QYseQ4XSvMrCkohDefYmf-rGeS9W0IU,28004
256
256
  ccxt/async_support/btcmarkets.py,sha256=fTf_MDIM7NMwpbv6X5lYPLNg8tFKcviNiUB7N3yO6FI,53083
257
257
  ccxt/async_support/btcturk.py,sha256=Uq9rXMoDkXIy0nw1rzmw2e8eeRepcNtXKNYuw-02tkM,37242
258
- ccxt/async_support/bybit.py,sha256=XBJ-HvWThWRoL0WgeE2oOO_2QhsSQvLRm_vjg2uDGHQ,426054
258
+ ccxt/async_support/bybit.py,sha256=jiRnRqq0k_E6ONkU2qkDAlGGZjqwW2Dwrt9T4DMiBaA,442654
259
259
  ccxt/async_support/cex.py,sha256=DPQ4-rrO4Ut3zHax7wOnk47rfF5zVh4AgheFQ05pWDs,70470
260
260
  ccxt/async_support/coinbase.py,sha256=SK8RaT5LFn-y9EVKaa8vKacMA5IWxuJzQ6anBKHPpIQ,219821
261
261
  ccxt/async_support/coinbaseadvanced.py,sha256=Kupwnuxiu_qTjwCNV2asacoDUNFQvcaHNAznUJPhdQs,552
@@ -283,7 +283,7 @@ ccxt/async_support/hashkey.py,sha256=3YMUW6NPIs-dHNl6JIIW6OX0dyKVd2CAZL9jk1MKp5Q
283
283
  ccxt/async_support/hitbtc.py,sha256=h3HTN7Z5glikA3YRunBQun0Tp1QVqiBQz4WWzZKRLdk,154515
284
284
  ccxt/async_support/hitbtc3.py,sha256=dmSYoD2o4av_zzbZI8HNIoj8BWxA7QozsVpy8JaOXzU,469
285
285
  ccxt/async_support/hollaex.py,sha256=msUnnbWLNeCxFW77BnfLoFWBdvQIDwV7Rtbi9TA4TYY,76574
286
- ccxt/async_support/htx.py,sha256=hB4b-Hvm0W5eUOcyoGEDfHFZdlNbYIIGmNpDGVDHNGo,430321
286
+ ccxt/async_support/htx.py,sha256=NN3vNQGqwgYQLS8vWfVuYpMU7LmSa35KghjVawFa6bQ,431693
287
287
  ccxt/async_support/huobi.py,sha256=fup0j6wQ1khAtfbb1H4CSyJAOzhxuoHMmrM6sgTuhr8,452
288
288
  ccxt/async_support/huobijp.py,sha256=OeEHn0GXQ56YGeUM21zwRqsEm8d2LD_SDspBsQMlds4,90352
289
289
  ccxt/async_support/hyperliquid.py,sha256=U_l3fAmAZzE9UBUIkODXlmaUVTlRh9ft3IDYuxNNJLs,123497
@@ -305,7 +305,7 @@ ccxt/async_support/ndax.py,sha256=IX7cFNjCELJIImof_jVsNzihXjCOmMyqRnlFHnzOq_w,10
305
305
  ccxt/async_support/novadax.py,sha256=YNKUM1CGFK7lpBwbxSSL1IAEJCRVsNxeITkwtw6VWCM,64804
306
306
  ccxt/async_support/oceanex.py,sha256=85IHjCWsBZZXntKHPeuUpFYP9FV0Ik93gJsTlrGzhVA,38341
307
307
  ccxt/async_support/okcoin.py,sha256=TV0xooV4DIw1M8DrMNQBsDv4fhSTEp7Xtb5WK-F9bvc,151650
308
- ccxt/async_support/okx.py,sha256=Mys4Lz_IdH1AjNfblCCIRWfdlXg4XBWh4mRcrQ_cfDQ,380872
308
+ ccxt/async_support/okx.py,sha256=a_7ziwHFhgusTIFJ_JsoiTW0FsXzlIBudMoIfZr_WZY,381231
309
309
  ccxt/async_support/onetrading.py,sha256=cZSvu7ZIavao-bqv1CgQatPfsrfXDgCt2UfxMtYsOMM,88827
310
310
  ccxt/async_support/oxfun.py,sha256=_Pv8E4yIKS10iPOpPuCFQgBuqGDzxuwvxROdJjwrYvc,125201
311
311
  ccxt/async_support/p2b.py,sha256=VKUX8u7gtHkKDwBjAyskScm2FEs6xxDuKLXE-jSHXwY,54532
@@ -330,7 +330,7 @@ ccxt/async_support/yobit.py,sha256=GQhvYrsGHQrVdTrNHQxx9isEGqUABexlllzao9HL3f8,5
330
330
  ccxt/async_support/zaif.py,sha256=-ZTr8M2JaIRCL90VrbCDXBMAsZwbiwsFChSQ2rWODuQ,29044
331
331
  ccxt/async_support/zonda.py,sha256=njWK4t42n7BowCvc3j5WKwCxEDc2Y8vi0d-yp296-q0,81883
332
332
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
333
- ccxt/async_support/base/exchange.py,sha256=O4Pbm90FTTW9HL_QdZ4bAd57dtZ0GcUL4OyQhoUlRpc,111719
333
+ ccxt/async_support/base/exchange.py,sha256=9Fo9N_NvE6DW1cxqE0LRz6M5VtoQcAiXUQCgqjnG_PA,111719
334
334
  ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
335
335
  ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
336
336
  ccxt/async_support/base/ws/aiohttp_client.py,sha256=5IEiT0elWI9a7Vr-KV0jgmlbpLJWBzIlrLaCkTKGaqY,5752
@@ -344,10 +344,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9produGjmB
344
344
  ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
345
345
  ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
346
346
  ccxt/base/errors.py,sha256=Pad-6ugvGUwhoYuKUliX-N7FTrcnKCQGFjsaq2tMn0I,4610
347
- ccxt/base/exchange.py,sha256=e6PvF7b8k7ZtnsENlba_idBLfZKouvGIgrHNi6XcER8,299017
347
+ ccxt/base/exchange.py,sha256=FpZ9ifyUtLjrJs4agMKCLyKIYoLItKF0Np2taubDdcM,299017
348
348
  ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
349
349
  ccxt/base/types.py,sha256=Xw9wcYNDRmtUghkU2VIT496S868mRoUjxyuCM7TCAK4,9616
350
- ccxt/pro/__init__.py,sha256=HxpY9-k7tkifvQWEdwl0UOosPeBDNGEdl9_aPObBuHk,7709
350
+ ccxt/pro/__init__.py,sha256=mPsCMxr6Dtx5B_NRpRwCyTIWJqNGd7ahbFQbktoxebE,7709
351
351
  ccxt/pro/alpaca.py,sha256=xh1yg1Ok-Zh_Mfx-MBjNrfJDs6MUU0exFfEj3GuQPC4,27631
352
352
  ccxt/pro/ascendex.py,sha256=QueLgISoIxgGSOta2W7En4pwAsEXbTP5q5ef4UjpTQQ,37524
353
353
  ccxt/pro/bequant.py,sha256=33OEUWBi4D9-2w8CmkwN3aF1qS-AlLqX3pxrWwNbXPY,1552
@@ -361,15 +361,15 @@ ccxt/pro/bitfinex.py,sha256=BlgNy4_TUPggvfcfpfl7309Phons-2lFp73OdDbQHpw,25305
361
361
  ccxt/pro/bitfinex2.py,sha256=H2evIdXrXaHpmvlqoPCOqADYjiHqvZVLf9EnbYHBOj8,43106
362
362
  ccxt/pro/bitget.py,sha256=IcXYY1ZC_1AagkJY7FSEoCYkxQUZv1H6GaGFP3fetuM,87712
363
363
  ccxt/pro/bithumb.py,sha256=cAiRpOT1kxlpphu7xd6NYH43j7of_kXXy0M9YqXeat4,17411
364
- ccxt/pro/bitmart.py,sha256=LxcP6aiCdwN-euseCMhsXZkhqesPJM-eLh549sGHHfo,62556
364
+ ccxt/pro/bitmart.py,sha256=yYi-9twsMTIlZU-UabQF91tuMCnYeEEVibHmy2l4lFw,65984
365
365
  ccxt/pro/bitmex.py,sha256=J9pn0llcUkAjAfuBbMFd7-VzfnVSx8woIMAkLK58qss,74569
366
366
  ccxt/pro/bitopro.py,sha256=eGge1vzVXPx1FGZc1cm5i_MzBKlRkWH2ZKuIzrR3G2Q,18798
367
367
  ccxt/pro/bitpanda.py,sha256=ELrhfFKN9YJJdmm9wBf-vpk6WsXGWGf-SyJdqm-E_Lg,415
368
368
  ccxt/pro/bitrue.py,sha256=0-aa3Q8oGLnq71fJQYLyy0jI3NHHTFJuMQAyM0XRLFY,16246
369
369
  ccxt/pro/bitstamp.py,sha256=tysJpRxfVnZKp-_xgfIhsOVh3ilnQQhXjV-grzqz3QM,20964
370
- ccxt/pro/bitvavo.py,sha256=407yoZbQh5G9bP4FMVywBB223dJFj0x7nxaEiobHVSI,56255
370
+ ccxt/pro/bitvavo.py,sha256=zsUnPPvcZqPRWRp8znCF2AogBykNH7tMBaaSoPtnGQ0,60245
371
371
  ccxt/pro/blockchaincom.py,sha256=yRJ4m0mTG5FSbkdH4QvuXNnBvLv9kDMGbAMwpcJnyDI,29648
372
- ccxt/pro/blofin.py,sha256=Wjw0coQ4TO1qdVVnBGSdRDVtADsl-t-hkOo-uEDZTbc,28659
372
+ ccxt/pro/blofin.py,sha256=pALlkuzdFZuxCaSxYfqog98x7BM8G0nqUTCke4WfUt0,31345
373
373
  ccxt/pro/bybit.py,sha256=PjSEQaOmO7BZNh5Df3USmVmhI1X6qVw0hXN8qfvcp9s,108243
374
374
  ccxt/pro/cex.py,sha256=7HFtbjDOijpamdCv3ddlqkQ6exO2jN5MZ5dtXvRg2Og,58577
375
375
  ccxt/pro/coinbase.py,sha256=hwd8lUuaW8WyQQOh9WvBVuiuOJTpmlCXU0hL3UE8UFQ,31411
@@ -650,8 +650,8 @@ ccxt/test/tests_async.py,sha256=Hfdxrjw3nP7lGyjYs35ZgTBM7pF6UIJrkZWz-ycceRw,8457
650
650
  ccxt/test/tests_helpers.py,sha256=xhOILoZ_x3RSfQjtKt6AQlkp9DkOtpTQe8GAUUZoM6s,10069
651
651
  ccxt/test/tests_init.py,sha256=eVwwUHujX9t4rjgo4TqEeg7DDhR1Hb_e2SJN8NVGyl0,998
652
652
  ccxt/test/tests_sync.py,sha256=tQNiZZi3ulprLY513aSadwieBCuNyzyRLE8nSTZIUvw,83641
653
- ccxt-4.4.7.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
654
- ccxt-4.4.7.dist-info/METADATA,sha256=76NTS3fL9N7AwmlEC1rEjF3uOI2Us_OuMSWP4dHWOB8,118611
655
- ccxt-4.4.7.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
656
- ccxt-4.4.7.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
657
- ccxt-4.4.7.dist-info/RECORD,,
653
+ ccxt-4.4.8.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
654
+ ccxt-4.4.8.dist-info/METADATA,sha256=1bLLD8nUPdl3LKFsWE3n1U1rz_FoaUeQszX4jG1UtYA,118611
655
+ ccxt-4.4.8.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
656
+ ccxt-4.4.8.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
657
+ ccxt-4.4.8.dist-info/RECORD,,
File without changes