aboutsummaryrefslogtreecommitdiff
path: root/tests/builder
AgeCommit message (Collapse)AuthorFilesLines
12 dayschore: enforce fully strict static typing across library, tests, and tooling ↵natsuoto10-87/+60
with zero suppressions
13 dayschore: codebase-wide rule audit — eliminate Any/object where non-protocol, ↵natsuoto7-95/+84
hoist in-function imports, rename compound/folder-repeat files, replace generic-exception raises, bind chained comprehensions, strip __init__ docstrings, remove pragmas
13 dayschore(bench): tests/bench scaffolding + case suite + cold/warm ratio gate + ↵natsuoto1-0/+69
advisory CI job + workflow_dispatch baseline + codecov PR comments
13 daysfeat!(compile): normalize char-class escaping to minimal correct form; add ↵natsuoto1-4/+4
equivalence corpus
13 daystest: pin char-class insertion-order and to_regex_string() == ↵natsuoto1-0/+27
to_regex().pattern invariants
13 daysfeat(builder): RegexBuilder.from_regex reverse parser for the common ↵natsuoto1-0/+113
construct set
13 daysfeat(builder): first-class .assert_matches and .assert_rejects helpers for ↵natsuoto1-0/+71
pattern authors
13 daysfeat!(builder): close the match-verb surface at ↵natsuoto2-33/+9
test/match/search/findall/sub; reach fullmatch/finditer/subn/split via .to_regex()
13 daysfeat(builder): per-instance lazy compile cache shared across to_regex and ↵natsuoto1-0/+63
the matcher methods
13 daysfeat(engine): pass-through timeout= kwarg on every match method under ↵natsuoto1-0/+109
engine=regex
13 daysfeat(engine): unlock variable-width lookbehind under engine=regex; annotate ↵natsuoto1-0/+59
the re-engine failure with an actionable error
13 daysfeat(engine): route to_regex(engine=re|regex) through a backend layer; regex ↵natsuoto2-4/+83
is a deferred-import extra
13 daysrefactor(typing): make edify pass mypy --strict and pyright --strict end to endnatsuoto1-9/+0
14 daysfeat(builder): typed engine=Literal kwarg on to_regex with EngineNotWiredErrornatsuoto1-0/+19
2026-07-11refactor: eliminate suppression comments and internal-import tests, delete ↵natsuoto5-125/+11
now-dead defensive code
2026-07-10test: cover diagnose fallback branches and caller-context position fallbacksnatsuoto1-0/+105
2026-07-10chore: apply ruff lint and format fixesnatsuoto1-1/+5
2026-07-10test(builder): extend Hypothesis property test to cover groups, captures, ↵natsuoto1-29/+182
subexpressions (#111)
2026-07-10feat(builder): lazy Regex compile cache and __eq__/__hash__ diagnose ↵natsuoto2-0/+156
unfinished builders (#127, #137)
2026-07-01fix(ci): skip debug=True regression test on PyPy (upstream IndexError bug)natsuoto1-0/+9
2026-07-01fix(ci): reorder edify re-exports; drop pypy-fragile capsys check on debug=Truenatsuoto1-4/+3
2026-07-01feat: terminal flag kwargs on .to_regex(ignore_case=..., multiline=..., ↵natsuoto1-0/+64
dotall=...)
2026-07-01feat!: to_regex() returns the Regex wrapper instead of raw re.Patternnatsuoto2-2/+2
2026-07-01test: Hypothesis property assertion — no chain silently drops a quantifiernatsuoto1-0/+73
2026-07-01test: cover the __repr__ fallback for BuilderCore subclasses without ↵natsuoto1-0/+9
TerminalsMixin
2026-07-01feat: .fork() and .copy() explicit aliases for branch constructionnatsuoto2-1/+48
2026-07-01feat!: __eq__ and __hash__ value equality on the buildernatsuoto1-0/+50
2026-07-01feat: __repr__ shows the pattern-so-far on the buildernatsuoto1-0/+31
2026-07-01feat: convenience char classes .letter() .uppercase() .lowercase() ↵natsuoto1-0/+24
.alphanumeric()
2026-07-01feat: varargs .one_of() and .any_of(*literals) chain-level shorthandnatsuoto1-0/+72
2026-07-01feat: .at_most(n) quantifier closes the symmetry gap with ↵natsuoto2-0/+11
at_least/exactly/between
2026-07-01feat: .test() boolean shortcut on Pattern and RegexBuildernatsuoto1-0/+33
2026-07-01feat: humre-style functional API — operators, constants, factories, matchernatsuoto2-0/+116
2026-07-01feat: add Pattern class and .use() composition (closes #125, #126)natsuoto1-0/+30
2026-06-26chore!: package reorg, toolchain migration to uv+ruff+pytest+hatchling, ↵natsuoto7-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]>