Releases: aio-libs/yarl
1.14.0
Packaging updates and notes for downstreams
-
Switched to using the :mod:
propcache <propcache.api>
package for property caching
-- by :user:bdraco
.The :mod:
propcache <propcache.api>
package is derived from the property caching
code in :mod:yarl
and has been broken out to avoid maintaining it for multiple
projects.Related issues and pull requests on GitHub:
#1169.
Contributor-facing changes
-
Started testing with Hypothesis -- by :user:
webknjaz
and :user:bdraco
.Special thanks to :user:
Zac-HD
for helping us get started with this framework.Related issues and pull requests on GitHub:
#860.
Miscellaneous internal changes
-
Improved performance of :py:meth:
~yarl.URL.is_default_port
when no explicit port is set -- by :user:bdraco
.Related issues and pull requests on GitHub:
#1168. -
Improved performance of converting :class:
~yarl.URL
to a string when no explicit port is set -- by :user:bdraco
.Related issues and pull requests on GitHub:
#1170. -
Improved performance of the :py:meth:
~yarl.URL.origin
method -- by :user:bdraco
.Related issues and pull requests on GitHub:
#1175. -
Improved performance of encoding hosts -- by :user:
bdraco
.Related issues and pull requests on GitHub:
#1176.
1.13.1
1.13.0
Bug fixes
-
Started rejecting ASCII hostnames with invalid characters. For host strings that
look like authority strings, the exception message includes advice on what to do
instead -- by :user:mjpieters
. -
Fixed IPv6 addresses missing brackets when the :class:
~yarl.URL
was converted to a string -- by :user:bdraco
.
Features
-
Added :attr:
~yarl.URL.host_subcomponent
which returns the :rfc:3986#section-3.2.2
host subcomponent -- by :user:bdraco
.The only current practical difference between :attr:
~yarl.URL.raw_host
and :attr:~yarl.URL.host_subcomponent
is that IPv6 addresses are returned bracketed.Related issues and pull requests on GitHub:
#1159.
1.12.1
No significant changes.
This release was created because the signatures failed to upload for 1.12.0
1.12.0
Features
-
Added :attr:
~yarl.URL.path_safe
to be able to fetch the path without%2F
and%25
decoded -- by :user:bdraco
.Related issues and pull requests on GitHub:
#1150.
Removals and backward incompatible breaking changes
-
Restore decoding
%2F
(/
) inURL.path
-- by :user:bdraco
.This change restored the behavior before #1057.
Related issues and pull requests on GitHub:
#1151.
Miscellaneous internal changes
-
Improved performance of processing paths -- by :user:
bdraco
.Related issues and pull requests on GitHub:
#1143.
1.11.1
Bug fixes
-
Allowed scheme replacement for relative URLs if the scheme does not require a host -- by :user:
bdraco
. -
Allowed empty host for URL schemes other than the special schemes listed in the WHATWG URL spec -- by :user:
bdraco
.Related issues and pull requests on GitHub:
#1136.
Features
-
Loosened restriction on integers as query string values to allow classes that implement
__int__
-- by :user:bdraco
.Related issues and pull requests on GitHub:
#1139.
Miscellaneous internal changes
-
Improved performance of normalizing paths -- by :user:
bdraco
.Related issues and pull requests on GitHub:
#1137.
1.11.0
Features
-
Added :meth:
URL.extend_query() <yarl.URL.extend_query>
method, which can be used to extend parameters without replacing same named keys -- by :user:bdraco
.This method was primarily added to replace the inefficient hand rolled method currently used in
aiohttp
.Related issues and pull requests on GitHub:
#1128.
Miscellaneous internal changes
-
Improved performance of the Cython
cached_property
implementation -- by :user:bdraco
.Related issues and pull requests on GitHub:
#1122. -
Simplified computing ports by removing unnecessary code -- by :user:
bdraco
.Related issues and pull requests on GitHub:
#1123. -
Improved performance of encoding non IPv6 hosts -- by :user:
bdraco
.Related issues and pull requests on GitHub:
#1125. -
Improved performance of :meth:
URL.build() <yarl.URL.build>
when the path, query string, or fragment is an empty string -- by :user:bdraco
.Related issues and pull requests on GitHub:
#1126. -
Improved performance of the :meth:
URL.update_query() <yarl.URL.update_query>
method -- by :user:bdraco
.Related issues and pull requests on GitHub:
#1130. -
Improved performance of processing query string changes when arguments are :class:
str
-- by :user:bdraco
.Related issues and pull requests on GitHub:
#1131.
1.10.0
Bug fixes
-
Fixed joining a path when the existing path was empty -- by :user:
bdraco
.A regression in :meth:
URL.join() <yarl.URL.join>
was introduced in #1082.Related issues and pull requests on GitHub:
#1118.
Features
-
Added :meth:
URL.without_query_params() <yarl.URL.without_query_params>
method, to drop some parameters from query string -- by :user:hongquan
.Related issues and pull requests on GitHub:
#774, #898, #1010. -
The previously protected types
_SimpleQuery
,_QueryVariable
, and_Query
are now available for use externally asSimpleQuery
,QueryVariable
, andQuery
-- by :user:bdraco
.
Contributor-facing changes
-
Replaced all :class:
~typing.Optional
with :class:~typing.Union
-- by :user:bdraco
.Related issues and pull requests on GitHub:
#1095.
Miscellaneous internal changes
-
Significantly improved performance of parsing the network location -- by :user:
bdraco
.Related issues and pull requests on GitHub:
#1112. -
Added internal types to the cache to prevent future refactoring errors -- by :user:
bdraco
.Related issues and pull requests on GitHub:
#1117.
1.9.11
Bug fixes
-
Fixed a :exc:
TypeError
withMultiDictProxy
and Python 3.8 -- by :user:bdraco
.Related issues and pull requests on GitHub:
#1084, #1105, #1107.
Miscellaneous internal changes
-
Improved performance of encoding hosts -- by :user:
bdraco
.Previously, the library would unconditionally try to parse a host as an IP Address. The library now avoids trying to parse a host as an IP Address if the string is not in one of the formats described in :rfc:
3986#section-3.2.2
.Related issues and pull requests on GitHub:
#1104.
1.9.10
Bug fixes
-
:meth:
URL.join() <yarl.URL.join>
has been changed to match
:rfc:3986
and align with
:meth:/ operation <yarl.URL.__truediv__>
and :meth:URL.joinpath() <yarl.URL.joinpath>
when joining URLs with empty segments.
Previously :py:func:urllib.parse.urljoin
was used,
which has known issues with empty segments
(python/cpython#84774 <https://github.com/python/cpython/issues/84774>
_).Due to the semantics of :meth:
URL.join() <yarl.URL.join>
, joining an
URL with scheme requires making it relative, prefixing with./
... code-block:: pycon
URL("https://web.archive.org/web/").join(URL("./https://github.com/aio-libs/yarl"))
URL('https://web.archive.org/web/https://github.com/aio-libs/yarl')Empty segments are honored in the base as well as the joined part.
.. code-block:: pycon
URL("https://web.archive.org/web/https://").join(URL("github.com/aio-libs/yarl"))
URL('https://web.archive.org/web/https://github.com/aio-libs/yarl')-- by :user:
commonism
This change initially appeared in 1.9.5 but was reverted in 1.9.6 to resolve a problem with query string handling.
Features
-
Added :attr:
~yarl.URL.absolute
which is now preferred overURL.is_absolute()
-- by :user:bdraco
.Related issues and pull requests on GitHub:
#1100.