From 1130356aa24bcce7cecf630e0456d2315a652533 Mon Sep 17 00:00:00 2001 From: Martin Lehmann Date: Thu, 19 Sep 2024 15:05:38 +0200 Subject: [PATCH 1/2] fix(validation): Fix type hints for `@rule` decorator --- capellambse/extensions/validation/_validate.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/capellambse/extensions/validation/_validate.py b/capellambse/extensions/validation/_validate.py index 6175f4b7..07827e9d 100644 --- a/capellambse/extensions/validation/_validate.py +++ b/capellambse/extensions/validation/_validate.py @@ -317,11 +317,11 @@ def rule( action: str, types: ( str - | VirtualType[_T] - | type[_T] - | cabc.Iterable[str | VirtualType[_T] | type[_T]] + | VirtualType[m.ModelElement] + | type[m.ModelElement] + | cabc.Iterable[str | VirtualType[m.ModelElement] | type[m.ModelElement]] ), -) -> cabc.Callable[[cabc.Callable[[_T], bool]], Rule]: +) -> cabc.Callable[[cabc.Callable[[m.ModelElement], bool]], Rule]: """Create a validation rule. This decorator registers the validator function as a modelling rule. @@ -372,7 +372,7 @@ def rule( else: type_names.append(i.__name__) - def rule_decorator(validator: cabc.Callable[[_T], bool], /) -> Rule: + def rule_decorator(validator: cabc.Callable[[m.ModelElement], bool], /) -> Rule: rule_ = Rule( id, name, From 4aa30f4a8500d0ce8258e409df06d570ccd39ef4 Mon Sep 17 00:00:00 2001 From: Martin Lehmann Date: Thu, 19 Sep 2024 15:05:38 +0200 Subject: [PATCH 2/2] feat(validation): Show Capability as "SystemCapability" Analogous to the OperationCapability for OA, make it clear in the report that Capability refers to those on the SA layer. --- capellambse/extensions/validation/report-template.html.jinja | 2 +- capellambse/extensions/validation/rules.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/capellambse/extensions/validation/report-template.html.jinja b/capellambse/extensions/validation/report-template.html.jinja index 63ebfc7d..3a8e11e6 100644 --- a/capellambse/extensions/validation/report-template.html.jinja +++ b/capellambse/extensions/validation/report-template.html.jinja @@ -5,7 +5,7 @@ {% set CATEGORIES = ["REQUIRED", "RECOMMENDED", "SUGGESTED"] -%} {% set object_types = [ - "Capability", + "SystemCapability", "SystemActor", "SystemComponent", "SystemFunction", diff --git a/capellambse/extensions/validation/rules.py b/capellambse/extensions/validation/rules.py index a7ac5219..79ef89b1 100644 --- a/capellambse/extensions/validation/rules.py +++ b/capellambse/extensions/validation/rules.py @@ -9,6 +9,11 @@ from ._validate import rule, virtual_type +@virtual_type(mm.sa.Capability) +def SystemCapability(_: mm.sa.Capability) -> bool: + return True + + @virtual_type(mm.sa.SystemComponent) def SystemActor(cmp: mm.sa.SystemComponent) -> bool: return cmp.is_actor