ccxt 4.3.74__py2.py3-none-any.whl → 4.3.75__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/__init__.py CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  # ----------------------------------------------------------------------------
24
24
 
25
- __version__ = '4.3.74'
25
+ __version__ = '4.3.75'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
ccxt/abstract/bybit.py CHANGED
@@ -53,6 +53,7 @@ class ImplicitAPI:
53
53
  public_get_v5_spot_cross_margin_trade_borrow_token = publicGetV5SpotCrossMarginTradeBorrowToken = Entry('v5/spot-cross-margin-trade/borrow-token', 'public', 'GET', {'cost': 5})
54
54
  public_get_v5_ins_loan_product_infos = publicGetV5InsLoanProductInfos = Entry('v5/ins-loan/product-infos', 'public', 'GET', {'cost': 5})
55
55
  public_get_v5_ins_loan_ensure_tokens_convert = publicGetV5InsLoanEnsureTokensConvert = Entry('v5/ins-loan/ensure-tokens-convert', 'public', 'GET', {'cost': 5})
56
+ private_get_v5_market_instruments_info = privateGetV5MarketInstrumentsInfo = Entry('v5/market/instruments-info', 'private', 'GET', {'cost': 5})
56
57
  private_get_v2_private_wallet_fund_records = privateGetV2PrivateWalletFundRecords = Entry('v2/private/wallet/fund/records', 'private', 'GET', {'cost': 25})
57
58
  private_get_spot_v3_private_order = privateGetSpotV3PrivateOrder = Entry('spot/v3/private/order', 'private', 'GET', {'cost': 2.5})
58
59
  private_get_spot_v3_private_open_orders = privateGetSpotV3PrivateOpenOrders = Entry('spot/v3/private/open-orders', 'private', 'GET', {'cost': 2.5})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.74'
7
+ __version__ = '4.3.75'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.3.74'
5
+ __version__ = '4.3.75'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -9123,7 +9123,7 @@ class binance(Exchange, ImplicitAPI):
9123
9123
  liquidationPrice = self.parse_number(liquidationPriceString)
9124
9124
  collateralString = None
9125
9125
  marginMode = self.safe_string(position, 'marginType')
9126
- if marginMode is None and isolatedMarginString:
9126
+ if marginMode is None and isolatedMarginString is not None:
9127
9127
  marginMode = 'cross' if Precise.string_eq(isolatedMarginString, '0') else 'isolated'
9128
9128
  side = None
9129
9129
  if Precise.string_gt(notionalString, '0'):
@@ -255,6 +255,7 @@ class bybit(Exchange, ImplicitAPI):
255
255
  },
256
256
  'private': {
257
257
  'get': {
258
+ 'v5/market/instruments-info': 5,
258
259
  # Legacy inverse swap
259
260
  'v2/private/wallet/fund/records': 25, # 120 per minute = 2 per second => cost = 50 / 2 = 25
260
261
  # spot
@@ -1000,6 +1001,7 @@ class bybit(Exchange, ImplicitAPI):
1000
1001
  },
1001
1002
  'precisionMode': TICK_SIZE,
1002
1003
  'options': {
1004
+ 'usePrivateInstrumentsInfo': False,
1003
1005
  'sandboxMode': False,
1004
1006
  'enableDemoTrading': False,
1005
1007
  'fetchMarkets': ['spot', 'linear', 'inverse', 'option'],
@@ -1458,7 +1460,12 @@ class bybit(Exchange, ImplicitAPI):
1458
1460
  request: dict = {
1459
1461
  'category': 'spot',
1460
1462
  }
1461
- response = await self.publicGetV5MarketInstrumentsInfo(self.extend(request, params))
1463
+ usePrivateInstrumentsInfo = self.safe_bool(self.options, 'usePrivateInstrumentsInfo', False)
1464
+ response: dict = None
1465
+ if usePrivateInstrumentsInfo:
1466
+ response = await self.privateGetV5MarketInstrumentsInfo(self.extend(request, params))
1467
+ else:
1468
+ response = await self.publicGetV5MarketInstrumentsInfo(self.extend(request, params))
1462
1469
  #
1463
1470
  # {
1464
1471
  # "retCode": 0,
@@ -1567,14 +1574,23 @@ class bybit(Exchange, ImplicitAPI):
1567
1574
  async def fetch_future_markets(self, params):
1568
1575
  params = self.extend(params)
1569
1576
  params['limit'] = 1000 # minimize number of requests
1570
- response = await self.publicGetV5MarketInstrumentsInfo(params)
1577
+ usePrivateInstrumentsInfo = self.safe_bool(self.options, 'usePrivateInstrumentsInfo', False)
1578
+ response: dict = None
1579
+ if usePrivateInstrumentsInfo:
1580
+ response = await self.privateGetV5MarketInstrumentsInfo(params)
1581
+ else:
1582
+ response = await self.publicGetV5MarketInstrumentsInfo(params)
1571
1583
  data = self.safe_dict(response, 'result', {})
1572
1584
  markets = self.safe_list(data, 'list', [])
1573
1585
  paginationCursor = self.safe_string(data, 'nextPageCursor')
1574
1586
  if paginationCursor is not None:
1575
1587
  while(paginationCursor is not None):
1576
1588
  params['cursor'] = paginationCursor
1577
- responseInner = await self.publicGetV5MarketInstrumentsInfo(params)
1589
+ responseInner: dict = None
1590
+ if usePrivateInstrumentsInfo:
1591
+ responseInner = await self.privateGetV5MarketInstrumentsInfo(params)
1592
+ else:
1593
+ responseInner = await self.publicGetV5MarketInstrumentsInfo(params)
1578
1594
  dataNew = self.safe_dict(responseInner, 'result', {})
1579
1595
  rawMarkets = self.safe_list(dataNew, 'list', [])
1580
1596
  rawMarketsLength = len(rawMarkets)
@@ -1731,7 +1747,12 @@ class bybit(Exchange, ImplicitAPI):
1731
1747
  request: dict = {
1732
1748
  'category': 'option',
1733
1749
  }
1734
- response = await self.publicGetV5MarketInstrumentsInfo(self.extend(request, params))
1750
+ usePrivateInstrumentsInfo = self.safe_bool(self.options, 'usePrivateInstrumentsInfo', False)
1751
+ response: dict = None
1752
+ if usePrivateInstrumentsInfo:
1753
+ response = await self.privateGetV5MarketInstrumentsInfo(self.extend(request, params))
1754
+ else:
1755
+ response = await self.publicGetV5MarketInstrumentsInfo(self.extend(request, params))
1735
1756
  data = self.safe_dict(response, 'result', {})
1736
1757
  markets = self.safe_list(data, 'list', [])
1737
1758
  if self.options['loadAllOptions']:
@@ -1740,7 +1761,11 @@ class bybit(Exchange, ImplicitAPI):
1740
1761
  if paginationCursor is not None:
1741
1762
  while(paginationCursor is not None):
1742
1763
  request['cursor'] = paginationCursor
1743
- responseInner = await self.publicGetV5MarketInstrumentsInfo(self.extend(request, params))
1764
+ responseInner: dict = None
1765
+ if usePrivateInstrumentsInfo:
1766
+ responseInner = await self.privateGetV5MarketInstrumentsInfo(self.extend(request, params))
1767
+ else:
1768
+ responseInner = await self.publicGetV5MarketInstrumentsInfo(self.extend(request, params))
1744
1769
  dataNew = self.safe_dict(responseInner, 'result', {})
1745
1770
  rawMarkets = self.safe_list(dataNew, 'list', [])
1746
1771
  rawMarketsLength = len(rawMarkets)
@@ -4908,7 +4908,7 @@ class mexc(Exchange, ImplicitAPI):
4908
4908
  networks = self.safe_dict(self.options, 'networks', {})
4909
4909
  network = self.safe_string_2(params, 'network', 'netWork') # self line allows the user to specify either ERC20 or ETH
4910
4910
  network = self.safe_string(networks, network, network) # handle ETH > ERC-20 alias
4911
- network = self.network_code_to_id(network)
4911
+ network = self.network_id_to_code(network)
4912
4912
  self.check_address(address)
4913
4913
  await self.load_markets()
4914
4914
  currency = self.currency(code)
@@ -794,8 +794,23 @@ class whitebit(Exchange, ImplicitAPI):
794
794
  # "change": "2.12" # in percent
795
795
  # }
796
796
  #
797
+ # WS market_update
798
+ #
799
+ # {
800
+ # "open": "52853.04",
801
+ # "close": "55913.88",
802
+ # "high": "56272",
803
+ # "low": "49549.67",
804
+ # "volume": "57331.067185",
805
+ # "deal": "3063860382.42985338",
806
+ # "last": "55913.88",
807
+ # "period": 86400
808
+ # }
797
809
  market = self.safe_market(None, market)
798
- last = self.safe_string(ticker, 'last_price')
810
+ # last price is provided as "last" or "last_price"
811
+ last = self.safe_string_2(ticker, 'last', 'last_price')
812
+ # if "close" is provided, use it, otherwise use <last>
813
+ close = self.safe_string(ticker, 'close', last)
799
814
  return self.safe_ticker({
800
815
  'symbol': market['symbol'],
801
816
  'timestamp': None,
@@ -808,7 +823,7 @@ class whitebit(Exchange, ImplicitAPI):
808
823
  'askVolume': None,
809
824
  'vwap': None,
810
825
  'open': self.safe_string(ticker, 'open'),
811
- 'close': last,
826
+ 'close': close,
812
827
  'last': last,
813
828
  'previousClose': None,
814
829
  'change': None,
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.74'
7
+ __version__ = '4.3.75'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
ccxt/binance.py CHANGED
@@ -9122,7 +9122,7 @@ class binance(Exchange, ImplicitAPI):
9122
9122
  liquidationPrice = self.parse_number(liquidationPriceString)
9123
9123
  collateralString = None
9124
9124
  marginMode = self.safe_string(position, 'marginType')
9125
- if marginMode is None and isolatedMarginString:
9125
+ if marginMode is None and isolatedMarginString is not None:
9126
9126
  marginMode = 'cross' if Precise.string_eq(isolatedMarginString, '0') else 'isolated'
9127
9127
  side = None
9128
9128
  if Precise.string_gt(notionalString, '0'):
ccxt/bybit.py CHANGED
@@ -254,6 +254,7 @@ class bybit(Exchange, ImplicitAPI):
254
254
  },
255
255
  'private': {
256
256
  'get': {
257
+ 'v5/market/instruments-info': 5,
257
258
  # Legacy inverse swap
258
259
  'v2/private/wallet/fund/records': 25, # 120 per minute = 2 per second => cost = 50 / 2 = 25
259
260
  # spot
@@ -999,6 +1000,7 @@ class bybit(Exchange, ImplicitAPI):
999
1000
  },
1000
1001
  'precisionMode': TICK_SIZE,
1001
1002
  'options': {
1003
+ 'usePrivateInstrumentsInfo': False,
1002
1004
  'sandboxMode': False,
1003
1005
  'enableDemoTrading': False,
1004
1006
  'fetchMarkets': ['spot', 'linear', 'inverse', 'option'],
@@ -1457,7 +1459,12 @@ class bybit(Exchange, ImplicitAPI):
1457
1459
  request: dict = {
1458
1460
  'category': 'spot',
1459
1461
  }
1460
- response = self.publicGetV5MarketInstrumentsInfo(self.extend(request, params))
1462
+ usePrivateInstrumentsInfo = self.safe_bool(self.options, 'usePrivateInstrumentsInfo', False)
1463
+ response: dict = None
1464
+ if usePrivateInstrumentsInfo:
1465
+ response = self.privateGetV5MarketInstrumentsInfo(self.extend(request, params))
1466
+ else:
1467
+ response = self.publicGetV5MarketInstrumentsInfo(self.extend(request, params))
1461
1468
  #
1462
1469
  # {
1463
1470
  # "retCode": 0,
@@ -1566,14 +1573,23 @@ class bybit(Exchange, ImplicitAPI):
1566
1573
  def fetch_future_markets(self, params):
1567
1574
  params = self.extend(params)
1568
1575
  params['limit'] = 1000 # minimize number of requests
1569
- response = self.publicGetV5MarketInstrumentsInfo(params)
1576
+ usePrivateInstrumentsInfo = self.safe_bool(self.options, 'usePrivateInstrumentsInfo', False)
1577
+ response: dict = None
1578
+ if usePrivateInstrumentsInfo:
1579
+ response = self.privateGetV5MarketInstrumentsInfo(params)
1580
+ else:
1581
+ response = self.publicGetV5MarketInstrumentsInfo(params)
1570
1582
  data = self.safe_dict(response, 'result', {})
1571
1583
  markets = self.safe_list(data, 'list', [])
1572
1584
  paginationCursor = self.safe_string(data, 'nextPageCursor')
1573
1585
  if paginationCursor is not None:
1574
1586
  while(paginationCursor is not None):
1575
1587
  params['cursor'] = paginationCursor
1576
- responseInner = self.publicGetV5MarketInstrumentsInfo(params)
1588
+ responseInner: dict = None
1589
+ if usePrivateInstrumentsInfo:
1590
+ responseInner = self.privateGetV5MarketInstrumentsInfo(params)
1591
+ else:
1592
+ responseInner = self.publicGetV5MarketInstrumentsInfo(params)
1577
1593
  dataNew = self.safe_dict(responseInner, 'result', {})
1578
1594
  rawMarkets = self.safe_list(dataNew, 'list', [])
1579
1595
  rawMarketsLength = len(rawMarkets)
@@ -1730,7 +1746,12 @@ class bybit(Exchange, ImplicitAPI):
1730
1746
  request: dict = {
1731
1747
  'category': 'option',
1732
1748
  }
1733
- response = self.publicGetV5MarketInstrumentsInfo(self.extend(request, params))
1749
+ usePrivateInstrumentsInfo = self.safe_bool(self.options, 'usePrivateInstrumentsInfo', False)
1750
+ response: dict = None
1751
+ if usePrivateInstrumentsInfo:
1752
+ response = self.privateGetV5MarketInstrumentsInfo(self.extend(request, params))
1753
+ else:
1754
+ response = self.publicGetV5MarketInstrumentsInfo(self.extend(request, params))
1734
1755
  data = self.safe_dict(response, 'result', {})
1735
1756
  markets = self.safe_list(data, 'list', [])
1736
1757
  if self.options['loadAllOptions']:
@@ -1739,7 +1760,11 @@ class bybit(Exchange, ImplicitAPI):
1739
1760
  if paginationCursor is not None:
1740
1761
  while(paginationCursor is not None):
1741
1762
  request['cursor'] = paginationCursor
1742
- responseInner = self.publicGetV5MarketInstrumentsInfo(self.extend(request, params))
1763
+ responseInner: dict = None
1764
+ if usePrivateInstrumentsInfo:
1765
+ responseInner = self.privateGetV5MarketInstrumentsInfo(self.extend(request, params))
1766
+ else:
1767
+ responseInner = self.publicGetV5MarketInstrumentsInfo(self.extend(request, params))
1743
1768
  dataNew = self.safe_dict(responseInner, 'result', {})
1744
1769
  rawMarkets = self.safe_list(dataNew, 'list', [])
1745
1770
  rawMarketsLength = len(rawMarkets)
ccxt/mexc.py CHANGED
@@ -4908,7 +4908,7 @@ class mexc(Exchange, ImplicitAPI):
4908
4908
  networks = self.safe_dict(self.options, 'networks', {})
4909
4909
  network = self.safe_string_2(params, 'network', 'netWork') # self line allows the user to specify either ERC20 or ETH
4910
4910
  network = self.safe_string(networks, network, network) # handle ETH > ERC-20 alias
4911
- network = self.network_code_to_id(network)
4911
+ network = self.network_id_to_code(network)
4912
4912
  self.check_address(address)
4913
4913
  self.load_markets()
4914
4914
  currency = self.currency(code)
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.74'
7
+ __version__ = '4.3.75'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
ccxt/whitebit.py CHANGED
@@ -794,8 +794,23 @@ class whitebit(Exchange, ImplicitAPI):
794
794
  # "change": "2.12" # in percent
795
795
  # }
796
796
  #
797
+ # WS market_update
798
+ #
799
+ # {
800
+ # "open": "52853.04",
801
+ # "close": "55913.88",
802
+ # "high": "56272",
803
+ # "low": "49549.67",
804
+ # "volume": "57331.067185",
805
+ # "deal": "3063860382.42985338",
806
+ # "last": "55913.88",
807
+ # "period": 86400
808
+ # }
797
809
  market = self.safe_market(None, market)
798
- last = self.safe_string(ticker, 'last_price')
810
+ # last price is provided as "last" or "last_price"
811
+ last = self.safe_string_2(ticker, 'last', 'last_price')
812
+ # if "close" is provided, use it, otherwise use <last>
813
+ close = self.safe_string(ticker, 'close', last)
799
814
  return self.safe_ticker({
800
815
  'symbol': market['symbol'],
801
816
  'timestamp': None,
@@ -808,7 +823,7 @@ class whitebit(Exchange, ImplicitAPI):
808
823
  'askVolume': None,
809
824
  'vwap': None,
810
825
  'open': self.safe_string(ticker, 'open'),
811
- 'close': last,
826
+ 'close': close,
812
827
  'last': last,
813
828
  'previousClose': None,
814
829
  'change': None,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.3.74
3
+ Version: 4.3.75
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
@@ -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.74/dist/ccxt.browser.min.js
274
- * unpkg: https://unpkg.com/ccxt@4.3.74/dist/ccxt.browser.min.js
273
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.75/dist/ccxt.browser.min.js
274
+ * unpkg: https://unpkg.com/ccxt@4.3.75/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.74/dist/ccxt.browser.min.js"></script>
279
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.75/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=V8R0ChX9psJYlcMvltx_xE2EaEv7PBUWOZdCqkKnPBo,16417
1
+ ccxt/__init__.py,sha256=6pee9RqKKApaMkQYarP2CjEiCZ9owi1k6V1LexzneVU,16417
2
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=oSG3ug4JdLv0U8hSB3ayhqDoci2A4sQOG7IX6OArUIg,641495
7
+ ccxt/binance.py,sha256=0Sn_5ZK5sjG1CfGYB_lEWjCzDnkdVWz_Ij7DMSFBQSc,641507
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=A0y3gqD38urhUDSNrFmss-wRClWMLJsXDdZBvq7UQlQ,415853
38
+ ccxt/bybit.py,sha256=zEJyvXcg9yzThLuLyDSX7A_mMB1Vp-jT59yo0hGOMyQ,417211
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
@@ -79,7 +79,7 @@ ccxt/lbank.py,sha256=Glx9CN_jdQMiUngJLYioxzwDfgFTdusdOfK53_Bg6A8,116045
79
79
  ccxt/luno.py,sha256=mJqzQFX-DneQ6Wo0Dqfc7sG0OVmaPSKAkmRs1pM7Yj8,46191
80
80
  ccxt/lykke.py,sha256=RqjZ8TXHN_Bok2gXNsJX5jgMDb7GqMbpPPqBMHiLb0E,51408
81
81
  ccxt/mercado.py,sha256=LWCh89IzXu-yhPGqhkdPW6wqOqfO8nmbSQhAyYiSH8U,35710
82
- ccxt/mexc.py,sha256=VdaqQcV0hvtY1PjtCZdq5MU1QeTXPcCFLQvaN2yljrs,241442
82
+ ccxt/mexc.py,sha256=JexIe_RjsbWtC7vfcgnIwHqniIL_OSbNSirk7od5C1Q,241442
83
83
  ccxt/ndax.py,sha256=K4nlroc0lE0c3wETvYt_O5sfOrHmTiknpXfMIWdafzA,108947
84
84
  ccxt/novadax.py,sha256=_xFkuZ72vHhpJb1N9h_MQHRD05GDWlqUeLQQcOp43BM,64436
85
85
  ccxt/oceanex.py,sha256=DrsNIW-eXvaSHCB2l1valmiU9xMztxm1VNBJodMkWIY,38021
@@ -101,7 +101,7 @@ ccxt/upbit.py,sha256=W_W8aETJyopwhYfZd2tWvhPvi7BjQ4KSIOdn8nzyWv8,85413
101
101
  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
- ccxt/whitebit.py,sha256=ZkM8nGbqqiX6Aon-CwXileEE_9dhK3kVrJOSk1SBw7E,118768
104
+ ccxt/whitebit.py,sha256=fkM0Clt74bSiOJ_L-CehR2Gkn3v3kZksCQT0JCCG5rs,119340
105
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
@@ -145,7 +145,7 @@ ccxt/abstract/btcalpha.py,sha256=sbF4SAkTJq01QPQw4D2GMkKrPhKfFIsG-PNtMAC9WwU,138
145
145
  ccxt/abstract/btcbox.py,sha256=pifkHEayyfVN4lhO2s8oKg_wjQChwWo0g5-vw4rcm1s,931
146
146
  ccxt/abstract/btcmarkets.py,sha256=dQ2yTZ_8T2TEeAYIuKE0ATImbOLDLGSK7HbbBd8XVJQ,3690
147
147
  ccxt/abstract/btcturk.py,sha256=duM-QrB9MvGpopOtxkfbeYlY49bgvXQLiosRVmnQYFw,1777
148
- ccxt/abstract/bybit.py,sha256=eqKWi3rALneYXIgP62lKZDq_mRAGYNawisGPPLqQ1vk,48923
148
+ ccxt/abstract/bybit.py,sha256=d2Fx_iBoe7XXsCK8mxQubRqYSz_qaVneIfD31CqAoDA,49071
149
149
  ccxt/abstract/cex.py,sha256=Q0NJeDuJ4Kn_mtokYqBenhXWvLIiMSVTqbgbfcLGgv4,3311
150
150
  ccxt/abstract/coinbase.py,sha256=GFXDh_Bf65Gsx_DmgOrRG2jpM3IdITE3Agqz_LZTJfo,15507
151
151
  ccxt/abstract/coinbaseadvanced.py,sha256=GFXDh_Bf65Gsx_DmgOrRG2jpM3IdITE3Agqz_LZTJfo,15507
@@ -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=2nsEj3_izz4A-22T63N2zBmS8uxUBiD-7ms5dblttp8,16230
221
+ ccxt/async_support/__init__.py,sha256=LpaAtjWl7sDgEpQgXSdVVVHuIGV4HvoP1ogmEL_P3Lw,16230
222
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=Gpr1ixczhWgduKTuL2399I5i4Z3-8H4oHuhCVoyGv7Y,644217
227
+ ccxt/async_support/binance.py,sha256=Bf4rSLZ0sRLQKR4dbmR0Np6zgavp7Y7KxJbB4ZE1EWM,644229
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=Y4M2hjFVUS47hNd_32Cab4ZrebvmdzK4gZ1D9hq1JVI,417693
258
+ ccxt/async_support/bybit.py,sha256=mZrB9aMLE2FyWsVlVui0pBqRhm_lWXjNkYAYUBzhEoM,419081
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
@@ -299,7 +299,7 @@ ccxt/async_support/lbank.py,sha256=MeqPjECSmsplCtatu7Ns6sHRwzAGP_6S5MwB2BomnXk,1
299
299
  ccxt/async_support/luno.py,sha256=F4t6XgboOe688S6bZCEnaF_ZEh_6f1YTqV6wRaddWo0,46529
300
300
  ccxt/async_support/lykke.py,sha256=UXQmNfWucuylickY0EBbrkahAoU-68B7k1B-EBNpC00,51722
301
301
  ccxt/async_support/mercado.py,sha256=mb7ULqvEr9PQ7jBOpQxiufgYzwTeAfr0G2NZmrUeUgs,35952
302
- ccxt/async_support/mexc.py,sha256=x3odhSwbEGFvPK4-VHEtm1SLNGntH_uJhq3A1JQ1Cj0,242620
302
+ ccxt/async_support/mexc.py,sha256=fmaaizeaOGz1Rt-ep1HOW4XyDrAIplmcOxR4Ksi1vbU,242620
303
303
  ccxt/async_support/ndax.py,sha256=M_DtH6Rtzpc8p4nwOwBkxMIf0yQNoVvRkOexcvNUK6k,109471
304
304
  ccxt/async_support/novadax.py,sha256=YNKUM1CGFK7lpBwbxSSL1IAEJCRVsNxeITkwtw6VWCM,64804
305
305
  ccxt/async_support/oceanex.py,sha256=85IHjCWsBZZXntKHPeuUpFYP9FV0Ik93gJsTlrGzhVA,38341
@@ -321,7 +321,7 @@ ccxt/async_support/upbit.py,sha256=GmhV24xdjd5NSCronYkqLCM8rr_hNdpt4NEDA5jEkLw,8
321
321
  ccxt/async_support/vertex.py,sha256=6eOWWpuDaGHhSMkOb1CR7ZhlnaMVNWVLoIKOK_W4mT4,122203
322
322
  ccxt/async_support/wavesexchange.py,sha256=kdF7Nm5a34mtgIj2HWTLuV3plt4K3EBKMpLENIxtoMk,115375
323
323
  ccxt/async_support/wazirx.py,sha256=bnUpw9be3o4l2Hxm3jcfNXn5bMyZlgqoG8BGPusuIzs,52707
324
- ccxt/async_support/whitebit.py,sha256=JpY0YJHVmvg0OOqRAXRfRV_KuscYglWQ1YVt3DkHrsg,119418
324
+ ccxt/async_support/whitebit.py,sha256=haF5nFYGuJzkplHBIyLLDJ6N3ThIDPpgjeI3S-TYs98,119990
325
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
@@ -329,7 +329,7 @@ ccxt/async_support/yobit.py,sha256=JuH_yClCl_cd5L-BMTt3MPAvIF61Wpqc3W7H-fno6Hs,5
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=-Vr3rDTBf_ZgT1xSsVh4SANOOOAg768Impv1cboAjaw,110793
332
+ ccxt/async_support/base/exchange.py,sha256=eONOGxmrwyPqunsEUMLRtOnTSMQtdRw3WLwm-K3I7ww,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,10 +343,10 @@ 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=UYrcDNip7_HsHo00hJhqGvMHg5pmTBnnHRGfsbohe40,294200
346
+ ccxt/base/exchange.py,sha256=WXplpZSEHeNGUS-8jLQ1sgkEXc31-FBOpGK4w1JLpkk,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=5RB2uTufCZu4RNhDJBqlzjsb6s5q9YGHFA7TyU8obVE,7608
349
+ ccxt/pro/__init__.py,sha256=Tg-BBQCqFO6ZrCXyqgZzCLqIDutxP9AAbYq0iCP2LTs,7608
350
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
@@ -650,8 +650,8 @@ ccxt/test/tests_async.py,sha256=NShOLO2-HzYsh07U7aiUGssiv-AZ_p88h-NuQub9OKU,8468
650
650
  ccxt/test/tests_helpers.py,sha256=xhOILoZ_x3RSfQjtKt6AQlkp9DkOtpTQe8GAUUZoM6s,10069
651
651
  ccxt/test/tests_init.py,sha256=eVwwUHujX9t4rjgo4TqEeg7DDhR1Hb_e2SJN8NVGyl0,998
652
652
  ccxt/test/tests_sync.py,sha256=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,,
653
+ ccxt-4.3.75.dist-info/LICENSE.txt,sha256=EIb9221AhMHV7xF1_55STFdKTFsnJVJYkRpY2Lnvo5w,1068
654
+ ccxt-4.3.75.dist-info/METADATA,sha256=NGlZWEOeSRX2NXUD7MDxrR9NVRfaR62fo__boi_tiSs,116642
655
+ ccxt-4.3.75.dist-info/WHEEL,sha256=z9j0xAa_JmUKMpmz72K0ZGALSM_n-wQVmGbleXx2VHg,110
656
+ ccxt-4.3.75.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
657
+ ccxt-4.3.75.dist-info/RECORD,,
File without changes