All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Add a new configuration setting for rule execution:
rule_activation_mode(#38).
- Compatibility with Python 3.13.
- Use true Pydantic V2 (or Pydantic V1) models (
DeprecationWarningadded about Pydantic V1).
Important
Arta + Pydantic V1 + Python 3.13 is not supported because Pydantic V1 is not supported for Python > 3.12 (issue 9663).
- New pages:
- Use your business objects
- Rule activation mode
- Because of using
StringConstraints(w/ Pydantic V2) rather thanconstr(), we can't use plainYESorNO(YAML booleans) as rule ids anymore. Use"YES"or"NO"instead in your YAML file.
- Simple condition: an error occurs (#31) when the field is of type
camelCaseorPascalCase(e.g.,input.streetNumber,input.StreetNumber).
- Fixes of code in the A Simple Example page.
- Add a new parameter
config_dictin theRulesEngine's constructor. It can be used when you have already loaded the YAML configuration in a dictionary and want to use it straightforward. - Add a new parameter
ignored_rulesin theapply_rules()method. It can be used to easily disable a rule by its id. - Split a rule set in two (or more) files (keep the rules organized by their file names [alphabetically sorted]).
- Simple condition: an error occurs when the right operand is a uppercase string (e.g.,
input.text=="LABEL").
- Function
sanitize_regex()is converted to an instance methodget_sanitized_id()ofBaseConditionclass.
- Configure your rules in a YAML file or use a straightforward python dictionary.
- Use "standard conditions" (YAML defined conditions) for flexibility.
- Use "simple conditions" (one-liner conditions) for simplicity (beta feature).
- Use math expressions in "simple conditions" (#25).
- Implement your own "custom conditions" (python classes) for adaptability.
- Define your own parameter's parsing strategy (raise, ignore, default value).
- Use many rule sets as you need.
- You can now use whitespaces in a string within a simple condition (e.g.,
input.text=="super hero") (#23).
Beta release
- Configure your rules in a YAML file or use a straightforward python dictionary.
- Use "standard conditions" (YAML defined conditions) for flexibility.
- Use "simple conditions" (one-liner conditions) for simplicity (beta feature).
- Implement your own "custom conditions" (python classes) for adaptability.
- Define your own parameter's parsing strategy (raise, ignore, default value).
- Use many rule sets as you need.