Skip to content

Releases: joaofreires/boolia

0.1.3

15 Oct 04:24
d56b36a

Choose a tag to compare

What's Changed

Full Changelog: 0.1.2...0.1.3

0.1.2

13 Oct 03:06

Choose a tag to compare

Features

  • Added an OperatorRegistry with bundled DEFAULT_OPERATORS enabling project-specific infix operators (word- or symbol-based) without modifying boolia internals.
  • Updated the lexer, Pratt parser, and AST to source operator metadata from the registry, automatically handling precedence, tokenization, and evaluation.
  • Expanded the public API evaluate, compile_expr, compile_rule and Rule to accept custom operator registries and persist them through compiled rules.
  • Re-exported OperatorRegistry and DEFAULT_OPERATORS via the top-level package for immediate user access.
  • Documented the workflow and sample code for registering a custom xor operator in the README.

✅ Quality

  • Added test_operators.py covering keyword and symbol operators plus rule compilation with custom registries.

Settings Update

13 Oct 02:26

Choose a tag to compare

Configuration and CI/tests updates.

0.1.0

13 Oct 01:52

Choose a tag to compare

boolia 0.1.0

Highlights

✨ Boolean expression engine — Parse concise logic with and / or / not, comparisons, membership checks, literals, and dotted identifiers that resolve safely against plain Python dicts.
🏷️ Tag-aware evaluation — Treat bare identifiers as flags backed by a tag set, with configurable behavior when values are missing (raise, none, false, or a custom default).
🧩 Reusable rule books — Name expressions, reuse them later, and feed everything through a consistent evaluation API that accepts context, tags, and custom resolvers.
🎛️ Rule groups — Compose existing rules with RuleGroup, choosing all or any semantics, nesting as needed, and getting cycle detection out of the box.
🧰 Extensible functions — Register safe callables (e.g., starts_with, matches) and invoke them directly inside expressions.
✅ Confidence via tests — New pytest coverage exercises rule evaluation, function integration, missing-value policies, and the fresh grouping logic.