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 (
DeprecationWarning
added 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 plainYES
orNO
(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
camelCase
orPascalCase
(e.g.,input.streetNumber
,input.StreetNumber
).
- Fixes of code in the A Simple Example page.
- Add a new parameter
config_dict
in 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_rules
in 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()
ofBaseCondition
class.
- 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.