ccxt 4.3.31__py2.py3-none-any.whl → 4.3.33__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.31'
25
+ __version__ = '4.3.33'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
ccxt/abstract/bitget.py CHANGED
@@ -266,7 +266,7 @@ class ImplicitAPI:
266
266
  private_mix_post_v2_mix_account_set_margin = privateMixPostV2MixAccountSetMargin = Entry('v2/mix/account/set-margin', ['private', 'mix'], 'POST', {'cost': 4})
267
267
  private_mix_post_v2_mix_account_set_margin_mode = privateMixPostV2MixAccountSetMarginMode = Entry('v2/mix/account/set-margin-mode', ['private', 'mix'], 'POST', {'cost': 4})
268
268
  private_mix_post_v2_mix_account_set_position_mode = privateMixPostV2MixAccountSetPositionMode = Entry('v2/mix/account/set-position-mode', ['private', 'mix'], 'POST', {'cost': 4})
269
- private_mix_post_v2_mix_order_place_order = privateMixPostV2MixOrderPlaceOrder = Entry('v2/mix/order/place-order', ['private', 'mix'], 'POST', {'cost': 20})
269
+ private_mix_post_v2_mix_order_place_order = privateMixPostV2MixOrderPlaceOrder = Entry('v2/mix/order/place-order', ['private', 'mix'], 'POST', {'cost': 2})
270
270
  private_mix_post_v2_mix_order_click_backhand = privateMixPostV2MixOrderClickBackhand = Entry('v2/mix/order/click-backhand', ['private', 'mix'], 'POST', {'cost': 20})
271
271
  private_mix_post_v2_mix_order_batch_place_order = privateMixPostV2MixOrderBatchPlaceOrder = Entry('v2/mix/order/batch-place-order', ['private', 'mix'], 'POST', {'cost': 20})
272
272
  private_mix_post_v2_mix_order_modify_order = privateMixPostV2MixOrderModifyOrder = Entry('v2/mix/order/modify-order', ['private', 'mix'], 'POST', {'cost': 2})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.31'
7
+ __version__ = '4.3.33'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.3.31'
5
+ __version__ = '4.3.33'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -505,7 +505,7 @@ class bitget(Exchange, ImplicitAPI):
505
505
  'v2/mix/account/set-margin': 4,
506
506
  'v2/mix/account/set-margin-mode': 4,
507
507
  'v2/mix/account/set-position-mode': 4,
508
- 'v2/mix/order/place-order': 20,
508
+ 'v2/mix/order/place-order': 2,
509
509
  'v2/mix/order/click-backhand': 20,
510
510
  'v2/mix/order/batch-place-order': 20,
511
511
  'v2/mix/order/modify-order': 2,
@@ -6,7 +6,7 @@
6
6
  from ccxt.async_support.base.exchange import Exchange
7
7
  from ccxt.abstract.coinex import ImplicitAPI
8
8
  import asyncio
9
- from ccxt.base.types import Balances, Currencies, Currency, Int, IsolatedBorrowRate, Leverage, Leverages, LeverageTier, LeverageTiers, MarginModification, Market, Num, Order, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry, TransferEntries
9
+ from ccxt.base.types import Balances, Currencies, Currency, Int, IsolatedBorrowRate, Leverage, LeverageTier, LeverageTiers, MarginModification, Market, Num, Order, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry, TransferEntries
10
10
  from typing import List
11
11
  from ccxt.base.errors import ExchangeError
12
12
  from ccxt.base.errors import AuthenticationError
@@ -91,8 +91,8 @@ class coinex(Exchange, ImplicitAPI):
91
91
  'fetchIndexOHLCV': False,
92
92
  'fetchIsolatedBorrowRate': True,
93
93
  'fetchIsolatedBorrowRates': False,
94
- 'fetchLeverage': 'emulated',
95
- 'fetchLeverages': True,
94
+ 'fetchLeverage': True,
95
+ 'fetchLeverages': False,
96
96
  'fetchLeverageTiers': True,
97
97
  'fetchMarginAdjustmentHistory': True,
98
98
  'fetchMarketLeverageTiers': 'emulated',
@@ -5200,57 +5200,61 @@ class coinex(Exchange, ImplicitAPI):
5200
5200
  }
5201
5201
  return result
5202
5202
 
5203
- async def fetch_leverages(self, symbols: Strings = None, params={}) -> Leverages:
5203
+ async def fetch_leverage(self, symbol: str, params={}) -> Leverage:
5204
5204
  """
5205
- fetch the set leverage for all contract and margin markets
5206
- :see: https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot002_account007_margin_account_settings
5207
- :param str[] [symbols]: a list of unified market symbols
5205
+ fetch the set leverage for a market
5206
+ :see: https://docs.coinex.com/api/v2/assets/loan-flat/http/list-margin-interest-limit
5207
+ :param str symbol: unified market symbol
5208
5208
  :param dict [params]: extra parameters specific to the exchange API endpoint
5209
- :returns dict: a list of `leverage structures <https://docs.ccxt.com/#/?id=leverage-structure>`
5209
+ :param str params['code']: unified currency code
5210
+ :returns dict: a `leverage structure <https://docs.ccxt.com/#/?id=leverage-structure>`
5210
5211
  """
5211
5212
  await self.load_markets()
5212
- symbols = self.market_symbols(symbols)
5213
- market = None
5214
- if symbols is not None:
5215
- symbol = self.safe_value(symbols, 0)
5216
- market = self.market(symbol)
5217
- marketType = None
5218
- marketType, params = self.handle_market_type_and_params('fetchLeverages', market, params)
5219
- if marketType != 'spot':
5220
- raise NotSupported(self.id + ' fetchLeverages() supports spot margin markets only')
5221
- response = await self.v1PrivateGetMarginConfig(params)
5213
+ code = self.safe_string(params, 'code')
5214
+ if code is None:
5215
+ raise ArgumentsRequired(self.id + ' fetchLeverage() requires a code parameter')
5216
+ params = self.omit(params, 'code')
5217
+ currency = self.currency(code)
5218
+ market = self.market(symbol)
5219
+ request: dict = {
5220
+ 'market': market['id'],
5221
+ 'ccy': currency['id'],
5222
+ }
5223
+ response = await self.v2PrivateGetAssetsMarginInterestLimit(self.extend(request, params))
5222
5224
  #
5223
5225
  # {
5224
5226
  # "code": 0,
5225
- # "data": [
5226
- # {
5227
- # "market": "BTCUSDT",
5228
- # "leverage": 10,
5229
- # "BTC": {
5230
- # "min_amount": "0.0008",
5231
- # "max_amount": "200",
5232
- # "day_rate": "0.0015"
5233
- # },
5234
- # "USDT": {
5235
- # "min_amount": "50",
5236
- # "max_amount": "500000",
5237
- # "day_rate": "0.001"
5238
- # }
5239
- # },
5240
- # ],
5241
- # "message": "Success"
5227
+ # "data": {
5228
+ # "market": "BTCUSDT",
5229
+ # "ccy": "USDT",
5230
+ # "leverage": 10,
5231
+ # "min_amount": "50",
5232
+ # "max_amount": "500000",
5233
+ # "daily_interest_rate": "0.001"
5234
+ # },
5235
+ # "message": "OK"
5242
5236
  # }
5243
5237
  #
5244
- leverages = self.safe_list(response, 'data', [])
5245
- return self.parse_leverages(leverages, symbols, 'market', marketType)
5238
+ data = self.safe_dict(response, 'data', {})
5239
+ return self.parse_leverage(data, market)
5246
5240
 
5247
5241
  def parse_leverage(self, leverage: dict, market: Market = None) -> Leverage:
5242
+ #
5243
+ # {
5244
+ # "market": "BTCUSDT",
5245
+ # "ccy": "USDT",
5246
+ # "leverage": 10,
5247
+ # "min_amount": "50",
5248
+ # "max_amount": "500000",
5249
+ # "daily_interest_rate": "0.001"
5250
+ # }
5251
+ #
5248
5252
  marketId = self.safe_string(leverage, 'market')
5249
5253
  leverageValue = self.safe_integer(leverage, 'leverage')
5250
5254
  return {
5251
5255
  'info': leverage,
5252
5256
  'symbol': self.safe_symbol(marketId, market, None, 'spot'),
5253
- 'marginMode': None,
5257
+ 'marginMode': 'isolated',
5254
5258
  'longLeverage': leverageValue,
5255
5259
  'shortLeverage': leverageValue,
5256
5260
  }
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.31'
7
+ __version__ = '4.3.33'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -31,7 +31,7 @@ from ccxt.base.decimal_to_precision import decimal_to_precision
31
31
  from ccxt.base.decimal_to_precision import DECIMAL_PLACES, TICK_SIZE, NO_PADDING, TRUNCATE, ROUND, ROUND_UP, ROUND_DOWN, SIGNIFICANT_DIGITS
32
32
  from ccxt.base.decimal_to_precision import number_to_string
33
33
  from ccxt.base.precise import Precise
34
- from ccxt.base.types import BalanceAccount, Currency, IndexType, OrderSide, OrderType, Trade, OrderRequest, Market, MarketType, Str, Num, Strings, CancellationRequest
34
+ from ccxt.base.types import BalanceAccount, Currency, IndexType, OrderSide, OrderType, Trade, OrderRequest, Market, MarketType, Str, Num, Strings, CancellationRequest, Bool
35
35
 
36
36
  # -----------------------------------------------------------------------------
37
37
 
@@ -3643,6 +3643,18 @@ class Exchange(object):
3643
3643
  params = self.omit(params, [paramName1, paramName2])
3644
3644
  return [value, params]
3645
3645
 
3646
+ def handle_param_bool(self, params: object, paramName: str, defaultValue: Bool = None):
3647
+ value = self.safe_bool(params, paramName, defaultValue)
3648
+ if value is not None:
3649
+ params = self.omit(params, paramName)
3650
+ return [value, params]
3651
+
3652
+ def handle_param_bool_2(self, params: object, paramName1: str, paramName2: str, defaultValue: Bool = None):
3653
+ value = self.safe_bool_2(params, paramName1, paramName2, defaultValue)
3654
+ if value is not None:
3655
+ params = self.omit(params, [paramName1, paramName2])
3656
+ return [value, params]
3657
+
3646
3658
  def resolve_path(self, path, params):
3647
3659
  return [
3648
3660
  self.implode_params(path, params),
ccxt/bitget.py CHANGED
@@ -504,7 +504,7 @@ class bitget(Exchange, ImplicitAPI):
504
504
  'v2/mix/account/set-margin': 4,
505
505
  'v2/mix/account/set-margin-mode': 4,
506
506
  'v2/mix/account/set-position-mode': 4,
507
- 'v2/mix/order/place-order': 20,
507
+ 'v2/mix/order/place-order': 2,
508
508
  'v2/mix/order/click-backhand': 20,
509
509
  'v2/mix/order/batch-place-order': 20,
510
510
  'v2/mix/order/modify-order': 2,
ccxt/coinex.py CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  from ccxt.base.exchange import Exchange
7
7
  from ccxt.abstract.coinex import ImplicitAPI
8
- from ccxt.base.types import Balances, Currencies, Currency, Int, IsolatedBorrowRate, Leverage, Leverages, LeverageTier, LeverageTiers, MarginModification, Market, Num, Order, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry, TransferEntries
8
+ from ccxt.base.types import Balances, Currencies, Currency, Int, IsolatedBorrowRate, Leverage, LeverageTier, LeverageTiers, MarginModification, Market, Num, Order, OrderRequest, OrderSide, OrderType, Position, Str, Strings, Ticker, Tickers, Trade, TradingFeeInterface, TradingFees, Transaction, TransferEntry, TransferEntries
9
9
  from typing import List
10
10
  from ccxt.base.errors import ExchangeError
11
11
  from ccxt.base.errors import AuthenticationError
@@ -90,8 +90,8 @@ class coinex(Exchange, ImplicitAPI):
90
90
  'fetchIndexOHLCV': False,
91
91
  'fetchIsolatedBorrowRate': True,
92
92
  'fetchIsolatedBorrowRates': False,
93
- 'fetchLeverage': 'emulated',
94
- 'fetchLeverages': True,
93
+ 'fetchLeverage': True,
94
+ 'fetchLeverages': False,
95
95
  'fetchLeverageTiers': True,
96
96
  'fetchMarginAdjustmentHistory': True,
97
97
  'fetchMarketLeverageTiers': 'emulated',
@@ -5199,57 +5199,61 @@ class coinex(Exchange, ImplicitAPI):
5199
5199
  }
5200
5200
  return result
5201
5201
 
5202
- def fetch_leverages(self, symbols: Strings = None, params={}) -> Leverages:
5202
+ def fetch_leverage(self, symbol: str, params={}) -> Leverage:
5203
5203
  """
5204
- fetch the set leverage for all contract and margin markets
5205
- :see: https://viabtc.github.io/coinex_api_en_doc/spot/#docsspot002_account007_margin_account_settings
5206
- :param str[] [symbols]: a list of unified market symbols
5204
+ fetch the set leverage for a market
5205
+ :see: https://docs.coinex.com/api/v2/assets/loan-flat/http/list-margin-interest-limit
5206
+ :param str symbol: unified market symbol
5207
5207
  :param dict [params]: extra parameters specific to the exchange API endpoint
5208
- :returns dict: a list of `leverage structures <https://docs.ccxt.com/#/?id=leverage-structure>`
5208
+ :param str params['code']: unified currency code
5209
+ :returns dict: a `leverage structure <https://docs.ccxt.com/#/?id=leverage-structure>`
5209
5210
  """
5210
5211
  self.load_markets()
5211
- symbols = self.market_symbols(symbols)
5212
- market = None
5213
- if symbols is not None:
5214
- symbol = self.safe_value(symbols, 0)
5215
- market = self.market(symbol)
5216
- marketType = None
5217
- marketType, params = self.handle_market_type_and_params('fetchLeverages', market, params)
5218
- if marketType != 'spot':
5219
- raise NotSupported(self.id + ' fetchLeverages() supports spot margin markets only')
5220
- response = self.v1PrivateGetMarginConfig(params)
5212
+ code = self.safe_string(params, 'code')
5213
+ if code is None:
5214
+ raise ArgumentsRequired(self.id + ' fetchLeverage() requires a code parameter')
5215
+ params = self.omit(params, 'code')
5216
+ currency = self.currency(code)
5217
+ market = self.market(symbol)
5218
+ request: dict = {
5219
+ 'market': market['id'],
5220
+ 'ccy': currency['id'],
5221
+ }
5222
+ response = self.v2PrivateGetAssetsMarginInterestLimit(self.extend(request, params))
5221
5223
  #
5222
5224
  # {
5223
5225
  # "code": 0,
5224
- # "data": [
5225
- # {
5226
- # "market": "BTCUSDT",
5227
- # "leverage": 10,
5228
- # "BTC": {
5229
- # "min_amount": "0.0008",
5230
- # "max_amount": "200",
5231
- # "day_rate": "0.0015"
5232
- # },
5233
- # "USDT": {
5234
- # "min_amount": "50",
5235
- # "max_amount": "500000",
5236
- # "day_rate": "0.001"
5237
- # }
5238
- # },
5239
- # ],
5240
- # "message": "Success"
5226
+ # "data": {
5227
+ # "market": "BTCUSDT",
5228
+ # "ccy": "USDT",
5229
+ # "leverage": 10,
5230
+ # "min_amount": "50",
5231
+ # "max_amount": "500000",
5232
+ # "daily_interest_rate": "0.001"
5233
+ # },
5234
+ # "message": "OK"
5241
5235
  # }
5242
5236
  #
5243
- leverages = self.safe_list(response, 'data', [])
5244
- return self.parse_leverages(leverages, symbols, 'market', marketType)
5237
+ data = self.safe_dict(response, 'data', {})
5238
+ return self.parse_leverage(data, market)
5245
5239
 
5246
5240
  def parse_leverage(self, leverage: dict, market: Market = None) -> Leverage:
5241
+ #
5242
+ # {
5243
+ # "market": "BTCUSDT",
5244
+ # "ccy": "USDT",
5245
+ # "leverage": 10,
5246
+ # "min_amount": "50",
5247
+ # "max_amount": "500000",
5248
+ # "daily_interest_rate": "0.001"
5249
+ # }
5250
+ #
5247
5251
  marketId = self.safe_string(leverage, 'market')
5248
5252
  leverageValue = self.safe_integer(leverage, 'leverage')
5249
5253
  return {
5250
5254
  'info': leverage,
5251
5255
  'symbol': self.safe_symbol(marketId, market, None, 'spot'),
5252
- 'marginMode': None,
5256
+ 'marginMode': 'isolated',
5253
5257
  'longLeverage': leverageValue,
5254
5258
  'shortLeverage': leverageValue,
5255
5259
  }
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.31'
7
+ __version__ = '4.3.33'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
ccxt/pro/cex.py CHANGED
@@ -925,7 +925,7 @@ class cex(ccxt.async_support.cex):
925
925
  symbol = self.pair_to_symbol(pair)
926
926
  messageHash = 'orderbook:' + symbol
927
927
  timestamp = self.safe_integer_2(data, 'timestamp_ms', 'timestamp')
928
- incrementalId = self.safe_number(data, 'id')
928
+ incrementalId = self.safe_integer(data, 'id')
929
929
  orderbook = self.order_book({})
930
930
  snapshot = self.parse_order_book(data, symbol, timestamp, 'bids', 'asks')
931
931
  snapshot['nonce'] = incrementalId
ccxt/pro/coinbase.py CHANGED
@@ -233,6 +233,34 @@ class coinbase(ccxt.async_support.coinbase):
233
233
  # ]
234
234
  # }
235
235
  #
236
+ # note! seems coinbase might also send empty data like:
237
+ #
238
+ # {
239
+ # "channel": "ticker_batch",
240
+ # "client_id": "",
241
+ # "timestamp": "2024-05-24T18:22:24.546809523Z",
242
+ # "sequence_num": 1,
243
+ # "events": [
244
+ # {
245
+ # "type": "snapshot",
246
+ # "tickers": [
247
+ # {
248
+ # "type": "ticker",
249
+ # "product_id": "",
250
+ # "price": "",
251
+ # "volume_24_h": "",
252
+ # "low_24_h": "",
253
+ # "high_24_h": "",
254
+ # "low_52_w": "",
255
+ # "high_52_w": "",
256
+ # "price_percent_chg_24_h": ""
257
+ # }
258
+ # ]
259
+ # }
260
+ # ]
261
+ # }
262
+ #
263
+ #
236
264
  channel = self.safe_string(message, 'channel')
237
265
  events = self.safe_value(message, 'events', [])
238
266
  datetime = self.safe_string(message, 'timestamp')
@@ -249,6 +277,8 @@ class coinbase(ccxt.async_support.coinbase):
249
277
  symbol = result['symbol']
250
278
  self.tickers[symbol] = result
251
279
  wsMarketId = self.safe_string(ticker, 'product_id')
280
+ if wsMarketId is None:
281
+ continue
252
282
  messageHash = channel + '::' + wsMarketId
253
283
  newTickers.append(result)
254
284
  client.resolve(result, messageHash)
ccxt/test/test_async.py CHANGED
@@ -449,7 +449,7 @@ class testMainClass(baseMainTestClass):
449
449
  dump(self.add_padding(skip_message, 25), self.exchange_hint(exchange), method_name)
450
450
  return
451
451
  if self.info:
452
- args_stringified = '(' + ','.join(args) + ')'
452
+ args_stringified = '(' + exchange.json(args) + ')' # args.join() breaks when we provide a list of symbols or multidimensional array; "args.toString()" breaks bcz of "array to string conversion"
453
453
  dump(self.add_padding('[INFO] TESTING', 25), self.exchange_hint(exchange), method_name, args_stringified)
454
454
  await call_method(self.test_files, method_name, exchange, skipped_properties_for_method, args)
455
455
  # if it was passed successfully, add to the list of successfull tests
ccxt/test/test_sync.py CHANGED
@@ -448,7 +448,7 @@ class testMainClass(baseMainTestClass):
448
448
  dump(self.add_padding(skip_message, 25), self.exchange_hint(exchange), method_name)
449
449
  return
450
450
  if self.info:
451
- args_stringified = '(' + ','.join(args) + ')'
451
+ args_stringified = '(' + exchange.json(args) + ')' # args.join() breaks when we provide a list of symbols or multidimensional array; "args.toString()" breaks bcz of "array to string conversion"
452
452
  dump(self.add_padding('[INFO] TESTING', 25), self.exchange_hint(exchange), method_name, args_stringified)
453
453
  call_method(self.test_files, method_name, exchange, skipped_properties_for_method, args)
454
454
  # if it was passed successfully, add to the list of successfull tests
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.3.31
3
+ Version: 4.3.33
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
@@ -264,13 +264,13 @@ console.log(version, Object.keys(exchanges));
264
264
 
265
265
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
266
266
 
267
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.31/dist/ccxt.browser.min.js
268
- * unpkg: https://unpkg.com/ccxt@4.3.31/dist/ccxt.browser.min.js
267
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.33/dist/ccxt.browser.min.js
268
+ * unpkg: https://unpkg.com/ccxt@4.3.33/dist/ccxt.browser.min.js
269
269
 
270
270
  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.
271
271
 
272
272
  ```HTML
273
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.31/dist/ccxt.browser.min.js"></script>
273
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.33/dist/ccxt.browser.min.js"></script>
274
274
  ```
275
275
 
276
276
  Creates a global `ccxt` object:
@@ -1,4 +1,4 @@
1
- ccxt/__init__.py,sha256=PhMSkTu04_r72YpyKHINfgk8X10DijjcbeTuJmmzWBE,15950
1
+ ccxt/__init__.py,sha256=2WVncAGnUABNxrh0O1Dsn0PGk_bkCKPtfOjjWFwutjc,15950
2
2
  ccxt/ace.py,sha256=I_pv9ADmsH1cwBPswcdUXI0wVuN1Z-L8qCnT4uJUlWQ,41739
3
3
  ccxt/alpaca.py,sha256=YQ-D3mZ2Y-aEi1vWh_zRqc679M_m2wVWmhRqXo46Sr8,47309
4
4
  ccxt/ascendex.py,sha256=rqo2GuxUcJ-G_vTHI10dRU5FeGzYzg-s1AuC1CwAsnU,151796
@@ -17,7 +17,7 @@ ccxt/bitcoincom.py,sha256=PyWIl4nC4jp5Uba2lI1At0N_hhNyWD0DoZC_MSyL_s4,502
17
17
  ccxt/bitfinex.py,sha256=R0eWVUZ1XFomYLaxNbyu8oWKPy-5uDTPY53X2rRiraY,72414
18
18
  ccxt/bitfinex2.py,sha256=zl5AWEzELbWWj2eC50Rh9JyB5hZbcYsLQqMiuxqZhvE,160607
19
19
  ccxt/bitflyer.py,sha256=JNEov3V5n36RWORPbIwsygGeXqA_2MgBzCQbDQKuYZY,41534
20
- ccxt/bitget.py,sha256=E4XrcTSrC81iP6xQlIiH0oj7pbd0opyPX2dNsaVBz_Y,423069
20
+ ccxt/bitget.py,sha256=BsX9tvO_1FyRUzFcAqYVCTfNCMj8VTVJi_FKvgskSCA,423068
21
21
  ccxt/bithumb.py,sha256=B9CO5Yz7rM8dHjxI4M6b-XPZXtBx4xvpST5GkokQ-fo,45653
22
22
  ccxt/bitmart.py,sha256=SyI-DwnM6EGKVO9m80LOnQHbHbgobQSkyhvwpD9BVWM,204716
23
23
  ccxt/bitmex.py,sha256=VcnrJ5X80_3yNcitQHN1Bzo05B_YgUJ2tH9XaMNkc0U,126820
@@ -42,7 +42,7 @@ ccxt/coinbaseadvanced.py,sha256=d5g6nRx-NCcCwZDdtp8FsI2D-pRjSvnAP9ISSKY_nCQ,538
42
42
  ccxt/coinbaseexchange.py,sha256=DzCR_VL6ytnMVuCBKFjNNCr9NlRMr3MVCXELK9JHXmA,78877
43
43
  ccxt/coinbaseinternational.py,sha256=_zwujB73Ff9HHcG0P8LogPqq3mDeqQ1poIQDXShrSpw,87430
44
44
  ccxt/coincheck.py,sha256=-GckoIjNlV_iJvF0_LPPdycjQVPRv7i9tDnrKLRC-mI,35748
45
- ccxt/coinex.py,sha256=ZCuQsiPlU2iGtpRFXjFH9v8q69KjeuNXh-jAJvoWAnI,257710
45
+ ccxt/coinex.py,sha256=8yMqhAVhcb81e1V9JgCzZT0wH9gfwHYAuG08tRvvxl4,257592
46
46
  ccxt/coinlist.py,sha256=5BJDqDWOGuSDg8IlatrzQUMohOgnkBdGGxSQZot2A6I,103349
47
47
  ccxt/coinmate.py,sha256=mObP5mCiDMbwCNJuUtYizYAHuUBc1RsyEuBnFHpo2Xo,46076
48
48
  ccxt/coinmetro.py,sha256=RrIdIHCYIzCng5IoVNDvJCAQPNTNnlQEFRzqTAc5hH4,80832
@@ -123,7 +123,7 @@ ccxt/abstract/bitcoincom.py,sha256=OTBtNu3DQeAqAC_Lbi0NePUs-ZQQllcLrVDI2G04nwQ,1
123
123
  ccxt/abstract/bitfinex.py,sha256=OLUXdJEycyN_qrBhPuTTOVlwu3jkqVWenoTmS-W3bOE,7605
124
124
  ccxt/abstract/bitfinex2.py,sha256=82sdkbjDb6D2JePGAa2yYwApDwdeF9Tvlo-hWB2ZUBs,19194
125
125
  ccxt/abstract/bitflyer.py,sha256=3ngG1GJJCNMzYMWoNXCEEgLxmTl7eRf7_JU4M0P2rqo,3576
126
- ccxt/abstract/bitget.py,sha256=3xGAFBJkaFWD3WvaGtb0rE0zBO9b0QkIysMJRDZDxNQ,90491
126
+ ccxt/abstract/bitget.py,sha256=ELBdc4MCJ1eOLDQKFCXhGlogRO_RgYU2YDS87Flv-5k,90490
127
127
  ccxt/abstract/bithumb.py,sha256=GR7QJ6CwTBne59SaGRVj9Rdz_zecG-8imRWX7oe6MoQ,3443
128
128
  ccxt/abstract/bitmart.py,sha256=pXzEUu-Eac4fXuInvBiLjJ-HVkjNcpzBCvBRFagri1Y,14300
129
129
  ccxt/abstract/bitmex.py,sha256=v15OP-vSO_eotD6KVf1BgKrbPxCPl2eXXYIuzWF1dl4,10774
@@ -210,7 +210,7 @@ ccxt/abstract/woofipro.py,sha256=El50vWGAV-4QPIDhgSnd4egfvk246NB6vTC-8h722vs,160
210
210
  ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
211
211
  ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
212
212
  ccxt/abstract/zonda.py,sha256=aSfewvRojzmuymX6QbOnDR8v9VFqWTULMHX9Y7kKD1M,5820
213
- ccxt/async_support/__init__.py,sha256=VYCvVXecMjNWgQpcw5-uiwObUcpe7-hp2JRhawxSx1s,15723
213
+ ccxt/async_support/__init__.py,sha256=rV9P2uJ5aRcpW5fXENdPQWt0WemPLYN-KwhJJjp3SlQ,15723
214
214
  ccxt/async_support/ace.py,sha256=3soxI5MZcaiFGm5LmRjJETw__2h7CbqnNoh8H4BhXmc,41963
215
215
  ccxt/async_support/alpaca.py,sha256=FvrdM2ZoDUqUoS8lO5sZ8qlpnZkFZWoR4NSBW-MtVF8,47521
216
216
  ccxt/async_support/ascendex.py,sha256=KkYCOI_4aGRZ0v69e8E1X1kSzPSd9-o7YjenUNSE0Dw,152584
@@ -229,7 +229,7 @@ ccxt/async_support/bitcoincom.py,sha256=RiqwhK3RfxQ_PXTa860fphDCvwA8dalL-_rXlK85
229
229
  ccxt/async_support/bitfinex.py,sha256=aPO85mJB3wOwxnqDeFU4xvOTkLmT7RJqrNAYWlGd98E,72854
230
230
  ccxt/async_support/bitfinex2.py,sha256=LUMs-bgstj5SttcVf4YG29ps_ako90kzVV8f6rMwXFE,161341
231
231
  ccxt/async_support/bitflyer.py,sha256=IhVBTbh52yLEPj5g1mji2kCDwHIqUWcypx0SwuxQ1zE,41842
232
- ccxt/async_support/bitget.py,sha256=wZ73b-SQN1mBF1erdRCHQPebm_cWc8fpJY4A8bga6WU,424693
232
+ ccxt/async_support/bitget.py,sha256=L0XHzh0Py-gxROCz-0MvfEzog6CQCPZi5Qj99dTMl1c,424692
233
233
  ccxt/async_support/bithumb.py,sha256=nKk16vV_0Acgpym8qGanO2vZRCtSyjdWHf8TT5s5Uiw,45883
234
234
  ccxt/async_support/bitmart.py,sha256=4CqMv9pq29nskVIKlFHmJB8n7dPlPgfdZXASj4JsIHk,205672
235
235
  ccxt/async_support/bitmex.py,sha256=nYa3kNNtvu4UX4d3x7TdPP39ALsaYaZ3n-EWgFWOvH4,127398
@@ -254,7 +254,7 @@ ccxt/async_support/coinbaseadvanced.py,sha256=Kupwnuxiu_qTjwCNV2asacoDUNFQvcaHNA
254
254
  ccxt/async_support/coinbaseexchange.py,sha256=uXR1ZuFDro-avT2-RS-8-Ia7CB9Q-07Fshb4XZ6cSjQ,79383
255
255
  ccxt/async_support/coinbaseinternational.py,sha256=j9OtnlnAmYUR7QuIwF371ekrcwltOwx_QudIcZOae90,87984
256
256
  ccxt/async_support/coincheck.py,sha256=xSbnM5oN_pyE3xvLb9Q-gRnm89n-Q5nevpHqn0oR2Hc,35954
257
- ccxt/async_support/coinex.py,sha256=yHs99cklvYLVFuiQq-PQ6lOAnYiHXt3Zj61BD0KtAqg,258968
257
+ ccxt/async_support/coinex.py,sha256=vgVXcBYm5BC6indM0CAXQS6DGR7hl25NhKkFxSCYNNA,258850
258
258
  ccxt/async_support/coinlist.py,sha256=RD1qO7MdZhTRDQNmUiwUqijZItjy0C2f7CxXF0z-R8w,103837
259
259
  ccxt/async_support/coinmate.py,sha256=_GdvtBwnQ3B-cmHq7dwyzQUJLhr0rAoNOkZudMpj-5A,46342
260
260
  ccxt/async_support/coinmetro.py,sha256=Cv3DVk9_jIlJ8sCx3YMEwomVNg5qKyDeQDkqeW6ZqVY,81152
@@ -317,7 +317,7 @@ ccxt/async_support/yobit.py,sha256=VeBdG8i5e6yDPzD6sBYWcmJwQ1Fk045sCcuHxzlizYY,5
317
317
  ccxt/async_support/zaif.py,sha256=GCsD2Rdvj-JUd0QiMvmnjPrzfUErKvJV_VLuyO-2XX0,28233
318
318
  ccxt/async_support/zonda.py,sha256=XnhOKeYi2xce8DbkYD6-tQ31k7YYoqydSfYIYKkzh5M,81036
319
319
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
320
- ccxt/async_support/base/exchange.py,sha256=1BH9FQizAAb__H5HkWVs0UBL2NWzncnyD3_X6aNM460,108702
320
+ ccxt/async_support/base/exchange.py,sha256=bPhd0m2s5TpEoyB3CitOpsdEJ9FhsCTylkvMpwBaYBA,108702
321
321
  ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
322
322
  ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
323
323
  ccxt/async_support/base/ws/aiohttp_client.py,sha256=5IEiT0elWI9a7Vr-KV0jgmlbpLJWBzIlrLaCkTKGaqY,5752
@@ -331,10 +331,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9produGjmB
331
331
  ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
332
332
  ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
333
333
  ccxt/base/errors.py,sha256=FGdyULeNCNcl52gA_CNhe2dZmat9GJGkTdlIyDXAF_A,4213
334
- ccxt/base/exchange.py,sha256=9LlVzUhA4hZtE_v5gpspjrg-xZIe0j81CKxdNY1S7Vc,278482
334
+ ccxt/base/exchange.py,sha256=C_0icpzDCEJ1tH_-W-MFMRcwWAB3-4TCbPQghs3c4sk,279074
335
335
  ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
336
336
  ccxt/base/types.py,sha256=NNj7aiY1dLbzRlxwco24kabgFJI7-YBwGxESXx-uKyo,9248
337
- ccxt/pro/__init__.py,sha256=bkw-fmsK6pIdPFJ86aUiwvdjfzq7Xpbfdv1wOZOO9Fk,7107
337
+ ccxt/pro/__init__.py,sha256=uYwluBndnPneMsffpsO3xbG33vvEkxSkjgCRV8TJQ5g,7107
338
338
  ccxt/pro/alpaca.py,sha256=81nFwDKyNlmUnhSyRyDLmLU6LGt3yqip1L_Ms2UyAmw,27215
339
339
  ccxt/pro/ascendex.py,sha256=e4WZqmTkIz9sVAWtKAaV6BvanrM2ylRdzjxrclZYmOE,35456
340
340
  ccxt/pro/bequant.py,sha256=5zbsP8BHQTUZ8ZNL6uaACxDbUClgkOV4SYfXT_LfQVg,1351
@@ -357,8 +357,8 @@ ccxt/pro/bitstamp.py,sha256=P8Td5HqWiO6GMdLj-cKqPTZD28fltWlZQ7Z-omDbO60,20916
357
357
  ccxt/pro/bitvavo.py,sha256=vn70dtyWs2TSZieCevvwKliRInmvvzMrvTyGq0fTIYM,56229
358
358
  ccxt/pro/blockchaincom.py,sha256=LtCL3habcuB2IRXXK_oeqdzqpnkj01Gr79X82nK8Mnk,29600
359
359
  ccxt/pro/bybit.py,sha256=IkuY2zmsWSSPfzHNIM2HD0YL6SO9L9nDdm02SRtYQ7A,85170
360
- ccxt/pro/cex.py,sha256=OLOLuBJyNfR7GmuEdSrPA5x-3Ef5izOBxUicd2m7JRw,58494
361
- ccxt/pro/coinbase.py,sha256=SdO9A-QcaKU_lBrw9JKwWnpzXAHNo4KCQ7GbTnYg4vc,29532
360
+ ccxt/pro/cex.py,sha256=ri0fnWYa4tFeeuJ_edqUziI5VJ921rRjIapion9Emug,58495
361
+ ccxt/pro/coinbase.py,sha256=q5PQ--k9q50UrgWCPYV0y2tx5hQ32nmWXBp4nvJsQag,30628
362
362
  ccxt/pro/coinbaseexchange.py,sha256=taV-mCliIcc6XQjxSl2HmYHpBkOIDkxUxF2LrBSXfCc,39035
363
363
  ccxt/pro/coinbaseinternational.py,sha256=s7DiNGpyIz3Z5EgJdYp8cY9tJjg3dXGRdlx0AAnmTBw,25818
364
364
  ccxt/pro/coincheck.py,sha256=8_AFAwNDW8c_OJRFDnQ2okJtX1ZjYZgNlvMbT2XmlDE,7801
@@ -498,8 +498,8 @@ ccxt/static_dependencies/toolz/curried/__init__.py,sha256=iOuFY4c1kixe_h8lxuWIW5
498
498
  ccxt/static_dependencies/toolz/curried/exceptions.py,sha256=gKFOHDIayAWnX2uC8Z2KrUwpP-UpoqI5Tx1a859QdVY,344
499
499
  ccxt/static_dependencies/toolz/curried/operator.py,sha256=ML92mknkAwzBl2NCm-4werSUmJEtSHNY9NSzhseNM9s,525
500
500
  ccxt/test/__init__.py,sha256=GKPbEcj0Rrz5HG-GUm-iY1IHhDYmlvcBXZAGk6-m2CI,141
501
- ccxt/test/test_async.py,sha256=hitZNX94qRrz7jKxoRYMGBDNV-2Q2QbQzZ2uRp5bFFo,80043
502
- ccxt/test/test_sync.py,sha256=43fq7co61AJRvAc_QWzT4lPy1ZBhezIN6QK8T8h-POk,79000
501
+ ccxt/test/test_async.py,sha256=3V-jNB3wZGZCFTNypvQkdfxtM-LtbAZwrOY9GC1am7Q,80192
502
+ ccxt/test/test_sync.py,sha256=snZym4CdXKnCbI7yLmP4b5AwKevBVNWxcJIzGR03-hA,79149
503
503
  ccxt/test/base/__init__.py,sha256=LvE9DEw5mNiyFrE-XnfzFFuSOvZOyi7ec__PF7lpnYs,1889
504
504
  ccxt/test/base/test_account.py,sha256=lxwZXsY8qZgomBoEiomUmWcseSp--orJx-xmm3E1vYs,978
505
505
  ccxt/test/base/test_balance.py,sha256=W-IcVRiJNLtdKEWEEhmhWjtFRuHFtoywNiGQNtYSuc0,2931
@@ -534,7 +534,7 @@ ccxt/test/base/test_ticker.py,sha256=cMTIMb1oySNORUCmqI5ZzMswlEyCF6gJMah3vfvo8wQ
534
534
  ccxt/test/base/test_trade.py,sha256=PMtmB8V38dpaP-eb8h488xYMlR6D69yCOhsA1RuWrUA,2336
535
535
  ccxt/test/base/test_trading_fee.py,sha256=2aDCNJtqBkTC_AieO0l1HYGq5hz5qkWlkWb9Nv_fcwk,1066
536
536
  ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
537
- ccxt-4.3.31.dist-info/METADATA,sha256=C2mjPB_lfrLTdqWXe8k_xElHdb-LojAT0ovFbPg2HEw,112807
538
- ccxt-4.3.31.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
539
- ccxt-4.3.31.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
540
- ccxt-4.3.31.dist-info/RECORD,,
537
+ ccxt-4.3.33.dist-info/METADATA,sha256=hvDaa42iK9PmEfoeNlY9qkoQge7IWeIqpRAxskHD1EA,112807
538
+ ccxt-4.3.33.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
539
+ ccxt-4.3.33.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
540
+ ccxt-4.3.33.dist-info/RECORD,,
File without changes