| Age | Commit message (Collapse) | Author | Files | Lines | |
|---|---|---|---|---|---|
| 12 days | chore: enforce fully strict static typing across library, tests, and tooling ↵ | natsuoto | 10 | -87/+60 | |
| with zero suppressions | |||||
| 13 days | chore: codebase-wide rule audit — eliminate Any/object where non-protocol, ↵ | natsuoto | 7 | -95/+84 | |
| hoist in-function imports, rename compound/folder-repeat files, replace generic-exception raises, bind chained comprehensions, strip __init__ docstrings, remove pragmas | |||||
| 13 days | chore(bench): tests/bench scaffolding + case suite + cold/warm ratio gate + ↵ | natsuoto | 1 | -0/+69 | |
| advisory CI job + workflow_dispatch baseline + codecov PR comments | |||||
| 13 days | feat!(compile): normalize char-class escaping to minimal correct form; add ↵ | natsuoto | 1 | -4/+4 | |
| equivalence corpus | |||||
| 13 days | test: pin char-class insertion-order and to_regex_string() == ↵ | natsuoto | 1 | -0/+27 | |
| to_regex().pattern invariants | |||||
| 13 days | feat(builder): RegexBuilder.from_regex reverse parser for the common ↵ | natsuoto | 1 | -0/+113 | |
| construct set | |||||
| 13 days | feat(builder): first-class .assert_matches and .assert_rejects helpers for ↵ | natsuoto | 1 | -0/+71 | |
| pattern authors | |||||
| 13 days | feat!(builder): close the match-verb surface at ↵ | natsuoto | 2 | -33/+9 | |
| test/match/search/findall/sub; reach fullmatch/finditer/subn/split via .to_regex() | |||||
| 13 days | feat(builder): per-instance lazy compile cache shared across to_regex and ↵ | natsuoto | 1 | -0/+63 | |
| the matcher methods | |||||
| 13 days | feat(engine): pass-through timeout= kwarg on every match method under ↵ | natsuoto | 1 | -0/+109 | |
| engine=regex | |||||
| 13 days | feat(engine): unlock variable-width lookbehind under engine=regex; annotate ↵ | natsuoto | 1 | -0/+59 | |
| the re-engine failure with an actionable error | |||||
| 13 days | feat(engine): route to_regex(engine=re|regex) through a backend layer; regex ↵ | natsuoto | 2 | -4/+83 | |
| is a deferred-import extra | |||||
| 13 days | refactor(typing): make edify pass mypy --strict and pyright --strict end to end | natsuoto | 1 | -9/+0 | |
| 14 days | feat(builder): typed engine=Literal kwarg on to_regex with EngineNotWiredError | natsuoto | 1 | -0/+19 | |
| 2026-07-11 | refactor: eliminate suppression comments and internal-import tests, delete ↵ | natsuoto | 5 | -125/+11 | |
| now-dead defensive code | |||||
| 2026-07-10 | test: cover diagnose fallback branches and caller-context position fallbacks | natsuoto | 1 | -0/+105 | |
| 2026-07-10 | chore: apply ruff lint and format fixes | natsuoto | 1 | -1/+5 | |
| 2026-07-10 | test(builder): extend Hypothesis property test to cover groups, captures, ↵ | natsuoto | 1 | -29/+182 | |
| subexpressions (#111) | |||||
| 2026-07-10 | feat(builder): lazy Regex compile cache and __eq__/__hash__ diagnose ↵ | natsuoto | 2 | -0/+156 | |
| unfinished builders (#127, #137) | |||||
| 2026-07-01 | fix(ci): skip debug=True regression test on PyPy (upstream IndexError bug) | natsuoto | 1 | -0/+9 | |
| 2026-07-01 | fix(ci): reorder edify re-exports; drop pypy-fragile capsys check on debug=True | natsuoto | 1 | -4/+3 | |
| 2026-07-01 | feat: terminal flag kwargs on .to_regex(ignore_case=..., multiline=..., ↵ | natsuoto | 1 | -0/+64 | |
| dotall=...) | |||||
| 2026-07-01 | feat!: to_regex() returns the Regex wrapper instead of raw re.Pattern | natsuoto | 2 | -2/+2 | |
| 2026-07-01 | test: Hypothesis property assertion — no chain silently drops a quantifier | natsuoto | 1 | -0/+73 | |
| 2026-07-01 | test: cover the __repr__ fallback for BuilderCore subclasses without ↵ | natsuoto | 1 | -0/+9 | |
| TerminalsMixin | |||||
| 2026-07-01 | feat: .fork() and .copy() explicit aliases for branch construction | natsuoto | 2 | -1/+48 | |
| 2026-07-01 | feat!: __eq__ and __hash__ value equality on the builder | natsuoto | 1 | -0/+50 | |
| 2026-07-01 | feat: __repr__ shows the pattern-so-far on the builder | natsuoto | 1 | -0/+31 | |
| 2026-07-01 | feat: convenience char classes .letter() .uppercase() .lowercase() ↵ | natsuoto | 1 | -0/+24 | |
| .alphanumeric() | |||||
| 2026-07-01 | feat: varargs .one_of() and .any_of(*literals) chain-level shorthand | natsuoto | 1 | -0/+72 | |
| 2026-07-01 | feat: .at_most(n) quantifier closes the symmetry gap with ↵ | natsuoto | 2 | -0/+11 | |
| at_least/exactly/between | |||||
| 2026-07-01 | feat: .test() boolean shortcut on Pattern and RegexBuilder | natsuoto | 1 | -0/+33 | |
| 2026-07-01 | feat: humre-style functional API — operators, constants, factories, matcher | natsuoto | 2 | -0/+116 | |
| 2026-07-01 | feat: add Pattern class and .use() composition (closes #125, #126) | natsuoto | 1 | -0/+30 | |
| 2026-06-26 | chore!: package reorg, toolchain migration to uv+ruff+pytest+hatchling, ↵ | natsuoto | 7 | -0/+924 | |
| Python 3.11 floor Drops the `src/` layout. The package lives at `edify/` at repo root, split into single-purpose subpackages: `builder/` (mixins composing RegexBuilder), `elements/` (sealed dataclass AST), `compile/` (per-family render functions plus dispatch), `validate/`, `errors/` (typed exception hierarchy), and `library/` (per-validator files in family folders). Pattern, serialize, and result subpackages ship as skeletons. Replaces tox / virtualenv / flake8+isort+black / setup.py+setup.cfg / pytest.ini / .coveragerc / .bumpversion.cfg / MANIFEST.in / ci/ / tests.local.sh with a unified uv + ruff + pytest + hatchling + hatch-vcs stack driven entirely from pyproject.toml. CI workflow rewritten to `uv sync --frozen` + `uv run pytest` per matrix entry; required-status- check names preserved for `check`, `docs`, `py3X (ubuntu)`, and `pypy311 (ubuntu)`. `py39` / `py310` / `pypy310` dropped (3.11 floor). Pre-commit replaced with ruff hooks (lint + format), all hook repos SHA-pinned to commit SHAs. Tests reorganised under `tests/builder/` and `tests/library/<family>/` with the `*.test.py` naming shape. 173 tests pass, 100% line coverage. Behaviour changes versus 0.3 (each will get a documented upgrade-guide entry once #80 lands): - `to_regex_string()` returns the bare pattern (no `/.../` wrap) - `to_regex()` on `named_back_reference` compiles successfully via `(?P=name)` instead of raising - builder errors raise typed `EdifyError` subclasses instead of bare `Exception` (catch via `except EdifyError`) - internal helpers (`apply_quantifier`, `frame_creating_element`, `evaluate`, `state`, etc.) removed outright per the 0.3 → 1.0 stub-free policy Closes #68 Closes #69 Closes #253 Co-Authored-By: Claude Opus 4.7 <[email protected]> | |||||
