ccxt 4.3.97__py2.py3-none-any.whl → 4.3.98__py2.py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
ccxt/__init__.py CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.3.97'
25
+ __version__ = '4.3.98'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.97'
7
+ __version__ = '4.3.98'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.3.97'
5
+ __version__ = '4.3.98'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -1251,7 +1251,9 @@ class bitget(Exchange, ImplicitAPI):
1251
1251
  '40713': ExchangeError, # Cannot exceed the maximum transferable margin amount
1252
1252
  '40714': ExchangeError, # No direct margin call is allowed
1253
1253
  '40762': InsufficientFunds, # {"code":"40762","msg":"The order amount exceeds the balance","requestTime":1716572156622,"data":null}
1254
- '40768': OrderNotFound, # Order does not exist"
1254
+ '40768': OrderNotFound, # Order does not exist
1255
+ '40808': InvalidOrder, # {"code":"40808","msg":"Parameter verification exception size checkBDScale error value=2293.577 checkScale=2","requestTime":1725638500052,"data":null}
1256
+ '41103': InvalidOrder, # {"code":"41103","msg":"param price scale error error","requestTime":1725635883561,"data":null}
1255
1257
  '41114': OnMaintenance, # {"code":"41114","msg":"The current trading pair is under maintenance, please refer to the official announcement for the opening time","requestTime":1679196062544,"data":null}
1256
1258
  '43011': InvalidOrder, # The parameter does not meet the specification executePrice <= 0
1257
1259
  '43012': InsufficientFunds, # {"code":"43012","msg":"Insufficient balance","requestTime":1711648951774,"data":null}
@@ -3786,7 +3786,7 @@ class gate(Exchange, ImplicitAPI):
3786
3786
  if not market['option']:
3787
3787
  request['settle'] = market['settleId'] # filled in prepareRequest above
3788
3788
  if isMarketOrder:
3789
- request['price'] = price # set to 0 for market orders
3789
+ request['price'] = '0' # set to 0 for market orders
3790
3790
  else:
3791
3791
  request['price'] = '0' if (price == 0) else self.price_to_precision(symbol, price)
3792
3792
  if reduceOnly is not None:
@@ -3602,7 +3602,7 @@ class kucoin(Exchange, ImplicitAPI):
3602
3602
  params = self.omit(params, 'type')
3603
3603
  hf = None
3604
3604
  hf, params = self.handle_hf_and_params(params)
3605
- if hf:
3605
+ if hf and (type != 'main'):
3606
3606
  type = 'trade_hf'
3607
3607
  marginMode, query = self.handle_margin_mode_and_params('fetchBalance', params)
3608
3608
  response = None
@@ -1521,19 +1521,18 @@ class whitebit(Exchange, ImplicitAPI):
1521
1521
  """
1522
1522
  fetch all unfilled currently open orders
1523
1523
  :see: https://docs.whitebit.com/private/http-trade-v4/#query-unexecutedactive-orders
1524
- :param str symbol: unified market symbol
1524
+ :param str [symbol]: unified market symbol
1525
1525
  :param int [since]: the earliest time in ms to fetch open orders for
1526
1526
  :param int [limit]: the maximum number of open order structures to retrieve
1527
1527
  :param dict [params]: extra parameters specific to the exchange API endpoint
1528
1528
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1529
1529
  """
1530
- if symbol is None:
1531
- raise ArgumentsRequired(self.id + ' fetchOpenOrders() requires a symbol argument')
1532
1530
  await self.load_markets()
1533
- market = self.market(symbol)
1534
- request: dict = {
1535
- 'market': market['id'],
1536
- }
1531
+ market = None
1532
+ request: dict = {}
1533
+ if symbol is not None:
1534
+ market = self.market(symbol)
1535
+ request['market'] = market['id']
1537
1536
  if limit is not None:
1538
1537
  request['limit'] = min(limit, 100)
1539
1538
  response = await self.v4PrivatePostOrders(self.extend(request, params))
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.97'
7
+ __version__ = '4.3.98'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
ccxt/bitget.py CHANGED
@@ -1250,7 +1250,9 @@ class bitget(Exchange, ImplicitAPI):
1250
1250
  '40713': ExchangeError, # Cannot exceed the maximum transferable margin amount
1251
1251
  '40714': ExchangeError, # No direct margin call is allowed
1252
1252
  '40762': InsufficientFunds, # {"code":"40762","msg":"The order amount exceeds the balance","requestTime":1716572156622,"data":null}
1253
- '40768': OrderNotFound, # Order does not exist"
1253
+ '40768': OrderNotFound, # Order does not exist
1254
+ '40808': InvalidOrder, # {"code":"40808","msg":"Parameter verification exception size checkBDScale error value=2293.577 checkScale=2","requestTime":1725638500052,"data":null}
1255
+ '41103': InvalidOrder, # {"code":"41103","msg":"param price scale error error","requestTime":1725635883561,"data":null}
1254
1256
  '41114': OnMaintenance, # {"code":"41114","msg":"The current trading pair is under maintenance, please refer to the official announcement for the opening time","requestTime":1679196062544,"data":null}
1255
1257
  '43011': InvalidOrder, # The parameter does not meet the specification executePrice <= 0
1256
1258
  '43012': InsufficientFunds, # {"code":"43012","msg":"Insufficient balance","requestTime":1711648951774,"data":null}
ccxt/gate.py CHANGED
@@ -3785,7 +3785,7 @@ class gate(Exchange, ImplicitAPI):
3785
3785
  if not market['option']:
3786
3786
  request['settle'] = market['settleId'] # filled in prepareRequest above
3787
3787
  if isMarketOrder:
3788
- request['price'] = price # set to 0 for market orders
3788
+ request['price'] = '0' # set to 0 for market orders
3789
3789
  else:
3790
3790
  request['price'] = '0' if (price == 0) else self.price_to_precision(symbol, price)
3791
3791
  if reduceOnly is not None:
ccxt/kucoin.py CHANGED
@@ -3601,7 +3601,7 @@ class kucoin(Exchange, ImplicitAPI):
3601
3601
  params = self.omit(params, 'type')
3602
3602
  hf = None
3603
3603
  hf, params = self.handle_hf_and_params(params)
3604
- if hf:
3604
+ if hf and (type != 'main'):
3605
3605
  type = 'trade_hf'
3606
3606
  marginMode, query = self.handle_margin_mode_and_params('fetchBalance', params)
3607
3607
  response = None
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.97'
7
+ __version__ = '4.3.98'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
ccxt/pro/kraken.py CHANGED
@@ -128,7 +128,7 @@ class kraken(ccxt.async_support.kraken):
128
128
 
129
129
  async def create_order_ws(self, symbol: str, type: OrderType, side: OrderSide, amount: float, price: Num = None, params={}) -> Order:
130
130
  """
131
- :see: https://docs.kraken.com/websockets/#message-addOrder
131
+ :see: https://docs.kraken.com/api/docs/websocket-v1/addorder
132
132
  create a trade order
133
133
  :param str symbol: unified symbol of the market to create an order in
134
134
  :param str type: 'market' or 'limit'
@@ -183,7 +183,7 @@ class kraken(ccxt.async_support.kraken):
183
183
  async def edit_order_ws(self, id: str, symbol: str, type: OrderType, side: OrderSide, amount: Num = None, price: Num = None, params={}) -> Order:
184
184
  """
185
185
  edit a trade order
186
- :see: https://docs.kraken.com/websockets/#message-editOrder
186
+ :see: https://docs.kraken.com/api/docs/websocket-v1/editorder
187
187
  :param str id: order id
188
188
  :param str symbol: unified symbol of the market to create an order in
189
189
  :param str type: 'market' or 'limit'
@@ -213,7 +213,7 @@ class kraken(ccxt.async_support.kraken):
213
213
 
214
214
  async def cancel_orders_ws(self, ids: List[str], symbol: Str = None, params={}):
215
215
  """
216
- :see: https://docs.kraken.com/websockets/#message-cancelOrder
216
+ :see: https://docs.kraken.com/api/docs/websocket-v1/cancelorder
217
217
  cancel multiple orders
218
218
  :param str[] ids: order ids
219
219
  :param str symbol: unified market symbol, default is None
@@ -235,7 +235,7 @@ class kraken(ccxt.async_support.kraken):
235
235
 
236
236
  async def cancel_order_ws(self, id: str, symbol: Str = None, params={}) -> Order:
237
237
  """
238
- :see: https://docs.kraken.com/websockets/#message-cancelOrder
238
+ :see: https://docs.kraken.com/api/docs/websocket-v1/cancelorder
239
239
  cancels an open order
240
240
  :param str id: order id
241
241
  :param str symbol: unified symbol of the market the order was made in
@@ -271,7 +271,7 @@ class kraken(ccxt.async_support.kraken):
271
271
 
272
272
  async def cancel_all_orders_ws(self, symbol: Str = None, params={}):
273
273
  """
274
- :see: https://docs.kraken.com/websockets/#message-cancelAll
274
+ :see: https://docs.kraken.com/api/docs/websocket-v1/cancelall
275
275
  cancel all open orders
276
276
  :param str symbol: unified market symbol, only orders in the market of self symbol are cancelled when symbol is not None
277
277
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -465,6 +465,7 @@ class kraken(ccxt.async_support.kraken):
465
465
  async def watch_ticker(self, symbol: str, params={}) -> Ticker:
466
466
  """
467
467
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
468
+ :see: https://docs.kraken.com/api/docs/websocket-v1/ticker
468
469
  :param str symbol: unified symbol of the market to fetch the ticker for
469
470
  :param dict [params]: extra parameters specific to the exchange API endpoint
470
471
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -477,6 +478,7 @@ class kraken(ccxt.async_support.kraken):
477
478
  async def watch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
478
479
  """
479
480
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
481
+ :see: https://docs.kraken.com/api/docs/websocket-v1/ticker
480
482
  :param str symbol: unified symbol of the market to fetch the ticker for
481
483
  :param dict [params]: extra parameters specific to the exchange API endpoint
482
484
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -493,7 +495,7 @@ class kraken(ccxt.async_support.kraken):
493
495
  async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
494
496
  """
495
497
  get the list of most recent trades for a particular symbol
496
- :see: https://docs.kraken.com/websockets/#message-trade
498
+ :see: https://docs.kraken.com/api/docs/websocket-v1/trade
497
499
  :param str symbol: unified symbol of the market to fetch trades for
498
500
  :param int [since]: timestamp in ms of the earliest trade to fetch
499
501
  :param int [limit]: the maximum amount of trades to fetch
@@ -504,7 +506,7 @@ class kraken(ccxt.async_support.kraken):
504
506
 
505
507
  async def watch_trades_for_symbols(self, symbols: List[str], since: Int = None, limit: Int = None, params={}) -> List[Trade]:
506
508
  """
507
- :see: https://docs.kraken.com/websockets/#message-trade
509
+ :see: https://docs.kraken.com/api/docs/websocket-v1/trade
508
510
  get the list of most recent trades for a list of symbols
509
511
  :param str[] symbols: unified symbol of the market to fetch trades for
510
512
  :param int [since]: timestamp in ms of the earliest trade to fetch
@@ -522,7 +524,7 @@ class kraken(ccxt.async_support.kraken):
522
524
  async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
523
525
  """
524
526
  watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
525
- :see: https://docs.kraken.com/websockets/#message-book
527
+ :see: https://docs.kraken.com/api/docs/websocket-v1/book
526
528
  :param str symbol: unified symbol of the market to fetch the order book for
527
529
  :param int [limit]: the maximum amount of order book entries to return
528
530
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -533,7 +535,7 @@ class kraken(ccxt.async_support.kraken):
533
535
  async def watch_order_book_for_symbols(self, symbols: List[str], limit: Int = None, params={}) -> OrderBook:
534
536
  """
535
537
  watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
536
- :see: https://docs.kraken.com/websockets/#message-book
538
+ :see: https://docs.kraken.com/api/docs/websocket-v1/book
537
539
  :param str[] symbols: unified array of symbols
538
540
  :param int [limit]: the maximum amount of order book entries to return
539
541
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -553,6 +555,7 @@ class kraken(ccxt.async_support.kraken):
553
555
  async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
554
556
  """
555
557
  watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
558
+ :see: https://docs.kraken.com/api/docs/websocket-v1/ohlc
556
559
  :param str symbol: unified symbol of the market to fetch OHLCV data for
557
560
  :param str timeframe: the length of time each candle represents
558
561
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -834,6 +837,7 @@ class kraken(ccxt.async_support.kraken):
834
837
  async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
835
838
  """
836
839
  watches information on multiple trades made by the user
840
+ :see: https://docs.kraken.com/api/docs/websocket-v1/owntrades
837
841
  :param str symbol: unified market symbol of the market trades were made in
838
842
  :param int [since]: the earliest time in ms to fetch trades for
839
843
  :param int [limit]: the maximum number of trade structures to retrieve
@@ -982,7 +986,7 @@ class kraken(ccxt.async_support.kraken):
982
986
 
983
987
  async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
984
988
  """
985
- :see: https://docs.kraken.com/websockets/#message-openOrders
989
+ :see: https://docs.kraken.com/api/docs/websocket-v1/openorders
986
990
  watches information on multiple orders made by the user
987
991
  :param str symbol: unified market symbol of the market orders were made in
988
992
  :param int [since]: the earliest time in ms to fetch orders for
ccxt/pro/kucoin.py CHANGED
@@ -599,6 +599,20 @@ class kucoin(ccxt.async_support.kucoin):
599
599
  #
600
600
  return await self.watch_order_book_for_symbols([symbol], limit, params)
601
601
 
602
+ async def un_watch_order_book(self, symbol: str, params={}) -> Any:
603
+ """
604
+ :see: https://www.kucoin.com/docs/websocket/spot-trading/public-channels/level1-bbo-market-data
605
+ :see: https://www.kucoin.com/docs/websocket/spot-trading/public-channels/level2-market-data
606
+ :see: https://www.kucoin.com/docs/websocket/spot-trading/public-channels/level2-5-best-ask-bid-orders
607
+ :see: https://www.kucoin.com/docs/websocket/spot-trading/public-channels/level2-50-best-ask-bid-orders
608
+ unWatches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
609
+ :param str symbol: unified symbol of the market to fetch the order book for
610
+ :param dict [params]: extra parameters specific to the exchange API endpoint
611
+ :param str [params.method]: either '/market/level2' or '/spotMarket/level2Depth5' or '/spotMarket/level2Depth50' default is '/market/level2'
612
+ :returns dict: A dictionary of `order book structures <https://docs.ccxt.com/#/?id=order-book-structure>` indexed by market symbols
613
+ """
614
+ return await self.un_watch_order_book_for_symbols([symbol], params)
615
+
602
616
  async def watch_order_book_for_symbols(self, symbols: List[str], limit: Int = None, params={}) -> OrderBook:
603
617
  """
604
618
  :see: https://www.kucoin.com/docs/websocket/spot-trading/public-channels/level1-bbo-market-data
@@ -644,6 +658,45 @@ class kucoin(ccxt.async_support.kucoin):
644
658
  orderbook = await self.subscribe_multiple(url, messageHashes, topic, subscriptionHashes, params, subscription)
645
659
  return orderbook.limit()
646
660
 
661
+ async def un_watch_order_book_for_symbols(self, symbols: List[str], params={}) -> Any:
662
+ """
663
+ :see: https://www.kucoin.com/docs/websocket/spot-trading/public-channels/level1-bbo-market-data
664
+ :see: https://www.kucoin.com/docs/websocket/spot-trading/public-channels/level2-market-data
665
+ :see: https://www.kucoin.com/docs/websocket/spot-trading/public-channels/level2-5-best-ask-bid-orders
666
+ :see: https://www.kucoin.com/docs/websocket/spot-trading/public-channels/level2-50-best-ask-bid-orders
667
+ unWatches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
668
+ :param str[] symbols: unified array of symbols
669
+ :param int [limit]: the maximum amount of order book entries to return
670
+ :param dict [params]: extra parameters specific to the exchange API endpoint
671
+ :param str [params.method]: either '/market/level2' or '/spotMarket/level2Depth5' or '/spotMarket/level2Depth50' default is '/market/level2'
672
+ :returns dict: A dictionary of `order book structures <https://docs.ccxt.com/#/?id=order-book-structure>` indexed by market symbols
673
+ """
674
+ limit = self.safe_integer(params, 'limit')
675
+ params = self.omit(params, 'limit')
676
+ await self.load_markets()
677
+ symbols = self.market_symbols(symbols, None, False)
678
+ marketIds = self.market_ids(symbols)
679
+ url = await self.negotiate(False)
680
+ method: Str = None
681
+ method, params = self.handle_option_and_params(params, 'watchOrderBook', 'method', '/market/level2')
682
+ if (limit == 5) or (limit == 50):
683
+ method = '/spotMarket/level2Depth' + str(limit)
684
+ topic = method + ':' + ','.join(marketIds)
685
+ messageHashes = []
686
+ subscriptionHashes = []
687
+ for i in range(0, len(symbols)):
688
+ symbol = symbols[i]
689
+ messageHashes.append('unsubscribe:orderbook:' + symbol)
690
+ subscriptionHashes.append('orderbook:' + symbol)
691
+ subscription = {
692
+ 'messageHashes': messageHashes,
693
+ 'symbols': symbols,
694
+ 'unsubscribe': True,
695
+ 'topic': 'orderbook',
696
+ 'subMessageHashes': subscriptionHashes,
697
+ }
698
+ return await self.un_subscribe_multiple(url, messageHashes, topic, messageHashes, params, subscription)
699
+
647
700
  def handle_order_book(self, client: Client, message):
648
701
  #
649
702
  # initial snapshot is fetched with ccxt's fetchOrderBook
ccxt/whitebit.py CHANGED
@@ -1521,19 +1521,18 @@ class whitebit(Exchange, ImplicitAPI):
1521
1521
  """
1522
1522
  fetch all unfilled currently open orders
1523
1523
  :see: https://docs.whitebit.com/private/http-trade-v4/#query-unexecutedactive-orders
1524
- :param str symbol: unified market symbol
1524
+ :param str [symbol]: unified market symbol
1525
1525
  :param int [since]: the earliest time in ms to fetch open orders for
1526
1526
  :param int [limit]: the maximum number of open order structures to retrieve
1527
1527
  :param dict [params]: extra parameters specific to the exchange API endpoint
1528
1528
  :returns Order[]: a list of `order structures <https://docs.ccxt.com/#/?id=order-structure>`
1529
1529
  """
1530
- if symbol is None:
1531
- raise ArgumentsRequired(self.id + ' fetchOpenOrders() requires a symbol argument')
1532
1530
  self.load_markets()
1533
- market = self.market(symbol)
1534
- request: dict = {
1535
- 'market': market['id'],
1536
- }
1531
+ market = None
1532
+ request: dict = {}
1533
+ if symbol is not None:
1534
+ market = self.market(symbol)
1535
+ request['market'] = market['id']
1537
1536
  if limit is not None:
1538
1537
  request['limit'] = min(limit, 100)
1539
1538
  response = self.v4PrivatePostOrders(self.extend(request, params))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.3.97
3
+ Version: 4.3.98
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.3.97/dist/ccxt.browser.min.js
276
- * unpkg: https://unpkg.com/ccxt@4.3.97/dist/ccxt.browser.min.js
275
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.98/dist/ccxt.browser.min.js
276
+ * unpkg: https://unpkg.com/ccxt@4.3.98/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.3.97/dist/ccxt.browser.min.js"></script>
281
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.98/dist/ccxt.browser.min.js"></script>
282
282
  ```
283
283
 
284
284
  Creates a global `ccxt` object:
@@ -1,4 +1,4 @@
1
- ccxt/__init__.py,sha256=kpYw9B4E5ksqx39E5OpUQX7kxtQCdfCcPA7ovtP9Ka8,16486
1
+ ccxt/__init__.py,sha256=vXYwL74aE9Vs_OAakppysSIZ3teIGfShjSC2-Z6Ea3g,16486
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
@@ -17,7 +17,7 @@ ccxt/bitcoincom.py,sha256=PyWIl4nC4jp5Uba2lI1At0N_hhNyWD0DoZC_MSyL_s4,502
17
17
  ccxt/bitfinex.py,sha256=w3t0YAwtOfCwLy5_w2wTq90qkTgUUyn0sqdO22zD-9U,73527
18
18
  ccxt/bitfinex2.py,sha256=a-mWVZfIiHIUOyXhjjyS9YYP5oDZAR22oPdvPqm2tU4,160875
19
19
  ccxt/bitflyer.py,sha256=A5Qtxec8uuhL0M2CIm908XFG_dauGoPetkGvglFUbrE,41719
20
- ccxt/bitget.py,sha256=xBTfJmSxKt-6g0EfvOzPi4mXyupWJILXQzrgwfsQ__A,424656
20
+ ccxt/bitget.py,sha256=qTZJor8cXIojk_0W5w4Z4Gb4mMW_RcOxcsWWNalyskA,424992
21
21
  ccxt/bithumb.py,sha256=8oTnFWi8Ai9fnm5FPXvNmaUAVJEOqYi-18VC23cWmXY,47935
22
22
  ccxt/bitmart.py,sha256=E8spf8q8jqlL41dlhwntz1WJzWQY0v9_IaIut1-r_y0,211807
23
23
  ccxt/bitmex.py,sha256=SoKTmrAKQ__SZzh1Fok1dOL7kUZjCIHl-qIHe9bO3Jc,126988
@@ -56,7 +56,7 @@ ccxt/deribit.py,sha256=hs6yUT8s7sfmO-GJ9RZ9nQC7Y9vnp_2puTRrd9r1Plw,161350
56
56
  ccxt/digifinex.py,sha256=pUPM7EEeRFoenX_jzNJM1RNuIUjATy6GB4J2osJJ4bY,169282
57
57
  ccxt/exmo.py,sha256=KlQqGZey31br-SVwhQg6mWIESyeM_wiIKRDOzIekuSs,114638
58
58
  ccxt/fmfwio.py,sha256=RbVLvzPwnqfDsE7Ea-N13ISCC82eJVPsXYjrleASmew,1236
59
- ccxt/gate.py,sha256=yMLmH3V2rIOIYkSesK6WENnQ6nB-404sybIi83zO7to,327725
59
+ ccxt/gate.py,sha256=JWn9RH_0AVQjnpdKC5puum_gDwvoTR6K8Po1Cdc-hms,327723
60
60
  ccxt/gateio.py,sha256=86AETJWODl_vA5VNeQRHZprmpNIY1HAxCddKZcnKSi8,445
61
61
  ccxt/gemini.py,sha256=qWLpJE-Ue3F-KhFfzhAteAMMJOr35duwdI-exBrRTEo,80950
62
62
  ccxt/hashkey.py,sha256=AfbhV_QCW31jzy8BFPnmGdhWfXz4WILIl-qh3jB4ZMc,191738
@@ -72,7 +72,7 @@ ccxt/independentreserve.py,sha256=k2T7rA1zcvlHC8QpmkKYO7ik44SayiElaSpW0EsTevA,37
72
72
  ccxt/indodax.py,sha256=o5YLVpQzm1LFWPAsvUOnvJxeBEWtaB_jQCvCOmXEw1Y,54758
73
73
  ccxt/kraken.py,sha256=DMy-Lncp9zYsid59O7cn3OLlCIT4Nf1BQa_kqM5dSJM,133417
74
74
  ccxt/krakenfutures.py,sha256=_-bbgzshifKnbyOB1pSs_bRfRepkRAdiDlsLDRiAw9w,119597
75
- ccxt/kucoin.py,sha256=LbzgmNP9yVChVBa2QA-dKpqus8OCj_EizIEVPzxRxUM,229633
75
+ ccxt/kucoin.py,sha256=ThXUcJmLLktHAdbBhXYJvhgnMgfnxqrpgXu7TtqAFbQ,229654
76
76
  ccxt/kucoinfutures.py,sha256=KNh4biqkvaVzgQ2DGUTnNf5853iwF628jKWk3rdOcB4,125860
77
77
  ccxt/kuna.py,sha256=GnIMk8R_IL84FTUHDNP6jHxd2FKNX9YwfoCXoYG83uA,96157
78
78
  ccxt/latoken.py,sha256=wBhaMcTEsB316nFCxm_WbLRZ_G2Q0Vi1FK-850Q07D0,79516
@@ -102,7 +102,7 @@ ccxt/upbit.py,sha256=d03xZjLdhtMrqTVm3VYmvQoT7inmq05bjrUNrJLi_7U,85413
102
102
  ccxt/vertex.py,sha256=r-ucPKA3DKb4Ke7u-OJxAXkHIS_ysF357R5-9dcYFHI,121797
103
103
  ccxt/wavesexchange.py,sha256=vmzv9h1QjthvpKUGajQn_tdCJ5tWmzEA6r7ow_y6ASY,114980
104
104
  ccxt/wazirx.py,sha256=LVHNdononi8FrZpT0pYiJoS-NrNi7_uIZ6Qbu8dJRPc,52405
105
- ccxt/whitebit.py,sha256=nm-FIOgvB35irrJ078mtvLki-cZ_V4aRT0B8z2rjMbU,119428
105
+ ccxt/whitebit.py,sha256=stDtMdsAZV2NVOmuTGjIZoYSHvfw3hAW73X8hUhCZgE,119365
106
106
  ccxt/woo.py,sha256=u7tYOD7NQVkeP0ypXiE5YeAZpI-RtELHL_fdkkD6qEU,153219
107
107
  ccxt/woofipro.py,sha256=bOytP6GTDdJ7JDEdGYOx3RFQhx_zySNNHexf_0MyUcc,115500
108
108
  ccxt/xt.py,sha256=a9f_Oq5KyDdytyCqW15jjXXdHGumbZwCqutt8cbfsPo,202616
@@ -218,7 +218,7 @@ 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=KePoEzOs1lPbGIfbYtCeGGidsTP00wmODPSW_L92Yog,16289
221
+ ccxt/async_support/__init__.py,sha256=v2qSXsDgehTFrItkXcTs0bBKqwNWuU5qaKBxX6UfnmU,16289
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
@@ -237,7 +237,7 @@ ccxt/async_support/bitcoincom.py,sha256=RiqwhK3RfxQ_PXTa860fphDCvwA8dalL-_rXlK85
237
237
  ccxt/async_support/bitfinex.py,sha256=pzyfQzUSxFYd6Ted0hNLgL545S8rFCrsoJc9Odk3zoo,73993
238
238
  ccxt/async_support/bitfinex2.py,sha256=Bw0d8dK5Ybp4_Aq9P-9DPJrtvzVJ6F28hHqX_BodLHM,161629
239
239
  ccxt/async_support/bitflyer.py,sha256=9tRLLI8tHyp0T1yj3-3F-MVoHB8Jq81qx_vQ-N00PJI,42027
240
- ccxt/async_support/bitget.py,sha256=LLL5XnYB2Wdlh3NDuInCvsZOUo6ifVopJazVMTU4diU,426280
240
+ ccxt/async_support/bitget.py,sha256=aYGgpFSlW1D2QDh87QYJMSdGlYQQnjNQ0G1yi93D2I0,426616
241
241
  ccxt/async_support/bithumb.py,sha256=Q0Cx_cRKZRfdpBAhQyINm63Qw3M6BRYQRiF0UqYzfis,48214
242
242
  ccxt/async_support/bitmart.py,sha256=DM-RMAL2itKyO_dTafBwQXnZ3NsDxy4LauDPucHT29M,212763
243
243
  ccxt/async_support/bitmex.py,sha256=bpaQ7pqan9JFj5AJxngtcuqeN9ReO76WbNkqfvBtyT0,127566
@@ -276,7 +276,7 @@ ccxt/async_support/deribit.py,sha256=JfdtFswWctlKE_GOjoxFIVKTNq-LUeuVik59MAx-u8s
276
276
  ccxt/async_support/digifinex.py,sha256=6fj4RPpxV8ArNSBXm5_y_Mt7fzjYxYOSO8mcxGKXpUU,170252
277
277
  ccxt/async_support/exmo.py,sha256=uVJsy3mfNLpfbY0ndl2EF9hipUylEw8J58J3wCGyyA0,115270
278
278
  ccxt/async_support/fmfwio.py,sha256=lzfSnPrB2ARcC3EIqAuBM4vyg6LJ6n8RE71Zvt3ez1s,1250
279
- ccxt/async_support/gate.py,sha256=4YbAEwG7gfn_mWrEVki76rzQ_wFor80rItpPy4eWK6w,329456
279
+ ccxt/async_support/gate.py,sha256=EsnqQ_V_hQUxe1vqRhUx9JIkPCqcCSVEwHkCks_RPxw,329454
280
280
  ccxt/async_support/gateio.py,sha256=6_t032F9p9x5KGTjtSuqGXITzFOx-XAQBYLpsuQjzxw,459
281
281
  ccxt/async_support/gemini.py,sha256=nB8pdA9FAezRsRhF6_7w-T5keDtlahjPo9WPApEJbsY,81474
282
282
  ccxt/async_support/hashkey.py,sha256=bwQsEvhGU60iy_vlAbLvtx1blhDxS4L3cqoTpk6JNQ8,192580
@@ -292,7 +292,7 @@ ccxt/async_support/independentreserve.py,sha256=-W-SMPkJwY9FMN5I6l5eL8cPwC0_Uuqm
292
292
  ccxt/async_support/indodax.py,sha256=-dcr5VdpSkcLgy2KUlumm0NhGs4_mNstysIlunhF2-4,55066
293
293
  ccxt/async_support/kraken.py,sha256=aDndekk6rCIyASRAjJNg1oNzxcProwA1ezZ7ftKLOY8,134067
294
294
  ccxt/async_support/krakenfutures.py,sha256=stPhBne9pFVlgFkw4mwqtaaI6NTZCAcmOIFVlQSbl8I,120085
295
- ccxt/async_support/kucoin.py,sha256=A80W0tVyY4k39-kOFYj52gCoXYQhaTWi6ZL8ln4v-5A,230776
295
+ ccxt/async_support/kucoin.py,sha256=MQarL6ZcVHA09oColzpwT00EcP-34rBXIJeFzgqQOJ4,230797
296
296
  ccxt/async_support/kucoinfutures.py,sha256=a2oRhfH61LsSnhSlhwSJM7yRUUsegkmQenOa_nPwHuA,126516
297
297
  ccxt/async_support/kuna.py,sha256=QtzLgqgv8mLXECN2drWNVtdvm_vy-bawdxKvozDzbVE,96573
298
298
  ccxt/async_support/latoken.py,sha256=9BUu8akWtbBtAzVr_c_cYLkiLQqcJdSdkJbHmuLee-Y,79992
@@ -322,7 +322,7 @@ ccxt/async_support/upbit.py,sha256=r-7J61DYPXfCOa2-iks16MIiqF4IjfuIWQURyximwZ4,8
322
322
  ccxt/async_support/vertex.py,sha256=TSw1dmCXj2kIDV7uvj-kd3wPurRu90fg9mHWHoHjF_o,122297
323
323
  ccxt/async_support/wavesexchange.py,sha256=wHxvsBQydDEYRgeAZKI9WO4TLBKmmSPTLm0eT0pKB5g,115530
324
324
  ccxt/async_support/wazirx.py,sha256=bnUpw9be3o4l2Hxm3jcfNXn5bMyZlgqoG8BGPusuIzs,52707
325
- ccxt/async_support/whitebit.py,sha256=MMKYPLjbCyW9yd2saPifUJIFwddN9z4DG3agTaAMKOc,120078
325
+ ccxt/async_support/whitebit.py,sha256=zt8NkoziYOrYUR7K-SJW3qP7nP6pY6f334NiRdOKIZA,120015
326
326
  ccxt/async_support/woo.py,sha256=dvKBt8HDmQk1i5u2f3UUWmR9Pw1NALgyAj2wq3uWIds,154187
327
327
  ccxt/async_support/woofipro.py,sha256=B-BTPNdv3fL6wz3cHcMG2G8IU0MtvfzAiPP0OVT-xsI,116180
328
328
  ccxt/async_support/xt.py,sha256=_U-r4Gp0oBCOE6Ngo98Sn_Q6tr_81CUDDSliF0FMezE,203770
@@ -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=jncr6Wg12S72CTpu6mCKCse1pm1f8oefVQurQSrFvP0,81733
332
332
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
333
- ccxt/async_support/base/exchange.py,sha256=Z5NWBh-Y8mBiHecmZXh-brYALoWdLzzoFmGm4_pvOsg,110678
333
+ ccxt/async_support/base/exchange.py,sha256=wIZY8rE6aLTzPur4pwEAIOCtnduhsLdcNEhku_BYvKg,110678
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=CK7KRGBpym1C3eOfJPJVZzzwrclrWOUQRP4ZtrulvtU,295943
347
+ ccxt/base/exchange.py,sha256=bZjv1EMizBQEw17jjqeqCn_cb7rL4gjl9WxX8VaiKR0,295943
348
348
  ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
349
349
  ccxt/base/types.py,sha256=TaP_RElKjGEZWuzyp4o4u2YhREyTG3rUeVT6gDffY9A,9613
350
- ccxt/pro/__init__.py,sha256=wN1_kV6w3gXi2N9MmQzZaj3REboBkGrcvY55-2SpXf8,7710
350
+ ccxt/pro/__init__.py,sha256=WAB-1ZYJjVTWvSxf9sGCj_1La0ENE86uLXtUopuv3VY,7710
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
@@ -394,9 +394,9 @@ ccxt/pro/huobijp.py,sha256=urnktXqCIJTccup0oQJPJsM32XR09dDP6qGP1kvBtfg,23318
394
394
  ccxt/pro/hyperliquid.py,sha256=B-bV58Jw20AL4C2LGaj11cPp3osZRRr3T5WjfPXwc5Y,32500
395
395
  ccxt/pro/idex.py,sha256=WAY58yMHFUPoqZUGFvzxqcKizvMuFXqdZ6BD0WgstQA,28361
396
396
  ccxt/pro/independentreserve.py,sha256=JWMjJ0FUs4LhybAZ4rjHMQIWeOu5Njaj8aVimA7kf30,11356
397
- ccxt/pro/kraken.py,sha256=hrYXzL-CLCgm0BbQBjNOoiAfC57Ca5JTiD_24eIvikM,63840
397
+ ccxt/pro/kraken.py,sha256=ITIUkUaC7AfLEhaQR7s3zkJnJBa_eQU5DEOn980QOW0,64129
398
398
  ccxt/pro/krakenfutures.py,sha256=Y9vqrxNbr7OJ0BIMZqrVtMedUzk7XtOZuF_OGQ2tUJc,64033
399
- ccxt/pro/kucoin.py,sha256=v1a4ksoQCHj1fht_ENJ6OASFbW4AJ3asMw_8DuiWDsI,59505
399
+ ccxt/pro/kucoin.py,sha256=a4zZ7u2oGE8Cq9wkfBSGkgi3rmjV8uIXCD1vkZJkdtA,62986
400
400
  ccxt/pro/kucoinfutures.py,sha256=gMRflEtuO_S_cuhhVOtIwarL_Nk9ThAmGqyvUncVqHc,50331
401
401
  ccxt/pro/lbank.py,sha256=p6Ynjmud9B3Yw1SGTPdTB36AW4KtyR1JOotqFBdyyxs,35083
402
402
  ccxt/pro/luno.py,sha256=ThXkXNrLvp9BW8XXxRcbpRaw9QcLCS2f2tCqbF6qpEU,12384
@@ -650,8 +650,8 @@ ccxt/test/tests_async.py,sha256=f4Q7u2feejQp5rh3-4oB6XDNZ7_gkaZbkHqAu1wGyIU,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=ZFBHhpfH40I0VkpOdQo-8h2ccUMIEiKGppElvf1myK8,83635
653
- ccxt-4.3.97.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
654
- ccxt-4.3.97.dist-info/METADATA,sha256=COjpy0vFMszTHCx1mtiBsV_ig1uyTPq3BaMhi8J34qo,118342
655
- ccxt-4.3.97.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
656
- ccxt-4.3.97.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
657
- ccxt-4.3.97.dist-info/RECORD,,
653
+ ccxt-4.3.98.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
654
+ ccxt-4.3.98.dist-info/METADATA,sha256=C5Ov-x1xomtPh2YPcyBUEDYvbu0jpzqnNPgOuEdj9dU,118342
655
+ ccxt-4.3.98.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
656
+ ccxt-4.3.98.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
657
+ ccxt-4.3.98.dist-info/RECORD,,
File without changes