21.0.0:
Update plus sign (+) handling to work with/like HTML form encoding (POST) by default, fixes 129, and associated roundtripping.
Package IDNA tables.
Long overdue dependency bumps
20.0.1
Rerelease to fix packaging metadata around conditional requirements.
20.0.0
* CPython 3.7 and 3.8 and PyPy3 added to test matrix
* Hyperlink now has type hints and they are now exported per
[PEP 561](https://www.python.org/dev/peps/pep-0561/).
* Several bugs related to hidden state were fixed, making it so that all data
on a `URL` object (including `rooted` and `uses_netloc`) is reflected by and
consistent with its textual representation.
This does mean that sometimes these constructor arguments are ignored, if it
would create invalid or unparseable URL text.
19.0.0
A query parameter-centric release, with two enhancements:
"equals sign" characters in query parameter values are no longer escaped.
URL.remove() now accepts value and limit parameters, allowing for removal of specific name-value pairs, as well as limiting the number of removals.
18.0.0:
When passed to str() URLs now stringify to usable URL strings.
Switched off of Python's built-in IDNA facilities to using the idna package. Not only is it much more modern, it's also much more strict and correct in its output.
Added new DecodedURL type with almost-identical API to the normal URL, except that it automatically handles reserved characters in argument values passed to its methods.
Added top-level parse() convenience function that now represents the main entrypoint to hyperlink.
Accept dictionaries as ‘query=’ arguments, in addition to sequences of tuples
URL.child() will no longer fail when child gets no segments
URL.normalize() now supports encoding stray/unmatched % characters in character-encoded fields (userinfo, path, query string, fragment)
Add URL.normalize() method, which applies five normalizations from RFC 3986 (sections 2.3, 2.1, 3.2.2, 6.2.2.3, 6.2.3). See the docs for more details.
Enable URL.click() to accept a URL object as a target.
Fixed a couple major decoding issues and simplified the URL API.
* limit types accepted by URL.from_text() to just text (str on py3, unicode on py2)
* fix percent decoding issues surrounding multiple calls to URL.to_iri()
* remove the socket-inspired family argument from URL's APIs. It was never consistently implemented and leaked slightly more problems than it solved.
* Improve authority parsing
* include LICENSE, README, docs, and other resources in the package