ccxt 4.3.37__py2.py3-none-any.whl → 4.3.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__ = '4.3.37'
25
+ __version__ = '4.3.38'
26
26
 
27
27
  # ----------------------------------------------------------------------------
28
28
 
ccxt/abstract/okx.py CHANGED
@@ -69,6 +69,9 @@ class ImplicitAPI:
69
69
  public_get_finance_staking_defi_eth_apy_history = publicGetFinanceStakingDefiEthApyHistory = Entry('finance/staking-defi/eth/apy-history', 'public', 'GET', {'cost': 1.6666666666666667})
70
70
  public_get_finance_savings_lending_rate_summary = publicGetFinanceSavingsLendingRateSummary = Entry('finance/savings/lending-rate-summary', 'public', 'GET', {'cost': 1.6666666666666667})
71
71
  public_get_finance_savings_lending_rate_history = publicGetFinanceSavingsLendingRateHistory = Entry('finance/savings/lending-rate-history', 'public', 'GET', {'cost': 1.6666666666666667})
72
+ public_get_finance_fixed_loan_lending_offers = publicGetFinanceFixedLoanLendingOffers = Entry('finance/fixed-loan/lending-offers', 'public', 'GET', {'cost': 3.3333333333333335})
73
+ public_get_finance_fixed_loan_lending_apy_history = publicGetFinanceFixedLoanLendingApyHistory = Entry('finance/fixed-loan/lending-apy-history', 'public', 'GET', {'cost': 3.3333333333333335})
74
+ public_get_finance_fixed_loan_pending_lending_volume = publicGetFinanceFixedLoanPendingLendingVolume = Entry('finance/fixed-loan/pending-lending-volume', 'public', 'GET', {'cost': 3.3333333333333335})
72
75
  public_get_finance_sfp_dcd_products = publicGetFinanceSfpDcdProducts = Entry('finance/sfp/dcd/products', 'public', 'GET', {'cost': 0.6666666666666666})
73
76
  public_get_copytrading_public_lead_traders = publicGetCopytradingPublicLeadTraders = Entry('copytrading/public-lead-traders', 'public', 'GET', {'cost': 4})
74
77
  public_get_copytrading_public_weekly_pnl = publicGetCopytradingPublicWeeklyPnl = Entry('copytrading/public-weekly-pnl', 'public', 'GET', {'cost': 4})
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.37'
7
+ __version__ = '4.3.38'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # -----------------------------------------------------------------------------
4
4
 
5
- __version__ = '4.3.37'
5
+ __version__ = '4.3.38'
6
6
 
7
7
  # -----------------------------------------------------------------------------
8
8
 
@@ -1412,13 +1412,13 @@ class bitmart(Exchange, ImplicitAPI):
1412
1412
  #
1413
1413
  # public fetchTrades spot( amount = count * price )
1414
1414
  #
1415
- # {
1416
- # "amount": "818.94",
1417
- # "order_time": "1637601839035", # ETH/USDT
1418
- # "price": "4221.99",
1419
- # "count": "0.19397",
1420
- # "type": "buy"
1421
- # }
1415
+ # [
1416
+ # "BTC_USDT", # symbol
1417
+ # "1717212457302", # timestamp
1418
+ # "67643.11", # price
1419
+ # "0.00106", # size
1420
+ # "sell" # side
1421
+ # ]
1422
1422
  #
1423
1423
  # spot: fetchMyTrades
1424
1424
  #
@@ -1465,22 +1465,23 @@ class bitmart(Exchange, ImplicitAPI):
1465
1465
  # 'lastTradeID': 6802340762
1466
1466
  # }
1467
1467
  #
1468
- timestamp = self.safe_integer_n(trade, ['order_time', 'createTime', 'create_time'])
1469
- isPublicTrade = ('order_time' in trade)
1468
+ timestamp = self.safe_integer_n(trade, ['createTime', 'create_time', 1])
1469
+ isPublic = self.safe_string(trade, 0)
1470
+ isPublicTrade = (isPublic is not None)
1470
1471
  amount = None
1471
1472
  cost = None
1472
1473
  type = None
1473
1474
  side = None
1474
1475
  if isPublicTrade:
1475
- amount = self.safe_string(trade, 'count')
1476
+ amount = self.safe_string_2(trade, 'count', 3)
1476
1477
  cost = self.safe_string(trade, 'amount')
1477
- side = self.safe_string(trade, 'type')
1478
+ side = self.safe_string_2(trade, 'type', 4)
1478
1479
  else:
1479
1480
  amount = self.safe_string_n(trade, ['size', 'vol', 'fillQty'])
1480
1481
  cost = self.safe_string(trade, 'notional')
1481
1482
  type = self.safe_string(trade, 'type')
1482
1483
  side = self.parse_order_side(self.safe_string(trade, 'side'))
1483
- marketId = self.safe_string(trade, 'symbol')
1484
+ marketId = self.safe_string_2(trade, 'symbol', 0)
1484
1485
  market = self.safe_market(marketId, market)
1485
1486
  feeCostString = self.safe_string_2(trade, 'fee', 'paid_fees')
1486
1487
  fee = None
@@ -1502,7 +1503,7 @@ class bitmart(Exchange, ImplicitAPI):
1502
1503
  'symbol': market['symbol'],
1503
1504
  'type': type,
1504
1505
  'side': side,
1505
- 'price': self.safe_string_2(trade, 'price', 'fillPrice'),
1506
+ 'price': self.safe_string_n(trade, ['price', 'fillPrice', 2]),
1506
1507
  'amount': amount,
1507
1508
  'cost': cost,
1508
1509
  'takerOrMaker': self.safe_string_lower_2(trade, 'tradeRole', 'exec_type'),
@@ -1511,10 +1512,11 @@ class bitmart(Exchange, ImplicitAPI):
1511
1512
 
1512
1513
  async def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
1513
1514
  """
1514
- get the list of most recent trades for a particular symbol
1515
+ get a list of the most recent trades for a particular symbol
1516
+ :see: https://developer-pro.bitmart.com/en/spot/#get-recent-trades-v3
1515
1517
  :param str symbol: unified symbol of the market to fetch trades for
1516
1518
  :param int [since]: timestamp in ms of the earliest trade to fetch
1517
- :param int [limit]: the maximum amount of trades to fetch
1519
+ :param int [limit]: the maximum number of trades to fetch
1518
1520
  :param dict [params]: extra parameters specific to the exchange API endpoint
1519
1521
  :returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
1520
1522
  """
@@ -1525,30 +1527,27 @@ class bitmart(Exchange, ImplicitAPI):
1525
1527
  request: dict = {
1526
1528
  'symbol': market['id'],
1527
1529
  }
1528
- response = await self.publicGetSpotV1SymbolsTrades(self.extend(request, params))
1529
- #
1530
- # spot
1530
+ if limit is not None:
1531
+ request['limit'] = limit
1532
+ response = await self.publicGetSpotQuotationV3Trades(self.extend(request, params))
1531
1533
  #
1532
1534
  # {
1533
- # "message":"OK",
1534
- # "code":1000,
1535
- # "trace":"222d74c0-8f6d-49d9-8e1b-98118c50eeba",
1536
- # "data":{
1537
- # "trades":[
1538
- # {
1539
- # "amount":"0.005703",
1540
- # "order_time":1599652045394,
1541
- # "price":"0.034029",
1542
- # "count":"0.1676",
1543
- # "type":"sell"
1544
- # },
1545
- # ]
1546
- # }
1535
+ # "code": 1000,
1536
+ # "trace": "58031f9a5bd.111.17117",
1537
+ # "message": "success",
1538
+ # "data": [
1539
+ # [
1540
+ # "BTC_USDT",
1541
+ # "1717212457302",
1542
+ # "67643.11",
1543
+ # "0.00106",
1544
+ # "sell"
1545
+ # ],
1546
+ # ]
1547
1547
  # }
1548
1548
  #
1549
- data = self.safe_value(response, 'data', {})
1550
- trades = self.safe_list(data, 'trades', [])
1551
- return self.parse_trades(trades, market, since, limit)
1549
+ data = self.safe_list(response, 'data', [])
1550
+ return self.parse_trades(data, market, since, limit)
1552
1551
 
1553
1552
  def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
1554
1553
  #
@@ -413,7 +413,13 @@ class bl3p(Exchange, ImplicitAPI):
413
413
  request: dict = {
414
414
  'order_id': id,
415
415
  }
416
- return await self.privatePostMarketMoneyOrderCancel(self.extend(request, params))
416
+ response = await self.privatePostMarketMoneyOrderCancel(self.extend(request, params))
417
+ #
418
+ # "success"
419
+ #
420
+ return self.safe_order({
421
+ 'info': response,
422
+ })
417
423
 
418
424
  async def create_deposit_address(self, code: str, params={}):
419
425
  """
@@ -679,7 +679,7 @@ class btcalpha(Exchange, ImplicitAPI):
679
679
  filled = self.safe_string(order, 'amount_filled')
680
680
  amount = self.safe_string(order, 'amount_original')
681
681
  status = self.parse_order_status(self.safe_string(order, 'status'))
682
- id = self.safe_string_2(order, 'oid', 'id')
682
+ id = self.safe_string_n(order, ['oid', 'id', 'order'])
683
683
  trades = self.safe_value(order, 'trades')
684
684
  side = self.safe_string_2(order, 'my_side', 'type')
685
685
  return self.safe_order({
@@ -751,7 +751,12 @@ class btcalpha(Exchange, ImplicitAPI):
751
751
  'order': id,
752
752
  }
753
753
  response = await self.privatePostOrderCancel(self.extend(request, params))
754
- return response
754
+ #
755
+ # {
756
+ # "order": 63568
757
+ # }
758
+ #
759
+ return self.parse_order(response)
755
760
 
756
761
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
757
762
  """
@@ -684,7 +684,17 @@ class btcturk(Exchange, ImplicitAPI):
684
684
  request: dict = {
685
685
  'id': id,
686
686
  }
687
- return await self.privateDeleteOrder(self.extend(request, params))
687
+ response = await self.privateDeleteOrder(self.extend(request, params))
688
+ #
689
+ # {
690
+ # "success": True,
691
+ # "message": "SUCCESS",
692
+ # "code": 0
693
+ # }
694
+ #
695
+ return self.safe_order({
696
+ 'info': response,
697
+ })
688
698
 
689
699
  async def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
690
700
  """
@@ -503,9 +503,9 @@ class coinbase(Exchange, ImplicitAPI):
503
503
  paginate = False
504
504
  paginate, params = self.handle_option_and_params(params, 'fetchAccounts', 'paginate')
505
505
  if paginate:
506
- return await self.fetch_paginated_call_cursor('fetchAccounts', None, None, None, params, 'cursor', 'cursor', None, 100)
506
+ return await self.fetch_paginated_call_cursor('fetchAccounts', None, None, None, params, 'cursor', 'cursor', None, 250)
507
507
  request: dict = {
508
- 'limit': 100,
508
+ 'limit': 250,
509
509
  }
510
510
  response = await self.v3PrivateGetBrokerageAccounts(self.extend(request, params))
511
511
  #
@@ -595,7 +595,14 @@ class coincheck(Exchange, ImplicitAPI):
595
595
  request: dict = {
596
596
  'id': id,
597
597
  }
598
- return await self.privateDeleteExchangeOrdersId(self.extend(request, params))
598
+ response = await self.privateDeleteExchangeOrdersId(self.extend(request, params))
599
+ #
600
+ # {
601
+ # "success": True,
602
+ # "id": 12345
603
+ # }
604
+ #
605
+ return self.parse_order(response)
599
606
 
600
607
  async def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
601
608
  """
@@ -1635,14 +1635,13 @@ class coinex(Exchange, ImplicitAPI):
1635
1635
  marketType, params = self.handle_market_type_and_params('fetchBalance', None, params)
1636
1636
  marginMode = None
1637
1637
  marginMode, params = self.handle_margin_mode_and_params('fetchBalance', params)
1638
- marketType = 'margin' if (marginMode is not None) else marketType
1639
- params = self.omit(params, 'margin')
1640
- if marketType == 'margin':
1641
- return await self.fetch_margin_balance(params)
1642
- elif marketType == 'swap':
1638
+ isMargin = (marginMode is not None) or (marketType == 'margin')
1639
+ if marketType == 'swap':
1643
1640
  return await self.fetch_swap_balance(params)
1644
1641
  elif marketType == 'financial':
1645
1642
  return await self.fetch_financial_balance(params)
1643
+ elif isMargin:
1644
+ return await self.fetch_margin_balance(params)
1646
1645
  else:
1647
1646
  return await self.fetch_spot_balance(params)
1648
1647
 
@@ -3060,7 +3059,11 @@ class coinex(Exchange, ImplicitAPI):
3060
3059
  #
3061
3060
  # {"code":0,"data":{},"message":"OK"}
3062
3061
  #
3063
- return response
3062
+ return [
3063
+ self.safe_order({
3064
+ 'info': response,
3065
+ }),
3066
+ ]
3064
3067
 
3065
3068
  async def fetch_order(self, id: str, symbol: Str = None, params={}):
3066
3069
  """
ccxt/async_support/okx.py CHANGED
@@ -280,6 +280,9 @@ class okx(Exchange, ImplicitAPI):
280
280
  'finance/staking-defi/eth/apy-history': 5 / 3,
281
281
  'finance/savings/lending-rate-summary': 5 / 3,
282
282
  'finance/savings/lending-rate-history': 5 / 3,
283
+ 'finance/fixed-loan/lending-offers': 10 / 3,
284
+ 'finance/fixed-loan/lending-apy-history': 10 / 3,
285
+ 'finance/fixed-loan/pending-lending-volume': 10 / 3,
283
286
  # public broker
284
287
  'finance/sfp/dcd/products': 2 / 3,
285
288
  # copytrading
ccxt/base/exchange.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # -----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.37'
7
+ __version__ = '4.3.38'
8
8
 
9
9
  # -----------------------------------------------------------------------------
10
10
 
ccxt/bitmart.py CHANGED
@@ -1412,13 +1412,13 @@ class bitmart(Exchange, ImplicitAPI):
1412
1412
  #
1413
1413
  # public fetchTrades spot( amount = count * price )
1414
1414
  #
1415
- # {
1416
- # "amount": "818.94",
1417
- # "order_time": "1637601839035", # ETH/USDT
1418
- # "price": "4221.99",
1419
- # "count": "0.19397",
1420
- # "type": "buy"
1421
- # }
1415
+ # [
1416
+ # "BTC_USDT", # symbol
1417
+ # "1717212457302", # timestamp
1418
+ # "67643.11", # price
1419
+ # "0.00106", # size
1420
+ # "sell" # side
1421
+ # ]
1422
1422
  #
1423
1423
  # spot: fetchMyTrades
1424
1424
  #
@@ -1465,22 +1465,23 @@ class bitmart(Exchange, ImplicitAPI):
1465
1465
  # 'lastTradeID': 6802340762
1466
1466
  # }
1467
1467
  #
1468
- timestamp = self.safe_integer_n(trade, ['order_time', 'createTime', 'create_time'])
1469
- isPublicTrade = ('order_time' in trade)
1468
+ timestamp = self.safe_integer_n(trade, ['createTime', 'create_time', 1])
1469
+ isPublic = self.safe_string(trade, 0)
1470
+ isPublicTrade = (isPublic is not None)
1470
1471
  amount = None
1471
1472
  cost = None
1472
1473
  type = None
1473
1474
  side = None
1474
1475
  if isPublicTrade:
1475
- amount = self.safe_string(trade, 'count')
1476
+ amount = self.safe_string_2(trade, 'count', 3)
1476
1477
  cost = self.safe_string(trade, 'amount')
1477
- side = self.safe_string(trade, 'type')
1478
+ side = self.safe_string_2(trade, 'type', 4)
1478
1479
  else:
1479
1480
  amount = self.safe_string_n(trade, ['size', 'vol', 'fillQty'])
1480
1481
  cost = self.safe_string(trade, 'notional')
1481
1482
  type = self.safe_string(trade, 'type')
1482
1483
  side = self.parse_order_side(self.safe_string(trade, 'side'))
1483
- marketId = self.safe_string(trade, 'symbol')
1484
+ marketId = self.safe_string_2(trade, 'symbol', 0)
1484
1485
  market = self.safe_market(marketId, market)
1485
1486
  feeCostString = self.safe_string_2(trade, 'fee', 'paid_fees')
1486
1487
  fee = None
@@ -1502,7 +1503,7 @@ class bitmart(Exchange, ImplicitAPI):
1502
1503
  'symbol': market['symbol'],
1503
1504
  'type': type,
1504
1505
  'side': side,
1505
- 'price': self.safe_string_2(trade, 'price', 'fillPrice'),
1506
+ 'price': self.safe_string_n(trade, ['price', 'fillPrice', 2]),
1506
1507
  'amount': amount,
1507
1508
  'cost': cost,
1508
1509
  'takerOrMaker': self.safe_string_lower_2(trade, 'tradeRole', 'exec_type'),
@@ -1511,10 +1512,11 @@ class bitmart(Exchange, ImplicitAPI):
1511
1512
 
1512
1513
  def fetch_trades(self, symbol: str, since: Int = None, limit: Int = None, params={}) -> List[Trade]:
1513
1514
  """
1514
- get the list of most recent trades for a particular symbol
1515
+ get a list of the most recent trades for a particular symbol
1516
+ :see: https://developer-pro.bitmart.com/en/spot/#get-recent-trades-v3
1515
1517
  :param str symbol: unified symbol of the market to fetch trades for
1516
1518
  :param int [since]: timestamp in ms of the earliest trade to fetch
1517
- :param int [limit]: the maximum amount of trades to fetch
1519
+ :param int [limit]: the maximum number of trades to fetch
1518
1520
  :param dict [params]: extra parameters specific to the exchange API endpoint
1519
1521
  :returns Trade[]: a list of `trade structures <https://docs.ccxt.com/#/?id=public-trades>`
1520
1522
  """
@@ -1525,30 +1527,27 @@ class bitmart(Exchange, ImplicitAPI):
1525
1527
  request: dict = {
1526
1528
  'symbol': market['id'],
1527
1529
  }
1528
- response = self.publicGetSpotV1SymbolsTrades(self.extend(request, params))
1529
- #
1530
- # spot
1530
+ if limit is not None:
1531
+ request['limit'] = limit
1532
+ response = self.publicGetSpotQuotationV3Trades(self.extend(request, params))
1531
1533
  #
1532
1534
  # {
1533
- # "message":"OK",
1534
- # "code":1000,
1535
- # "trace":"222d74c0-8f6d-49d9-8e1b-98118c50eeba",
1536
- # "data":{
1537
- # "trades":[
1538
- # {
1539
- # "amount":"0.005703",
1540
- # "order_time":1599652045394,
1541
- # "price":"0.034029",
1542
- # "count":"0.1676",
1543
- # "type":"sell"
1544
- # },
1545
- # ]
1546
- # }
1535
+ # "code": 1000,
1536
+ # "trace": "58031f9a5bd.111.17117",
1537
+ # "message": "success",
1538
+ # "data": [
1539
+ # [
1540
+ # "BTC_USDT",
1541
+ # "1717212457302",
1542
+ # "67643.11",
1543
+ # "0.00106",
1544
+ # "sell"
1545
+ # ],
1546
+ # ]
1547
1547
  # }
1548
1548
  #
1549
- data = self.safe_value(response, 'data', {})
1550
- trades = self.safe_list(data, 'trades', [])
1551
- return self.parse_trades(trades, market, since, limit)
1549
+ data = self.safe_list(response, 'data', [])
1550
+ return self.parse_trades(data, market, since, limit)
1552
1551
 
1553
1552
  def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
1554
1553
  #
ccxt/bl3p.py CHANGED
@@ -413,7 +413,13 @@ class bl3p(Exchange, ImplicitAPI):
413
413
  request: dict = {
414
414
  'order_id': id,
415
415
  }
416
- return self.privatePostMarketMoneyOrderCancel(self.extend(request, params))
416
+ response = self.privatePostMarketMoneyOrderCancel(self.extend(request, params))
417
+ #
418
+ # "success"
419
+ #
420
+ return self.safe_order({
421
+ 'info': response,
422
+ })
417
423
 
418
424
  def create_deposit_address(self, code: str, params={}):
419
425
  """
ccxt/btcalpha.py CHANGED
@@ -679,7 +679,7 @@ class btcalpha(Exchange, ImplicitAPI):
679
679
  filled = self.safe_string(order, 'amount_filled')
680
680
  amount = self.safe_string(order, 'amount_original')
681
681
  status = self.parse_order_status(self.safe_string(order, 'status'))
682
- id = self.safe_string_2(order, 'oid', 'id')
682
+ id = self.safe_string_n(order, ['oid', 'id', 'order'])
683
683
  trades = self.safe_value(order, 'trades')
684
684
  side = self.safe_string_2(order, 'my_side', 'type')
685
685
  return self.safe_order({
@@ -751,7 +751,12 @@ class btcalpha(Exchange, ImplicitAPI):
751
751
  'order': id,
752
752
  }
753
753
  response = self.privatePostOrderCancel(self.extend(request, params))
754
- return response
754
+ #
755
+ # {
756
+ # "order": 63568
757
+ # }
758
+ #
759
+ return self.parse_order(response)
755
760
 
756
761
  def fetch_order(self, id: str, symbol: Str = None, params={}):
757
762
  """
ccxt/btcturk.py CHANGED
@@ -684,7 +684,17 @@ class btcturk(Exchange, ImplicitAPI):
684
684
  request: dict = {
685
685
  'id': id,
686
686
  }
687
- return self.privateDeleteOrder(self.extend(request, params))
687
+ response = self.privateDeleteOrder(self.extend(request, params))
688
+ #
689
+ # {
690
+ # "success": True,
691
+ # "message": "SUCCESS",
692
+ # "code": 0
693
+ # }
694
+ #
695
+ return self.safe_order({
696
+ 'info': response,
697
+ })
688
698
 
689
699
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
690
700
  """
ccxt/coinbase.py CHANGED
@@ -502,9 +502,9 @@ class coinbase(Exchange, ImplicitAPI):
502
502
  paginate = False
503
503
  paginate, params = self.handle_option_and_params(params, 'fetchAccounts', 'paginate')
504
504
  if paginate:
505
- return self.fetch_paginated_call_cursor('fetchAccounts', None, None, None, params, 'cursor', 'cursor', None, 100)
505
+ return self.fetch_paginated_call_cursor('fetchAccounts', None, None, None, params, 'cursor', 'cursor', None, 250)
506
506
  request: dict = {
507
- 'limit': 100,
507
+ 'limit': 250,
508
508
  }
509
509
  response = self.v3PrivateGetBrokerageAccounts(self.extend(request, params))
510
510
  #
ccxt/coincheck.py CHANGED
@@ -595,7 +595,14 @@ class coincheck(Exchange, ImplicitAPI):
595
595
  request: dict = {
596
596
  'id': id,
597
597
  }
598
- return self.privateDeleteExchangeOrdersId(self.extend(request, params))
598
+ response = self.privateDeleteExchangeOrdersId(self.extend(request, params))
599
+ #
600
+ # {
601
+ # "success": True,
602
+ # "id": 12345
603
+ # }
604
+ #
605
+ return self.parse_order(response)
599
606
 
600
607
  def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
601
608
  """
ccxt/coinex.py CHANGED
@@ -1634,14 +1634,13 @@ class coinex(Exchange, ImplicitAPI):
1634
1634
  marketType, params = self.handle_market_type_and_params('fetchBalance', None, params)
1635
1635
  marginMode = None
1636
1636
  marginMode, params = self.handle_margin_mode_and_params('fetchBalance', params)
1637
- marketType = 'margin' if (marginMode is not None) else marketType
1638
- params = self.omit(params, 'margin')
1639
- if marketType == 'margin':
1640
- return self.fetch_margin_balance(params)
1641
- elif marketType == 'swap':
1637
+ isMargin = (marginMode is not None) or (marketType == 'margin')
1638
+ if marketType == 'swap':
1642
1639
  return self.fetch_swap_balance(params)
1643
1640
  elif marketType == 'financial':
1644
1641
  return self.fetch_financial_balance(params)
1642
+ elif isMargin:
1643
+ return self.fetch_margin_balance(params)
1645
1644
  else:
1646
1645
  return self.fetch_spot_balance(params)
1647
1646
 
@@ -3059,7 +3058,11 @@ class coinex(Exchange, ImplicitAPI):
3059
3058
  #
3060
3059
  # {"code":0,"data":{},"message":"OK"}
3061
3060
  #
3062
- return response
3061
+ return [
3062
+ self.safe_order({
3063
+ 'info': response,
3064
+ }),
3065
+ ]
3063
3066
 
3064
3067
  def fetch_order(self, id: str, symbol: Str = None, params={}):
3065
3068
  """
ccxt/okx.py CHANGED
@@ -279,6 +279,9 @@ class okx(Exchange, ImplicitAPI):
279
279
  'finance/staking-defi/eth/apy-history': 5 / 3,
280
280
  'finance/savings/lending-rate-summary': 5 / 3,
281
281
  'finance/savings/lending-rate-history': 5 / 3,
282
+ 'finance/fixed-loan/lending-offers': 10 / 3,
283
+ 'finance/fixed-loan/lending-apy-history': 10 / 3,
284
+ 'finance/fixed-loan/pending-lending-volume': 10 / 3,
282
285
  # public broker
283
286
  'finance/sfp/dcd/products': 2 / 3,
284
287
  # copytrading
ccxt/pro/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  # ----------------------------------------------------------------------------
6
6
 
7
- __version__ = '4.3.37'
7
+ __version__ = '4.3.38'
8
8
 
9
9
  # ----------------------------------------------------------------------------
10
10
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: ccxt
3
- Version: 4.3.37
3
+ Version: 4.3.38
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
@@ -70,6 +70,8 @@ Current feature list:
70
70
 
71
71
  ## Sponsored Promotion
72
72
 
73
+ [![Trade derivatives in June with BitMEX](https://github.com/ccxt/ccxt/assets/1294454/94c3d456-fdf5-4d62-8178-a42e3999e29e)](https://www.bitmex.com/app/register/NZTR1q)
74
+
73
75
  ## See Also
74
76
 
75
77
  - <sub>[![TabTrader](https://user-images.githubusercontent.com/1294454/66755907-9c3e8880-eea1-11e9-846e-0bff349ceb87.png)](https://tab-trader.com/?utm_source=ccxt)</sub> **[TabTrader](https://tab-trader.com/?utm_source=ccxt)** – trading on all exchanges in one app. Available on **[Android](https://play.google.com/store/apps/details?id=com.tabtrader.android&referrer=utm_source%3Dccxt)** and **[iOS](https://itunes.apple.com/app/apple-store/id1095716562?mt=8)**!
@@ -264,13 +266,13 @@ console.log(version, Object.keys(exchanges));
264
266
 
265
267
  All-in-one browser bundle (dependencies included), served from a CDN of your choice:
266
268
 
267
- * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.37/dist/ccxt.browser.min.js
268
- * unpkg: https://unpkg.com/ccxt@4.3.37/dist/ccxt.browser.min.js
269
+ * jsDelivr: https://cdn.jsdelivr.net/npm/ccxt@4.3.38/dist/ccxt.browser.min.js
270
+ * unpkg: https://unpkg.com/ccxt@4.3.38/dist/ccxt.browser.min.js
269
271
 
270
272
  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
273
 
272
274
  ```HTML
273
- <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.37/dist/ccxt.browser.min.js"></script>
275
+ <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/ccxt@4.3.38/dist/ccxt.browser.min.js"></script>
274
276
  ```
275
277
 
276
278
  Creates a global `ccxt` object:
@@ -1,4 +1,4 @@
1
- ccxt/__init__.py,sha256=EBsnoDGGwpC7aree5X4kq0cJ4jylAykAHCR9no7JrXc,15950
1
+ ccxt/__init__.py,sha256=mvYP8W4iwZPYtUhxYon5BMhIc3uvfRQMIAuiEtZxhXA,15950
2
2
  ccxt/ace.py,sha256=6x4vkcS2lGSkAQuzS-AAgYJLPDNNfNo9NMIdAoXzs18,41776
3
3
  ccxt/alpaca.py,sha256=EZ7uF3XI8EXXIsCZ-UVpruBXS96Kps6WOOukmdcgCn0,47326
4
4
  ccxt/ascendex.py,sha256=rUUU3n4j8QrMrJCk4pVwVastIYzS3eDTUAL9R2ePErk,151832
@@ -19,7 +19,7 @@ ccxt/bitfinex2.py,sha256=smVuwDShHy4m4s4i4xGzx04r197GKPL8MA3lT2End4E,160612
19
19
  ccxt/bitflyer.py,sha256=rvykeLLkDYVMEwXs4rInQClYwdXIXmj_7mxDpGT216I,41565
20
20
  ccxt/bitget.py,sha256=7ETvr_9MSWv0KlbdmVxBMd-K7z_2EAdTq1Xaj_Gi6nE,423496
21
21
  ccxt/bithumb.py,sha256=0oRYEp30LykNchRZwqbsiZlrzY4koY6EFWubVYs5hU8,45684
22
- ccxt/bitmart.py,sha256=JEXZ_kAu12Io1Y6m9QDn0_98s1qqOdBvoqOyRFUnzoY,204427
22
+ ccxt/bitmart.py,sha256=I21OAvRJASy0tQk-l0NfBP4BmMyUxbryx3mUmW7tE6U,204434
23
23
  ccxt/bitmex.py,sha256=koETQgb-yVZ3ZfP6qIHyTMLTDk8eXTHauhwhaP79ZBQ,126862
24
24
  ccxt/bitopro.py,sha256=kjGn1UOy6toGyEbpV_al50eGCjqI75GN4LXpGbmL4Tw,68743
25
25
  ccxt/bitpanda.py,sha256=aiwPkx9lKbVzt4ggoYdq_mIbMGtg5ZtGl2yRHO5xyz8,471
@@ -28,21 +28,21 @@ ccxt/bitso.py,sha256=eIFHfR1BUkrwrq1b8BmeumrmNyUc0brLTPXBUXpw2dc,71092
28
28
  ccxt/bitstamp.py,sha256=tgwBpJtz_nR1iJlA2SwNLOKWLLuHCMlEqcVzw5XExbw,92448
29
29
  ccxt/bitteam.py,sha256=Nh6KvtzPFmBuEgNRN8riiIKCyHsxi86sf0pe-XVc7NY,102223
30
30
  ccxt/bitvavo.py,sha256=gLqkdE4_XwKKAer78KOT_D8L5NlbNfFCGAnBSNje9r8,91774
31
- ccxt/bl3p.py,sha256=p2SbiFDZsQehObHebIsdbhrtrycx8luvHTyQ5D1lvIk,20531
31
+ ccxt/bl3p.py,sha256=ao8c2nrO4nlDyICLZma8tiJsRgM-3chRlooi_Hu7Zxg,20649
32
32
  ccxt/blockchaincom.py,sha256=Snf5tclR2T_qQD_eS6cQbeONpBrub6irhRAK6Y00BgM,48974
33
33
  ccxt/blofin.py,sha256=LrKelmUtqUes41vHsKEVclYTyCClA88NHfh8nbrRA7g,99500
34
- ccxt/btcalpha.py,sha256=xAZ4wdqpq_hBD-auwAIJIeJr-OI-ulyb6qtADEIuIzw,36856
34
+ ccxt/btcalpha.py,sha256=LyqEmXi-h6pz6MaVcBLWGBDGMuDiu2cXbwk35jXb1_k,36967
35
35
  ccxt/btcbox.py,sha256=1Vs2A4jOe5Wc4qgOblDBrIyRmp0m_aQZCk9-R7DvSqs,23588
36
36
  ccxt/btcmarkets.py,sha256=mSK14nf9EPwKtdd9vZAAQe4LCWWE9B8atZLANAOGnVs,51654
37
- ccxt/btcturk.py,sha256=Kh8DYFt6x7pMFXpof-xcCiJ7Fqg-P4-ZfCHdgRQ-bs0,36765
37
+ ccxt/btcturk.py,sha256=IqUB3IL4pJlIWEMfD50FNH7gcycC6Q9rLdRe7RZaUro,36993
38
38
  ccxt/bybit.py,sha256=QOdG3Z17PYdUoXYG33UY0JvSZRhWJrNC2eihI8eMOr4,413194
39
39
  ccxt/cex.py,sha256=IUb295DSS6H3SsPbCjvBKPzzNpQYvBXaRqFF-T450wM,70086
40
- ccxt/coinbase.py,sha256=UB-xUmXCyI6wlAUf3xPr3MKuyTKlgc8G9skiqVLUCP8,217233
40
+ ccxt/coinbase.py,sha256=jTQ91In82SqxfgMJ7kyHD2b8NqW_vOWchmTm825ADac,217233
41
41
  ccxt/coinbaseadvanced.py,sha256=d5g6nRx-NCcCwZDdtp8FsI2D-pRjSvnAP9ISSKY_nCQ,538
42
42
  ccxt/coinbaseexchange.py,sha256=pnS1O5ZkUIY3QQ8IotdWgvJDo0qB0NS6RJZPrPOvwd4,78908
43
43
  ccxt/coinbaseinternational.py,sha256=cGMA-DukMh64r0zd-Z5Ussyo7kYiItXV8YWnU5myAF4,87472
44
- ccxt/coincheck.py,sha256=dGpobFQvu2UfNLDuTXvFZzbXX8vw4AO1CGRmnOU1RbM,35784
45
- ccxt/coinex.py,sha256=t90s9hCU6J3whbpoe7Uylv_e4cXiZ-umNTg1iWLGFvU,258035
44
+ ccxt/coincheck.py,sha256=-9MS_DPgSfyPplgvjFzRfaQ3YSHW_WDxP3WnTAiICws,35943
45
+ ccxt/coinex.py,sha256=xS7McsQM9YLWhYg10hFp_oj_ABE5Q3eaUHiekDVsVGU,258057
46
46
  ccxt/coinlist.py,sha256=NGb-0qi_w9cbv5455K_GEpp2wlmC6170zhgMq0Q62vc,103386
47
47
  ccxt/coinmate.py,sha256=J9oS9ktyC-Z4Yxe9vVwtRNFTUPtLSaBzeuQIbsg7u04,46112
48
48
  ccxt/coinmetro.py,sha256=QMbKRQQ3w6kvvMKZ71WCpFeoVDLn_iFL3O-3ihwErqs,80869
@@ -84,7 +84,7 @@ ccxt/ndax.py,sha256=u8s6Bs48TKhwc2jk81GwzU3N0DpsCEYsFcFaxBOA3Mo,108865
84
84
  ccxt/novadax.py,sha256=wbDaAYYvn3Xo4MG7uOIzkzc9hOjeymZbFzmdacup-SA,64437
85
85
  ccxt/oceanex.py,sha256=FqoJb_yUOwMqS2wJLZsSy-SOtlKgZhW5xn6ZYMBvs0U,38022
86
86
  ccxt/okcoin.py,sha256=ZgcUzRfL5UnquTqze3WOkQttZF-Fcq-9p13YiNHYixg,151402
87
- ccxt/okx.py,sha256=mRDf2a1MRn_trBLMN-pKzcuQOpROZKgvP7Q4pwgEqBs,377648
87
+ ccxt/okx.py,sha256=6m2Y8_Fc_UulSegzU69k1VdMr70toCK2G7NxQjN-XtA,377868
88
88
  ccxt/onetrading.py,sha256=2nSe_Z_Jy7O4rPggwbY17M6oimu-t0PkeTejTu26XcA,88340
89
89
  ccxt/p2b.py,sha256=_kQjmJ1O9sgb5HnNsefD0Jy-DejW4chndqraV5jV3ak,54334
90
90
  ccxt/paymium.py,sha256=9TfMe2ViBYYodGcbVTPm6QOyuIxI6vmbl46xa5bl8D8,24420
@@ -190,7 +190,7 @@ ccxt/abstract/ndax.py,sha256=M98Ys406KT6T19Y98dXriD6YjzfglHHbnfQw-PDYWtM,11878
190
190
  ccxt/abstract/novadax.py,sha256=IvQFP_v2Q-Sx0tK2bXx4oY81rtNwC7gkc75p_E2jhKw,3093
191
191
  ccxt/abstract/oceanex.py,sha256=a0xAelMYDY_J3QwwLyIX2tGQcv4z2gmX_yJyC6FqoFg,1721
192
192
  ccxt/abstract/okcoin.py,sha256=3NmYh-68W_4AXmkqjkf9dRaJcPgNYQG5mKZssJKT4gs,9414
193
- ccxt/abstract/okx.py,sha256=DyQjXiMQfUnXWoUZHmykWVYDgt8VD0n3yxqAF4LT6a0,46458
193
+ ccxt/abstract/okx.py,sha256=Mjczthyel0LfaPV14FD5yD-9uuJdzpCbjGNDHICJgEk,47041
194
194
  ccxt/abstract/onetrading.py,sha256=TtJq4d44lrutV8wcK0lX4v0EfQ72ly6fxR-zB7-FSuI,3859
195
195
  ccxt/abstract/p2b.py,sha256=XwaH1hLIi2T6RHltUwFj28Y5fbo6dc0jbjI01sVeOJw,2054
196
196
  ccxt/abstract/paymium.py,sha256=Bol6PEkHg_47betqBnL4aQQ4IhIp4owID_12VfDqn0E,2843
@@ -210,7 +210,7 @@ ccxt/abstract/woofipro.py,sha256=El50vWGAV-4QPIDhgSnd4egfvk246NB6vTC-8h722vs,160
210
210
  ccxt/abstract/yobit.py,sha256=8ycfCO8ORFly9hc0Aa47sZyX4_ZKPXS9h9yJzI-uQ7Q,1339
211
211
  ccxt/abstract/zaif.py,sha256=m15WHdl3gYy0GOXNZ8NEH8eE7sVh8c0T_ITNuU8vXeU,3935
212
212
  ccxt/abstract/zonda.py,sha256=X-hCW0SdX3YKZWixDyW-O2211M58Rno8kKJ6quY7rw4,7183
213
- ccxt/async_support/__init__.py,sha256=w2wqy_8lIzziYMfJ9YUKh4AZq7x3sv_7sTPBv3gWzec,15723
213
+ ccxt/async_support/__init__.py,sha256=d6fQQtuWyRWY7Owka2m6YlSTKPJBH1qgrAj5NYxhk4E,15723
214
214
  ccxt/async_support/ace.py,sha256=tsRgs_o4Iq7q8IkD83FUdC-2ztylhgO4cp2hww3rlqQ,42000
215
215
  ccxt/async_support/alpaca.py,sha256=3845DgojoA1p0pxrqnDIqHbbRcEwZhZIkE4aygD5ics,47538
216
216
  ccxt/async_support/ascendex.py,sha256=7tZ4C7FfzmuB_ADYjl6IkyQQ5JG0Vt1AD_B3fTeY6V0,152620
@@ -231,7 +231,7 @@ ccxt/async_support/bitfinex2.py,sha256=QQstleJSkjDRMHGSFZQIUHJ5fx55Bgdytk35gMWke
231
231
  ccxt/async_support/bitflyer.py,sha256=RWrRkrZJow4M5uwoqTCD0bcITItbC5WZ57Mcmv0_1nk,41873
232
232
  ccxt/async_support/bitget.py,sha256=BLMe-ofDnsehCgJSJZkKK2JN7NbsBFZGop_cuM57cyU,425120
233
233
  ccxt/async_support/bithumb.py,sha256=0_SehUTG-pqL8uBHE_IhwJ5BjNTFfbxwF0A_IufTNuA,45914
234
- ccxt/async_support/bitmart.py,sha256=BHFBmb26UjRza9c-NoOJbzCi5H3hoQfkjh0AOA7thQE,205383
234
+ ccxt/async_support/bitmart.py,sha256=F1LeYW_ExcJ1SKRABq_LqH5dq6Q145HanIvG40RPRsc,205390
235
235
  ccxt/async_support/bitmex.py,sha256=JCRSgTWNwB97A1vwvEpajD8VQ4AE8Qs5ZU1yd8KaiYc,127440
236
236
  ccxt/async_support/bitopro.py,sha256=OWWNB_6Vpe10JG0P7dpmgerPEtmuxbx5_DLBFWnsL7w,69147
237
237
  ccxt/async_support/bitpanda.py,sha256=2k3URBWrpnh2xHa7JiYenI7_4MW5UeOPGzetlmRkR4U,485
@@ -240,21 +240,21 @@ ccxt/async_support/bitso.py,sha256=s1arsCntXJPE6oTHU4Isav3JyFc5ioQXq-ZxVp-popQ,7
240
240
  ccxt/async_support/bitstamp.py,sha256=YAXST5PwFID2Gh-ikWy3xK0tXT_jUsIqi7bHFhbe5r0,92948
241
241
  ccxt/async_support/bitteam.py,sha256=7qkGnxmLhFIu8WOvVmRFE0wV9HKNmJk-yHrqJ43ksuk,102555
242
242
  ccxt/async_support/bitvavo.py,sha256=kSonShw7cz-0n1cvjc5z7k5Vnbe1Q9AgCQHWpZchUv0,92208
243
- ccxt/async_support/bl3p.py,sha256=C-29eF3YCs9S-MfEh--1KjIzLrhNDouyu4zjh3ceWMo,20659
243
+ ccxt/async_support/bl3p.py,sha256=hEZ7xEtj7MDkHJ8nZjJN4VZLmAMVzljBpqsi9YBQ3YM,20777
244
244
  ccxt/async_support/blockchaincom.py,sha256=P_edztJfehnxSbWAnEGGzUgp3YNQ3cgtSUFgXpyzK_8,49366
245
245
  ccxt/async_support/blofin.py,sha256=lCzCaKe2caQj1XFUIZ8zXj5WBWxDGFjg_SNykxbnHYc,100084
246
- ccxt/async_support/btcalpha.py,sha256=2A0gUt0dlqov4-vuRAAwODW66XZcFtSaVmSl-Ki1lWk,37134
246
+ ccxt/async_support/btcalpha.py,sha256=SYmpEot6Knp0B0FAZ5-0r_w5SuQqEhQYFwLnTekyiAM,37245
247
247
  ccxt/async_support/btcbox.py,sha256=ML57vDSZC7UJfl5MvNKytPtvyR_rOnIoBOZRhGPxWwE,23782
248
248
  ccxt/async_support/btcmarkets.py,sha256=l_nhiwG3VEJw2SJc2z53B5tyPSMkrNSowu9TmfLIgp0,52004
249
- ccxt/async_support/btcturk.py,sha256=NQl8sLv_XpOoTJQLDxSzarh1B_jOQeUJGUrtZyvaK1k,36983
249
+ ccxt/async_support/btcturk.py,sha256=wWelnADTNhrGGVH0qjuDaOPZ5xkMblggHUDFGQBMG20,37211
250
250
  ccxt/async_support/bybit.py,sha256=0FOxbry0iP0nK24xlMKBpBAYgMWrAvp2TtIUowaJgyQ,414998
251
251
  ccxt/async_support/cex.py,sha256=8XcqkxF2fSzLnenfkyvXxHmnWgUvrifaBAI-HiJLIZY,70436
252
- ccxt/async_support/coinbase.py,sha256=jp1zmc063fyit9G_1yAGSnOQY3Q7XH6lKoOa3zj6iq4,218387
252
+ ccxt/async_support/coinbase.py,sha256=oZCypjcCiAPf5dIZqbmu_ZcGjunkkPg4wLtqw1KUHfs,218387
253
253
  ccxt/async_support/coinbaseadvanced.py,sha256=Kupwnuxiu_qTjwCNV2asacoDUNFQvcaHNAznUJPhdQs,552
254
254
  ccxt/async_support/coinbaseexchange.py,sha256=eDJIvxNNm-MvdFzCUlM0JQMwcSm1DBymXy4AaV2GKJc,79414
255
255
  ccxt/async_support/coinbaseinternational.py,sha256=pIybc9DfEeUVVnorHAkAitibuHuEatQZ2MciwIW6WLA,88026
256
- ccxt/async_support/coincheck.py,sha256=MaV9LQ4Oih1SNuugqVrULLr1nLM_6n_HA5d9YkQt8bs,35990
257
- ccxt/async_support/coinex.py,sha256=Ee0KbJVNkknMN8Vp2gV9lpB5Se2X6oDW9B1jReSxKXo,259293
256
+ ccxt/async_support/coincheck.py,sha256=Vhnzmdr_N7fpSOIthoTE6HSqVA5xPF2bG6W5UleVdkk,36149
257
+ ccxt/async_support/coinex.py,sha256=_TNVuWDPgU9KUSJEN_T-IXWgOH234TTz4ZUfdtLWqRA,259315
258
258
  ccxt/async_support/coinlist.py,sha256=bPNe3Bwo5ovyuKNrpkCGcXKD20h1gUkJEv8Y6RKvvUo,103874
259
259
  ccxt/async_support/coinmate.py,sha256=nYBc_dXLwXDmGMOpBrpOLD9K7O3YTyhx9FerCRYEn3I,46378
260
260
  ccxt/async_support/coinmetro.py,sha256=RFOMp1sxrk3jsM_5M0sLou1q79y9kz32pWPkJOcNPTQ,81189
@@ -296,7 +296,7 @@ ccxt/async_support/ndax.py,sha256=R3gQ8igEJnX7XOMqOi8nKxVTJVKwsZKAxAZaJi1yRDg,10
296
296
  ccxt/async_support/novadax.py,sha256=7hgBWCcuZRDRSD79-Wel4cesQuyQjo_CP-MK2S7IKOw,64805
297
297
  ccxt/async_support/oceanex.py,sha256=GdudBIC9hCuwI7vE3Mmrw8qvlQmuKclCGTyhuFjorOU,38342
298
298
  ccxt/async_support/okcoin.py,sha256=3l0dRwsxG9u5hyFYxlHRFfKJ4gzvcXOQ3FTTAkHHwx4,151926
299
- ccxt/async_support/okx.py,sha256=Gi-iDBxcH9-ciaZsWrufAWVfUZWK6dXfzzN22YooufM,379235
299
+ ccxt/async_support/okx.py,sha256=iTFg2uVB_Ohk84PoqVu70fAdn4nwpb2wtRbdSLULyfQ,379455
300
300
  ccxt/async_support/onetrading.py,sha256=u6Y7zWjfVBVBl9RLIUfwAneZzE4fOENx7Y11zE7MChM,88792
301
301
  ccxt/async_support/p2b.py,sha256=vwavNnMyU7tJF1FIIBhZe4az58clzptk0bEuIDPmOAA,54576
302
302
  ccxt/async_support/paymium.py,sha256=WKPElafAfmg06ATcLLIS0V09kZIGlSbn0L7Z3rcLvQA,24608
@@ -317,7 +317,7 @@ ccxt/async_support/yobit.py,sha256=KQcu9nXJPDlAodZyxOXKIn6eTSLmlvUlgRFE6EBLfug,5
317
317
  ccxt/async_support/zaif.py,sha256=jTK5pLZSpKL1Pt0qAJTjN09TDS5AfhptGgGAqw7sNwE,29045
318
318
  ccxt/async_support/zonda.py,sha256=e5sSXcFM7NZSyCGPoKmeyNe5wLIxJZJhDAetMknwAYo,81544
319
319
  ccxt/async_support/base/__init__.py,sha256=aVYSsFi--b4InRs9zDN_wtCpj8odosAB726JdUHavrk,67
320
- ccxt/async_support/base/exchange.py,sha256=1Z_3-8VWvQ2SDUYI8EQWZ-n3EB8kcPlt3TVscwts_pQ,109872
320
+ ccxt/async_support/base/exchange.py,sha256=Lp1hhKcHIPw5WqCq30ENeyHBTX6mYIDYZjLucgo8S5Q,109872
321
321
  ccxt/async_support/base/throttler.py,sha256=tvDVcdRUVYi8fZRlEcnqtgzcgB_KMUMRs5Pu8tuU-tU,1847
322
322
  ccxt/async_support/base/ws/__init__.py,sha256=uockzpLuwntKGZbs5EOWFe-Zg-k6Cj7GhNJLc_RX0so,1791
323
323
  ccxt/async_support/base/ws/aiohttp_client.py,sha256=5IEiT0elWI9a7Vr-KV0jgmlbpLJWBzIlrLaCkTKGaqY,5752
@@ -331,10 +331,10 @@ ccxt/async_support/base/ws/order_book_side.py,sha256=GhnGUt78pJ-AYL_Dq9produGjmB
331
331
  ccxt/base/__init__.py,sha256=eTx1OE3HJjspFUQjGm6LBhaQiMKJnXjkdP-JUXknyQ0,1320
332
332
  ccxt/base/decimal_to_precision.py,sha256=fgWRBzRTtsf3r2INyS4f7WHlzgjB5YM1ekiwqD21aac,6634
333
333
  ccxt/base/errors.py,sha256=FGdyULeNCNcl52gA_CNhe2dZmat9GJGkTdlIyDXAF_A,4213
334
- ccxt/base/exchange.py,sha256=fVG8clDxRi4bieRJnwmqRkKwG5pVlC0eLOs6PTuqOtQ,280871
334
+ ccxt/base/exchange.py,sha256=ApAHGA9Lrd3kOIc40KuNcXWh-AWw9woIiQ-B4rTyDDw,280871
335
335
  ccxt/base/precise.py,sha256=_xfu54sV0vWNnOfGTKRFykeuWP8mn4K1m9lk1tcllX4,8565
336
336
  ccxt/base/types.py,sha256=RGGcbz86cVtrmU602zoFO5gSWrv_J7IHxQkPnzmNirs,9247
337
- ccxt/pro/__init__.py,sha256=xcDuY_PDmzKunVljOsr9FhjqI9ZnBbYmIDTeLQdRbIc,7107
337
+ ccxt/pro/__init__.py,sha256=BNkuUMQ9bRuoiKnJQEWr-_lyv-3gY3EhbGBGOrbKrHI,7107
338
338
  ccxt/pro/alpaca.py,sha256=81nFwDKyNlmUnhSyRyDLmLU6LGt3yqip1L_Ms2UyAmw,27215
339
339
  ccxt/pro/ascendex.py,sha256=e4WZqmTkIz9sVAWtKAaV6BvanrM2ylRdzjxrclZYmOE,35456
340
340
  ccxt/pro/bequant.py,sha256=5zbsP8BHQTUZ8ZNL6uaACxDbUClgkOV4SYfXT_LfQVg,1351
@@ -535,7 +535,7 @@ ccxt/test/base/test_ticker.py,sha256=cMTIMb1oySNORUCmqI5ZzMswlEyCF6gJMah3vfvo8wQ
535
535
  ccxt/test/base/test_trade.py,sha256=PMtmB8V38dpaP-eb8h488xYMlR6D69yCOhsA1RuWrUA,2336
536
536
  ccxt/test/base/test_trading_fee.py,sha256=2aDCNJtqBkTC_AieO0l1HYGq5hz5qkWlkWb9Nv_fcwk,1066
537
537
  ccxt/test/base/test_transaction.py,sha256=BTbB4UHHXkrvYgwbrhh867nVRlevmIkIrz1W_odlQJI,1434
538
- ccxt-4.3.37.dist-info/METADATA,sha256=0_o7JJRmtB7ditlZk6ZVXEGDM0CAHNyVaqeSPLAYFd4,112807
539
- ccxt-4.3.37.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
540
- ccxt-4.3.37.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
541
- ccxt-4.3.37.dist-info/RECORD,,
538
+ ccxt-4.3.38.dist-info/METADATA,sha256=xVkVVqshSRoayvIbndX6Vd5cvXV-DYxLQDQ9JGcS6i4,112977
539
+ ccxt-4.3.38.dist-info/WHEEL,sha256=P2T-6epvtXQ2cBOE_U1K4_noqlJFN3tj15djMgEu4NM,110
540
+ ccxt-4.3.38.dist-info/top_level.txt,sha256=CkQDuCTDKNcImPV60t36G6MdYfxsAPNiSaEwifVoVMo,5
541
+ ccxt-4.3.38.dist-info/RECORD,,
File without changes