arta
arta copied to clipboard
Add a decorator for registering action and condition functions, custom condition classes
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:
...