feat: improve Auto-space detection logic

This commit is contained in:
Matthias
2025-11-04 06:54:42 +01:00
parent ab28e43050
commit c091426c44
2 changed files with 22 additions and 13 deletions

View File

@@ -174,21 +174,23 @@ def detect_all_parameters(
attr = getattr(obj, attr_name)
if not issubclass(attr.__class__, BaseParameter):
continue
category = attr.category
if attr.category is None:
# Category auto detection
for category in auto_categories:
if category == attr.category or (
attr_name.startswith(category + "_") and attr.category is None
):
attr.category = category
if attr.category is None or (
attr_name.startswith(category + "_")
auto_category: str | None = None
# Category auto detection
for category in auto_categories:
if attr_name.startswith(category + "_"):
auto_category = category
break
if auto_category is None and attr.category is None:
raise OperationalException(f"Cannot determine parameter space for {attr_name}.")
if auto_category is not None and attr.category is None:
attr.category = auto_category
if (
auto_category is not None
and attr.category is not None
and attr.category != category
and auto_category != attr.category
):
raise OperationalException(
f"Inconclusive parameter name {attr_name}, space: {attr.category}."
f"Conflicting parameter space for {attr_name}: {auto_category} vs {attr.category}."
)
attr.name = attr_name
result[attr.category][attr_name] = attr