arta icon indicating copy to clipboard operation
arta copied to clipboard

Add a decorator for registering action and condition functions, custom condition classes

Open develop-cs opened this issue 1 month ago • 2 comments

Is your feature request related to a problem? Please describe

No, it is only an enhancement.

Describe the solution you'd like

As an alternative of using this kind of configuration (YAML):

conditions_source_modules:
  - "example.conditions"
actions_source_modules:
  - "example.actions"

custom_classes_source_modules:
  - "example.custom_class"
condition_factory_mapping:
  custom_condition: "MyCustomCondition"

Use a registry pattern (e.g., using a decorator). It could be something like:

from arta import register

@register("action")
def do_something() -> None:
    print("Printing something")

@register("condition")
def is_something(thing: str, things: list[str]) -> bool:
    return thing in things

@register("condition", "custom_condition")
class MyCustomCondition(BaseCondition):

    def verify(self, input_data: dict[str, Any], parsing_error_strategy: ParsingErrorStrategy, **kwargs: Any) -> bool:
        ...

develop-cs avatar Nov 10 '25 14:11 develop-cs