ccxt 4.3.73__py2.py3-none-any.whl → 4.3.74__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/pro/alpaca.py CHANGED
@@ -56,6 +56,7 @@ class alpaca(ccxt.async_support.alpaca):
56
56
  async def watch_ticker(self, symbol: str, params={}) -> Ticker:
57
57
  """
58
58
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
59
+ :see: https://docs.alpaca.markets/docs/real-time-crypto-pricing-data#quotes
59
60
  :param str symbol: unified symbol of the market to fetch the ticker for
60
61
  :param dict [params]: extra parameters specific to the exchange API endpoint
61
62
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -129,6 +130,7 @@ class alpaca(ccxt.async_support.alpaca):
129
130
  async def watch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
130
131
  """
131
132
  watches historical candlestick data containing the open, high, low, and close price, and the volume of a market
133
+ :see: https://docs.alpaca.markets/docs/real-time-crypto-pricing-data#bars
132
134
  :param str symbol: unified symbol of the market to fetch OHLCV data for
133
135
  :param str timeframe: the length of time each candle represents
134
136
  :param int [since]: timestamp in ms of the earliest candle to fetch
@@ -181,6 +183,7 @@ class alpaca(ccxt.async_support.alpaca):
181
183
  async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
182
184
  """
183
185
  watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
186
+ :see: https://docs.alpaca.markets/docs/real-time-crypto-pricing-data#orderbooks
184
187
  :param str symbol: unified symbol of the market to fetch the order book for
185
188
  :param int [limit]: the maximum amount of order book entries to return.
186
189
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -254,6 +257,7 @@ class alpaca(ccxt.async_support.alpaca):
254
257
  async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
255
258
  """
256
259
  watches information on multiple trades made in a market
260
+ :see: https://docs.alpaca.markets/docs/real-time-crypto-pricing-data#trades
257
261
  :param str symbol: unified market symbol of the market trades were made in
258
262
  :param int [since]: the earliest time in ms to fetch orders for
259
263
  :param int [limit]: the maximum number of trade structures to retrieve
@@ -302,6 +306,7 @@ class alpaca(ccxt.async_support.alpaca):
302
306
  async def watch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
303
307
  """
304
308
  watches information on multiple trades made by the user
309
+ :see: https://docs.alpaca.markets/docs/websocket-streaming#trade-updates
305
310
  :param str symbol: unified market symbol of the market trades were made in
306
311
  :param int [since]: the earliest time in ms to fetch trades for
307
312
  :param int [limit]: the maximum number of trade structures to retrieve
ccxt/pro/binance.py CHANGED
@@ -864,10 +864,15 @@ class binance(ccxt.async_support.binance):
864
864
  async def watch_trades_for_symbols(self, symbols: List[str], since: Int = None, limit: Int = None, params={}) -> List[Trade]:
865
865
  """
866
866
  get the list of most recent trades for a list of symbols
867
+ :see: https://binance-docs.github.io/apidocs/spot/en/#aggregate-trade-streams
868
+ :see: https://binance-docs.github.io/apidocs/spot/en/#trade-streams
869
+ :see: https://binance-docs.github.io/apidocs/futures/en/#aggregate-trade-streams
870
+ :see: https://binance-docs.github.io/apidocs/delivery/en/#aggregate-trade-streams
867
871
  :param str[] symbols: unified symbol of the market to fetch trades for
868
872
  :param int [since]: timestamp in ms of the earliest trade to fetch
869
873
  :param int [limit]: the maximum amount of trades to fetch
870
874
  :param dict [params]: extra parameters specific to the exchange API endpoint
875
+ :param str [params.name]: the name of the method to call, 'trade' or 'aggTrade', default is 'trade'
871
876
  :returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
872
877
  """
873
878
  await self.load_markets()
@@ -878,8 +883,9 @@ class binance(ccxt.async_support.binance):
878
883
  if symbolsLength > 200:
879
884
  raise BadRequest(self.id + ' watchTradesForSymbols() accepts 200 symbols at most. To watch more symbols call watchTradesForSymbols() multiple times')
880
885
  streamHash += '::' + ','.join(symbols)
881
- options = self.safe_value(self.options, 'watchTradesForSymbols', {})
882
- name = self.safe_string(options, 'name', 'trade')
886
+ name = None
887
+ name, params = self.handle_option_and_params(params, 'watchTradesForSymbols', 'name', 'trade')
888
+ params = self.omit(params, 'callerMethodName')
883
889
  firstMarket = self.market(symbols[0])
884
890
  type = firstMarket['type']
885
891
  if firstMarket['contract']:
@@ -914,12 +920,18 @@ class binance(ccxt.async_support.binance):
914
920
  async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
915
921
  """
916
922
  get the list of most recent trades for a particular symbol
923
+ :see: https://binance-docs.github.io/apidocs/spot/en/#aggregate-trade-streams
924
+ :see: https://binance-docs.github.io/apidocs/spot/en/#trade-streams
925
+ :see: https://binance-docs.github.io/apidocs/futures/en/#aggregate-trade-streams
926
+ :see: https://binance-docs.github.io/apidocs/delivery/en/#aggregate-trade-streams
917
927
  :param str symbol: unified symbol of the market to fetch trades for
918
928
  :param int [since]: timestamp in ms of the earliest trade to fetch
919
929
  :param int [limit]: the maximum amount of trades to fetch
920
930
  :param dict [params]: extra parameters specific to the exchange API endpoint
931
+ :param str [params.name]: the name of the method to call, 'trade' or 'aggTrade', default is 'trade'
921
932
  :returns dict[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
922
933
  """
934
+ params['callerMethodName'] = 'watchTrades'
923
935
  return await self.watch_trades_for_symbols([symbol], since, limit, params)
924
936
 
925
937
  def parse_ws_trade(self, trade, market=None) -> Trade:
@@ -1166,6 +1178,7 @@ class binance(ccxt.async_support.binance):
1166
1178
  subscribe = {
1167
1179
  'id': requestId,
1168
1180
  }
1181
+ params = self.omit(params, 'callerMethodName')
1169
1182
  symbol, timeframe, candles = await self.watch_multiple(url, messageHashes, self.extend(request, params), messageHashes, subscribe)
1170
1183
  if self.newUpdates:
1171
1184
  limit = candles.getLimit(symbol, limit)
ccxt/pro/bitfinex.py CHANGED
@@ -62,6 +62,7 @@ class bitfinex(ccxt.async_support.bitfinex):
62
62
  async def watch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
63
63
  """
64
64
  get the list of most recent trades for a particular symbol
65
+ :see: https://docs.bitfinex.com/v1/reference/ws-public-trades
65
66
  :param str symbol: unified symbol of the market to fetch trades for
66
67
  :param int [since]: timestamp in ms of the earliest trade to fetch
67
68
  :param int [limit]: the maximum amount of trades to fetch
@@ -78,6 +79,7 @@ class bitfinex(ccxt.async_support.bitfinex):
78
79
  async def watch_ticker(self, symbol: str, params={}) -> Ticker:
79
80
  """
80
81
  watches a price ticker, a statistical calculation with the information calculated over the past 24 hours for a specific market
82
+ :see: https://docs.bitfinex.com/v1/reference/ws-public-ticker
81
83
  :param str symbol: unified symbol of the market to fetch the ticker for
82
84
  :param dict [params]: extra parameters specific to the exchange API endpoint
83
85
  :returns dict: a `ticker structure <https://docs.ccxt.com/#/?id=ticker-structure>`
@@ -238,6 +240,7 @@ class bitfinex(ccxt.async_support.bitfinex):
238
240
  async def watch_order_book(self, symbol: str, limit: Int = None, params={}) -> OrderBook:
239
241
  """
240
242
  watches information on open orders with bid(buy) and ask(sell) prices, volumes and other data
243
+ :see: https://docs.bitfinex.com/v1/reference/ws-public-order-books
241
244
  :param str symbol: unified symbol of the market to fetch the order book for
242
245
  :param int [limit]: the maximum amount of order book entries to return
243
246
  :param dict [params]: extra parameters specific to the exchange API endpoint
@@ -430,6 +433,8 @@ class bitfinex(ccxt.async_support.bitfinex):
430
433
  async def watch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
431
434
  """
432
435
  watches information on multiple orders made by the user
436
+ :see: https://docs.bitfinex.com/v1/reference/ws-auth-order-updates
437
+ :see: https://docs.bitfinex.com/v1/reference/ws-auth-order-snapshots
433
438
  :param str symbol: unified market symbol of the market orders were made in
434
439
  :param int [since]: the earliest time in ms to fetch orders for
435
440
  :param int [limit]: the maximum number of order structures to retrieve
ccxt/test/tests_async.py CHANGED
@@ -3,7 +3,7 @@
3
3
  import asyncio
4
4
 
5
5
 
6
- from tests_helpers import AuthenticationError, NotSupported, InvalidProxySettings, ExchangeNotAvailable, OperationFailed, OnMaintenance, get_cli_arg_value, baseMainTestClass, dump, json_parse, json_stringify, convert_ascii, io_file_exists, io_file_read, io_dir_read, call_method, call_method_sync, call_exchange_method_dynamically, call_exchange_method_dynamically_sync, exception_message, exit_script, get_exchange_prop, set_exchange_prop, init_exchange, get_test_files_sync, get_test_files, set_fetch_response, is_null_value, close # noqa: F401
6
+ from tests_helpers import AuthenticationError, NotSupported, InvalidProxySettings, ExchangeNotAvailable, OperationFailed, OnMaintenance, get_cli_arg_value, baseMainTestClass, dump, json_parse, json_stringify, convert_ascii, io_file_exists, io_file_read, io_dir_read, call_method, call_method_sync, call_exchange_method_dynamically, call_exchange_method_dynamically_sync, get_root_exception, exception_message, exit_script, get_exchange_prop, set_exchange_prop, init_exchange, get_test_files_sync, get_test_files, set_fetch_response, is_null_value, close # noqa: F401
7
7
 
8
8
  class testMainClass(baseMainTestClass):
9
9
  def parse_cli_args(self):
@@ -261,7 +261,8 @@ class testMainClass(baseMainTestClass):
261
261
  try:
262
262
  await self.test_method(method_name, exchange, args, is_public)
263
263
  return True
264
- except Exception as e:
264
+ except Exception as ex:
265
+ e = get_root_exception(ex)
265
266
  is_load_markets = (method_name == 'loadMarkets')
266
267
  is_auth_error = (isinstance(e, AuthenticationError))
267
268
  is_not_supported = (isinstance(e, NotSupported))
@@ -217,6 +217,9 @@ def exception_message(exc):
217
217
  message = message[0:LOG_CHARS_LENGTH]
218
218
  return message
219
219
 
220
+ # stub for c#
221
+ def get_root_exception(exc):
222
+ return exc
220
223
 
221
224
  def exit_script(code=0):
222
225
  exit(code)
ccxt/test/tests_sync.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
- from tests_helpers import AuthenticationError, NotSupported, InvalidProxySettings, ExchangeNotAvailable, OperationFailed, OnMaintenance, get_cli_arg_value, baseMainTestClass, dump, json_parse, json_stringify, convert_ascii, io_file_exists, io_file_read, io_dir_read, call_method, call_method_sync, call_exchange_method_dynamically, call_exchange_method_dynamically_sync, exception_message, exit_script, get_exchange_prop, set_exchange_prop, init_exchange, get_test_files_sync, get_test_files, set_fetch_response, is_null_value, close # noqa: F401
3
+ from tests_helpers import AuthenticationError, NotSupported, InvalidProxySettings, ExchangeNotAvailable, OperationFailed, OnMaintenance, get_cli_arg_value, baseMainTestClass, dump, json_parse, json_stringify, convert_ascii, io_file_exists, io_file_read, io_dir_read, call_method, call_method_sync, call_exchange_method_dynamically, call_exchange_method_dynamically_sync, get_root_exception, exception_message, exit_script, get_exchange_prop, set_exchange_prop, init_exchange, get_test_files_sync, get_test_files, set_fetch_response, is_null_value, close # noqa: F401
4
4
 
5
5
  class testMainClass(baseMainTestClass):
6
6
  def parse_cli_args(self):
@@ -258,7 +258,8 @@ class testMainClass(baseMainTestClass):
258
258
  try:
259
259
  self.test_method(method_name, exchange, args, is_public)
260
260
  return True
261
- except Exception as e:
261
+ except Exception as ex:
262
+ e = get_root_exception(ex)
262
263
  is_load_markets = (method_name == 'loadMarkets')
263
264
  is_auth_error = (isinstance(e, AuthenticationError))
264
265
  is_not_supported = (isinstance(e, NotSupported))
ccxt/woo.py CHANGED
@@ -155,7 +155,7 @@ class woo(Exchange, ImplicitAPI):
155
155
  'https://support.woo.org/hc/en-001/articles/4404611795353--Trading-Fees',
156
156
  ],
157
157
  'referral': {
158
- 'url': 'https://x.woo.org/register?ref=YWOWC96B',
158
+ 'url': 'https://x.woo.org/register?ref=DIJT0CNL',
159
159
  'discount': 0.35,
160
160
  },
161
161
  },
ccxt/yobit.py CHANGED
@@ -541,31 +541,7 @@ class yobit(Exchange, ImplicitAPI):
541
541
  'info': ticker,
542
542
  }, market)
543
543
 
544
- def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
545
- """
546
- :see: https://yobit.net/en/api
547
- fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
548
- :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
549
- :param dict [params]: extra parameters specific to the exchange API endpoint
550
- :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
551
- """
552
- if symbols is None:
553
- raise ArgumentsRequired(self.id + ' fetchTickers() requires "symbols" argument')
554
- self.load_markets()
555
- symbols = self.market_symbols(symbols)
556
- ids = None
557
- if symbols is None:
558
- ids = self.ids
559
- else:
560
- ids = self.market_ids(symbols)
561
- idsLength: number = len(ids)
562
- idsString = '-'.join(ids)
563
- maxLength = self.safe_integer(self.options, 'maxUrlLength', 2048)
564
- # max URL length is 2048 symbols, including http schema, hostname, tld, etc...
565
- lenghtOfBaseUrl = 30 # the url including api-base and endpoint dir is 30 chars
566
- actualLength = len(idsString) + lenghtOfBaseUrl
567
- if actualLength > maxLength:
568
- raise ArgumentsRequired(self.id + ' fetchTickers() is being requested for ' + str(idsLength) + ' markets(which has an URL length of ' + str(actualLength) + ' characters), but it exceedes max URL length(' + str(maxLength) + '), please pass limisted symbols array to fetchTickers to fit in one request')
544
+ def fetch_tickers_helper(self, idsString: str, params={}) -> Tickers:
569
545
  request: dict = {
570
546
  'pair': idsString,
571
547
  }
@@ -578,7 +554,53 @@ class yobit(Exchange, ImplicitAPI):
578
554
  market = self.safe_market(id)
579
555
  symbol = market['symbol']
580
556
  result[symbol] = self.parse_ticker(ticker, market)
581
- return self.filter_by_array_tickers(result, 'symbol', symbols)
557
+ return result
558
+
559
+ def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
560
+ """
561
+ :see: https://yobit.net/en/api
562
+ fetches price tickers for multiple markets, statistical information calculated over the past 24 hours for each market
563
+ :param str[]|None symbols: unified symbols of the markets to fetch the ticker for, all market tickers are returned if not assigned
564
+ :param dict [params]: extra parameters specific to the exchange API endpoint
565
+ :param dict [params.all]: you can set to `true` for convenience to fetch all tickers from self exchange by sending multiple requests
566
+ :returns dict: a dictionary of `ticker structures <https://docs.ccxt.com/#/?id=ticker-structure>`
567
+ """
568
+ allSymbols = None
569
+ allSymbols, params = self.handle_param_bool(params, 'all', False)
570
+ if symbols is None and not allSymbols:
571
+ raise ArgumentsRequired(self.id + ' fetchTickers() requires "symbols" argument or use `params["all"] = True` to send multiple requests for all markets')
572
+ self.load_markets()
573
+ promises = []
574
+ maxLength = self.safe_integer(self.options, 'maxUrlLength', 2048)
575
+ # max URL length is 2048 symbols, including http schema, hostname, tld, etc...
576
+ lenghtOfBaseUrl = 40 # safe space for the url including api-base and endpoint dir is 30 chars
577
+ if allSymbols:
578
+ symbols = self.symbols
579
+ ids = ''
580
+ for i in range(0, len(self.ids)):
581
+ id = self.ids[i]
582
+ prefix = '' if (ids == '') else '-'
583
+ ids += prefix + id
584
+ if len(ids) > maxLength:
585
+ promises.append(self.fetch_tickers_helper(ids, params))
586
+ ids = ''
587
+ if ids != '':
588
+ promises.append(self.fetch_tickers_helper(ids, params))
589
+ else:
590
+ symbols = self.market_symbols(symbols)
591
+ ids = self.market_ids(symbols)
592
+ idsLength: number = len(ids)
593
+ idsString = '-'.join(ids)
594
+ actualLength = len(idsString) + lenghtOfBaseUrl
595
+ if actualLength > maxLength:
596
+ raise ArgumentsRequired(self.id + ' fetchTickers() is being requested for ' + str(idsLength) + ' markets(which has an URL length of ' + str(actualLength) + ' characters), but it exceedes max URL length(' + str(maxLength) + '), please pass limisted symbols array to fetchTickers to fit in one request')
597
+ promises.append(self.fetch_tickers_helper(idsString, params))
598
+ resultAll = promises
599
+ finalResult = {}
600
+ for i in range(0, len(resultAll)):
601
+ result = self.filter_by_array_tickers(resultAll[i], 'symbol', symbols)
602
+ finalResult = self.extend(finalResult, result)
603
+ return finalResult
582
604
 
583
605
  def fetch_ticker(self, symbol: str, params={}) -> Ticker:
584
606
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.3.73
3
+ Version: 4.3.74
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
@@ -102,7 +102,7 @@ Current feature list:
102
102
  | [![kucoinfutures](https://user-images.githubusercontent.com/1294454/147508995-9e35030a-d046-43a1-a006-6fabd981b554.jpg)](https://futures.kucoin.com/?rcode=E5wkqe) | kucoinfutures | [KuCoin Futures](https://futures.kucoin.com/?rcode=E5wkqe) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs.kucoin.com/futures) | cex | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | |
103
103
  | [![mexc](https://user-images.githubusercontent.com/1294454/137283979-8b2a818d-8633-461b-bfca-de89e8c446b2.jpg)](https://www.mexc.com/register?inviteCode=mexc-1FQ1GNu1) | mexc | [MEXC Global](https://www.mexc.com/register?inviteCode=mexc-1FQ1GNu1) | [![API Version 3](https://img.shields.io/badge/3-lightgray)](https://mexcdevelop.github.io/apidocs/) | cex | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | |
104
104
  | [![okx](https://user-images.githubusercontent.com/1294454/152485636-38b19e4a-bece-4dec-979a-5982859ffc04.jpg)](https://www.okx.com/join/CCXT2023) | okx | [OKX](https://www.okx.com/join/CCXT2023) | [![API Version 5](https://img.shields.io/badge/5-lightgray)](https://www.okx.com/docs-v5/en/) | cex | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | [![Sign up with OKX using CCXT's referral link for a 20% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d20%25&color=orange)](https://www.okx.com/join/CCXT2023) |
105
- | [![woo](https://user-images.githubusercontent.com/1294454/150730761-1a00e5e0-d28c-480f-9e65-089ce3e6ef3b.jpg)](https://x.woo.org/register?ref=YWOWC96B) | woo | [WOO X](https://x.woo.org/register?ref=YWOWC96B) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs.woo.org/) | cex | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | [![Sign up with WOO X using CCXT's referral link for a 35% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d35%25&color=orange)](https://x.woo.org/register?ref=YWOWC96B) |
105
+ | [![woo](https://user-images.githubusercontent.com/1294454/150730761-1a00e5e0-d28c-480f-9e65-089ce3e6ef3b.jpg)](https://x.woo.org/register?ref=DIJT0CNL) | woo | [WOO X](https://x.woo.org/register?ref=DIJT0CNL) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs.woo.org/) | cex | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | [![Sign up with WOO X using CCXT's referral link for a 35% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d35%25&color=orange)](https://x.woo.org/register?ref=DIJT0CNL) |
106
106
  | [![woofipro](https://github.com/ccxt/ccxt/assets/43336371/b1e7b348-a0fc-4605-8b7f-91176958fd69)](https://dex.woo.org/en/trade?ref=CCXT) | woofipro | [WOOFI PRO](https://dex.woo.org/en/trade?ref=CCXT) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://orderly.network/docs/build-on-evm/building-on-evm) | dex | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) | [![Sign up with WOOFI PRO using CCXT's referral link for a 5% discount!](https://img.shields.io/static/v1?label=Fee&message=%2d5%25&color=orange)](https://dex.woo.org/en/trade?ref=CCXT) |
107
107
 
108
108
  ## Supported Cryptocurrency Exchanges
@@ -207,7 +207,7 @@ The CCXT library currently supports the following 102 cryptocurrency exchange ma
207
207
  | [![wavesexchange](https://user-images.githubusercontent.com/1294454/84547058-5fb27d80-ad0b-11ea-8711-78ac8b3c7f31.jpg)](https://wx.network) | wavesexchange | [Waves.Exchange](https://wx.network) | [![API Version *](https://img.shields.io/badge/*-lightgray)](https://docs.wx.network) | dex | | |
208
208
  | [![wazirx](https://user-images.githubusercontent.com/1294454/148647666-c109c20b-f8ac-472f-91c3-5f658cb90f49.jpeg)](https://wazirx.com/invite/k7rrnks5) | wazirx | [WazirX](https://wazirx.com/invite/k7rrnks5) | [![API Version 2](https://img.shields.io/badge/2-lightgray)](https://docs.wazirx.com/#public-rest-api-for-wazirx) | cex | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
209
209
  | [![whitebit](https://user-images.githubusercontent.com/1294454/66732963-8eb7dd00-ee66-11e9-849b-10d9282bb9e0.jpg)](https://whitebit.com/referral/d9bdf40e-28f2-4b52-b2f9-cd1415d82963) | whitebit | [WhiteBit](https://whitebit.com/referral/d9bdf40e-28f2-4b52-b2f9-cd1415d82963) | [![API Version 4](https://img.shields.io/badge/4-lightgray)](https://github.com/whitebit-exchange/api-docs) | cex | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
210
- | [![woo](https://user-images.githubusercontent.com/1294454/150730761-1a00e5e0-d28c-480f-9e65-089ce3e6ef3b.jpg)](https://x.woo.org/register?ref=YWOWC96B) | woo | [WOO X](https://x.woo.org/register?ref=YWOWC96B) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs.woo.org/) | cex | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
210
+ | [![woo](https://user-images.githubusercontent.com/1294454/150730761-1a00e5e0-d28c-480f-9e65-089ce3e6ef3b.jpg)](https://x.woo.org/register?ref=DIJT0CNL) | woo | [WOO X](https://x.woo.org/register?ref=DIJT0CNL) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://docs.woo.org/) | cex | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
211
211
  | [![woofipro](https://github.com/ccxt/ccxt/assets/43336371/b1e7b348-a0fc-4605-8b7f-91176958fd69)](https://dex.woo.org/en/trade?ref=CCXT) | woofipro | [WOOFI PRO](https://dex.woo.org/en/trade?ref=CCXT) | [![API Version 1](https://img.shields.io/badge/1-lightgray)](https://orderly.network/docs/build-on-evm/building-on-evm) | dex | [![CCXT Certified](https://img.shields.io/badge/CCXT-Certified-green.svg)](https://github.com/ccxt/ccxt/wiki/Certification) | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
212
212
  | [![xt](https://user-images.githubusercontent.com/14319357/232636712-466df2fc-560a-4ca4-aab2-b1d954a58e24.jpg)](https://www.xt.com/en/accounts/register?ref=9PTM9VW) | xt | [XT](https://www.xt.com/en/accounts/register?ref=9PTM9VW) | [![API Version 4](https://img.shields.io/badge/4-lightgray)](https://doc.xt.com/) | cex | | [![CCXT Pro](https://img.shields.io/badge/CCXT-Pro-black)](https://ccxt.pro) |
213
213
  | [![yobit](https://user-images.githubusercontent.com/1294454/27766910-cdcbfdae-5eea-11e7-9859-03fea873272d.jpg)](https://www.yobit.net) | yobit | [YoBit](https://www.yobit.net) | [![API Version 3](https://img.shields.io/badge/3-lightgray)](https://www.yobit.net/en/api/) | cex | | |
@@ -270,13 +270,13 @@ console.log(version, Object.keys(exchanges));
270
270
 
271
271
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
272
272
 
273
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.73/dist/ccxt.browser.min.js
274
- * unpkg: https://unpkg.com/ccxt@4.3.73/dist/ccxt.browser.min.js
273
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.74/dist/ccxt.browser.min.js
274
+ * unpkg: https://unpkg.com/ccxt@4.3.74/dist/ccxt.browser.min.js
275
275
 
276
276
  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.
277
277
 
278
278
  ```HTML
279
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.73/dist/ccxt.browser.min.js"></script>
279
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.74/dist/ccxt.browser.min.js"></script>
280
280
  ```
281
281
 
282
282
  Creates a global `ccxt` object:
@@ -1,10 +1,10 @@
1
- ccxt/__init__.py,sha256=2EYKdRgNkEb8Ls8N4qVAo5B-EuJtmsyRfzulCq7Nqno,16417
2
- ccxt/ace.py,sha256=5DwQ9rmdDCRh-l-65Mi2Ei_o1GqR0xqWZiiU7Lz-LvM,42379
1
+ ccxt/__init__.py,sha256=V8R0ChX9psJYlcMvltx_xE2EaEv7PBUWOZdCqkKnPBo,16417
2
+ ccxt/ace.py,sha256=Gee4ymA83iAuBFm3J8NaTb7qmu9buV2trA676KCtSVg,42383
3
3
  ccxt/alpaca.py,sha256=HQuhQZSFGRlT-BaCUSEZmxpzYp6tll2zn63qn3gTmoU,47470
4
4
  ccxt/ascendex.py,sha256=4aEwibO_me6khr66z8JFqDBxe2gtFOWIFBE7ulBEJPs,151933
5
5
  ccxt/bequant.py,sha256=RBiAmaTbL35DgiV3Hl6uchLUd78V0z1T9riTlNsrpdc,1174
6
6
  ccxt/bigone.py,sha256=PBciIENMufQQ6cxukdze5hhQ5vFOqBtMHDfTwT4nUuY,93086
7
- ccxt/binance.py,sha256=L7zUHKc52BH7UHtOiAhi5qs0_Y0d4TSPmnDlQLXO5Js,633491
7
+ ccxt/binance.py,sha256=oSG3ug4JdLv0U8hSB3ayhqDoci2A4sQOG7IX6OArUIg,641495
8
8
  ccxt/binancecoinm.py,sha256=arFnEh8mErSyi23eVPWE4iwoT7PWQyxGGVJCKCy6UJY,1702
9
9
  ccxt/binanceus.py,sha256=hdcT4OnadcdFFFjF3GtM0nWv90jqojqwdVS3xWGuW40,9163
10
10
  ccxt/binanceusdm.py,sha256=bAPcJj5HLxoCdPolriM8sJpoTBwbV78vBTbKRmWhNP4,2632
@@ -35,7 +35,7 @@ ccxt/btcalpha.py,sha256=UcCCDZ_7EM-Q2tHU1IQPEA2DErFsLhrSfX-Oy-Q2uL4,36715
35
35
  ccxt/btcbox.py,sha256=9-P15L-OiZRzz0ZOtgO3bf73kuHro9u3NYf3QjeYv4k,27744
36
36
  ccxt/btcmarkets.py,sha256=0gMC0vvmuDJwcnllHMUZsQRV6QWA1-Cbq1N1F9rIUW8,52697
37
37
  ccxt/btcturk.py,sha256=bQ8sJq5iEj9oq2R17uDadPWKcnIQG8id5UmdlpHfFy8,36992
38
- ccxt/bybit.py,sha256=lr0sMTe6j-A4N7Dj-whSCp4wcCKtAgXjJK_VgXu637s,415852
38
+ ccxt/bybit.py,sha256=A0y3gqD38urhUDSNrFmss-wRClWMLJsXDdZBvq7UQlQ,415853
39
39
  ccxt/cex.py,sha256=YQtARIBP7cY3y-AqRarEH_mVh7_ftt18jLebhpL3hxQ,70084
40
40
  ccxt/coinbase.py,sha256=OLcnNdnOxnbTY54BEvptJCysDBU3ZZGw6eJcHalaFFc,217105
41
41
  ccxt/coinbaseadvanced.py,sha256=d5g6nRx-NCcCwZDdtp8FsI2D-pRjSvnAP9ISSKY_nCQ,538
@@ -102,10 +102,10 @@ ccxt/vertex.py,sha256=lHM2VbZCIYS4EeJ7Y9KoZcEepF7Cue7YITItyNXLiqk,121703
102
102
  ccxt/wavesexchange.py,sha256=8KrV-euIdDeARQ-h-T-nTlFJ9hk6TLuwGl8U7Xr_Lgk,114825
103
103
  ccxt/wazirx.py,sha256=LVHNdononi8FrZpT0pYiJoS-NrNi7_uIZ6Qbu8dJRPc,52405
104
104
  ccxt/whitebit.py,sha256=ZkM8nGbqqiX6Aon-CwXileEE_9dhK3kVrJOSk1SBw7E,118768
105
- ccxt/woo.py,sha256=V-EJ6EJC039dmJ-WFkltyP9l3wquxfVtmXaaoYH8Dbg,153028
105
+ ccxt/woo.py,sha256=NJejIgZqXPsVM3pIffDXbYOeaLDzFnfxR3tO3Ksf9pM,153028
106
106
  ccxt/woofipro.py,sha256=JQdGizBIOXPmCHnKZsH71CfzCum1_mNCpFymV-JaX-U,115350
107
107
  ccxt/xt.py,sha256=esWHEOeI7Kbm53GsZB-7Ds34yvyoJjanL_MIBvADuIE,202646
108
- ccxt/yobit.py,sha256=CX5ktS3-oYItrbdsW9lJqwz4IqTKKqS30djofSkGInc,53379
108
+ ccxt/yobit.py,sha256=q1oj-wf0VwNw3U7kC5AOyHRSxWVZO6s8xGscBJiSLhI,54553
109
109
  ccxt/zaif.py,sha256=LgeOsvAo4ShQW1s-RidgUYK4DnRU-Dk0eJG0Ca6M_9U,28862
110
110
  ccxt/zonda.py,sha256=KZfv46H6YsVpTQLSt4BvMiGFQr0WRLmbUpeODVv21O0,81419
111
111
  ccxt/abstract/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -114,10 +114,10 @@ ccxt/abstract/alpaca.py,sha256=vgzqnRTvEnAbLYgfDzGpmVUZxRLWC8BWA6nQ16m-xXY,10382
114
114
  ccxt/abstract/ascendex.py,sha256=5A8Zgq77jsdHlEzlTW_2nDybUUVfNVVOu6BgY3TWqRM,11394
115
115
  ccxt/abstract/bequant.py,sha256=OTBtNu3DQeAqAC_Lbi0NePUs-ZQQllcLrVDI2G04nwQ,15601
116
116
  ccxt/abstract/bigone.py,sha256=bQdIXCVkKgnZ7ZjpQ1widGDlXNe0PtP_12EQKoEN9z0,4895
117
- ccxt/abstract/binance.py,sha256=n7gjIFw9GIi82I-KVIDmJWUzap7LHfvm5MmqMee2y8k,93144
118
- ccxt/abstract/binancecoinm.py,sha256=n7gjIFw9GIi82I-KVIDmJWUzap7LHfvm5MmqMee2y8k,93144
119
- ccxt/abstract/binanceus.py,sha256=bFB1RjmG0VBfZpkAes2-ZCHgX_USrKrhCVWqsjv_vBQ,99864
120
- ccxt/abstract/binanceusdm.py,sha256=n7gjIFw9GIi82I-KVIDmJWUzap7LHfvm5MmqMee2y8k,93144
117
+ ccxt/abstract/binance.py,sha256=mCCkDgqU2KgtU5UMnZLApbezbWLgJUFEzZUMAlsVRRw,93740
118
+ ccxt/abstract/binancecoinm.py,sha256=mCCkDgqU2KgtU5UMnZLApbezbWLgJUFEzZUMAlsVRRw,93740
119
+ ccxt/abstract/binanceus.py,sha256=nh45H6Wb2xD6hVAhBP8s5CJYoiuiPEcCzVZLAm0tCog,100460
120
+ ccxt/abstract/binanceusdm.py,sha256=mCCkDgqU2KgtU5UMnZLApbezbWLgJUFEzZUMAlsVRRw,93740
121
121
  ccxt/abstract/bingx.py,sha256=Rb93j2sCYAi0egAE4TAAOG7XuC5XdHQaGQZC9V-meqQ,20662
122
122
  ccxt/abstract/bit2c.py,sha256=np6i756kSB5dO3Nj6POLKxkWkpYcsGg-4LS8BwPrizI,2830
123
123
  ccxt/abstract/bitbank.py,sha256=hrHsD7Uvtyy2o2lzCHau3-eNq16pnZ3-YDQ6Tq_sxYU,2735
@@ -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=H06hKcGHRyroCEh_Rc-gLeS-s5bRWlR_PL5DqdsScP8,16230
222
- ccxt/async_support/ace.py,sha256=GxXMtM5Como1NVqXhOqJntxhLO1w9pNe1yYbQP_4ylQ,42603
221
+ ccxt/async_support/__init__.py,sha256=2nsEj3_izz4A-22T63N2zBmS8uxUBiD-7ms5dblttp8,16230
222
+ ccxt/async_support/ace.py,sha256=zBmLUKH691a2BH1sPzlJPg-uO7lD6Ys92Rv8WSzNtoo,42607
223
223
  ccxt/async_support/alpaca.py,sha256=495vDvdF1IWlsh9QhUnMtkMuINdD0EzeFGlUVqCf8TE,47682
224
224
  ccxt/async_support/ascendex.py,sha256=LK259BdUqU0_STGRH6DmTgaR-7lXqFpZHFVACf2um5c,152721
225
225
  ccxt/async_support/bequant.py,sha256=1hTwHovo1bW1XTIc8ZKjvJ-Xg6LfmpGdzT7TepykaVM,1188
226
226
  ccxt/async_support/bigone.py,sha256=PZcs9u6FI6uAyJKiiNGIGDA-uainz4aKEOrC1Q6KIk4,93540
227
- ccxt/async_support/binance.py,sha256=74fUcNb7frTFIUmYjGU61j2XPaW1Cn69OWNQPdjoTuM,636207
227
+ ccxt/async_support/binance.py,sha256=Gpr1ixczhWgduKTuL2399I5i4Z3-8H4oHuhCVoyGv7Y,644217
228
228
  ccxt/async_support/binancecoinm.py,sha256=yeE73xG5UXD_X3VPul6DMGnV_mgJfWYskpas1BUDdCU,1740
229
229
  ccxt/async_support/binanceus.py,sha256=c-K3Tk7LaRJjmYdCx8vBOqsx01uXrtvt0PC2ekBiD0g,9177
230
230
  ccxt/async_support/binanceusdm.py,sha256=8ugRkx7vyYmn67wdkEEf2f-DFMGAoC4t09usKlPVNyw,2670
@@ -255,7 +255,7 @@ ccxt/async_support/btcalpha.py,sha256=DgzrJ6cczUCDZr-QLUxMpazeudEFdQ_OzXiQiJM4Hb
255
255
  ccxt/async_support/btcbox.py,sha256=FGIj8il6VZL56_dDYsAMwp4DpdKNt_vbMXV6VZ2boCI,27968
256
256
  ccxt/async_support/btcmarkets.py,sha256=x1-s5uVioHyvNJoBxhxP8eUUslTDwQnZMU0FWfu1Fd4,53047
257
257
  ccxt/async_support/btcturk.py,sha256=P3bg0XG0sAi-8ge9ZFzQqZHsoGOGfxBjkhIDo4VPSK4,37210
258
- ccxt/async_support/bybit.py,sha256=NZcsBUFynsqqADGCMNGel95kqnPSA4kmjAsk8D56t-E,417692
258
+ ccxt/async_support/bybit.py,sha256=Y4M2hjFVUS47hNd_32Cab4ZrebvmdzK4gZ1D9hq1JVI,417693
259
259
  ccxt/async_support/cex.py,sha256=5KZ9qt4WsUAkH2rkHn7zW7SwlB9FumruLELdKF4LFoE,70434
260
260
  ccxt/async_support/coinbase.py,sha256=RMcQFh7tSzTe8QqFaz9WmH2Op8sXD8jWpZfLBt_13QQ,218259
261
261
  ccxt/async_support/coinbaseadvanced.py,sha256=Kupwnuxiu_qTjwCNV2asacoDUNFQvcaHNAznUJPhdQs,552
@@ -322,14 +322,14 @@ ccxt/async_support/vertex.py,sha256=6eOWWpuDaGHhSMkOb1CR7ZhlnaMVNWVLoIKOK_W4mT4,
322
322
  ccxt/async_support/wavesexchange.py,sha256=kdF7Nm5a34mtgIj2HWTLuV3plt4K3EBKMpLENIxtoMk,115375
323
323
  ccxt/async_support/wazirx.py,sha256=bnUpw9be3o4l2Hxm3jcfNXn5bMyZlgqoG8BGPusuIzs,52707
324
324
  ccxt/async_support/whitebit.py,sha256=JpY0YJHVmvg0OOqRAXRfRV_KuscYglWQ1YVt3DkHrsg,119418
325
- ccxt/async_support/woo.py,sha256=nQ3vgoUSuwTnwDuARt1CFn6471NsIFOMHOqq-CErDrQ,153996
325
+ ccxt/async_support/woo.py,sha256=JjarWyUMmZ2X2UaKFhHyo-SD_mk5kYIWkYoSUdIe3g0,153996
326
326
  ccxt/async_support/woofipro.py,sha256=xXfZj56dOmUZ67z7tsRiHL-XVtFlst-UXRPh6qRvrE0,116030
327
327
  ccxt/async_support/xt.py,sha256=9k__X07qzgB_NwSplLfJL4_4eKtHslL8Qlfv6xBwZKU,203800
328
- ccxt/async_support/yobit.py,sha256=rndL_bMH17YAFCGX__ZPid-Rym1sKoikKO2At7Mbe2Y,53663
328
+ ccxt/async_support/yobit.py,sha256=JuH_yClCl_cd5L-BMTt3MPAvIF61Wpqc3W7H-fno6Hs,54881
329
329
  ccxt/async_support/zaif.py,sha256=-ZTr8M2JaIRCL90VrbCDXBMAsZwbiwsFChSQ2rWODuQ,29044
330
330
  ccxt/async_support/zonda.py,sha256=jncr6Wg12S72CTpu6mCKCse1pm1f8oefVQurQSrFvP0,81733
331
331
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
332
- ccxt/async_support/base/exchange.py,sha256=jgm-Xitn0hlLOQewPUwpNMFzA_q6t5GmicgBjZnwrTg,110793
332
+ ccxt/async_support/base/exchange.py,sha256=-Vr3rDTBf_ZgT1xSsVh4SANOOOAg768Impv1cboAjaw,110793
333
333
  ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
334
334
  ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
335
335
  ccxt/async_support/base/ws/aiohttp_client.py,sha256=5IEiT0elWI9a7Vr-KV0jgmlbpLJWBzIlrLaCkTKGaqY,5752
@@ -343,20 +343,20 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9produGjmB
343
343
  ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
344
344
  ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
345
345
  ccxt/base/errors.py,sha256=tosnf1tDaBn4YMCbWVNWyDYzqft-ImVtyjqJb6q83Y4,4369
346
- ccxt/base/exchange.py,sha256=R_PInNFvq-2ftTJwGfMDxjJfLKsBo0fEnLAvDhcGgak,294200
346
+ ccxt/base/exchange.py,sha256=UYrcDNip7_HsHo00hJhqGvMHg5pmTBnnHRGfsbohe40,294200
347
347
  ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
348
348
  ccxt/base/types.py,sha256=TaP_RElKjGEZWuzyp4o4u2YhREyTG3rUeVT6gDffY9A,9613
349
- ccxt/pro/__init__.py,sha256=wU_d3a7TfttgX6NaFyFQnPbQRiAu1SZWnTeu-taajII,7608
350
- ccxt/pro/alpaca.py,sha256=TGfyNTaYawHIUWDzoVKXitCPMWO1wKn9VcgmdWMex58,27212
349
+ ccxt/pro/__init__.py,sha256=5RB2uTufCZu4RNhDJBqlzjsb6s5q9YGHFA7TyU8obVE,7608
350
+ ccxt/pro/alpaca.py,sha256=xh1yg1Ok-Zh_Mfx-MBjNrfJDs6MUU0exFfEj3GuQPC4,27631
351
351
  ccxt/pro/ascendex.py,sha256=181FIeztchLqGmgecRJEN8F8xEM45D5aMKhC-5nuNfU,35467
352
352
  ccxt/pro/bequant.py,sha256=33OEUWBi4D9-2w8CmkwN3aF1qS-AlLqX3pxrWwNbXPY,1552
353
- ccxt/pro/binance.py,sha256=X86L0f9by7Uk8vTyva6QRZi_UqhgVsSZo7AkI-el1B0,174071
353
+ ccxt/pro/binance.py,sha256=3xB2V7DJ6Y5SR7nr9loh03-j7c3KQdK3_Dcm1KYJTBo,175118
354
354
  ccxt/pro/binancecoinm.py,sha256=LlgF4rXHHrsQMaklhTEzSiE6U9V25AjHHg_DRat7Mf0,1036
355
355
  ccxt/pro/binanceus.py,sha256=_IXpS_wyH0nEtsLR7cJLtrUlsNQoG0MSUVo3PV0RDDc,1946
356
356
  ccxt/pro/binanceusdm.py,sha256=lLdOv0d-lM-1wfCc_y_POb6GdmVIiX7PFzmKTWsVyNw,1512
357
357
  ccxt/pro/bingx.py,sha256=2wFRTui3vj2QGmisn--hjug0bRAgt9Mvru9AiWpXmZo,53911
358
358
  ccxt/pro/bitcoincom.py,sha256=zAX6hiz4hS6Un8dSGp88rpnvItxQHfNmsfF0IZ2xIVA,1181
359
- ccxt/pro/bitfinex.py,sha256=55-BovgmV3cHjys5GSRk36RiNQtGgW4NWPI1goRrDic,24890
359
+ ccxt/pro/bitfinex.py,sha256=m4ERTUt7QIZhAYu8NP818wOHSLRi2vK-_Z5-LXD8zjA,25257
360
360
  ccxt/pro/bitfinex2.py,sha256=kZVHZwfu1_E27p9Cx55uDVGcEPA6Oy-BQk8t2fbwOmg,43058
361
361
  ccxt/pro/bitget.py,sha256=15JcegpMeu1HROmDtuTP3WmUw3lEoV4TYjBfWAWnCkk,74754
362
362
  ccxt/pro/bithumb.py,sha256=dqYKWebxFg4rsP7jg3oBnCUBcpZAoqAmZsozAU9pYds,16835
@@ -646,12 +646,12 @@ ccxt/static_dependencies/typing_extensions/typing_extensions.py,sha256=P042Op4VQ
646
646
  ccxt/static_dependencies/typing_inspect/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
647
647
  ccxt/static_dependencies/typing_inspect/typing_inspect.py,sha256=5gIWomLPfuDpgd3gX1GlnX0MuXM3VorR4j2W2qXORiQ,28269
648
648
  ccxt/test/__init__.py,sha256=GKPbEcj0Rrz5HG-GUm-iY1IHhDYmlvcBXZAGk6-m2CI,141
649
- ccxt/test/tests_async.py,sha256=nZ-ElW1q1rcRat-z81x4mPERa9az9qbBVHo_RNioMMw,84617
650
- ccxt/test/tests_helpers.py,sha256=GbWfSU-0E_CKLeFNinnEHYg1LOcEgNVJT3K9e2kjOeM,10011
649
+ ccxt/test/tests_async.py,sha256=NShOLO2-HzYsh07U7aiUGssiv-AZ_p88h-NuQub9OKU,84681
650
+ ccxt/test/tests_helpers.py,sha256=xhOILoZ_x3RSfQjtKt6AQlkp9DkOtpTQe8GAUUZoM6s,10069
651
651
  ccxt/test/tests_init.py,sha256=eVwwUHujX9t4rjgo4TqEeg7DDhR1Hb_e2SJN8NVGyl0,998
652
- ccxt/test/tests_sync.py,sha256=p2u81x4O2ocpFjSz_d6HXl2QFwj5P9kZZNimIEKtbO0,83697
653
- ccxt-4.3.73.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
654
- ccxt-4.3.73.dist-info/METADATA,sha256=ECWuk0EcGkjYI1pDctkLpEv-ZG1BN610mxgVJfTFi-I,116642
655
- ccxt-4.3.73.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
656
- ccxt-4.3.73.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
657
- ccxt-4.3.73.dist-info/RECORD,,
652
+ ccxt/test/tests_sync.py,sha256=6Arr2TcJpNg9eEpH_JQeBbLzaMPlb94J1P11HGlbpPg,83761
653
+ ccxt-4.3.74.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
654
+ ccxt-4.3.74.dist-info/METADATA,sha256=VSNS5YojJZC2kR3NNYbPE_I1KzorZN3ObIJDP_XDt-0,116642
655
+ ccxt-4.3.74.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
656
+ ccxt-4.3.74.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
657
+ ccxt-4.3.74.dist-info/RECORD,,
File without changes