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 3 months 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

Should we add an extra argument in case you want the action/validation_function name to differ from the yml file name ?

HugoPerrier avatar Nov 10 '25 15:11 HugoPerrier

Good idea 👍

develop-cs avatar Nov 20 '25 08:11 develop-cs