aboutsummaryrefslogtreecommitdiff
path: root/tests/builder/builder.test.py
AgeCommit message (Collapse)AuthorFilesLines
12 dayschore: enforce fully strict static typing across library, tests, and tooling ↵natsuoto1-8/+3
with zero suppressions
13 daysfeat!(compile): normalize char-class escaping to minimal correct form; add ↵natsuoto1-4/+4
equivalence corpus
2026-07-01feat!: to_regex() returns the Regex wrapper instead of raw re.Patternnatsuoto1-1/+1
2026-07-01feat: convenience char classes .letter() .uppercase() .lowercase() ↵natsuoto1-0/+24
.alphanumeric()
2026-07-01feat: .at_most(n) quantifier closes the symmetry gap with ↵natsuoto1-0/+6
at_least/exactly/between
2026-06-26chore!: package reorg, toolchain migration to uv+ruff+pytest+hatchling, ↵natsuoto1-0/+554
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]>