ccxt 4.4.19__py2.py3-none-any.whl → 4.4.20__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.4.19'
25
+ __version__ = '4.4.20'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.19'
7
+ __version__ = '4.4.20'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.4.19'
5
+ __version__ = '4.4.20'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -1908,6 +1908,8 @@ class Exchange(BaseExchange):
1908
1908
  i = 0
1909
1909
  errors = 0
1910
1910
  result = []
1911
+ timeframe = self.safe_string(params, 'timeframe')
1912
+ params = self.omit(params, 'timeframe') # reading the timeframe from the method arguments to avoid changing the signature
1911
1913
  while(i < maxCalls):
1912
1914
  try:
1913
1915
  if cursorValue is not None:
@@ -1919,6 +1921,8 @@ class Exchange(BaseExchange):
1919
1921
  response = await getattr(self, method)(params)
1920
1922
  elif method == 'getLeverageTiersPaginated' or method == 'fetchPositions':
1921
1923
  response = await getattr(self, method)(symbol, params)
1924
+ elif method == 'fetchOpenInterestHistory':
1925
+ response = await getattr(self, method)(symbol, timeframe, since, maxEntriesPerRequest, params)
1922
1926
  else:
1923
1927
  response = await getattr(self, method)(symbol, since, maxEntriesPerRequest, params)
1924
1928
  errors = 0
@@ -6703,7 +6703,8 @@ class bybit(Exchange, ImplicitAPI):
6703
6703
  paginate = self.safe_bool(params, 'paginate')
6704
6704
  if paginate:
6705
6705
  params = self.omit(params, 'paginate')
6706
- return await self.fetch_paginated_call_deterministic('fetchOpenInterestHistory', symbol, since, limit, timeframe, params, 500)
6706
+ params['timeframe'] = timeframe
6707
+ return await self.fetch_paginated_call_cursor('fetchOpenInterestHistory', symbol, since, limit, params, 'nextPageCursor', 'cursor', None, 200)
6707
6708
  market = self.market(symbol)
6708
6709
  if market['spot'] or market['option']:
6709
6710
  raise BadRequest(self.id + ' fetchOpenInterestHistory() symbol does not support market ' + symbol)
@@ -4421,6 +4421,7 @@ class gate(Exchange, ImplicitAPI):
4421
4421
  """
4422
4422
  fetch all unfilled currently open orders
4423
4423
  :see: https://www.gate.io/docs/developers/apiv4/en/#list-all-open-orders
4424
+ :see: https://www.gate.io/docs/developers/apiv4/en/#retrieve-running-auto-order-list
4424
4425
  :param str symbol: unified market symbol
4425
4426
  :param int [since]: the earliest time in ms to fetch open orders for
4426
4427
  :param int [limit]: the maximum number of open orders structures to retrieve
@@ -976,15 +976,15 @@ class lbank(Exchange, ImplicitAPI):
976
976
  limit = min(limit, 2000)
977
977
  if since is None:
978
978
  duration = self.parse_timeframe(timeframe)
979
- since = self.milliseconds() - duration * 1000 * limit
979
+ since = self.milliseconds() - (duration * 1000 * limit)
980
980
  request: dict = {
981
981
  'symbol': market['id'],
982
982
  'type': self.safe_string(self.timeframes, timeframe, timeframe),
983
983
  'time': self.parse_to_int(since / 1000),
984
- 'size': limit, # max 2000
984
+ 'size': min(limit + 1, 2000), # max 2000
985
985
  }
986
986
  response = await self.spotPublicGetKline(self.extend(request, params))
987
- ohlcvs = self.safe_value(response, 'data', [])
987
+ ohlcvs = self.safe_list(response, 'data', [])
988
988
  #
989
989
  #
990
990
  # [
@@ -82,6 +82,7 @@ class phemex(Exchange, ImplicitAPI):
82
82
  'fetchMarkOHLCV': False,
83
83
  'fetchMyTrades': True,
84
84
  'fetchOHLCV': True,
85
+ 'fetchOpenInterest': True,
85
86
  'fetchOpenOrders': True,
86
87
  'fetchOrder': True,
87
88
  'fetchOrderBook': True,
@@ -4494,6 +4495,77 @@ class phemex(Exchange, ImplicitAPI):
4494
4495
  data = self.safe_dict(response, 'data', {})
4495
4496
  return self.parse_transaction(data, currency)
4496
4497
 
4498
+ async def fetch_open_interest(self, symbol: str, params={}):
4499
+ """
4500
+ retrieves the open interest of a trading pair
4501
+ :see: https://phemex-docs.github.io/#query-24-hours-ticker
4502
+ :param str symbol: unified CCXT market symbol
4503
+ :param dict [params]: exchange specific parameters
4504
+ :returns dict} an open interest structure{@link https://docs.ccxt.com/#/?id=open-interest-structure:
4505
+ """
4506
+ await self.load_markets()
4507
+ market = self.market(symbol)
4508
+ if not market['contract']:
4509
+ raise BadRequest(self.id + ' fetchOpenInterest is only supported for contract markets.')
4510
+ request: dict = {
4511
+ 'symbol': market['id'],
4512
+ }
4513
+ response = await self.v2GetMdV2Ticker24hr(self.extend(request, params))
4514
+ #
4515
+ # {
4516
+ # error: null,
4517
+ # id: '0',
4518
+ # result: {
4519
+ # closeRp: '67550.1',
4520
+ # fundingRateRr: '0.0001',
4521
+ # highRp: '68400',
4522
+ # indexPriceRp: '67567.15389794',
4523
+ # lowRp: '66096.4',
4524
+ # markPriceRp: '67550.1',
4525
+ # openInterestRv: '1848.1144186',
4526
+ # openRp: '66330',
4527
+ # predFundingRateRr: '0.0001',
4528
+ # symbol: 'BTCUSDT',
4529
+ # timestamp: '1729114315443343001',
4530
+ # turnoverRv: '228863389.3237532',
4531
+ # volumeRq: '3388.5600312'
4532
+ # }
4533
+ # }
4534
+ #
4535
+ result = self.safe_dict(response, 'result')
4536
+ return self.parse_open_interest(result, market)
4537
+
4538
+ def parse_open_interest(self, interest, market: Market = None):
4539
+ #
4540
+ # {
4541
+ # closeRp: '67550.1',
4542
+ # fundingRateRr: '0.0001',
4543
+ # highRp: '68400',
4544
+ # indexPriceRp: '67567.15389794',
4545
+ # lowRp: '66096.4',
4546
+ # markPriceRp: '67550.1',
4547
+ # openInterestRv: '1848.1144186',
4548
+ # openRp: '66330',
4549
+ # predFundingRateRr: '0.0001',
4550
+ # symbol: 'BTCUSDT',
4551
+ # timestamp: '1729114315443343001',
4552
+ # turnoverRv: '228863389.3237532',
4553
+ # volumeRq: '3388.5600312'
4554
+ # }
4555
+ #
4556
+ timestamp = self.safe_integer(interest, 'timestamp') / 1000000
4557
+ id = self.safe_string(interest, 'symbol')
4558
+ return self.safe_open_interest({
4559
+ 'info': interest,
4560
+ 'symbol': self.safe_symbol(id, market),
4561
+ 'baseVolume': self.safe_string(interest, 'volumeRq'),
4562
+ 'quoteVolume': None, # deprecated
4563
+ 'openInterestAmount': self.safe_string(interest, 'openInterestRv'),
4564
+ 'openInterestValue': None,
4565
+ 'timestamp': timestamp,
4566
+ 'datetime': self.iso8601(timestamp),
4567
+ }, market)
4568
+
4497
4569
  def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
4498
4570
  if response is None:
4499
4571
  return None # fallback to default error handler
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.19'
7
+ __version__ = '4.4.20'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -5981,6 +5981,8 @@ class Exchange(object):
5981
5981
  i = 0
5982
5982
  errors = 0
5983
5983
  result = []
5984
+ timeframe = self.safe_string(params, 'timeframe')
5985
+ params = self.omit(params, 'timeframe') # reading the timeframe from the method arguments to avoid changing the signature
5984
5986
  while(i < maxCalls):
5985
5987
  try:
5986
5988
  if cursorValue is not None:
@@ -5992,6 +5994,8 @@ class Exchange(object):
5992
5994
  response = getattr(self, method)(params)
5993
5995
  elif method == 'getLeverageTiersPaginated' or method == 'fetchPositions':
5994
5996
  response = getattr(self, method)(symbol, params)
5997
+ elif method == 'fetchOpenInterestHistory':
5998
+ response = getattr(self, method)(symbol, timeframe, since, maxEntriesPerRequest, params)
5995
5999
  else:
5996
6000
  response = getattr(self, method)(symbol, since, maxEntriesPerRequest, params)
5997
6001
  errors = 0
ccxt/bybit.py CHANGED
@@ -6702,7 +6702,8 @@ class bybit(Exchange, ImplicitAPI):
6702
6702
  paginate = self.safe_bool(params, 'paginate')
6703
6703
  if paginate:
6704
6704
  params = self.omit(params, 'paginate')
6705
- return self.fetch_paginated_call_deterministic('fetchOpenInterestHistory', symbol, since, limit, timeframe, params, 500)
6705
+ params['timeframe'] = timeframe
6706
+ return self.fetch_paginated_call_cursor('fetchOpenInterestHistory', symbol, since, limit, params, 'nextPageCursor', 'cursor', None, 200)
6706
6707
  market = self.market(symbol)
6707
6708
  if market['spot'] or market['option']:
6708
6709
  raise BadRequest(self.id + ' fetchOpenInterestHistory() symbol does not support market ' + symbol)
ccxt/gate.py CHANGED
@@ -4420,6 +4420,7 @@ class gate(Exchange, ImplicitAPI):
4420
4420
  """
4421
4421
  fetch all unfilled currently open orders
4422
4422
  :see: https://www.gate.io/docs/developers/apiv4/en/#list-all-open-orders
4423
+ :see: https://www.gate.io/docs/developers/apiv4/en/#retrieve-running-auto-order-list
4423
4424
  :param str symbol: unified market symbol
4424
4425
  :param int [since]: the earliest time in ms to fetch open orders for
4425
4426
  :param int [limit]: the maximum number of open orders structures to retrieve
ccxt/lbank.py CHANGED
@@ -975,15 +975,15 @@ class lbank(Exchange, ImplicitAPI):
975
975
  limit = min(limit, 2000)
976
976
  if since is None:
977
977
  duration = self.parse_timeframe(timeframe)
978
- since = self.milliseconds() - duration * 1000 * limit
978
+ since = self.milliseconds() - (duration * 1000 * limit)
979
979
  request: dict = {
980
980
  'symbol': market['id'],
981
981
  'type': self.safe_string(self.timeframes, timeframe, timeframe),
982
982
  'time': self.parse_to_int(since / 1000),
983
- 'size': limit, # max 2000
983
+ 'size': min(limit + 1, 2000), # max 2000
984
984
  }
985
985
  response = self.spotPublicGetKline(self.extend(request, params))
986
- ohlcvs = self.safe_value(response, 'data', [])
986
+ ohlcvs = self.safe_list(response, 'data', [])
987
987
  #
988
988
  #
989
989
  # [
ccxt/phemex.py CHANGED
@@ -82,6 +82,7 @@ class phemex(Exchange, ImplicitAPI):
82
82
  'fetchMarkOHLCV': False,
83
83
  'fetchMyTrades': True,
84
84
  'fetchOHLCV': True,
85
+ 'fetchOpenInterest': True,
85
86
  'fetchOpenOrders': True,
86
87
  'fetchOrder': True,
87
88
  'fetchOrderBook': True,
@@ -4494,6 +4495,77 @@ class phemex(Exchange, ImplicitAPI):
4494
4495
  data = self.safe_dict(response, 'data', {})
4495
4496
  return self.parse_transaction(data, currency)
4496
4497
 
4498
+ def fetch_open_interest(self, symbol: str, params={}):
4499
+ """
4500
+ retrieves the open interest of a trading pair
4501
+ :see: https://phemex-docs.github.io/#query-24-hours-ticker
4502
+ :param str symbol: unified CCXT market symbol
4503
+ :param dict [params]: exchange specific parameters
4504
+ :returns dict} an open interest structure{@link https://docs.ccxt.com/#/?id=open-interest-structure:
4505
+ """
4506
+ self.load_markets()
4507
+ market = self.market(symbol)
4508
+ if not market['contract']:
4509
+ raise BadRequest(self.id + ' fetchOpenInterest is only supported for contract markets.')
4510
+ request: dict = {
4511
+ 'symbol': market['id'],
4512
+ }
4513
+ response = self.v2GetMdV2Ticker24hr(self.extend(request, params))
4514
+ #
4515
+ # {
4516
+ # error: null,
4517
+ # id: '0',
4518
+ # result: {
4519
+ # closeRp: '67550.1',
4520
+ # fundingRateRr: '0.0001',
4521
+ # highRp: '68400',
4522
+ # indexPriceRp: '67567.15389794',
4523
+ # lowRp: '66096.4',
4524
+ # markPriceRp: '67550.1',
4525
+ # openInterestRv: '1848.1144186',
4526
+ # openRp: '66330',
4527
+ # predFundingRateRr: '0.0001',
4528
+ # symbol: 'BTCUSDT',
4529
+ # timestamp: '1729114315443343001',
4530
+ # turnoverRv: '228863389.3237532',
4531
+ # volumeRq: '3388.5600312'
4532
+ # }
4533
+ # }
4534
+ #
4535
+ result = self.safe_dict(response, 'result')
4536
+ return self.parse_open_interest(result, market)
4537
+
4538
+ def parse_open_interest(self, interest, market: Market = None):
4539
+ #
4540
+ # {
4541
+ # closeRp: '67550.1',
4542
+ # fundingRateRr: '0.0001',
4543
+ # highRp: '68400',
4544
+ # indexPriceRp: '67567.15389794',
4545
+ # lowRp: '66096.4',
4546
+ # markPriceRp: '67550.1',
4547
+ # openInterestRv: '1848.1144186',
4548
+ # openRp: '66330',
4549
+ # predFundingRateRr: '0.0001',
4550
+ # symbol: 'BTCUSDT',
4551
+ # timestamp: '1729114315443343001',
4552
+ # turnoverRv: '228863389.3237532',
4553
+ # volumeRq: '3388.5600312'
4554
+ # }
4555
+ #
4556
+ timestamp = self.safe_integer(interest, 'timestamp') / 1000000
4557
+ id = self.safe_string(interest, 'symbol')
4558
+ return self.safe_open_interest({
4559
+ 'info': interest,
4560
+ 'symbol': self.safe_symbol(id, market),
4561
+ 'baseVolume': self.safe_string(interest, 'volumeRq'),
4562
+ 'quoteVolume': None, # deprecated
4563
+ 'openInterestAmount': self.safe_string(interest, 'openInterestRv'),
4564
+ 'openInterestValue': None,
4565
+ 'timestamp': timestamp,
4566
+ 'datetime': self.iso8601(timestamp),
4567
+ }, market)
4568
+
4497
4569
  def handle_errors(self, httpCode: int, reason: str, url: str, method: str, headers: dict, body: str, response, requestHeaders, requestBody):
4498
4570
  if response is None:
4499
4571
  return None # fallback to default error handler
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.4.19'
7
+ __version__ = '4.4.20'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
@@ -37,6 +37,7 @@ from ccxt.pro.blofin import blofin # noqa
37
37
  from ccxt.pro.bybit import bybit # noqa: F401
38
38
  from ccxt.pro.cex import cex # noqa: F401
39
39
  from ccxt.pro.coinbase import coinbase # noqa: F401
40
+ from ccxt.pro.coinbaseadvanced import coinbaseadvanced # noqa: F401
40
41
  from ccxt.pro.coinbaseexchange import coinbaseexchange # noqa: F401
41
42
  from ccxt.pro.coinbaseinternational import coinbaseinternational # noqa: F401
42
43
  from ccxt.pro.coincheck import coincheck # noqa: F401
@@ -110,6 +111,7 @@ exchanges = [
110
111
  'bybit',
111
112
  'cex',
112
113
  'coinbase',
114
+ 'coinbaseadvanced',
113
115
  'coinbaseexchange',
114
116
  'coinbaseinternational',
115
117
  'coincheck',
@@ -0,0 +1,16 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ # PLEASE DO NOT EDIT THIS FILE, IT IS GENERATED AND WILL BE OVERWRITTEN:
4
+ # https://github.com/ccxt/ccxt/blob/master/CONTRIBUTING.md#how-to-contribute-code
5
+
6
+ from ccxt.pro.coinbase import coinbase
7
+
8
+
9
+ class coinbaseadvanced(coinbase):
10
+
11
+ def describe(self):
12
+ return self.deep_extend(super(coinbaseadvanced, self).describe(), {
13
+ 'id': 'coinbaseadvanced',
14
+ 'name': 'Coinbase Advanced',
15
+ 'alias': True,
16
+ })
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.4.19
3
+ Version: 4.4.20
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
@@ -271,13 +271,13 @@ console.log(version, Object.keys(exchanges));
271
271
 
272
272
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
273
273
 
274
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.19/dist/ccxt.browser.min.js
275
- * unpkg: https://unpkg.com/ccxt@4.4.19/dist/ccxt.browser.min.js
274
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.4.20/dist/ccxt.browser.min.js
275
+ * unpkg: https://unpkg.com/ccxt@4.4.20/dist/ccxt.browser.min.js
276
276
 
277
277
  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.
278
278
 
279
279
  ```HTML
280
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.19/dist/ccxt.browser.min.js"></script>
280
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.4.20/dist/ccxt.browser.min.js"></script>
281
281
  ```
282
282
 
283
283
  Creates a global `ccxt` object:
@@ -1,4 +1,4 @@
1
- ccxt/__init__.py,sha256=nIc9lUBZ_0lF8VidDP8krXR31Gk45Y2HfLFe1sdodfk,16486
1
+ ccxt/__init__.py,sha256=tKK1YYAQ5sGJE0BbbzQ2i8wYvSNeMF1ow5bzLZME--I,16486
2
2
  ccxt/ace.py,sha256=3KFlbRm6N9hXsKUsgZbQCFPZT5WGLm4HOjR19Q3uPts,42419
3
3
  ccxt/alpaca.py,sha256=nVQJ8vG4JrjEvMlu_nPoyR2lBq41j9Z2smPq95nDhng,47504
4
4
  ccxt/ascendex.py,sha256=aJ5_UysmRijYUvjenq5EDLldl2JUO6lXGofJ_NqPvJU,151676
@@ -35,7 +35,7 @@ ccxt/btcalpha.py,sha256=plU5SSsJn0ZMLW7I8sXb_L0Woc3-kamGMSlqPGujUzE,36751
35
35
  ccxt/btcbox.py,sha256=lvY7cgoe4tglaQiTJZ4vILmzvoEjAWxgswRuB2iYzmE,27780
36
36
  ccxt/btcmarkets.py,sha256=WDDbtbUQ9I0odVZp8nJdIjc4-zv4li49EDSt8EqQbRU,52733
37
37
  ccxt/btcturk.py,sha256=jSA4UnD1GiJu24gXNkfb94f-zXifP5By_Ptery_cMnY,37024
38
- ccxt/bybit.py,sha256=XplwVNsQ_6pqa8uAYH2S_E-8LTULjyVCBwc9g6ZaGtA,441494
38
+ ccxt/bybit.py,sha256=IkafXZJVGyn8SIYAuZtQ-0S1MhTLeFkzJ6o8R0rJWgs,441554
39
39
  ccxt/cex.py,sha256=C1j8Vk2duXt4TuKINJ7VWivVY54sOIo-FzE6dn_laWU,70211
40
40
  ccxt/coinbase.py,sha256=CNDpskULlvJ8PLjb0tXp_PifmYXYImX8ZjB4Kvx5NqY,218725
41
41
  ccxt/coinbaseadvanced.py,sha256=d5g6nRx-NCcCwZDdtp8FsI2D-pRjSvnAP9ISSKY_nCQ,538
@@ -56,7 +56,7 @@ ccxt/deribit.py,sha256=x1TVHGfPxm9jL1Woxb-sLWZ-UdeGMiuVy4bdQGNRBO8,161694
56
56
  ccxt/digifinex.py,sha256=HUxkYS2UbrAqiPuzPPMBMFLEahiIuiOElGDxRt4Gk7o,171005
57
57
  ccxt/exmo.py,sha256=uCv9bsFzelhAHi_tIQe75X30csJvYizuCK09vU3NC4g,114777
58
58
  ccxt/fmfwio.py,sha256=RbVLvzPwnqfDsE7Ea-N13ISCC82eJVPsXYjrleASmew,1236
59
- ccxt/gate.py,sha256=AnKqnk4Ut7GNOJm-j7jvxNlE9_snkJXLoRusYa78JAI,331528
59
+ ccxt/gate.py,sha256=_sbC6tMv7QCVFYuzdv6czz4x4TdMxfgCIVUKmQpfGd8,331621
60
60
  ccxt/gateio.py,sha256=86AETJWODl_vA5VNeQRHZprmpNIY1HAxCddKZcnKSi8,445
61
61
  ccxt/gemini.py,sha256=cFAHx-qA26A9WMJ3i6f_uQH83Q4k6UDwS8zBQcLI5Fs,81056
62
62
  ccxt/hashkey.py,sha256=LMV9wPTn2_qT2om74OdF-IfHreaySxNHOilsNDrgB7Q,192148
@@ -76,7 +76,7 @@ ccxt/kucoin.py,sha256=Bfhrue_5ZiJNzetgqOJvsiOxDZwN4qAyXewZEepqtLE,231819
76
76
  ccxt/kucoinfutures.py,sha256=fgSjDKPyDixiQnmCpjTnBazjqWVg15ziKgBAp2Xq9kM,139376
77
77
  ccxt/kuna.py,sha256=wL4QciCkKXgOSnmMP2mkSq9HlL7Gsz-c2s75rH5YZkA,96074
78
78
  ccxt/latoken.py,sha256=wBhaMcTEsB316nFCxm_WbLRZ_G2Q0Vi1FK-850Q07D0,79516
79
- ccxt/lbank.py,sha256=bBnT07L-6RHbmWwvyxZvbAfwP7lRKe6TSrDveyLZabA,116250
79
+ ccxt/lbank.py,sha256=zFByIRV1v23oknBPkLIN0ZGaewr-siQzv84aoQRFRNA,116266
80
80
  ccxt/luno.py,sha256=P3cZ_CnVyjMjDFn5e7jaev-pqs_rgmWQTsiJThRtffE,46353
81
81
  ccxt/lykke.py,sha256=3la3ckeV8v_i7UdspYRJRwQ9ZzyHph88JK01kgXOeX8,51550
82
82
  ccxt/mercado.py,sha256=LWCh89IzXu-yhPGqhkdPW6wqOqfO8nmbSQhAyYiSH8U,35710
@@ -91,7 +91,7 @@ ccxt/oxfun.py,sha256=uFrS6oO6rvyXmocqPwAxVzczg0IG-BZeqRmNcNcTTig,124875
91
91
  ccxt/p2b.py,sha256=iPzHv663K8F1F0uTWEYpfQBcaqowY8MQ5tZt2ZNpoQE,54290
92
92
  ccxt/paradex.py,sha256=srDConLWOPbnIi6k8_3g232vyhfnVOn5hAE_A7Z6scE,85667
93
93
  ccxt/paymium.py,sha256=1vS0eW96jgFDrl5BUvubqMNWwywcswUxzzYsZW3NciI,24552
94
- ccxt/phemex.py,sha256=SdCk0DW9WSxSzyffSgVNMepWlBheRzj0Av-uETMP5Gk,224005
94
+ ccxt/phemex.py,sha256=9tfTblQaQrJ3YsogfSZoBrXQiCrKCqCTpr9vP9lRdkk,226899
95
95
  ccxt/poloniex.py,sha256=-jsr_QurlQ-Zck6vUONWwBTHZe1g_CtSddxd3fDo4Kc,102504
96
96
  ccxt/poloniexfutures.py,sha256=pPAI2e0rGI6D7ESB8zVEb0faswQI1PKSESXBqZwcADs,80045
97
97
  ccxt/probit.py,sha256=NsGAJu5c3Ey7ebhEMkwGqVMgIDIAOTFL4cjQLJ1-kPs,76334
@@ -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=28QGoPlZxApWrWvW6sXAEThQV1woSfOHU8ENju_4k4k,16289
221
+ ccxt/async_support/__init__.py,sha256=jkch6fN9zu-ZzvzCs1ltnQ5wZIRS5eZWdgHVXRd3q8k,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=YcGVveIDir8A1rDak-DdS_qVO1yPwAUX9sRDwCVNX80,152489
@@ -255,7 +255,7 @@ ccxt/async_support/btcalpha.py,sha256=8OefA3GsJ27eAL44yQQcRNOruHXAwTemjTPkpLKwjE
255
255
  ccxt/async_support/btcbox.py,sha256=rBXxuvdQaku5QYseQ4XSvMrCkohDefYmf-rGeS9W0IU,28004
256
256
  ccxt/async_support/btcmarkets.py,sha256=fTf_MDIM7NMwpbv6X5lYPLNg8tFKcviNiUB7N3yO6FI,53083
257
257
  ccxt/async_support/btcturk.py,sha256=Uq9rXMoDkXIy0nw1rzmw2e8eeRepcNtXKNYuw-02tkM,37242
258
- ccxt/async_support/bybit.py,sha256=7ckgkQtELiauRcvWZIdQcRywGWkmlGlYD_9DeyFxzOs,443513
258
+ ccxt/async_support/bybit.py,sha256=p_tjVgMp360vNN8-iWLM_4xeM1E38hoDDFXIur8unv8,443573
259
259
  ccxt/async_support/cex.py,sha256=HzFy4eP5qVwbXzq96VyjgJmXxK3DWUxHqJ1nHuV28cQ,70561
260
260
  ccxt/async_support/coinbase.py,sha256=XsAHx1vPMpsWcCbz6WYlY6J68luojlE3Xw5wzsaiE7U,219879
261
261
  ccxt/async_support/coinbaseadvanced.py,sha256=Kupwnuxiu_qTjwCNV2asacoDUNFQvcaHNAznUJPhdQs,552
@@ -276,7 +276,7 @@ ccxt/async_support/deribit.py,sha256=HEqDGpYgre-vZyb5wr1RzjiZ_ZSeY29geRMWSxga9dw
276
276
  ccxt/async_support/digifinex.py,sha256=RaYiL8nPU0HkyJ0XxkZBBTJ36JBGRmmjcFvHxlKN7ug,171987
277
277
  ccxt/async_support/exmo.py,sha256=HNrYN1fOnvhB26u-epXzK2xs3AqPUAgTmdRTtFu-dzw,115409
278
278
  ccxt/async_support/fmfwio.py,sha256=lzfSnPrB2ARcC3EIqAuBM4vyg6LJ6n8RE71Zvt3ez1s,1250
279
- ccxt/async_support/gate.py,sha256=UfaQfAZatglCxEiUUK3UPhua808I7fvAgTqj4kC8h8g,333271
279
+ ccxt/async_support/gate.py,sha256=oz8FCqc9_BPt4EJlvGDskb10xoZnr9UnbHo_peya3Wk,333364
280
280
  ccxt/async_support/gateio.py,sha256=6_t032F9p9x5KGTjtSuqGXITzFOx-XAQBYLpsuQjzxw,459
281
281
  ccxt/async_support/gemini.py,sha256=gy0ALSeHrenXa2aJoAW1alVOgF6rUNxUoydX5Degikc,81580
282
282
  ccxt/async_support/hashkey.py,sha256=XaSBqm0eh3R_2HCbOCZWaLuqJwVg5DJbttvfFYJpNZA,192990
@@ -296,7 +296,7 @@ ccxt/async_support/kucoin.py,sha256=DSsWZ2nxE64-gX5E-0dZLWEvxSdJb-MBL9_GMaJnKvY,
296
296
  ccxt/async_support/kucoinfutures.py,sha256=5cRGLy4MKfD7gmA8GMZdv3697BD_I7WBgR-zOgxVXss,140158
297
297
  ccxt/async_support/kuna.py,sha256=_8S74LqI1c5zbCbaSfJgUsVyqus9gB2OV9s3UMXkzYQ,96490
298
298
  ccxt/async_support/latoken.py,sha256=9BUu8akWtbBtAzVr_c_cYLkiLQqcJdSdkJbHmuLee-Y,79992
299
- ccxt/async_support/lbank.py,sha256=xWUzIsFFAV_yd0Igo3CimSys6z-AoQH88oQ0zzBb1w0,116962
299
+ ccxt/async_support/lbank.py,sha256=Xc-lvLvb1VRCMOZefhegLOKXal_EDNo90ed7RKNC8Is,116978
300
300
  ccxt/async_support/luno.py,sha256=WRQ5uH3Wr1HHZa9ZtcWCYdrmz-Y8proS5XOGZpBtiZo,46691
301
301
  ccxt/async_support/lykke.py,sha256=E5n93dUuUShGO8wXogPMQkotguYpJFWM12aT_lTwEoM,51864
302
302
  ccxt/async_support/mercado.py,sha256=mb7ULqvEr9PQ7jBOpQxiufgYzwTeAfr0G2NZmrUeUgs,35952
@@ -311,7 +311,7 @@ ccxt/async_support/oxfun.py,sha256=26g7I24m8le35qcEqFVZGfiEv3sP3pOIu53724Bz5k0,1
311
311
  ccxt/async_support/p2b.py,sha256=VKUX8u7gtHkKDwBjAyskScm2FEs6xxDuKLXE-jSHXwY,54532
312
312
  ccxt/async_support/paradex.py,sha256=e46UVIJU0WlwE1sPb6rvs0f60S6vjcdnNXhG2locNUY,86275
313
313
  ccxt/async_support/paymium.py,sha256=f-MjNo1HrLTMaMk7CcRGEzj-94ynqeNvIVMNjKbwqtI,24740
314
- ccxt/async_support/phemex.py,sha256=FKEOWbE6jetr-X9ntrGMLw6dwGspKBj1XNtL4P5gqX4,224823
314
+ ccxt/async_support/phemex.py,sha256=iXDeZa2LgnGcURLrj-RVTwUv1IBYDKJUD4pv1S8nhbs,227735
315
315
  ccxt/async_support/poloniex.py,sha256=dTLebALH02oksjxkRzd9iw8L_f6LE-R7ye5syj6o4b4,103052
316
316
  ccxt/async_support/poloniexfutures.py,sha256=g3UO7uueR0KtJbkG3O88UsSTsU2IqwTqlIdzo9wY6mM,80443
317
317
  ccxt/async_support/probit.py,sha256=UruCE3NPDPXM2VoWa8Rk6vy5wEPM9wauOLd3RvGGmk8,76726
@@ -330,7 +330,7 @@ ccxt/async_support/yobit.py,sha256=YtkLczlb641VjUYTfEMfS-BPUTdXQTHAPkearuXkXDQ,5
330
330
  ccxt/async_support/zaif.py,sha256=-ZTr8M2JaIRCL90VrbCDXBMAsZwbiwsFChSQ2rWODuQ,29044
331
331
  ccxt/async_support/zonda.py,sha256=Z4gA6o0bF_4MarQ5KiR2Zwi2wpmOuZTHS1JChAtNWjo,83114
332
332
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
333
- ccxt/async_support/base/exchange.py,sha256=pFZsmWTOWTY89LiholOn37mlbKf0Snsc5cDEodc-7uA,113443
333
+ ccxt/async_support/base/exchange.py,sha256=suGGhZdu0Aol2eN6fjnnkI31kkovmjME7EWjgk7Um0w,113806
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=EA3lxyG1qV2-FJDJubxM06o3NdkfoKcsN9EERzZPWeo,301504
347
+ ccxt/base/exchange.py,sha256=jtcCuY-T2140yzFa5qy6bqE7H-d2iIpzORjjLz1oiDM,301861
348
348
  ccxt/base/precise.py,sha256=koce64Yrp6vFbGijJtUt-QQ6XhJgeGTCksZ871FPp_A,8886
349
349
  ccxt/base/types.py,sha256=ikIahyhQe32e8y89-wrlcuRNQvExWkbijP2YSlTH2WM,10033
350
- ccxt/pro/__init__.py,sha256=pR6fhhB18vbkGsKk_xIxRQCaVVOSQd3zyJ5ubslgxMA,7710
350
+ ccxt/pro/__init__.py,sha256=8Uoip4bZN5bo2Ie2I-clT-HfpfRO5A1zL-0mG6ZYfUM,7821
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
@@ -373,6 +373,7 @@ ccxt/pro/blofin.py,sha256=pALlkuzdFZuxCaSxYfqog98x7BM8G0nqUTCke4WfUt0,31345
373
373
  ccxt/pro/bybit.py,sha256=PjSEQaOmO7BZNh5Df3USmVmhI1X6qVw0hXN8qfvcp9s,108243
374
374
  ccxt/pro/cex.py,sha256=7HFtbjDOijpamdCv3ddlqkQ6exO2jN5MZ5dtXvRg2Og,58577
375
375
  ccxt/pro/coinbase.py,sha256=hwd8lUuaW8WyQQOh9WvBVuiuOJTpmlCXU0hL3UE8UFQ,31411
376
+ ccxt/pro/coinbaseadvanced.py,sha256=Ohg1LAJbfQ7Df7cazejupZ6QeOs5eddvNolAD6ssKIA,474
376
377
  ccxt/pro/coinbaseexchange.py,sha256=eoDBwYvGK__zGtC0yNRk2evWwQAD6XpjMHcpubjBt2U,39027
377
378
  ccxt/pro/coinbaseinternational.py,sha256=1ykwnp6XaOqvH0HILlZvrJdgvscF2lnZfIyn5U9tqWY,32250
378
379
  ccxt/pro/coincheck.py,sha256=zzZcPmL4Vibh_Sjont-3D8z-E11ugVQVqPakHQxpgKs,7851
@@ -650,8 +651,8 @@ ccxt/test/tests_async.py,sha256=IOkbqZXUViJ1KtDIlE63EZaU3z31_OR2iI6yL0azKL0,8500
650
651
  ccxt/test/tests_helpers.py,sha256=z5TiaK0WyUCmM_uGTFz7cgMNqNwG_SMI9qk7yec5ces,9693
651
652
  ccxt/test/tests_init.py,sha256=GodMIrJue4KBHHqD4vSPZxokPWpxbZIuEp19UdxlFAg,1166
652
653
  ccxt/test/tests_sync.py,sha256=c9hEBBjaLRJ-rqGiR-SpVUXcFJsvrZ7mxhLKb7TJWEc,84062
653
- ccxt-4.4.19.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
654
- ccxt-4.4.19.dist-info/METADATA,sha256=I10Mmg7ajks_N3qnYM_3OenZ_em64roY5EGrqdq87J0,114487
655
- ccxt-4.4.19.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
656
- ccxt-4.4.19.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
657
- ccxt-4.4.19.dist-info/RECORD,,
654
+ ccxt-4.4.20.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
655
+ ccxt-4.4.20.dist-info/METADATA,sha256=L7MNu_B7etB4XNRqI6fQl3keyfcNwc5LVkbJYXoVbiw,114487
656
+ ccxt-4.4.20.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
657
+ ccxt-4.4.20.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
658
+ ccxt-4.4.20.dist-info/RECORD,,
File without changes