Skip to content

Commit eb6d29a

Browse files
authored
chore(release): v0.1.0 (#16)
First public release. Stamps src/yarlpattern/_version.py to 0.1.0 and adds a corresponding entry to CHANGELOG.md. Release notes summarize the public surface (100% conformance, component-wise matching, path-to-regexp-derived syntax, pluggable regex engine, yarl-shaped ergonomics), the implementation posture (pure Python, Sigstore-signed PEP 740 attestations with SLSA predicates), and the docs site at chad-loder.github.io/yarlpattern. PSR was used to compute the next version (0.1.0, from the 'feat: Initial commit' on a 0.x base with major_on_zero=false) and stamp _version.py. The CHANGELOG.md entry was written by hand because our PSR config doesn't carry the mode='update' setting pyhaul uses to drive automatic changelog updates — added by hand here, can be hooked up to PSR in a follow-up. Co-authored-by: chad-loder <26261238+chad-loder@users.noreply.github.com>
1 parent 63e3a50 commit eb6d29a

2 files changed

Lines changed: 47 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,50 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8+
## [0.1.0](https://github.com/chad-loder/yarlpattern/releases/tag/v0.1.0) — 2026-05-12
9+
10+
First public release. WHATWG URLPattern for Python, with **100% conformance**
11+
to the upstream [WPT urlpattern corpus](https://github.com/web-platform-tests/wpt/tree/master/urlpattern)
12+
— 469 / 469 cases passing across all five test suites (the same files
13+
Chromium, Safari, and Firefox validate against).
14+
15+
### Highlights
16+
17+
- **Component-wise matching across all eight URL components** — protocol,
18+
username, password, hostname, port, pathname, search, hash. Patterns can
19+
constrain any combination.
20+
- **Path-to-regexp-derived syntax** (`:name`, `:name(regex)`, `*`,
21+
`{group}?`) — the same grammar Express.js, koa.js, and React Router users
22+
already know.
23+
- **Pluggable regex engine** — stdlib `re` is the default (99.5%
24+
conformance). `pip install 'yarlpattern[regex]'` activates Matthew
25+
Barnett's [`regex`](https://pypi.org/project/regex/) package and closes
26+
the last 2 of 366 data-corpus cases (the JS `v`-flag character-class
27+
set-operation patterns).
28+
- **yarl-shaped ergonomics**`URLPattern.test()` / `URLPattern.exec()`
29+
accept a `yarl.URL` directly (no `str()` round-trip), per-component
30+
`with_*` derivers, component names matching the WHATWG spec /
31+
browser-side JS `URL` interface.
32+
33+
### Implementation
34+
35+
- Pure Python, no compiled wheels. One required runtime dep: `yarl>=1.20`.
36+
- Sigstore-signed [PEP 740 attestations](https://peps.python.org/pep-0740/)
37+
with SLSA build-provenance predicates, generated and verified by
38+
[`hynek/build-and-inspect-python-package`](https://github.com/hynek/build-and-inspect-python-package)
39+
in CI.
40+
- Tested against Python 3.12, 3.13, 3.14 on Linux / macOS / Windows.
41+
42+
### Documentation
43+
44+
- Full docs site at <https://chad-loder.github.io/yarlpattern> covering
45+
the spec lineage, 11 worked examples ("route a multi-tenant API by
46+
subdomain", "match the KServe `/v2/models` inference path", "replace
47+
MCP resource URI templates", …), the API reference, comparisons with
48+
`aiohttp.web.UrlDispatcher` and `yarl`, and the architecture
49+
explanation.
50+
- Auto-regenerated [WPT Conformance report](https://chad-loder.github.io/yarlpattern/wpt-compliance/)
51+
pins the corpus SHA so the 469 / 469 number is reproducible at any
52+
future date.
53+
854
<!-- python-semantic-release stamps releases above this line -->

src/yarlpattern/_version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@
44
``[tool.semantic_release.version_variables]`` in ``pyproject.toml``.
55
"""
66

7-
__version__ = "0.0.1"
7+
__version__ = "0.1.0"

0 commit comments

Comments
 (0)