Yarl is a Python 3 URL helper library that provides a handy URL class for parsing and changing URLs. It exposes URL parts like scheme, host, path, and query, and returns new URL objects for manipulations, with automatic encoding and canonical representation. It is useful in projects such as aiohttp where you need consistent URL parsing and construction.
Project status
- Actively maintained: Recent activity shows multiple updates in a short window (v1.24.0, v1.24.1, v1.24.2 all dated 2026-05-19), indicating the project is still actively worked on.
- Apparent update cadence: Updates are not strictly monthly, but the timeline suggests an evolving cadence, with v1.23.0 (2026-03-01) followed by v1.24.0 to v1.24.2 (2026-05-19).
AI summary generated 1 week ago
Recent updates
v1.24.2
2 weeks agov1.24.2 includes contributor-facing CI changes to the wheel build pipeline. It switches aarch64 and armv7l wheel builds to GitHub-hosted ARM runners and restores per-runner native architectures in the Windows wheel matrix for tag builds.
v1.24.1
2 weeks agoRelease v1.24.1 updates the CI/CD workflow to make deploy retries more reliable after partial failures. Specifically, it avoids failing when the GitHub Release already exists and allows PyPI publishing to skip artifacts that were uploaded during a prior attempt.
v1.24.0
2 weeks agoRelease 1.24.0 focuses on stricter RFC 3986 compliant URL parsing and several robustness fixes around URL percent-encoding and pickling. It also removes support for the experimental free-threaded Python 3.13 build, and includes extensive CI and contributor-tooling updates (tox reuse workflow, uv-based installs, ruff pre-commit integration).
BreakingFeaturesv1.23.0
3 months agoRelease v1.23.0 advertises pydantic model field support for yarl.URL and multiple packaging/CI improvements, including in-tree build backend customization and dropping Python 3.9. However, the provided diff mostly shows documentation and CI workflow/config changes, not the library or build-backend implementation changes themselves. Several CI and coverage-related behaviors were modified that are not described in the release notes.
BreakingFeaturesv1.20.1
7 months agoThis patch release (v1.20.1) focuses on bug fixes around corrupted IPv6 URL inputs, converting previously leaking internal errors into a proper ValueError. It also updates the build tooling by standardizing on Cython 3.1 and makes Cython line tracing opt-in to avoid slow builds and wheel performance regressions for some users.
v1.22.0
7 months agoRelease v1.22.0 primarily adds support for building arm64 Windows wheels. The code changes also include a version bump to 1.22.0 and CI configuration updates to include Windows ARM builds.
Featuresv1.21.0
8 months agoRelease 1.21.0 primarily refactors the wheel build GitHub Actions workflow setup, including passing the source distribution directly into cibuildwheel, and adds CI coverage for Python 3.14. The code changes in this release also adjust the packaging backend’s Cython build requirements and Cython line tracing behavior, which are not described in the provided release notes.
Featuresv1.20.0
4/17/2025Release 1.20.0 adds build and packaging support for the CPython 3.13 free-threaded ("t") variant, including wheel building and CI coverage of that interpreter. The release notes only mention the free-threaded wheel support, but the diff shows additional build, dependency, CI, test, and Cython implementation changes required to support that environment.
Featuresv1.19.0
4/6/2025Release 1.19.0 is primarily positioned as bug fixes and performance improvements for yarl, plus some CI and testing infrastructure updates for contributors. The release notes mention a URL.with_suffix re-encoding fix, faster query string parsing and a C unquoter improvement, and several CI-related changes like caching and raising the minimum propcache version.
Featuresv1.18.3
12/1/2024yarl v1.18.3 fixes an issue where uppercase ASCII hosts could be rejected when building a URL or using URL.with_host. It also updates internal URL path/query property implementations to reduce work on cache misses, mainly by avoiding unnecessary quoting/unquoting for empty values.
v1.18.2
11/29/2024Release 1.18.2 is described in the notes as having no significant changes and also notes that the release was yanked from PyPI, advising users to use 1.18.3 instead. The only functional code change in the diff appears to be the package version bump.
v1.18.1
11/29/2024Release 1.18.1 was yanked from PyPI due to an incomplete upload, and users are directed to 1.18.2. The published changeset focuses on internal cache performance improvements in yarl URL construction.
v1.18.0
11/21/2024Release v1.18.0 primarily adds new `keep_query` and `keep_fragment` keyword parameters to `yarl.URL.with_path`, `with_name`, and `with_suffix`, allowing callers to preserve the existing query and/or fragment when replacing the URL path components. It also adds downstream `aiohttp` test execution in CI and includes an internal refactor aimed at improving `URL` string conversion performance.
Features