Merge pull request #2717 from freqtrade/markets_info_nodict
Check if markets.info is a dict before using it
This commit is contained in:
commit
56fd714de2
@ -278,7 +278,15 @@ class Exchange:
|
|||||||
raise OperationalException(
|
raise OperationalException(
|
||||||
f'Pair {pair} is not available on {self.name}. '
|
f'Pair {pair} is not available on {self.name}. '
|
||||||
f'Please remove {pair} from your whitelist.')
|
f'Please remove {pair} from your whitelist.')
|
||||||
elif self.markets[pair].get('info', {}).get('IsRestricted', False):
|
|
||||||
|
# From ccxt Documentation:
|
||||||
|
# markets.info: An associative array of non-common market properties,
|
||||||
|
# including fees, rates, limits and other general market information.
|
||||||
|
# The internal info array is different for each particular market,
|
||||||
|
# its contents depend on the exchange.
|
||||||
|
# It can also be a string or similar ... so we need to verify that first.
|
||||||
|
elif (isinstance(self.markets[pair].get('info', None), dict)
|
||||||
|
and self.markets[pair].get('info', {}).get('IsRestricted', False)):
|
||||||
# Warn users about restricted pairs in whitelist.
|
# Warn users about restricted pairs in whitelist.
|
||||||
# We cannot determine reliably if Users are affected.
|
# We cannot determine reliably if Users are affected.
|
||||||
logger.warning(f"Pair {pair} is restricted for some users on this exchange."
|
logger.warning(f"Pair {pair} is restricted for some users on this exchange."
|
||||||
|
@ -363,8 +363,9 @@ def test_validate_pairs_exception(default_conf, mocker, caplog):
|
|||||||
def test_validate_pairs_restricted(default_conf, mocker, caplog):
|
def test_validate_pairs_restricted(default_conf, mocker, caplog):
|
||||||
api_mock = MagicMock()
|
api_mock = MagicMock()
|
||||||
type(api_mock).markets = PropertyMock(return_value={
|
type(api_mock).markets = PropertyMock(return_value={
|
||||||
'ETH/BTC': {}, 'LTC/BTC': {}, 'NEO/BTC': {},
|
'ETH/BTC': {}, 'LTC/BTC': {},
|
||||||
'XRP/BTC': {'info': {'IsRestricted': True}}
|
'XRP/BTC': {'info': {'IsRestricted': True}},
|
||||||
|
'NEO/BTC': {'info': 'TestString'}, # info can also be a string ...
|
||||||
})
|
})
|
||||||
mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock))
|
mocker.patch('freqtrade.exchange.Exchange._init_ccxt', MagicMock(return_value=api_mock))
|
||||||
mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock())
|
mocker.patch('freqtrade.exchange.Exchange.validate_timeframes', MagicMock())
|
||||||
|
Loading…
Reference in New Issue
Block a user