ccxt 4.2.84__py2.py3-none-any.whl → 4.2.85__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.
Files changed (150) hide show
  1. ccxt/__init__.py +1 -1
  2. ccxt/ace.py +5 -5
  3. ccxt/ascendex.py +8 -8
  4. ccxt/async_support/__init__.py +1 -1
  5. ccxt/async_support/ace.py +5 -5
  6. ccxt/async_support/ascendex.py +8 -8
  7. ccxt/async_support/base/exchange.py +3 -27
  8. ccxt/async_support/bigone.py +12 -12
  9. ccxt/async_support/binance.py +20 -32
  10. ccxt/async_support/bingx.py +12 -9
  11. ccxt/async_support/bit2c.py +1 -1
  12. ccxt/async_support/bitbank.py +8 -8
  13. ccxt/async_support/bitbns.py +5 -5
  14. ccxt/async_support/bitfinex.py +1 -1
  15. ccxt/async_support/bitfinex2.py +1 -1
  16. ccxt/async_support/bitget.py +29 -24
  17. ccxt/async_support/bithumb.py +5 -5
  18. ccxt/async_support/bitmart.py +16 -16
  19. ccxt/async_support/bitopro.py +1 -1
  20. ccxt/async_support/bitrue.py +4 -4
  21. ccxt/async_support/bitso.py +5 -5
  22. ccxt/async_support/bitstamp.py +1 -1
  23. ccxt/async_support/bitteam.py +8 -8
  24. ccxt/async_support/bl3p.py +1 -1
  25. ccxt/async_support/btcturk.py +6 -6
  26. ccxt/async_support/bybit.py +30 -83
  27. ccxt/async_support/coincheck.py +4 -4
  28. ccxt/async_support/coinex.py +11 -11
  29. ccxt/async_support/coinlist.py +7 -7
  30. ccxt/async_support/coinmate.py +4 -4
  31. ccxt/async_support/coinmetro.py +3 -3
  32. ccxt/async_support/coinone.py +5 -5
  33. ccxt/async_support/coinspot.py +2 -2
  34. ccxt/async_support/cryptocom.py +17 -17
  35. ccxt/async_support/currencycom.py +1 -1
  36. ccxt/async_support/delta.py +0 -8
  37. ccxt/async_support/deribit.py +16 -80
  38. ccxt/async_support/digifinex.py +8 -8
  39. ccxt/async_support/exmo.py +8 -8
  40. ccxt/async_support/gate.py +0 -8
  41. ccxt/async_support/hitbtc.py +5 -4
  42. ccxt/async_support/hollaex.py +7 -7
  43. ccxt/async_support/htx.py +7 -7
  44. ccxt/async_support/huobijp.py +3 -3
  45. ccxt/async_support/idex.py +2 -2
  46. ccxt/async_support/independentreserve.py +2 -2
  47. ccxt/async_support/indodax.py +2 -2
  48. ccxt/async_support/kraken.py +8 -8
  49. ccxt/async_support/krakenfutures.py +6 -6
  50. ccxt/async_support/kucoin.py +4 -1
  51. ccxt/async_support/kucoinfutures.py +8 -8
  52. ccxt/async_support/kuna.py +16 -16
  53. ccxt/async_support/latoken.py +2 -2
  54. ccxt/async_support/lbank.py +10 -10
  55. ccxt/async_support/luno.py +4 -4
  56. ccxt/async_support/mercado.py +5 -5
  57. ccxt/async_support/mexc.py +6 -6
  58. ccxt/async_support/ndax.py +1 -1
  59. ccxt/async_support/novadax.py +9 -9
  60. ccxt/async_support/oceanex.py +7 -7
  61. ccxt/async_support/okcoin.py +13 -13
  62. ccxt/async_support/okx.py +23 -31
  63. ccxt/async_support/onetrading.py +4 -4
  64. ccxt/async_support/p2b.py +7 -7
  65. ccxt/async_support/phemex.py +12 -12
  66. ccxt/async_support/poloniexfutures.py +5 -5
  67. ccxt/async_support/probit.py +11 -11
  68. ccxt/async_support/timex.py +7 -7
  69. ccxt/async_support/tokocrypto.py +9 -9
  70. ccxt/async_support/wavesexchange.py +3 -3
  71. ccxt/async_support/whitebit.py +5 -5
  72. ccxt/async_support/woo.py +1 -1
  73. ccxt/async_support/zaif.py +1 -1
  74. ccxt/async_support/zonda.py +7 -7
  75. ccxt/base/exchange.py +66 -23
  76. ccxt/bigone.py +12 -12
  77. ccxt/binance.py +20 -32
  78. ccxt/bingx.py +12 -9
  79. ccxt/bit2c.py +1 -1
  80. ccxt/bitbank.py +8 -8
  81. ccxt/bitbns.py +5 -5
  82. ccxt/bitfinex.py +1 -1
  83. ccxt/bitfinex2.py +1 -1
  84. ccxt/bitget.py +29 -24
  85. ccxt/bithumb.py +5 -5
  86. ccxt/bitmart.py +16 -16
  87. ccxt/bitopro.py +1 -1
  88. ccxt/bitrue.py +4 -4
  89. ccxt/bitso.py +5 -5
  90. ccxt/bitstamp.py +1 -1
  91. ccxt/bitteam.py +8 -8
  92. ccxt/bl3p.py +1 -1
  93. ccxt/btcturk.py +6 -6
  94. ccxt/bybit.py +30 -83
  95. ccxt/coincheck.py +4 -4
  96. ccxt/coinex.py +11 -11
  97. ccxt/coinlist.py +7 -7
  98. ccxt/coinmate.py +4 -4
  99. ccxt/coinmetro.py +3 -3
  100. ccxt/coinone.py +5 -5
  101. ccxt/coinspot.py +2 -2
  102. ccxt/cryptocom.py +17 -17
  103. ccxt/currencycom.py +1 -1
  104. ccxt/delta.py +0 -8
  105. ccxt/deribit.py +16 -80
  106. ccxt/digifinex.py +8 -8
  107. ccxt/exmo.py +8 -8
  108. ccxt/gate.py +0 -8
  109. ccxt/hitbtc.py +5 -4
  110. ccxt/hollaex.py +7 -7
  111. ccxt/htx.py +7 -7
  112. ccxt/huobijp.py +3 -3
  113. ccxt/idex.py +2 -2
  114. ccxt/independentreserve.py +2 -2
  115. ccxt/indodax.py +2 -2
  116. ccxt/kraken.py +8 -8
  117. ccxt/krakenfutures.py +6 -6
  118. ccxt/kucoin.py +4 -1
  119. ccxt/kucoinfutures.py +8 -8
  120. ccxt/kuna.py +16 -16
  121. ccxt/latoken.py +2 -2
  122. ccxt/lbank.py +10 -10
  123. ccxt/luno.py +4 -4
  124. ccxt/mercado.py +5 -5
  125. ccxt/mexc.py +6 -6
  126. ccxt/ndax.py +1 -1
  127. ccxt/novadax.py +9 -9
  128. ccxt/oceanex.py +7 -7
  129. ccxt/okcoin.py +13 -13
  130. ccxt/okx.py +23 -31
  131. ccxt/onetrading.py +4 -4
  132. ccxt/p2b.py +7 -7
  133. ccxt/phemex.py +12 -12
  134. ccxt/poloniexfutures.py +5 -5
  135. ccxt/pro/__init__.py +1 -1
  136. ccxt/pro/binance.py +150 -112
  137. ccxt/pro/kucoin.py +6 -7
  138. ccxt/pro/okx.py +12 -1
  139. ccxt/probit.py +11 -11
  140. ccxt/timex.py +7 -7
  141. ccxt/tokocrypto.py +9 -9
  142. ccxt/wavesexchange.py +3 -3
  143. ccxt/whitebit.py +5 -5
  144. ccxt/woo.py +1 -1
  145. ccxt/zaif.py +1 -1
  146. ccxt/zonda.py +7 -7
  147. {ccxt-4.2.84.dist-info → ccxt-4.2.85.dist-info}/METADATA +4 -4
  148. {ccxt-4.2.84.dist-info → ccxt-4.2.85.dist-info}/RECORD +150 -150
  149. {ccxt-4.2.84.dist-info → ccxt-4.2.85.dist-info}/WHEEL +0 -0
  150. {ccxt-4.2.84.dist-info → ccxt-4.2.85.dist-info}/top_level.txt +0 -0
ccxt/mexc.py CHANGED
@@ -2680,7 +2680,7 @@ class mexc(Exchange, ImplicitAPI):
2680
2680
  # ]
2681
2681
  # }
2682
2682
  #
2683
- data = self.safe_value(response, 'data')
2683
+ data = self.safe_list(response, 'data')
2684
2684
  return self.parse_orders(data, market)
2685
2685
 
2686
2686
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
@@ -2930,7 +2930,7 @@ class mexc(Exchange, ImplicitAPI):
2930
2930
  # ]
2931
2931
  # }
2932
2932
  #
2933
- data = self.safe_value(response, 'data')
2933
+ data = self.safe_list(response, 'data')
2934
2934
  return self.parse_orders(data, market)
2935
2935
 
2936
2936
  def cancel_all_orders(self, symbol: Str = None, params={}):
@@ -3013,7 +3013,7 @@ class mexc(Exchange, ImplicitAPI):
3013
3013
  # "code": "0"
3014
3014
  # }
3015
3015
  #
3016
- data = self.safe_value(response, 'data', [])
3016
+ data = self.safe_list(response, 'data', [])
3017
3017
  return self.parse_orders(data, market)
3018
3018
 
3019
3019
  def parse_order(self, order, market: Market = None) -> Order:
@@ -4084,7 +4084,7 @@ class mexc(Exchange, ImplicitAPI):
4084
4084
  # ]
4085
4085
  # }
4086
4086
  #
4087
- data = self.safe_value(response, 'data')
4087
+ data = self.safe_list(response, 'data')
4088
4088
  return self.parse_leverage_tiers(data, symbols, 'symbol')
4089
4089
 
4090
4090
  def parse_market_leverage_tiers(self, info, market: Market = None):
@@ -4505,7 +4505,7 @@ class mexc(Exchange, ImplicitAPI):
4505
4505
  # ]
4506
4506
  # }
4507
4507
  #
4508
- data = self.safe_value(response, 'data', [])
4508
+ data = self.safe_list(response, 'data', [])
4509
4509
  return self.parse_positions(data, symbols)
4510
4510
 
4511
4511
  def parse_position(self, position, market: Market = None):
@@ -4596,7 +4596,7 @@ class mexc(Exchange, ImplicitAPI):
4596
4596
  # }
4597
4597
  # }
4598
4598
  #
4599
- data = self.safe_value(response, 'data', {})
4599
+ data = self.safe_dict(response, 'data', {})
4600
4600
  return self.parse_transfer(data)
4601
4601
  elif marketType == 'swap':
4602
4602
  raise BadRequest(self.id + ' fetchTransfer() is not supported for ' + marketType)
ccxt/ndax.py CHANGED
@@ -1858,7 +1858,7 @@ class ndax(Exchange, ImplicitAPI):
1858
1858
  # ]
1859
1859
  #
1860
1860
  grouped = self.group_by(response, 'ChangeReason')
1861
- trades = self.safe_value(grouped, 'Trade', [])
1861
+ trades = self.safe_list(grouped, 'Trade', [])
1862
1862
  return self.parse_trades(trades, market, since, limit)
1863
1863
 
1864
1864
  def fetch_deposit_address(self, code: str, params={}):
ccxt/novadax.py CHANGED
@@ -405,7 +405,7 @@ class novadax(Exchange, ImplicitAPI):
405
405
  # "message":"Success"
406
406
  # }
407
407
  #
408
- data = self.safe_value(response, 'data', {})
408
+ data = self.safe_dict(response, 'data', {})
409
409
  return self.parse_ticker(data, market)
410
410
 
411
411
  def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
@@ -593,7 +593,7 @@ class novadax(Exchange, ImplicitAPI):
593
593
  # "message":"Success"
594
594
  # }
595
595
  #
596
- data = self.safe_value(response, 'data', [])
596
+ data = self.safe_list(response, 'data', [])
597
597
  return self.parse_trades(data, market, since, limit)
598
598
 
599
599
  def fetch_ohlcv(self, symbol: str, timeframe='1m', since: Int = None, limit: Int = None, params={}) -> List[list]:
@@ -644,7 +644,7 @@ class novadax(Exchange, ImplicitAPI):
644
644
  # "message": "Success"
645
645
  # }
646
646
  #
647
- data = self.safe_value(response, 'data', [])
647
+ data = self.safe_list(response, 'data', [])
648
648
  return self.parse_ohlcvs(data, market, timeframe, since, limit)
649
649
 
650
650
  def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
@@ -804,7 +804,7 @@ class novadax(Exchange, ImplicitAPI):
804
804
  # "message": "Success"
805
805
  # }
806
806
  #
807
- data = self.safe_value(response, 'data', {})
807
+ data = self.safe_dict(response, 'data', {})
808
808
  return self.parse_order(data, market)
809
809
 
810
810
  def cancel_order(self, id: str, symbol: Str = None, params={}):
@@ -830,7 +830,7 @@ class novadax(Exchange, ImplicitAPI):
830
830
  # "message": "Success"
831
831
  # }
832
832
  #
833
- data = self.safe_value(response, 'data', {})
833
+ data = self.safe_dict(response, 'data', {})
834
834
  return self.parse_order(data)
835
835
 
836
836
  def fetch_order(self, id: str, symbol: Str = None, params={}):
@@ -867,7 +867,7 @@ class novadax(Exchange, ImplicitAPI):
867
867
  # "message": "Success"
868
868
  # }
869
869
  #
870
- data = self.safe_value(response, 'data', {})
870
+ data = self.safe_dict(response, 'data', {})
871
871
  return self.parse_order(data)
872
872
 
873
873
  def fetch_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
@@ -922,7 +922,7 @@ class novadax(Exchange, ImplicitAPI):
922
922
  # "message": "Success"
923
923
  # }
924
924
  #
925
- data = self.safe_value(response, 'data', [])
925
+ data = self.safe_list(response, 'data', [])
926
926
  return self.parse_orders(data, market, since, limit)
927
927
 
928
928
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
@@ -1297,7 +1297,7 @@ class novadax(Exchange, ImplicitAPI):
1297
1297
  # "message": "Success"
1298
1298
  # }
1299
1299
  #
1300
- data = self.safe_value(response, 'data', [])
1300
+ data = self.safe_list(response, 'data', [])
1301
1301
  return self.parse_transactions(data, currency, since, limit)
1302
1302
 
1303
1303
  def parse_transaction_status(self, status):
@@ -1435,7 +1435,7 @@ class novadax(Exchange, ImplicitAPI):
1435
1435
  # "message": "Success"
1436
1436
  # }
1437
1437
  #
1438
- data = self.safe_value(response, 'data', [])
1438
+ data = self.safe_list(response, 'data', [])
1439
1439
  return self.parse_trades(data, market, since, limit)
1440
1440
 
1441
1441
  def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
ccxt/oceanex.py CHANGED
@@ -271,7 +271,7 @@ class oceanex(Exchange, ImplicitAPI):
271
271
  # }
272
272
  # }
273
273
  #
274
- data = self.safe_value(response, 'data', {})
274
+ data = self.safe_dict(response, 'data', {})
275
275
  return self.parse_ticker(data, market)
276
276
 
277
277
  def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
@@ -484,7 +484,7 @@ class oceanex(Exchange, ImplicitAPI):
484
484
  # ]
485
485
  # }
486
486
  #
487
- data = self.safe_value(response, 'data')
487
+ data = self.safe_list(response, 'data')
488
488
  return self.parse_trades(data, market, since, limit)
489
489
 
490
490
  def parse_trade(self, trade, market: Market = None) -> Trade:
@@ -620,7 +620,7 @@ class oceanex(Exchange, ImplicitAPI):
620
620
  if type == 'limit':
621
621
  request['price'] = self.price_to_precision(symbol, price)
622
622
  response = self.privatePostOrders(self.extend(request, params))
623
- data = self.safe_value(response, 'data')
623
+ data = self.safe_dict(response, 'data')
624
624
  return self.parse_order(data, market)
625
625
 
626
626
  def fetch_order(self, id: str, symbol: Str = None, params={}):
@@ -752,7 +752,7 @@ class oceanex(Exchange, ImplicitAPI):
752
752
  if limit is not None:
753
753
  request['limit'] = limit
754
754
  response = self.publicPostK(self.extend(request, params))
755
- ohlcvs = self.safe_value(response, 'data', [])
755
+ ohlcvs = self.safe_list(response, 'data', [])
756
756
  return self.parse_ohlcvs(ohlcvs, market, timeframe, since, limit)
757
757
 
758
758
  def parse_order(self, order, market: Market = None) -> Order:
@@ -828,7 +828,7 @@ class oceanex(Exchange, ImplicitAPI):
828
828
  """
829
829
  self.load_markets()
830
830
  response = self.privatePostOrderDelete(self.extend({'id': id}, params))
831
- data = self.safe_value(response, 'data')
831
+ data = self.safe_dict(response, 'data')
832
832
  return self.parse_order(data)
833
833
 
834
834
  def cancel_orders(self, ids, symbol: Str = None, params={}):
@@ -842,7 +842,7 @@ class oceanex(Exchange, ImplicitAPI):
842
842
  """
843
843
  self.load_markets()
844
844
  response = self.privatePostOrderDeleteMulti(self.extend({'ids': ids}, params))
845
- data = self.safe_value(response, 'data')
845
+ data = self.safe_list(response, 'data')
846
846
  return self.parse_orders(data)
847
847
 
848
848
  def cancel_all_orders(self, symbol: Str = None, params={}):
@@ -855,7 +855,7 @@ class oceanex(Exchange, ImplicitAPI):
855
855
  """
856
856
  self.load_markets()
857
857
  response = self.privatePostOrdersClear(params)
858
- data = self.safe_value(response, 'data')
858
+ data = self.safe_list(response, 'data')
859
859
  return self.parse_orders(data)
860
860
 
861
861
  def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
ccxt/okcoin.py CHANGED
@@ -971,7 +971,7 @@ class okcoin(Exchange, ImplicitAPI):
971
971
  'instType': 'SPOT',
972
972
  }
973
973
  response = self.publicGetMarketTickers(self.extend(request, params))
974
- data = self.safe_value(response, 'data', [])
974
+ data = self.safe_list(response, 'data', [])
975
975
  return self.parse_tickers(data, symbols, params)
976
976
 
977
977
  def parse_trade(self, trade, market: Market = None) -> Trade:
@@ -1072,7 +1072,7 @@ class okcoin(Exchange, ImplicitAPI):
1072
1072
  response = self.publicGetMarketTrades(self.extend(request, params))
1073
1073
  else:
1074
1074
  response = self.publicGetMarketHistoryTrades(self.extend(request, params))
1075
- data = self.safe_value(response, 'data', [])
1075
+ data = self.safe_list(response, 'data', [])
1076
1076
  return self.parse_trades(data, market, since, limit)
1077
1077
 
1078
1078
  def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
@@ -1130,7 +1130,7 @@ class okcoin(Exchange, ImplicitAPI):
1130
1130
  response = self.publicGetMarketCandles(self.extend(request, params))
1131
1131
  else:
1132
1132
  response = self.publicGetMarketHistoryCandles(self.extend(request, params))
1133
- data = self.safe_value(response, 'data', [])
1133
+ data = self.safe_list(response, 'data', [])
1134
1134
  return self.parse_ohlcvs(data, market, timeframe, since, limit)
1135
1135
 
1136
1136
  def parse_account_balance(self, response):
@@ -1571,7 +1571,7 @@ class okcoin(Exchange, ImplicitAPI):
1571
1571
  response = self.privatePostTradeCancelOrder(self.extend(request, query))
1572
1572
  # {"code":"0","data":[{"clOrdId":"","ordId":"317251910906576896","sCode":"0","sMsg":""}],"msg":""}
1573
1573
  data = self.safe_value(response, 'data', [])
1574
- order = self.safe_value(data, 0)
1574
+ order = self.safe_dict(data, 0)
1575
1575
  return self.parse_order(order, market)
1576
1576
 
1577
1577
  def parse_ids(self, ids):
@@ -1654,7 +1654,7 @@ class okcoin(Exchange, ImplicitAPI):
1654
1654
  # }
1655
1655
  #
1656
1656
  #
1657
- ordersData = self.safe_value(response, 'data', [])
1657
+ ordersData = self.safe_list(response, 'data', [])
1658
1658
  return self.parse_orders(ordersData, market, None, None, params)
1659
1659
 
1660
1660
  def parse_order_status(self, status):
@@ -1895,7 +1895,7 @@ class okcoin(Exchange, ImplicitAPI):
1895
1895
  else:
1896
1896
  response = self.privateGetTradeOrder(self.extend(request, query))
1897
1897
  data = self.safe_value(response, 'data', [])
1898
- order = self.safe_value(data, 0)
1898
+ order = self.safe_dict(data, 0)
1899
1899
  return self.parse_order(order)
1900
1900
 
1901
1901
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
@@ -1936,7 +1936,7 @@ class okcoin(Exchange, ImplicitAPI):
1936
1936
  response = self.privateGetTradeOrdersAlgoPending(self.extend(request, params))
1937
1937
  else:
1938
1938
  response = self.privateGetTradeOrdersPending(self.extend(request, params))
1939
- data = self.safe_value(response, 'data', [])
1939
+ data = self.safe_list(response, 'data', [])
1940
1940
  return self.parse_orders(data, market, since, limit)
1941
1941
 
1942
1942
  def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
@@ -2017,7 +2017,7 @@ class okcoin(Exchange, ImplicitAPI):
2017
2017
  # "msg":""
2018
2018
  # }
2019
2019
  #
2020
- data = self.safe_value(response, 'data', [])
2020
+ data = self.safe_list(response, 'data', [])
2021
2021
  return self.parse_orders(data, market, since, limit)
2022
2022
 
2023
2023
  def parse_deposit_address(self, depositAddress, currency: Currency = None):
@@ -2223,7 +2223,7 @@ class okcoin(Exchange, ImplicitAPI):
2223
2223
  # }
2224
2224
  #
2225
2225
  data = self.safe_value(response, 'data', [])
2226
- rawTransfer = self.safe_value(data, 0, {})
2226
+ rawTransfer = self.safe_dict(data, 0, {})
2227
2227
  return self.parse_transfer(rawTransfer, currency)
2228
2228
 
2229
2229
  def parse_transfer(self, transfer, currency: Currency = None):
@@ -2359,7 +2359,7 @@ class okcoin(Exchange, ImplicitAPI):
2359
2359
  # }
2360
2360
  #
2361
2361
  data = self.safe_value(response, 'data', [])
2362
- transaction = self.safe_value(data, 0)
2362
+ transaction = self.safe_dict(data, 0)
2363
2363
  return self.parse_transaction(transaction, currency)
2364
2364
 
2365
2365
  def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
@@ -2428,7 +2428,7 @@ class okcoin(Exchange, ImplicitAPI):
2428
2428
  # ]
2429
2429
  # }
2430
2430
  #
2431
- data = self.safe_value(response, 'data', [])
2431
+ data = self.safe_list(response, 'data', [])
2432
2432
  return self.parse_transactions(data, currency, since, limit, params)
2433
2433
 
2434
2434
  def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
@@ -2489,7 +2489,7 @@ class okcoin(Exchange, ImplicitAPI):
2489
2489
  # ]
2490
2490
  # }
2491
2491
  #
2492
- data = self.safe_value(response, 'data', [])
2492
+ data = self.safe_list(response, 'data', [])
2493
2493
  return self.parse_transactions(data, currency, since, limit, params)
2494
2494
 
2495
2495
  def parse_transaction_status(self, status):
@@ -2650,7 +2650,7 @@ class okcoin(Exchange, ImplicitAPI):
2650
2650
  response = self.privateGetTradeFillsHistory(self.extend(request, params))
2651
2651
  else:
2652
2652
  response = self.privateGetTradeFills(self.extend(request, params))
2653
- data = self.safe_value(response, 'data', [])
2653
+ data = self.safe_list(response, 'data', [])
2654
2654
  return self.parse_trades(data, market, since, limit)
2655
2655
 
2656
2656
  def fetch_order_trades(self, id: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
ccxt/okx.py CHANGED
@@ -1138,14 +1138,6 @@ class okx(Exchange, ImplicitAPI):
1138
1138
  exchangeTypes = self.safe_value(self.options, 'exchangeType', {})
1139
1139
  return self.safe_string(exchangeTypes, type, type)
1140
1140
 
1141
- def convert_expire_date(self, date):
1142
- # parse YYMMDD to timestamp
1143
- year = date[0:2]
1144
- month = date[2:4]
1145
- day = date[4:6]
1146
- reconstructedDate = '20' + year + '-' + month + '-' + day + 'T00:00:00Z'
1147
- return reconstructedDate
1148
-
1149
1141
  def create_expired_option_market(self, symbol: str):
1150
1142
  # support expired option contracts
1151
1143
  quote = 'USD'
@@ -1832,7 +1824,7 @@ class okx(Exchange, ImplicitAPI):
1832
1824
  # }
1833
1825
  #
1834
1826
  data = self.safe_value(response, 'data', [])
1835
- first = self.safe_value(data, 0, {})
1827
+ first = self.safe_dict(data, 0, {})
1836
1828
  return self.parse_ticker(first, market)
1837
1829
 
1838
1830
  def fetch_tickers(self, symbols: Strings = None, params={}) -> Tickers:
@@ -2045,7 +2037,7 @@ class okx(Exchange, ImplicitAPI):
2045
2037
  # "msg": ""
2046
2038
  # }
2047
2039
  #
2048
- data = self.safe_value(response, 'data', [])
2040
+ data = self.safe_list(response, 'data', [])
2049
2041
  return self.parse_trades(data, market, since, limit)
2050
2042
 
2051
2043
  def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
@@ -2161,7 +2153,7 @@ class okx(Exchange, ImplicitAPI):
2161
2153
  # ]
2162
2154
  # }
2163
2155
  #
2164
- data = self.safe_value(response, 'data', [])
2156
+ data = self.safe_list(response, 'data', [])
2165
2157
  return self.parse_ohlcvs(data, market, timeframe, since, limit)
2166
2158
 
2167
2159
  def fetch_funding_rate_history(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
@@ -2802,7 +2794,7 @@ class okx(Exchange, ImplicitAPI):
2802
2794
  # "msg": "",
2803
2795
  # "outTime": "1697979038586493"
2804
2796
  # }
2805
- data = self.safe_value(response, 'data', [])
2797
+ data = self.safe_list(response, 'data', [])
2806
2798
  return self.parse_orders(data)
2807
2799
 
2808
2800
  def edit_order_request(self, id: str, symbol, type, side, amount=None, price=None, params={}):
@@ -2979,7 +2971,7 @@ class okx(Exchange, ImplicitAPI):
2979
2971
  response = self.privatePostTradeCancelOrder(self.extend(request, query))
2980
2972
  # {"code":"0","data":[{"clOrdId":"","ordId":"317251910906576896","sCode":"0","sMsg":""}],"msg":""}
2981
2973
  data = self.safe_value(response, 'data', [])
2982
- order = self.safe_value(data, 0)
2974
+ order = self.safe_dict(data, 0)
2983
2975
  return self.parse_order(order, market)
2984
2976
 
2985
2977
  def parse_ids(self, ids):
@@ -3079,7 +3071,7 @@ class okx(Exchange, ImplicitAPI):
3079
3071
  # "msg": ""
3080
3072
  # }
3081
3073
  #
3082
- ordersData = self.safe_value(response, 'data', [])
3074
+ ordersData = self.safe_list(response, 'data', [])
3083
3075
  return self.parse_orders(ordersData, market, None, None, params)
3084
3076
 
3085
3077
  def parse_order_status(self, status):
@@ -3433,7 +3425,7 @@ class okx(Exchange, ImplicitAPI):
3433
3425
  # }
3434
3426
  #
3435
3427
  data = self.safe_value(response, 'data', [])
3436
- order = self.safe_value(data, 0)
3428
+ order = self.safe_dict(data, 0)
3437
3429
  return self.parse_order(order, market)
3438
3430
 
3439
3431
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
@@ -3587,7 +3579,7 @@ class okx(Exchange, ImplicitAPI):
3587
3579
  # "msg": ""
3588
3580
  # }
3589
3581
  #
3590
- data = self.safe_value(response, 'data', [])
3582
+ data = self.safe_list(response, 'data', [])
3591
3583
  return self.parse_orders(data, market, since, limit)
3592
3584
 
3593
3585
  def fetch_canceled_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
@@ -3760,7 +3752,7 @@ class okx(Exchange, ImplicitAPI):
3760
3752
  # "msg": ""
3761
3753
  # }
3762
3754
  #
3763
- data = self.safe_value(response, 'data', [])
3755
+ data = self.safe_list(response, 'data', [])
3764
3756
  return self.parse_orders(data, market, since, limit)
3765
3757
 
3766
3758
  def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
@@ -3934,7 +3926,7 @@ class okx(Exchange, ImplicitAPI):
3934
3926
  # "msg": ""
3935
3927
  # }
3936
3928
  #
3937
- data = self.safe_value(response, 'data', [])
3929
+ data = self.safe_list(response, 'data', [])
3938
3930
  return self.parse_orders(data, market, since, limit)
3939
3931
 
3940
3932
  def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
@@ -4000,7 +3992,7 @@ class okx(Exchange, ImplicitAPI):
4000
3992
  # "msg": ""
4001
3993
  # }
4002
3994
  #
4003
- data = self.safe_value(response, 'data', [])
3995
+ data = self.safe_list(response, 'data', [])
4004
3996
  return self.parse_trades(data, market, since, limit, query)
4005
3997
 
4006
3998
  def fetch_order_trades(self, id: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
@@ -4450,7 +4442,7 @@ class okx(Exchange, ImplicitAPI):
4450
4442
  # }
4451
4443
  #
4452
4444
  data = self.safe_value(response, 'data', [])
4453
- transaction = self.safe_value(data, 0)
4445
+ transaction = self.safe_dict(data, 0)
4454
4446
  return self.parse_transaction(transaction, currency)
4455
4447
 
4456
4448
  def fetch_deposits(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
@@ -4525,7 +4517,7 @@ class okx(Exchange, ImplicitAPI):
4525
4517
  # ]
4526
4518
  # }
4527
4519
  #
4528
- data = self.safe_value(response, 'data', [])
4520
+ data = self.safe_list(response, 'data', [])
4529
4521
  return self.parse_transactions(data, currency, since, limit, params)
4530
4522
 
4531
4523
  def fetch_deposit(self, id: str, code: Str = None, params={}):
@@ -4547,7 +4539,7 @@ class okx(Exchange, ImplicitAPI):
4547
4539
  request['ccy'] = currency['id']
4548
4540
  response = self.privateGetAssetDepositHistory(self.extend(request, params))
4549
4541
  data = self.safe_value(response, 'data')
4550
- deposit = self.safe_value(data, 0, {})
4542
+ deposit = self.safe_dict(data, 0, {})
4551
4543
  return self.parse_transaction(deposit, currency)
4552
4544
 
4553
4545
  def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
@@ -4614,7 +4606,7 @@ class okx(Exchange, ImplicitAPI):
4614
4606
  # ]
4615
4607
  # }
4616
4608
  #
4617
- data = self.safe_value(response, 'data', [])
4609
+ data = self.safe_list(response, 'data', [])
4618
4610
  return self.parse_transactions(data, currency, since, limit, params)
4619
4611
 
4620
4612
  def fetch_withdrawal(self, id: str, code: Str = None, params={}):
@@ -4657,7 +4649,7 @@ class okx(Exchange, ImplicitAPI):
4657
4649
  # }
4658
4650
  #
4659
4651
  data = self.safe_value(response, 'data')
4660
- withdrawal = self.safe_value(data, 0, {})
4652
+ withdrawal = self.safe_dict(data, 0, {})
4661
4653
  return self.parse_transaction(withdrawal)
4662
4654
 
4663
4655
  def parse_transaction_status(self, status):
@@ -5241,7 +5233,7 @@ class okx(Exchange, ImplicitAPI):
5241
5233
  # }
5242
5234
  #
5243
5235
  data = self.safe_value(response, 'data', [])
5244
- rawTransfer = self.safe_value(data, 0, {})
5236
+ rawTransfer = self.safe_dict(data, 0, {})
5245
5237
  return self.parse_transfer(rawTransfer, currency)
5246
5238
 
5247
5239
  def parse_transfer(self, transfer, currency: Currency = None):
@@ -5354,7 +5346,7 @@ class okx(Exchange, ImplicitAPI):
5354
5346
  # }
5355
5347
  #
5356
5348
  data = self.safe_value(response, 'data', [])
5357
- transfer = self.safe_value(data, 0)
5349
+ transfer = self.safe_dict(data, 0)
5358
5350
  return self.parse_transfer(transfer)
5359
5351
 
5360
5352
  def fetch_transfers(self, code: Str = None, since: Int = None, limit: Int = None, params={}):
@@ -5412,7 +5404,7 @@ class okx(Exchange, ImplicitAPI):
5412
5404
  # "msg": ""
5413
5405
  # }
5414
5406
  #
5415
- transfers = self.safe_value(response, 'data', [])
5407
+ transfers = self.safe_list(response, 'data', [])
5416
5408
  return self.parse_transfers(transfers, currency, since, limit, params)
5417
5409
 
5418
5410
  def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
@@ -6383,7 +6375,7 @@ class okx(Exchange, ImplicitAPI):
6383
6375
  # "msg": ""
6384
6376
  # }
6385
6377
  #
6386
- data = self.safe_value(response, 'data', [])
6378
+ data = self.safe_list(response, 'data', [])
6387
6379
  return self.parse_open_interest(data[0], market)
6388
6380
 
6389
6381
  def fetch_open_interest_history(self, symbol: str, timeframe='1d', since: Int = None, limit: Int = None, params={}):
@@ -6445,7 +6437,7 @@ class okx(Exchange, ImplicitAPI):
6445
6437
  # "msg": ''
6446
6438
  # }
6447
6439
  #
6448
- data = self.safe_value(response, 'data', [])
6440
+ data = self.safe_list(response, 'data', [])
6449
6441
  return self.parse_open_interests(data, None, since, limit)
6450
6442
 
6451
6443
  def parse_open_interest(self, interest, market: Market = None):
@@ -6560,7 +6552,7 @@ class okx(Exchange, ImplicitAPI):
6560
6552
  # "msg": ""
6561
6553
  # }
6562
6554
  #
6563
- data = self.safe_value(response, 'data')
6555
+ data = self.safe_list(response, 'data')
6564
6556
  return self.parse_deposit_withdraw_fees(data, codes)
6565
6557
 
6566
6558
  def parse_deposit_withdraw_fees(self, response, codes=None, currencyIdKey=None):
@@ -6908,7 +6900,7 @@ class okx(Exchange, ImplicitAPI):
6908
6900
  # }
6909
6901
  #
6910
6902
  data = self.safe_value(response, 'data')
6911
- order = self.safe_value(data, 0)
6903
+ order = self.safe_dict(data, 0)
6912
6904
  return self.parse_order(order, market)
6913
6905
 
6914
6906
  def fetch_option(self, symbol: str, params={}) -> Option:
ccxt/onetrading.py CHANGED
@@ -1117,7 +1117,7 @@ class onetrading(Exchange, ImplicitAPI):
1117
1117
  # "cursor": "eyJhY2NvdW50X2lkIjp7InMiOiJlMzY5YWM4MC00NTc3LTExZTktYWUwOC05YmVkYzQ3OTBiODQiLCJzcyI6W10sIm5zIjpbXSwiYnMiOltdLCJtIjp7fSwibCI6W119LCJpdGVtX2tleSI6eyJzIjoiV0lUSERSQVdBTDo6MmFlMjYwY2ItOTk3MC00YmNiLTgxNmEtZGY4MDVmY2VhZTY1Iiwic3MiOltdLCJucyI6W10sImJzIjpbXSwibSI6e30sImwiOltdfSwiZ2xvYmFsX3dpdGhkcmF3YWxfaW5kZXhfaGFzaF9rZXkiOnsicyI6ImUzNjlhYzgwLTQ1NzctMTFlOS1hZTA4LTliZWRjNDc5MGI4NCIsInNzIjpbXSwibnMiOltdLCJicyI6W10sIm0iOnt9LCJsIjpbXX0sInRpbWVzdGFtcCI6eyJuIjoiMTU4ODA1ODc2Nzk0OCIsInNzIjpbXSwibnMiOltdLCJicyI6W10sIm0iOnt9LCJsIjpbXX19"
1118
1118
  # }
1119
1119
  #
1120
- depositHistory = self.safe_value(response, 'deposit_history', [])
1120
+ depositHistory = self.safe_list(response, 'deposit_history', [])
1121
1121
  return self.parse_transactions(depositHistory, currency, since, limit, {'type': 'deposit'})
1122
1122
 
1123
1123
  def fetch_withdrawals(self, code: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Transaction]:
@@ -1176,7 +1176,7 @@ class onetrading(Exchange, ImplicitAPI):
1176
1176
  # "max_page_size": 2
1177
1177
  # }
1178
1178
  #
1179
- withdrawalHistory = self.safe_value(response, 'withdrawal_history', [])
1179
+ withdrawalHistory = self.safe_list(response, 'withdrawal_history', [])
1180
1180
  return self.parse_transactions(withdrawalHistory, currency, since, limit, {'type': 'withdrawal'})
1181
1181
 
1182
1182
  def withdraw(self, code: str, amount: float, address, tag=None, params={}):
@@ -1737,7 +1737,7 @@ class onetrading(Exchange, ImplicitAPI):
1737
1737
  # "max_page_size": 100
1738
1738
  # }
1739
1739
  #
1740
- orderHistory = self.safe_value(response, 'order_history', [])
1740
+ orderHistory = self.safe_list(response, 'order_history', [])
1741
1741
  return self.parse_orders(orderHistory, market, since, limit)
1742
1742
 
1743
1743
  def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]:
@@ -1868,7 +1868,7 @@ class onetrading(Exchange, ImplicitAPI):
1868
1868
  # "cursor": "string"
1869
1869
  # }
1870
1870
  #
1871
- tradeHistory = self.safe_value(response, 'trade_history', [])
1871
+ tradeHistory = self.safe_list(response, 'trade_history', [])
1872
1872
  return self.parse_trades(tradeHistory, market, since, limit)
1873
1873
 
1874
1874
  def sign(self, path, api='public', method='GET', params={}, headers=None, body=None):
ccxt/p2b.py CHANGED
@@ -564,7 +564,7 @@ class p2b(Exchange, ImplicitAPI):
564
564
  # current_time: '1699255571.413828'
565
565
  # }
566
566
  #
567
- result = self.safe_value(response, 'result', [])
567
+ result = self.safe_list(response, 'result', [])
568
568
  return self.parse_trades(result, market, since, limit)
569
569
 
570
570
  def parse_trade(self, trade, market: Market = None):
@@ -676,7 +676,7 @@ class p2b(Exchange, ImplicitAPI):
676
676
  # current_time: '1699256375.030494'
677
677
  # }
678
678
  #
679
- result = self.safe_value(response, 'result', [])
679
+ result = self.safe_list(response, 'result', [])
680
680
  return self.parse_ohlcvs(result, market, timeframe, since, limit)
681
681
 
682
682
  def parse_ohlcv(self, ohlcv, market: Market = None) -> list:
@@ -805,7 +805,7 @@ class p2b(Exchange, ImplicitAPI):
805
805
  # }
806
806
  # }
807
807
  #
808
- result = self.safe_value(response, 'result')
808
+ result = self.safe_dict(response, 'result')
809
809
  return self.parse_order(result, market)
810
810
 
811
811
  def cancel_order(self, id: str, symbol: Str = None, params={}):
@@ -848,7 +848,7 @@ class p2b(Exchange, ImplicitAPI):
848
848
  # }
849
849
  # }
850
850
  #
851
- result = self.safe_value(response, 'result')
851
+ result = self.safe_dict(response, 'result')
852
852
  return self.parse_order(result)
853
853
 
854
854
  def fetch_open_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
@@ -899,7 +899,7 @@ class p2b(Exchange, ImplicitAPI):
899
899
  # ]
900
900
  # }
901
901
  #
902
- result = self.safe_value(response, 'result', [])
902
+ result = self.safe_list(response, 'result', [])
903
903
  return self.parse_orders(result, market, since, limit)
904
904
 
905
905
  def fetch_order_trades(self, id: str, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
@@ -948,7 +948,7 @@ class p2b(Exchange, ImplicitAPI):
948
948
  # }
949
949
  #
950
950
  result = self.safe_value(response, 'result', {})
951
- records = self.safe_value(result, 'records', [])
951
+ records = self.safe_list(result, 'records', [])
952
952
  return self.parse_trades(records, market, since, limit)
953
953
 
954
954
  def fetch_my_trades(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}):
@@ -1015,7 +1015,7 @@ class p2b(Exchange, ImplicitAPI):
1015
1015
  # }
1016
1016
  #
1017
1017
  result = self.safe_value(response, 'result', {})
1018
- deals = self.safe_value(result, 'deals', [])
1018
+ deals = self.safe_list(result, 'deals', [])
1019
1019
  return self.parse_trades(deals, market, since, limit)
1020
1020
 
1021
1021
  def fetch_closed_orders(self, symbol: Str = None, since: Int = None, limit: Int = None, params={}) -> List[Order]: