feat: ensure spaces are valid identifiers

This commit is contained in:
Matthias
2025-11-05 21:05:15 +01:00
parent 68dea691c2
commit 1328df772b
2 changed files with 19 additions and 0 deletions

View File

@@ -192,6 +192,10 @@ def detect_all_parameters(
raise OperationalException(
f"Conflicting parameter space for {attr_name}: {auto_category} vs {attr.category}."
)
if attr.category in ("all", "default") or attr.category.isidentifier() is False:
raise OperationalException(
f"'{attr.category}' is not a valid space. Parameter: {attr_name}."
)
attr.name = attr_name
result[attr.category][attr_name] = attr
return result

View File

@@ -952,6 +952,7 @@ def test_auto_hyperopt_interface(default_conf):
with pytest.raises(OperationalException, match=r"Conflicting parameter space.*"):
detect_all_parameters(strategy.__class__)
del strategy.__class__.sell_rsi
strategy.__class__.exit22_rsi = IntParameter([0, 10], default=5)
@@ -960,6 +961,20 @@ def test_auto_hyperopt_interface(default_conf):
):
detect_all_parameters(strategy.__class__)
# Invalid parameter space
strategy.__class__.exit22_rsi = IntParameter([0, 10], default=5, space="all")
with pytest.raises(
OperationalException, match=r"'all' is not a valid space\. Parameter: exit22_rsi\."
):
detect_all_parameters(strategy.__class__)
strategy.__class__.exit22_rsi = IntParameter([0, 10], default=5, space="hello:world:22")
with pytest.raises(
OperationalException,
match=r"'hello:world:22' is not a valid space\. Parameter: exit22_rsi\.",
):
detect_all_parameters(strategy.__class__)
def test_auto_hyperopt_interface_loadparams(default_conf, mocker, caplog):
default_conf.update({"strategy": "HyperoptableStrategy"})