Fail in case of name and explicit space name collisions

This commit is contained in:
Matthias 2021-04-05 10:53:00 +02:00
parent 30e5e92968
commit dc406fe19f
3 changed files with 9 additions and 2 deletions

View File

@ -244,6 +244,10 @@ class HyperStrategyMixin(object):
if not attr_name.startswith('__'): # Ignore internals, not strictly necessary.
attr = getattr(self, attr_name)
if issubclass(attr.__class__, BaseParameter):
if (category and attr_name.startswith(category + '_')
and attr.category is not None and attr.category != category):
raise OperationalException(
f'Inconclusive parameter name {attr_name}, category: {attr.category}.')
if (category is None or category == attr.category or
(attr_name.startswith(category + '_') and attr.category is None)):
yield attr_name, attr

View File

@ -1093,8 +1093,6 @@ def test_print_epoch_details(capsys):
def test_in_strategy_auto_hyperopt(mocker, hyperopt_conf, tmpdir) -> None:
# mocker.patch('freqtrade.optimize.hyperopt.dump', MagicMock())
# mocker.patch('freqtrade.optimize.hyperopt.file_dump_json')
(Path(tmpdir) / 'hyperopt_results').mkdir(parents=True)
# No hyperopt needed
del hyperopt_conf['hyperopt']

View File

@ -617,3 +617,8 @@ def test_auto_hyperopt_interface(default_conf):
# Parameter is disabled - so value from sell_param dict will NOT be used.
assert strategy.sell_minusdi.value == 0.5
strategy.sell_rsi = IntParameter([0, 10], default=5, space='buy')
with pytest.raises(OperationalException, match=r"Inconclusive parameter.*"):
[x for x in strategy.enumerate_parameters('sell')]