NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1443 most downloaded on PyPI
URL normalization for Python
Last release 12 days ago
22 Sep 2026
Release timing varies
gaps range from 2 weeks to 4.4 years
Nearly every release is documented
notes for 14 of 14 stable releases
Nothing withdrawn
no release was ever pulled
11 years old
14 releases · first in 2016
Normalization fixes change canonical output for some URLs, including encoded delimiters, query plus signs, explicit empty query values, and trailing s
Normalization fixes change canonical output for some URLs, including encoded delimiters, query plus signs, explicit empty query values, and trailing spaces. If normalized URLs are used as cache keys or deduplication identifiers, review stored keys and re-normalize the original URLs where available; information discarded by earlier normalization cannot be recovered from those normalized values alone.
a%2Fb distinct from a/b.%2B) in query parameters and explicit empty values such as flag=.@ from the host.localhost with numeric ports.#!) into a single escaped query parameter, preserving existing parameters and leaving ordinary fragments intact.charset argument.url_humanize() output, and retain the normalized URL when a decoding candidate cannot be parsed.charset.One column per quarter.
Stop passing the deprecated transitional argument to idna.encode() ( #43 ).
url_humanize() and url-normalize --humanize/-H to convert normalized URLs to readable display URLs while preserving normalization round trips (#4).transitional argument to idna.encode() (#43).Full Changelog: v2.2.1...v3.0.0
ci: Use uv and pyproject.toml for CI workflow improvements by @niksite in #40
Full Changelog: V2.2.0...V2.2.1
py.typed marker file for PEP 561 compatibility.New default_domain parameter to support absolute paths with domain names
default_domain parameter to support absolute paths with domain names (#22)Full Changelog: v2.1.0...V2.2.0
New command-line interface ( url-normalize ) with support for:
url-normalize) with support for:
--version, -v)--charset, -c)--default-scheme, -s)--filter-params, -f)--param-allowlist, -p)Full Changelog: v2.0.1...v2.1.0
Reverted license format in pyproject.toml to maintain Python 3.8 compatibility with older setuptools versions
Full Changelog: 2.0.0...v2.0.1
Query parameter filtering functionality
idna packageFull Changelog: 1.4.3...2.0.0
idna package### Added - LICENSE file
Added an optional param sort_query_params (True by default).
Added an optional param sort_query_params (True by default).
sort_query_params (True by default)Added an optional param default_scheme to the url_normalize so that user may provide default scheme (e.g., 'http') instead of 'https'.
Added an optional param default_scheme to the url_normalize so that user may provide default scheme (e.g., 'http') instead of 'https'.
default_scheme to url_normalize ('https' by default)Code refactor and cleanup release. No new features introduced.
Code refactor and cleanup release. No new features introduced.
Support for empty string and double slash urls (//domain.tld)
### Added - Python 3 compatibility
### Changed - PEP8 compliance improvements - Setup.py improvements
Your coding agent can read these notes before it upgrades. Set up the MCP server →