ccxt 3.1.36__py2.py3-none-any.whl → 3.1.38__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__ = '3.1.36'
25
+ __version__ = '3.1.38'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
ccxt/abstract/bitstamp.py CHANGED
@@ -204,3 +204,7 @@ class ImplicitAPI:
204
204
  private_post_doge_address = privatePostDogeAddress = Entry('doge_address/', 'private', 'POST', {'cost': 1})
205
205
  private_post_flr_withdrawal = privatePostFlrWithdrawal = Entry('flr_withdrawal/', 'private', 'POST', {'cost': 1})
206
206
  private_post_flr_address = privatePostFlrAddress = Entry('flr_address/', 'private', 'POST', {'cost': 1})
207
+ private_post_dgld_withdrawal = privatePostDgldWithdrawal = Entry('dgld_withdrawal/', 'private', 'POST', {'cost': 1})
208
+ private_post_dgld_address = privatePostDgldAddress = Entry('dgld_address/', 'private', 'POST', {'cost': 1})
209
+ private_post_ldo_withdrawal = privatePostLdoWithdrawal = Entry('ldo_withdrawal/', 'private', 'POST', {'cost': 1})
210
+ private_post_ldo_address = privatePostLdoAddress = Entry('ldo_address/', 'private', 'POST', {'cost': 1})
ccxt/abstract/probit.py CHANGED
@@ -19,4 +19,5 @@ class ImplicitAPI:
19
19
  private_get_order_history = privateGetOrderHistory = Entry('order_history', 'private', 'GET', {'cost': 1})
20
20
  private_get_trade_history = privateGetTradeHistory = Entry('trade_history', 'private', 'GET', {'cost': 1})
21
21
  private_get_deposit_address = privateGetDepositAddress = Entry('deposit_address', 'private', 'GET', {'cost': 1})
22
+ private_get_transfer_payment = privateGetTransferPayment = Entry('transfer/payment', 'private', 'GET', {'cost': 1})
22
23
  accounts_post_token = accountsPostToken = Entry('token', 'accounts', 'POST', {'cost': 1})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '3.1.36'
7
+ __version__ = '3.1.38'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '3.1.36'
5
+ __version__ = '3.1.38'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -2518,6 +2518,7 @@ class Exchange(BaseExchange):
2518
2518
  if self.has['fetchFundingRates']:
2519
2519
  await self.load_markets()
2520
2520
  market = self.market(symbol)
2521
+ symbol = market['symbol']
2521
2522
  if not market['contract']:
2522
2523
  raise BadSymbol(self.id + ' fetchFundingRate() supports contract markets only')
2523
2524
  rates = await self.fetchFundingRates([symbol], params)
@@ -1788,6 +1788,45 @@ class bitget(Exchange, ImplicitAPI):
1788
1788
  # quoteVolume: '5552388715.9215',
1789
1789
  # usdtVolume: '5552388715.9215'
1790
1790
  # }
1791
+ # spot tickers
1792
+ # {
1793
+ # "symbol":"LINKUSDT",
1794
+ # "high24h":"5.2816",
1795
+ # "low24h":"5.0828",
1796
+ # "close":"5.24",
1797
+ # "quoteVol":"1427864.6815",
1798
+ # "baseVol":"276089.9017",
1799
+ # "usdtVol":"1427864.68148328",
1800
+ # "ts":"1686653354407",
1801
+ # "buyOne":"5.239",
1802
+ # "sellOne":"5.2404",
1803
+ # "+":"95.187",
1804
+ # "askSz":"947.6127",
1805
+ # "openUtc0":"5.1599",
1806
+ # "changeUtc":"0.01552",
1807
+ # "change":"0.02594"
1808
+ # }
1809
+ # swap tickers
1810
+ # {
1811
+ # "symbol":"BTCUSDT_UMCBL",
1812
+ # "last":"26139",
1813
+ # "bestAsk":"26139",
1814
+ # "bestBid":"26138.5",
1815
+ # "bidSz":"4.62",
1816
+ # "askSz":"11.142",
1817
+ # "high24h":"26260",
1818
+ # "low24h":"25637",
1819
+ # "timestamp":"1686653988192",
1820
+ # "priceChangePercent":"0.01283",
1821
+ # "baseVolume":"130207.098",
1822
+ # "quoteVolume":"3378775678.441",
1823
+ # "usdtVolume":"3378775678.441",
1824
+ # "openUtc":"25889",
1825
+ # "chgUtc":"0.00966",
1826
+ # "indexPrice":"26159.375846",
1827
+ # "fundingRate":"0.000062",
1828
+ # "holdingAmount":"74551.735"
1829
+ # }
1791
1830
  #
1792
1831
  marketId = self.safe_string(ticker, 'symbol')
1793
1832
  if (market is None) and (marketId is not None) and (marketId.find('_') == -1):
@@ -1803,10 +1842,13 @@ class bitget(Exchange, ImplicitAPI):
1803
1842
  quoteVolume = self.safe_string_2(ticker, 'quoteVol', 'quoteVolume')
1804
1843
  baseVolume = self.safe_string_2(ticker, 'baseVol', 'baseVolume')
1805
1844
  timestamp = self.safe_integer_2(ticker, 'ts', 'timestamp')
1845
+ bidVolume = self.safe_string(ticker, 'bidSz')
1846
+ askVolume = self.safe_string(ticker, 'askSz')
1806
1847
  datetime = self.iso8601(timestamp)
1807
1848
  bid = self.safe_string_2(ticker, 'buyOne', 'bestBid')
1808
1849
  ask = self.safe_string_2(ticker, 'sellOne', 'bestAsk')
1809
- percentage = Precise.string_mul(self.safe_string(ticker, 'priceChangePercent'), '100')
1850
+ percentage = Precise.string_mul(self.safe_string_n(ticker, ['priceChangePercent', 'changeUtc', 'change', 'chgUtc']), '100')
1851
+ open = self.safe_string_2(ticker, 'openUtc0', 'openUtc')
1810
1852
  return self.safe_ticker({
1811
1853
  'symbol': symbol,
1812
1854
  'timestamp': timestamp,
@@ -1814,11 +1856,11 @@ class bitget(Exchange, ImplicitAPI):
1814
1856
  'high': high,
1815
1857
  'low': low,
1816
1858
  'bid': bid,
1817
- 'bidVolume': None,
1859
+ 'bidVolume': bidVolume,
1818
1860
  'ask': ask,
1819
- 'askVolume': None,
1861
+ 'askVolume': askVolume,
1820
1862
  'vwap': None,
1821
- 'open': None,
1863
+ 'open': open,
1822
1864
  'close': close,
1823
1865
  'last': None,
1824
1866
  'previousClose': None,
@@ -2574,7 +2616,8 @@ class bitget(Exchange, ImplicitAPI):
2574
2616
  triggerType = self.safe_string(params, 'triggerType', 'market_price')
2575
2617
  request['triggerType'] = triggerType
2576
2618
  request['triggerPrice'] = self.price_to_precision(symbol, triggerPrice)
2577
- request['executePrice'] = self.price_to_precision(symbol, price)
2619
+ if price is not None:
2620
+ request['executePrice'] = self.price_to_precision(symbol, price)
2578
2621
  method = 'privateSpotPostPlanPlacePlan'
2579
2622
  if quantity is not None:
2580
2623
  request[quantityKey] = quantity
@@ -999,6 +999,8 @@ class bitso(Exchange, ImplicitAPI):
999
999
  def parse_order_status(self, status):
1000
1000
  statuses = {
1001
1001
  'partial-fill': 'open', # self is a common substitution in ccxt
1002
+ 'partially filled': 'open',
1003
+ 'queued': 'open',
1002
1004
  'completed': 'closed',
1003
1005
  }
1004
1006
  return self.safe_string(statuses, status, status)
@@ -335,6 +335,10 @@ class bitstamp(Exchange, ImplicitAPI):
335
335
  'doge_address/': 1,
336
336
  'flr_withdrawal/': 1,
337
337
  'flr_address/': 1,
338
+ 'dgld_withdrawal/': 1,
339
+ 'dgld_address/': 1,
340
+ 'ldo_withdrawal/': 1,
341
+ 'ldo_address/': 1,
338
342
  },
339
343
  },
340
344
  },
@@ -59,9 +59,9 @@ class krakenfutures(Exchange, ImplicitAPI):
59
59
  'fetchBorrowRatesPerSymbol': False,
60
60
  'fetchClosedOrders': None, # https://support.kraken.com/hc/en-us/articles/360058243651-Historical-orders
61
61
  'fetchFundingHistory': None,
62
- 'fetchFundingRate': False,
62
+ 'fetchFundingRate': 'emulated',
63
63
  'fetchFundingRateHistory': True,
64
- 'fetchFundingRates': False,
64
+ 'fetchFundingRates': True,
65
65
  'fetchIndexOHLCV': False,
66
66
  'fetchIsolatedPositions': False,
67
67
  'fetchLeverageTiers': True,
@@ -1513,6 +1513,78 @@ class krakenfutures(Exchange, ImplicitAPI):
1513
1513
  result[code] = account
1514
1514
  return self.safe_balance(result)
1515
1515
 
1516
+ async def fetch_funding_rates(self, symbols: Optional[List[str]] = None, params={}):
1517
+ """
1518
+ see https://docs.futures.kraken.com/#http-api-trading-v3-api-market-data-get-tickers
1519
+ fetch the current funding rates
1520
+ :param [str] symbols: unified market symbols
1521
+ :param dict params: extra parameters specific to the krakenfutures api endpoint
1522
+ :returns [dict]: an array of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-structure>`
1523
+ """
1524
+ await self.load_markets()
1525
+ marketIds = self.market_ids(symbols)
1526
+ response = await self.publicGetTickers(params)
1527
+ tickers = self.safe_value(response, 'tickers')
1528
+ fundingRates = []
1529
+ for i in range(0, len(tickers)):
1530
+ entry = tickers[i]
1531
+ entry_symbol = self.safe_value(entry, 'symbol')
1532
+ if marketIds is not None:
1533
+ if not self.in_array(entry_symbol, marketIds):
1534
+ continue
1535
+ market = self.safe_market(entry_symbol)
1536
+ parsed = self.parse_funding_rate(entry, market)
1537
+ fundingRates.append(parsed)
1538
+ return self.index_by(fundingRates, 'symbol')
1539
+
1540
+ def parse_funding_rate(self, ticker, market=None):
1541
+ #
1542
+ # {'ask': 26.283,
1543
+ # 'askSize': 4.6,
1544
+ # 'bid': 26.201,
1545
+ # 'bidSize': 190,
1546
+ # 'fundingRate': -0.000944642727438883,
1547
+ # 'fundingRatePrediction': -0.000872671532340275,
1548
+ # 'indexPrice': 26.253,
1549
+ # 'last': 26.3,
1550
+ # 'lastSize': 0.1,
1551
+ # 'lastTime': '2023-06-11T18:55:28.958Z',
1552
+ # 'markPrice': 26.239,
1553
+ # 'open24h': 26.3,
1554
+ # 'openInterest': 641.1,
1555
+ # 'pair': 'COMP:USD',
1556
+ # 'postOnly': False,
1557
+ # 'suspended': False,
1558
+ # 'symbol': 'pf_compusd',
1559
+ # 'tag': 'perpetual',
1560
+ # 'vol24h': 0.1,
1561
+ # 'volumeQuote': 2.63}
1562
+ #
1563
+ marketId = self.safe_string(ticker, 'symbol')
1564
+ symbol = self.symbol(marketId)
1565
+ timestamp = self.parse8601(self.safe_string(ticker, 'lastTime'))
1566
+ fundingRate = self.safe_number(ticker, 'fundingRate')
1567
+ nextFundingRate = self.safe_number(ticker, 'fundingRatePrediction')
1568
+ return {
1569
+ 'info': ticker,
1570
+ 'symbol': symbol,
1571
+ 'markPrice': None,
1572
+ 'indexPrice': None,
1573
+ 'interestRate': None,
1574
+ 'estimatedSettlePrice': None,
1575
+ 'timestamp': timestamp,
1576
+ 'datetime': self.iso8601(timestamp),
1577
+ 'fundingRate': fundingRate,
1578
+ 'fundingTimestamp': None,
1579
+ 'fundingDatetime': None,
1580
+ 'nextFundingRate': nextFundingRate,
1581
+ 'nextFundingTimestamp': None,
1582
+ 'nextFundingDatetime': None,
1583
+ 'previousFundingRate': None,
1584
+ 'previousFundingTimestamp': None,
1585
+ 'previousFundingDatetime': None,
1586
+ }
1587
+
1516
1588
  async def fetch_funding_rate_history(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
1517
1589
  self.check_required_symbol('fetchFundingRateHistory', symbol)
1518
1590
  await self.load_markets()
@@ -157,6 +157,7 @@ class probit(Exchange, ImplicitAPI):
157
157
  'order_history': 1,
158
158
  'trade_history': 1,
159
159
  'deposit_address': 1,
160
+ 'transfer/payment': 1,
160
161
  },
161
162
  },
162
163
  'accounts': {
@@ -21,6 +21,7 @@ from ccxt.base.errors import OrderNotFound
21
21
  from ccxt.base.errors import DuplicateOrderId
22
22
  from ccxt.base.errors import ExchangeNotAvailable
23
23
  from ccxt.base.errors import AuthenticationError
24
+ from ccxt.base.decimal_to_precision import DECIMAL_PLACES
24
25
  from ccxt.base.precise import Precise
25
26
 
26
27
 
@@ -312,6 +313,7 @@ class wavesexchange(Exchange, ImplicitAPI):
312
313
  'currencies': {
313
314
  'WX': self.safe_currency_structure({'id': 'EMAMLxDnv3xiz8RXg8Btj33jcEw3wLczL3JKYYmuubpc', 'numericId': None, 'code': 'WX', 'precision': self.parse_number('8')}),
314
315
  },
316
+ 'precisionMode': DECIMAL_PLACES,
315
317
  'options': {
316
318
  'allowedCandles': 1440,
317
319
  'accessToken': None,
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '3.1.36'
7
+ __version__ = '3.1.38'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -3674,6 +3674,7 @@ class Exchange(object):
3674
3674
  if self.has['fetchFundingRates']:
3675
3675
  self.load_markets()
3676
3676
  market = self.market(symbol)
3677
+ symbol = market['symbol']
3677
3678
  if not market['contract']:
3678
3679
  raise BadSymbol(self.id + ' fetchFundingRate() supports contract markets only')
3679
3680
  rates = self.fetchFundingRates([symbol], params)
ccxt/bitget.py CHANGED
@@ -1787,6 +1787,45 @@ class bitget(Exchange, ImplicitAPI):
1787
1787
  # quoteVolume: '5552388715.9215',
1788
1788
  # usdtVolume: '5552388715.9215'
1789
1789
  # }
1790
+ # spot tickers
1791
+ # {
1792
+ # "symbol":"LINKUSDT",
1793
+ # "high24h":"5.2816",
1794
+ # "low24h":"5.0828",
1795
+ # "close":"5.24",
1796
+ # "quoteVol":"1427864.6815",
1797
+ # "baseVol":"276089.9017",
1798
+ # "usdtVol":"1427864.68148328",
1799
+ # "ts":"1686653354407",
1800
+ # "buyOne":"5.239",
1801
+ # "sellOne":"5.2404",
1802
+ # "+":"95.187",
1803
+ # "askSz":"947.6127",
1804
+ # "openUtc0":"5.1599",
1805
+ # "changeUtc":"0.01552",
1806
+ # "change":"0.02594"
1807
+ # }
1808
+ # swap tickers
1809
+ # {
1810
+ # "symbol":"BTCUSDT_UMCBL",
1811
+ # "last":"26139",
1812
+ # "bestAsk":"26139",
1813
+ # "bestBid":"26138.5",
1814
+ # "bidSz":"4.62",
1815
+ # "askSz":"11.142",
1816
+ # "high24h":"26260",
1817
+ # "low24h":"25637",
1818
+ # "timestamp":"1686653988192",
1819
+ # "priceChangePercent":"0.01283",
1820
+ # "baseVolume":"130207.098",
1821
+ # "quoteVolume":"3378775678.441",
1822
+ # "usdtVolume":"3378775678.441",
1823
+ # "openUtc":"25889",
1824
+ # "chgUtc":"0.00966",
1825
+ # "indexPrice":"26159.375846",
1826
+ # "fundingRate":"0.000062",
1827
+ # "holdingAmount":"74551.735"
1828
+ # }
1790
1829
  #
1791
1830
  marketId = self.safe_string(ticker, 'symbol')
1792
1831
  if (market is None) and (marketId is not None) and (marketId.find('_') == -1):
@@ -1802,10 +1841,13 @@ class bitget(Exchange, ImplicitAPI):
1802
1841
  quoteVolume = self.safe_string_2(ticker, 'quoteVol', 'quoteVolume')
1803
1842
  baseVolume = self.safe_string_2(ticker, 'baseVol', 'baseVolume')
1804
1843
  timestamp = self.safe_integer_2(ticker, 'ts', 'timestamp')
1844
+ bidVolume = self.safe_string(ticker, 'bidSz')
1845
+ askVolume = self.safe_string(ticker, 'askSz')
1805
1846
  datetime = self.iso8601(timestamp)
1806
1847
  bid = self.safe_string_2(ticker, 'buyOne', 'bestBid')
1807
1848
  ask = self.safe_string_2(ticker, 'sellOne', 'bestAsk')
1808
- percentage = Precise.string_mul(self.safe_string(ticker, 'priceChangePercent'), '100')
1849
+ percentage = Precise.string_mul(self.safe_string_n(ticker, ['priceChangePercent', 'changeUtc', 'change', 'chgUtc']), '100')
1850
+ open = self.safe_string_2(ticker, 'openUtc0', 'openUtc')
1809
1851
  return self.safe_ticker({
1810
1852
  'symbol': symbol,
1811
1853
  'timestamp': timestamp,
@@ -1813,11 +1855,11 @@ class bitget(Exchange, ImplicitAPI):
1813
1855
  'high': high,
1814
1856
  'low': low,
1815
1857
  'bid': bid,
1816
- 'bidVolume': None,
1858
+ 'bidVolume': bidVolume,
1817
1859
  'ask': ask,
1818
- 'askVolume': None,
1860
+ 'askVolume': askVolume,
1819
1861
  'vwap': None,
1820
- 'open': None,
1862
+ 'open': open,
1821
1863
  'close': close,
1822
1864
  'last': None,
1823
1865
  'previousClose': None,
@@ -2573,7 +2615,8 @@ class bitget(Exchange, ImplicitAPI):
2573
2615
  triggerType = self.safe_string(params, 'triggerType', 'market_price')
2574
2616
  request['triggerType'] = triggerType
2575
2617
  request['triggerPrice'] = self.price_to_precision(symbol, triggerPrice)
2576
- request['executePrice'] = self.price_to_precision(symbol, price)
2618
+ if price is not None:
2619
+ request['executePrice'] = self.price_to_precision(symbol, price)
2577
2620
  method = 'privateSpotPostPlanPlacePlan'
2578
2621
  if quantity is not None:
2579
2622
  request[quantityKey] = quantity
ccxt/bitso.py CHANGED
@@ -999,6 +999,8 @@ class bitso(Exchange, ImplicitAPI):
999
999
  def parse_order_status(self, status):
1000
1000
  statuses = {
1001
1001
  'partial-fill': 'open', # self is a common substitution in ccxt
1002
+ 'partially filled': 'open',
1003
+ 'queued': 'open',
1002
1004
  'completed': 'closed',
1003
1005
  }
1004
1006
  return self.safe_string(statuses, status, status)
ccxt/bitstamp.py CHANGED
@@ -335,6 +335,10 @@ class bitstamp(Exchange, ImplicitAPI):
335
335
  'doge_address/': 1,
336
336
  'flr_withdrawal/': 1,
337
337
  'flr_address/': 1,
338
+ 'dgld_withdrawal/': 1,
339
+ 'dgld_address/': 1,
340
+ 'ldo_withdrawal/': 1,
341
+ 'ldo_address/': 1,
338
342
  },
339
343
  },
340
344
  },
ccxt/krakenfutures.py CHANGED
@@ -59,9 +59,9 @@ class krakenfutures(Exchange, ImplicitAPI):
59
59
  'fetchBorrowRatesPerSymbol': False,
60
60
  'fetchClosedOrders': None, # https://support.kraken.com/hc/en-us/articles/360058243651-Historical-orders
61
61
  'fetchFundingHistory': None,
62
- 'fetchFundingRate': False,
62
+ 'fetchFundingRate': 'emulated',
63
63
  'fetchFundingRateHistory': True,
64
- 'fetchFundingRates': False,
64
+ 'fetchFundingRates': True,
65
65
  'fetchIndexOHLCV': False,
66
66
  'fetchIsolatedPositions': False,
67
67
  'fetchLeverageTiers': True,
@@ -1513,6 +1513,78 @@ class krakenfutures(Exchange, ImplicitAPI):
1513
1513
  result[code] = account
1514
1514
  return self.safe_balance(result)
1515
1515
 
1516
+ def fetch_funding_rates(self, symbols: Optional[List[str]] = None, params={}):
1517
+ """
1518
+ see https://docs.futures.kraken.com/#http-api-trading-v3-api-market-data-get-tickers
1519
+ fetch the current funding rates
1520
+ :param [str] symbols: unified market symbols
1521
+ :param dict params: extra parameters specific to the krakenfutures api endpoint
1522
+ :returns [dict]: an array of `funding rate structures <https://docs.ccxt.com/#/?id=funding-rate-structure>`
1523
+ """
1524
+ self.load_markets()
1525
+ marketIds = self.market_ids(symbols)
1526
+ response = self.publicGetTickers(params)
1527
+ tickers = self.safe_value(response, 'tickers')
1528
+ fundingRates = []
1529
+ for i in range(0, len(tickers)):
1530
+ entry = tickers[i]
1531
+ entry_symbol = self.safe_value(entry, 'symbol')
1532
+ if marketIds is not None:
1533
+ if not self.in_array(entry_symbol, marketIds):
1534
+ continue
1535
+ market = self.safe_market(entry_symbol)
1536
+ parsed = self.parse_funding_rate(entry, market)
1537
+ fundingRates.append(parsed)
1538
+ return self.index_by(fundingRates, 'symbol')
1539
+
1540
+ def parse_funding_rate(self, ticker, market=None):
1541
+ #
1542
+ # {'ask': 26.283,
1543
+ # 'askSize': 4.6,
1544
+ # 'bid': 26.201,
1545
+ # 'bidSize': 190,
1546
+ # 'fundingRate': -0.000944642727438883,
1547
+ # 'fundingRatePrediction': -0.000872671532340275,
1548
+ # 'indexPrice': 26.253,
1549
+ # 'last': 26.3,
1550
+ # 'lastSize': 0.1,
1551
+ # 'lastTime': '2023-06-11T18:55:28.958Z',
1552
+ # 'markPrice': 26.239,
1553
+ # 'open24h': 26.3,
1554
+ # 'openInterest': 641.1,
1555
+ # 'pair': 'COMP:USD',
1556
+ # 'postOnly': False,
1557
+ # 'suspended': False,
1558
+ # 'symbol': 'pf_compusd',
1559
+ # 'tag': 'perpetual',
1560
+ # 'vol24h': 0.1,
1561
+ # 'volumeQuote': 2.63}
1562
+ #
1563
+ marketId = self.safe_string(ticker, 'symbol')
1564
+ symbol = self.symbol(marketId)
1565
+ timestamp = self.parse8601(self.safe_string(ticker, 'lastTime'))
1566
+ fundingRate = self.safe_number(ticker, 'fundingRate')
1567
+ nextFundingRate = self.safe_number(ticker, 'fundingRatePrediction')
1568
+ return {
1569
+ 'info': ticker,
1570
+ 'symbol': symbol,
1571
+ 'markPrice': None,
1572
+ 'indexPrice': None,
1573
+ 'interestRate': None,
1574
+ 'estimatedSettlePrice': None,
1575
+ 'timestamp': timestamp,
1576
+ 'datetime': self.iso8601(timestamp),
1577
+ 'fundingRate': fundingRate,
1578
+ 'fundingTimestamp': None,
1579
+ 'fundingDatetime': None,
1580
+ 'nextFundingRate': nextFundingRate,
1581
+ 'nextFundingTimestamp': None,
1582
+ 'nextFundingDatetime': None,
1583
+ 'previousFundingRate': None,
1584
+ 'previousFundingTimestamp': None,
1585
+ 'previousFundingDatetime': None,
1586
+ }
1587
+
1516
1588
  def fetch_funding_rate_history(self, symbol: Optional[str] = None, since: Optional[int] = None, limit: Optional[int] = None, params={}):
1517
1589
  self.check_required_symbol('fetchFundingRateHistory', symbol)
1518
1590
  self.load_markets()
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '3.1.36'
7
+ __version__ = '3.1.38'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
ccxt/pro/bitfinex2.py CHANGED
@@ -912,7 +912,7 @@ class bitfinex2(ccxt.async_support.bitfinex2):
912
912
  'ACTIVE': 'open',
913
913
  'CANCELED': 'canceled',
914
914
  'EXECUTED': 'closed',
915
- 'PARTIALLY FILLED': 'open',
915
+ 'PARTIALLY': 'open',
916
916
  }
917
917
  return self.safe_string(statuses, status, status)
918
918
 
ccxt/probit.py CHANGED
@@ -157,6 +157,7 @@ class probit(Exchange, ImplicitAPI):
157
157
  'order_history': 1,
158
158
  'trade_history': 1,
159
159
  'deposit_address': 1,
160
+ 'transfer/payment': 1,
160
161
  },
161
162
  },
162
163
  'accounts': {
ccxt/wavesexchange.py CHANGED
@@ -21,6 +21,7 @@ from ccxt.base.errors import OrderNotFound
21
21
  from ccxt.base.errors import DuplicateOrderId
22
22
  from ccxt.base.errors import ExchangeNotAvailable
23
23
  from ccxt.base.errors import AuthenticationError
24
+ from ccxt.base.decimal_to_precision import DECIMAL_PLACES
24
25
  from ccxt.base.precise import Precise
25
26
 
26
27
 
@@ -312,6 +313,7 @@ class wavesexchange(Exchange, ImplicitAPI):
312
313
  'currencies': {
313
314
  'WX': self.safe_currency_structure({'id': 'EMAMLxDnv3xiz8RXg8Btj33jcEw3wLczL3JKYYmuubpc', 'numericId': None, 'code': 'WX', 'precision': self.parse_number('8')}),
314
315
  },
316
+ 'precisionMode': DECIMAL_PLACES,
315
317
  'options': {
316
318
  'allowedCandles': 1440,
317
319
  'accessToken': None,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 3.1.36
3
+ Version: 3.1.38
4
4
  Summary: A JavaScript / TypeScript / Python / C# / PHP cryptocurrency trading library with support for 130+ 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@3.1.36/dist/ccxt.browser.js
268
- * unpkg: https://unpkg.com/ccxt@3.1.36/dist/ccxt.browser.js
267
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@3.1.38/dist/ccxt.browser.js
268
+ * unpkg: https://unpkg.com/ccxt@3.1.38/dist/ccxt.browser.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@3.1.36/dist/ccxt.browser.js"></script>
273
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@3.1.38/dist/ccxt.browser.js"></script>
274
274
  ```
275
275
 
276
276
  Creates a global `ccxt` object:
@@ -1,4 +1,4 @@
1
- ccxt/__init__.py,sha256=109Q-u_7X2JXtEl-uVqeuXYa9uIBcrnYQkFM5DjcmrQ,15531
1
+ ccxt/__init__.py,sha256=WDNQJwzqkNuFCK9-scYfDupfHThxRkzWDxCfoh1qgUA,15531
2
2
  ccxt/ace.py,sha256=X4xNSn-7c-K-KFZBUZXwdijv2gsSo1AjiuDV2Ay_qI8,41378
3
3
  ccxt/alpaca.py,sha256=67-UgBXEXmAGMIYlxsufpFOLDSQi-V6-ZOefTAzSNJs,33210
4
4
  ccxt/ascendex.py,sha256=Tfu6IHoc1hZGAwvEV8U5dhjTUyGOPXyp3hf-Ry6LFuU,129319
@@ -17,15 +17,15 @@ ccxt/bitfinex.py,sha256=mLdZP_RZp--Gb85WiU9Rvfk_KrhLkYnSHGcqPBmuaFw,69361
17
17
  ccxt/bitfinex2.py,sha256=rLsOuXWVHhgYVBGeeMva8Xcu0VCRhZIfY663lzL_EXg,111558
18
18
  ccxt/bitflyer.py,sha256=Mjiqpa3UoZXZQzFrQD_LGprO7T7VINBZ1uZRJwZRjYY,37790
19
19
  ccxt/bitforex.py,sha256=bEkzgW6lwa1y05ScVEau6sa7Awt1o9Smt9tizEAfwPQ,32194
20
- ccxt/bitget.py,sha256=c5RuNQYfcQ5axnzZhAptjWdeSF_Kt0s_-uHFStuLFys,219978
20
+ ccxt/bitget.py,sha256=wF3S_RunKMYgXbDCLs5JYTg3KjoQFZwbge3LKseRPlQ,221648
21
21
  ccxt/bithumb.py,sha256=7ouyliU_gsTO6v8GT5W1Gz4W-1tDwK3W1JfgNRm8OBE,42621
22
22
  ccxt/bitmart.py,sha256=rvO61qVRM_dFTP5NkhE4sTDXzRePu9d7Y3hFGIIDGA8,131545
23
23
  ccxt/bitmex.py,sha256=SRpwZ4xT0oE96OBraqo40w9L9Tb5Wt621M_3CI7Yq-8,111196
24
24
  ccxt/bitopro.py,sha256=sT-RuUetuQ-FuCJxZq34efT8JvvntxsYRfRByqIzcpI,63323
25
25
  ccxt/bitpanda.py,sha256=8KtkT25UEoP7qAJY3895HsQvaR72DbAQOY1CYHK8aTE,87382
26
26
  ccxt/bitrue.py,sha256=4k88te4hS7uWDxFrvYNjGBW_eip5-Oy-2lN4Y5eCRr0,89641
27
- ccxt/bitso.py,sha256=wMLizGQEN4i-2TYKGAllFA2RVJPKpuuucccPUxACX2E,68555
28
- ccxt/bitstamp.py,sha256=wonARsHBQsvtve203pE3Kdl-_Pbb4vehO08yg_l6MYE,84160
27
+ ccxt/bitso.py,sha256=QfkYN1oW0knJCo5hxecXDZFn5vq8qKGyK-msbCaaSQg,68625
28
+ ccxt/bitstamp.py,sha256=OXde5jfJ3vWvjOirdURG_QL_eK7gnLLoztHI4wPZ5To,84340
29
29
  ccxt/bitstamp1.py,sha256=_LKJ9D-PWsxt8hE_RXz35gb7Geizxri4j2c_r4CzpjY,17834
30
30
  ccxt/bittrex.py,sha256=RiZFtoeMP2QuqTkQhov5WbPEVOsHGUAOtVkr_HxUBjw,93446
31
31
  ccxt/bitvavo.py,sha256=OgZf6vMA96m3PnL5TmaXQ5BepSqi_9pVD6WOG43XpX0,76810
@@ -73,7 +73,7 @@ ccxt/independentreserve.py,sha256=5D5puP6RytBla_1flfvu9d6hI82w45QiO9HFqF8iQd0,29
73
73
  ccxt/indodax.py,sha256=Hk5D_PMptCh3saTwKe3H5sp9JWCnUlIVZQAb0Cw9AlE,42486
74
74
  ccxt/itbit.py,sha256=raVWHPOc3hNcpmTB9VymcPH8I3su9V3DLuuCTj5EAgY,34960
75
75
  ccxt/kraken.py,sha256=B93yMVRNmUg2HXGnJiDAHsIEjJVX6QPyznJvaU8QgRE,101458
76
- ccxt/krakenfutures.py,sha256=_1jh0g6LIzfA8m9TXdSSVhZ126rbCF5KbtLVSrZKmUg,81771
76
+ ccxt/krakenfutures.py,sha256=aaFhiasNa3cfpbIlWq0WgosdD9fkKJcSQcTxGV7hmJc,84671
77
77
  ccxt/kucoin.py,sha256=6l2iofmOBIl-65gaHQYeyjebvvQt6RSIAozz9UXBCYo,168018
78
78
  ccxt/kucoinfutures.py,sha256=g7Uv4HPghymBLPqif_X1iBfbuJT9Go4yomvM1JoW5Ls,101375
79
79
  ccxt/kuna.py,sha256=9Xvk8E1MWenPP_kwk8YR3SAWAwu9GRIY3P3TSd6eVMg,37799
@@ -96,14 +96,14 @@ ccxt/paymium.py,sha256=LPrrw7IUDEFp8Y4BPfsU7nDi8Y_LhOYE7wrj2xq_Hr4,23936
96
96
  ccxt/phemex.py,sha256=UiIZQc1utixqnkYHL8hZNFv25hHyq8F6tus1Ic-2zvo,192872
97
97
  ccxt/poloniex.py,sha256=329U_68IhoBT2dHWd8nGO8Qw0-OuYTVBk2k2Q4oui6c,93487
98
98
  ccxt/poloniexfutures.py,sha256=Vwch1rC1CIjwouZPbnzgeQi0w8QA84zsBx5RQ_sS2pc,76647
99
- ccxt/probit.py,sha256=FY7MuCal1waE6Cipx_lElMUBUTZUW-g7Y2Nai15BkiY,69823
99
+ ccxt/probit.py,sha256=F7py-ex-HbBP-GE_CPEgau_alNaIO03cJYm6hqImgzc,69870
100
100
  ccxt/ripio.py,sha256=B9wGD-eDe2fAmHlw-kCYOOqFqP0PHkaR1kt0EA_po3g,47325
101
101
  ccxt/stex.py,sha256=FvBv-9LL-l9T3nqiAAzgoyQakjnRTRnhLYC5ttkU9-4,117868
102
102
  ccxt/tidex.py,sha256=dzrcfkRwg8Zei2IIzNkav0SvDwJbPfRLMd8xLiLfZbo,42456
103
103
  ccxt/timex.py,sha256=GblEn7gD1D1aDNN6pudgcC-VHIZxCKFuXCwke_HmOnc,65518
104
104
  ccxt/tokocrypto.py,sha256=z9svHjjy6Yfl1GTN8jhiIi1Tuyc52YvGxL0BTZApIbY,119299
105
105
  ccxt/upbit.py,sha256=E2tqa9cPXMsOrZ7S8EuDmyMyWqPjQ7aXzt40wkGVfvw,75580
106
- ccxt/wavesexchange.py,sha256=Hd0wD-D6GwjAibm6SSOyEV92UuCwUfS2Sb_Gp7dGzAA,103553
106
+ ccxt/wavesexchange.py,sha256=vqoCvsKr2COEYwB_kahJZHXFoGuFfZNiua3WpRukH54,103656
107
107
  ccxt/wazirx.py,sha256=j58VNX1679R7uElg5pValNDhiXk328MlM4GQ8Ovgyp4,35593
108
108
  ccxt/whitebit.py,sha256=25wMYsliYMwh84AjpCKy_6mDBOQ-gVIVqmIKpe5o8T4,92270
109
109
  ccxt/woo.py,sha256=AFePHXS_2i-1wJeMDaYJM7_UYzabhQnjzbCXd3yjHX8,94854
@@ -139,7 +139,7 @@ ccxt/abstract/bitopro.py,sha256=vL017EIFFGrR3ERc4frgCwqZkCJo8B_YAeEweiiQoM0,2919
139
139
  ccxt/abstract/bitpanda.py,sha256=TtJq4d44lrutV8wcK0lX4v0EfQ72ly6fxR-zB7-FSuI,3859
140
140
  ccxt/abstract/bitrue.py,sha256=uNOkkbjtJ9kr1ksp6C9CDP4FQ2ZVhc5Vd1MGilSCJ1I,3648
141
141
  ccxt/abstract/bitso.py,sha256=aWtuVoQ3CLMBTukWz3L3-gagyhIeEcEf4G5J48Hz_3k,4025
142
- ccxt/abstract/bitstamp.py,sha256=np4YFi8iA4_e8bbeYBvgdBSOw5nHhBjr4AzCP3lfvKs,23567
142
+ ccxt/abstract/bitstamp.py,sha256=wJDhmGf73AIEF6vMldzSKgeh0qUmgOuNYsXKDzsiyUI,24027
143
143
  ccxt/abstract/bitstamp1.py,sha256=yvbXBbBdQAZcOIA1f3cumJqoKFZqbUfU7TWRzYgTTTg,1987
144
144
  ccxt/abstract/bittrex.py,sha256=UKl5VAQRLbpoG_uZt4L12uS_SLuLwfbGYCOscK0rfbQ,9337
145
145
  ccxt/abstract/bitvavo.py,sha256=bPoB0TAmdey7t_O7GBrZpaS9MtwjySWsO1ctqqIuLTw,2357
@@ -207,7 +207,7 @@ ccxt/abstract/paymium.py,sha256=PvsQHHBYBGyWP4eDX_4Ezqq88FPqdSyhkdy5BPJG9s4,2752
207
207
  ccxt/abstract/phemex.py,sha256=lAk6NPuqxxPHAWTjxGDz_W3x9U88v8tjJU4uCIXykQk,12172
208
208
  ccxt/abstract/poloniex.py,sha256=zPyRTMRU_z8wnXdwFVU2a6qgrBHxveUH-lDIySfRRuk,6301
209
209
  ccxt/abstract/poloniexfutures.py,sha256=ph59p69TXI12BkFr173ryCapNSg5Amb4MynXN5GB2FE,4575
210
- ccxt/abstract/probit.py,sha256=28X3IAdvZ6p9PSToR-o-z2f7NpQ7vCWbbn6BiOHPt_w,1849
210
+ ccxt/abstract/probit.py,sha256=PxQkrvv3EQ2TvOxJmc_mAF_aH8xFFw6pZaVVjjUo5_4,1969
211
211
  ccxt/abstract/tidex.py,sha256=vOKBLzodqzlRNLCJWR2PNVEuscslNvUdoQOWQ0P4mpk,1953
212
212
  ccxt/abstract/timex.py,sha256=9b0CDsyjm8XrYZmhUMB1dTHUmyE9YrsZTCZrz1UTt6E,5875
213
213
  ccxt/abstract/tokocrypto.py,sha256=OF5UW4ch_Lf3-avOPgd4AD4CVrOUDUfUpSMCmxhNHlk,4094
@@ -220,7 +220,7 @@ ccxt/abstract/xt.py,sha256=xHHv2viFGK0_iPZ4gu6Wb0aOrpcKhr9zoY-BIPWh5bs,27028
220
220
  ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
221
221
  ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
222
222
  ccxt/abstract/zonda.py,sha256=VoxuPkSq8vAvKnDvOqnByhwsIf09m7yIrs8HejFrDk4,5482
223
- ccxt/async_support/__init__.py,sha256=uY-sIUxXjNGME_f4cxUNZE2asnBOqayu49EmYo_Q1gQ,15324
223
+ ccxt/async_support/__init__.py,sha256=Ny46Nabr-YewqSL-xg-fVg6pBHRk2rE95VQMVYs9ThI,15324
224
224
  ccxt/async_support/ace.py,sha256=cpzMJrG4paMTXdrfdHuJtSXND1NKhfKLNxaYeicMalc,41602
225
225
  ccxt/async_support/alpaca.py,sha256=0Q7bp7mUhU6lKkCNWdjgt1NR3Rz1QpfC9rAVzTutSwk,33356
226
226
  ccxt/async_support/ascendex.py,sha256=V0G5f9Gg79EjJIVpsuNuQGomoZmx9_WAKGsUjqSJs8k,129933
@@ -239,15 +239,15 @@ ccxt/async_support/bitfinex.py,sha256=1pCKbPkjQyNZCLNI49qqlvu0AFYb1SlZ8KmJY7RDhQ
239
239
  ccxt/async_support/bitfinex2.py,sha256=RkbKHztzdht9LjSZby5avwv0Kk9_QIqmOkucFqqFCVc,112028
240
240
  ccxt/async_support/bitflyer.py,sha256=8TO5aCFtnilvQHr5PRsQ6J6YoTlzJmX8111u607p3sE,38098
241
241
  ccxt/async_support/bitforex.py,sha256=qSYt8LjR1Cf_ZFhO9U64B9ywwvHDwSuKdqRHeJ84i4M,32418
242
- ccxt/async_support/bitget.py,sha256=a7zTa5ZmZNuDwM5U6QDn6BVtP0xXW5UVVUU12wOlfWo,220852
242
+ ccxt/async_support/bitget.py,sha256=G4_FlFy3eI7x1i5cicqqrATNLl67kQtXzWff-zl6Nn8,222522
243
243
  ccxt/async_support/bithumb.py,sha256=DynBg-aTjHGhTqXKMYERrLk9QFfs59Z7Kwi73envhao,42839
244
244
  ccxt/async_support/bitmart.py,sha256=dG-jlys7t30I2kPpi-D0IhJW4ShkDhbCo75QeSsIfmY,132183
245
245
  ccxt/async_support/bitmex.py,sha256=HI_e8NyiT2HBx7sa5YCBJ1fI2xHhZcbIFQK3qcslhkU,111660
246
246
  ccxt/async_support/bitopro.py,sha256=TJPBAPLMYBTAQPTmiIqS73r6JTT-UjebtIbXEDEy16s,63691
247
247
  ccxt/async_support/bitpanda.py,sha256=frmW8i1cTE_LIiznGksIMkqCJxVqm_nXv1YAkrNzQxM,87834
248
248
  ccxt/async_support/bitrue.py,sha256=hDT3k7-XyRYu1SmON5XGsxFO4b8fPrylkqAyoLkKaO4,90015
249
- ccxt/async_support/bitso.py,sha256=YpSMzdatmv8lpIlnl6RygLD38rDfW2v4XKUVq9xwufs,68941
250
- ccxt/async_support/bitstamp.py,sha256=Hx8CJKjKOhDIFqTHTLjk608CZXEyqebm4PgZjj_HXSE,84600
249
+ ccxt/async_support/bitso.py,sha256=HghNgeHVylIjIGOcOI7bdp-4itZKnKU8Hi8jdHhxz18,69011
250
+ ccxt/async_support/bitstamp.py,sha256=oucUAu3ulVHhFRYCoa1JPEQR8TCrZ4F7Zf-opXgz0u8,84780
251
251
  ccxt/async_support/bitstamp1.py,sha256=Reu_ZNHN6ogh7Ume9Y_Do16lT2mgBYsOrhTvaPL8Fu0,17980
252
252
  ccxt/async_support/bittrex.py,sha256=Rr-5WYSLSY4iKbfh74L7CC-0CEF5xg_k01jyuqoaGNA,93952
253
253
  ccxt/async_support/bitvavo.py,sha256=hO3QV6t-pmcSBPfuBQFWKTnJhZpVhoIdPhw5LodaGIo,77220
@@ -295,7 +295,7 @@ ccxt/async_support/independentreserve.py,sha256=_lMc83RVOj5kLoE3M3pOPb11N6Jlmhli
295
295
  ccxt/async_support/indodax.py,sha256=XQDJ3ZGA1CWaS8ZCxZd1nNZj2m1dHruTGqj-uOkmV4E,42758
296
296
  ccxt/async_support/itbit.py,sha256=nSiSPygyEAiDm5kcpRYFJGXjx631XB3oGK6M8zGoiDs,35208
297
297
  ccxt/async_support/kraken.py,sha256=YTcT7WMVoyJOUhDowaVZ-Da6OD9xwEEZbjDVHhgXoR0,102000
298
- ccxt/async_support/krakenfutures.py,sha256=obp3amas2f-gzKAfIxF0AcJgmDPHfenxlfNgManx_Gs,82073
298
+ ccxt/async_support/krakenfutures.py,sha256=9y4Z3oEMV7QAUTofCUuOg669YwBTvKwSlyosGhXb9Z8,84991
299
299
  ccxt/async_support/kucoin.py,sha256=3icBIaZMhzBRx-WFMEQGU4GyvAdBr4mr_2kUPOX1H9M,168650
300
300
  ccxt/async_support/kucoinfutures.py,sha256=rewe_K8PO1WSWx-dgutpkQvXcLcFnCiKE78MBFSZIhg,101845
301
301
  ccxt/async_support/kuna.py,sha256=TDidt-wI2_z28I51qRoCVhAVL5bXmUsiZdfEkDOhPFI,38047
@@ -318,14 +318,14 @@ ccxt/async_support/paymium.py,sha256=mtOB_A5_kGtJUmWld9aLgZ3FxgTkb8u28U8hzcZvPow
318
318
  ccxt/async_support/phemex.py,sha256=H-sZj6CFdMOP93U6TaEL8M7PyPcM_Y6On84xhsS_ooU,193468
319
319
  ccxt/async_support/poloniex.py,sha256=1aC2pTB31fe6q4LlTcVrCI99_2RvEjZTDkT10bGV3jo,93987
320
320
  ccxt/async_support/poloniexfutures.py,sha256=veK4VLc_M8tdZ88xyB-FO4MENw289Dpag2qiZyhMIrM,77015
321
- ccxt/async_support/probit.py,sha256=V7EsgrjWTgHcAOGtKcixhZsN0whw-kvjRW58HtGsKF0,70173
321
+ ccxt/async_support/probit.py,sha256=GioYdFYRYXyASDvifRBYASkq1IVgvT8jAI1trqCr6DA,70220
322
322
  ccxt/async_support/ripio.py,sha256=ZXAx-Uj7_Nx0e9V_zSoPpoYSbBh2PHmbI5T2eS3Ao8s,47585
323
323
  ccxt/async_support/stex.py,sha256=wUGDvP94zkMWk4vdD2c5Ib2f8JC7E-C2mK6cFVK1wZU,118368
324
324
  ccxt/async_support/tidex.py,sha256=0CBqyvSJ8WIN0HiRLtw9CRyS4cixBVakJdr1mCt5eLI,42704
325
325
  ccxt/async_support/timex.py,sha256=ouoy6zc43acii1CN5uQmaF6UcxG0qzP5FQmnMPagat8,65850
326
326
  ccxt/async_support/tokocrypto.py,sha256=rj76-zZP7MtreFGEKlPpyr7cVSaZB4eckJxQ3kfP68k,119643
327
327
  ccxt/async_support/upbit.py,sha256=S_Dx-1rcJ0e3pVnCNQQ13E-6wEXQYtTJlc2AECWLkAE,76014
328
- ccxt/async_support/wavesexchange.py,sha256=krhk_Fky1mJBK1mB0WHFWuoouCB9UMGN5FEu0hS6CKQ,104047
328
+ ccxt/async_support/wavesexchange.py,sha256=GuWuSBOYM6b38BbMIul_4zohZ6jTHdG4-vMN7_J3BkE,104150
329
329
  ccxt/async_support/wazirx.py,sha256=XWnemZZKkMYaek6vPWAyqp7lRUqgiTxXOfPpOA9rEZA,35841
330
330
  ccxt/async_support/whitebit.py,sha256=KIfBrvVHxE6T5XVYreozAmnyqrwAB_kr-WUobaaBSZE,92722
331
331
  ccxt/async_support/woo.py,sha256=XB2NyiqiHK8em_q_lvZL1n7N9y44G4ygG4y0E2fxJVE,95438
@@ -335,7 +335,7 @@ ccxt/async_support/zaif.py,sha256=eCR5rPQU9BpP2b-X0hPtOtN2FXiKZ4URHyyZ53Di6T4,29
335
335
  ccxt/async_support/zb.py,sha256=W8HHyssjCLTugSRs80TnAwGJl85vp7nyNPOn9RLpXFk,184533
336
336
  ccxt/async_support/zonda.py,sha256=8fLlL4exIr24N0vaf07psLeqNEqhLS2cZj-_VVXsnyM,74375
337
337
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
338
- ccxt/async_support/base/exchange.py,sha256=kJfW5au4kuy7PuccAWcNQ5iO7_qPH2pMclu8MHs9jYk,131065
338
+ ccxt/async_support/base/exchange.py,sha256=zJ9CmhinTo6i7rnZJpWm1rZMHfL-n2l3Ycs6lCfMou0,131103
339
339
  ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
340
340
  ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
341
341
  ccxt/async_support/base/ws/aiohttp_client.py,sha256=xmlZV30Vb9Kq7JCm3D5FuEmuj1zp5H4F4hrz8-Y-Ir4,4999
@@ -349,10 +349,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GH-475Ni0mLOx7mUDnz4jjzaGkh
349
349
  ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
350
350
  ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
351
351
  ccxt/base/errors.py,sha256=-LVeTNyXvu3QEgb-p-KzMpcBgzHlvFTwDzmZK7Gfc14,3401
352
- ccxt/base/exchange.py,sha256=lQ6Fs_5kWf--F-XCrPTJqiqDc_8oL5PbFMnXxaIzexg,170567
352
+ ccxt/base/exchange.py,sha256=HQydHCjteCvvOR7viH22zeBpIz_BllPiXylmMjrO-Tk,170605
353
353
  ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
354
354
  ccxt/base/types.py,sha256=8FseQkf_LL-nXdb5LyT6RpDaU8pr3HAI9Jb9Wj_oDN0,1366
355
- ccxt/pro/__init__.py,sha256=etv0O1_iVuAdPK6QiJ61A4a40xU805ff9ps-QRw8nfg,6463
355
+ ccxt/pro/__init__.py,sha256=wTm4HGwHvRH0Ei58i8xAcz6lmgQK98FdIywmCum4BEI,6463
356
356
  ccxt/pro/alpaca.py,sha256=CmaU0MJq0HiNaYvBHeDJfTa-letDiEQonRON7Q_3W_k,26686
357
357
  ccxt/pro/ascendex.py,sha256=k6rpuiPhj3ipeWRG5vwR22SS4iAzQPe1q1WxJaaucLk,34565
358
358
  ccxt/pro/bequant.py,sha256=qz8JjnpkAQY_CFiFSKGqrjjgZ2167_TBKjSJOb9NeDw,1081
@@ -362,7 +362,7 @@ ccxt/pro/binanceus.py,sha256=xKL-1cOHyqlLTwLGg-DPf6g3JMM1oU2Kv708FiGJwrY,2016
362
362
  ccxt/pro/binanceusdm.py,sha256=S0eT662O2ReplsihWk42nhJWqw1XsODpeDQa9eFVVt8,1357
363
363
  ccxt/pro/bitcoincom.py,sha256=ipRe4xMqvwh81FAJhzQI8P_sGCmmHFw42owF-FwcoD4,914
364
364
  ccxt/pro/bitfinex.py,sha256=IfWEXCtvk8m4gDbfS8RbCGaodVaDdrGySLckk1GM3w0,24768
365
- ccxt/pro/bitfinex2.py,sha256=HvhDGCHi0vmeICQFBHLjJk3Ngi6bHzu1OFnw_sxqQmQ,42092
365
+ ccxt/pro/bitfinex2.py,sha256=G6F_3qGFQ8WiOHYBX21JKG-7OBwrGa2IneQrMnfx9mA,42085
366
366
  ccxt/pro/bitget.py,sha256=2iO5ReeZa6beJE2jeCjFk6voOdpRqPMtJfh5vVcIBCY,46241
367
367
  ccxt/pro/bitmart.py,sha256=eQcMqCa_Y2wY7dSTiCYj0kDv3NbdD5EKfIbMJx22SUw,24498
368
368
  ccxt/pro/bitmex.py,sha256=EfI-Ymz1RcLvElmDiC--7fXbCue68B6HEMJUGVV6cMM,55624
@@ -462,7 +462,7 @@ ccxt/test/base/test_ticker.py,sha256=h9AV_O6s-Ax3vB3sFoN0Mz22rMOi65i9BDv0SNejH98
462
462
  ccxt/test/base/test_trade.py,sha256=bL9o3S_TGW8Nnlxu-BYkRG8NyRzKAWrU66uO5jJCM3A,2259
463
463
  ccxt/test/base/test_trading_fee.py,sha256=yRCpLHLg_ca9JQXdZB3_pIMHgHLGEfeQF95E6d1e2Bc,1125
464
464
  ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
465
- ccxt-3.1.36.dist-info/METADATA,sha256=ghOBETv8KOjwl1-P0Z5Psom2U1SrTBDzZc0v6eicV_w,110521
466
- ccxt-3.1.36.dist-info/WHEEL,sha256=a-zpFRIJzOq5QfuhBzbhiA1eHTzNCJn8OdRvhdNX0Rk,110
467
- ccxt-3.1.36.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
468
- ccxt-3.1.36.dist-info/RECORD,,
465
+ ccxt-3.1.38.dist-info/METADATA,sha256=0gs-vS27yNXlaxiUzYA3jsoQ6AWe-1K5YHs0WtM894U,110521
466
+ ccxt-3.1.38.dist-info/WHEEL,sha256=a-zpFRIJzOq5QfuhBzbhiA1eHTzNCJn8OdRvhdNX0Rk,110
467
+ ccxt-3.1.38.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
468
+ ccxt-3.1.38.dist-info/RECORD,,
File without changes