yarl
====
The module provides handy URL class for URL parsing and changing.
.. image:: https://github.com/aio-libs/yarl/workflows/CI/badge.svg
:target: https://github.com/aio-libs/yarl/actions?query=workflow%3ACI
:align: right
.. image:: https://codecov.io/gh/aio-libs/yarl/branch/master/graph/badge.svg
:target: https://codecov.io/gh/aio-libs/yarl
.. image:: https://img.shields.io/endpoint?url=https://codspeed.io/badge.json
:target: https://codspeed.io/aio-libs/yarl
.. image:: https://badge.fury.io/py/yarl.svg
:target: https://badge.fury.io/py/yarl
.. image:: https://readthedocs.org/projects/yarl/badge/?version=latest
:target: https://yarl.aio-libs.org
.. image:: https://img.shields.io/pypi/pyversions/yarl.svg
:target: https://pypi.python.org/pypi/yarl
.. image:: https://img.shields.io/matrix/aio-libs:matrix.org?label=Discuss%20on%20Matrix%20at%20%23aio-libs%3Amatrix.org&logo=matrix&server_fqdn=matrix.org&style=flat
:target: https://matrix.to/#/%23aio-libs:matrix.org
:alt: Matrix Room — #aio-libs:matrix.org
.. image:: https://img.shields.io/matrix/aio-libs-space:matrix.org?label=Discuss%20on%20Matrix%20at%20%23aio-libs-space%3Amatrix.org&logo=matrix&server_fqdn=matrix.org&style=flat
:target: https://matrix.to/#/%23aio-libs-space:matrix.org
:alt: Matrix Space — #aio-libs-space:matrix.org
Introduction
------------
Url is constructed from ``str``:
.. code-block:: pycon
>>> from yarl import URL
>>> url = URL('https://www.python.org/~guido?arg=1#frag')
>>> url
URL('https://www.python.org/~guido?arg=1#frag')
All url parts: *scheme*, *user*, *password*, *host*, *port*, *path*,
*query* and *fragment* are accessible by properties:
.. code-block:: pycon
>>> url.scheme
'https'
>>> url.host
'www.python.org'
>>> url.path
'/~guido'
>>> url.query_string
'arg=1'
>>> url.query
<MultiDictProxy('arg': '1')>
>>> url.fragment
'frag'
All url manipulations produce a new url object:
.. code-block:: pycon
>>> url = URL('https://www.python.org')
>>> url / 'foo' / 'bar'
URL('https://www.python.org/foo/bar')
>>> url / 'foo' % {'bar': 'baz'}
URL('https://www.python.org/foo?bar=baz')
Strings passed to constructor and modification methods are
automatically encoded giving canonical representation as result:
.. code-block:: pycon
>>> url = URL('https://www.python.org/шлях')
>>> url
URL('https://www.python.org/%D1%88%D0%BB%D1%8F%D1%85')
Regular properties are *percent-decoded*, use ``raw_`` versions for
getting *encoded* strings:
.. code-block:: pycon
>>> url.path
'/шлях'
>>> url.raw_path
'/%D1%88%D0%BB%D1%8F%D1%85'
Human readable representation of URL is available as ``.human_repr()``:
.. code-block:: pycon
>>> url.human_repr()
'https://www.python.org/шлях'
For full documentation please read https://yarl.aio-libs.org.
Installation
------------
::
$ pip install yarl
The library is Python 3 only!
PyPI contains binary wheels for Linux, Windows and MacOS. If you want to install
``yarl`` on another operating system where wheels are not provided,
the the tarball will be used to compile the library from
the source code. It requires a C compiler and and Python headers installed.
To skip the compilation you must explicitly opt-in by using a PEP 517
configuration setting ``pure-python``, or setting the ``YARL_NO_EXTENSIONS``
environment variable to a non-empty value, e.g.:
.. code-block:: console
$ pip install yarl --config-settings=pure-python=false
Please note that the pure-Python (uncompiled) version is much slower. However,
PyPy always uses a pure-Python implementation, and, as such, it is unaffected
by this variable.
Dependencies
------------
YARL requires multidict_ and propcache_ libraries.
API documentation
------------------
The documentation is located at https://yarl.aio-libs.org.
Why isn't boolean supported by the URL query API?
-------------------------------------------------
There is no standard for boolean representation of boolean values.
Some systems prefer ``true``/``false``, others like ``yes``/``no``, ``on``/``off``,
``Y``/``N``, ``1``/``0``, etc.
``yarl`` cannot make an unambiguous decision on how to serialize ``bool`` values because
it is specific to how the end-user's application is built and would be different for
different apps. The library doesn't accept booleans in the API; a user should convert
bools into strings using own preferred translation protocol.
Comparison with other URL libraries
------------------------------------
* furl (https://pypi.python.org/pypi/furl)
The library has rich functionality but the ``furl`` object is mutable.
I'm afraid to pass this object into foreign code: who knows if the
code will modify my url in a terrible way while I just want to send URL
with handy helpers for accessing URL properties.
``furl`` has other non-obvious tricky things but the main objection
is mutability.
* URLObject (https://pypi.python.org/pypi/URLObject)
URLObject is immutable, that's pretty good.
Every URL change generates a new URL object.
But the library doesn't do any decode/encode transformations leaving the
end user to cope with these gory details.
Source code
-----------
The project is hosted on GitHub_
Please file an issue on the `bug tracker
<https://github.com/aio-libs/yarl/issues>`_ if you have found a bug
or have some suggestion in order to improve the library.
Discussion list
---------------
*aio-libs* google group: https://groups.google.com/forum/#!forum/aio-libs
Feel free to post your questions and ideas here.
Authors and License
-------------------
The ``yarl`` package is written by Andrew Svetlov.
It's *Apache 2* licensed and freely available.
.. _GitHub: https://github.com/aio-libs/yarl
.. _multidict: https://github.com/aio-libs/multidict
.. _propcache: https://github.com/aio-libs/propcache
=========
Changelog
=========
..
You should *NOT* be adding new change log entries to this file, this
file is managed by towncrier. You *may* edit previous change logs to
fix problems like typo corrections or such.
To add a new change log entry, please see
https://pip.pypa.io/en/latest/development/#adding-a-news-entry
we named the news folder "changes".
WARNING: Don't drop the next directive!
.. towncrier release notes start
1.18.3
======
*(2024-12-01)*
Bug fixes
---------
- Fixed uppercase ASCII hosts being rejected by ``URL.build()()`` and ``yarl.URL.with_host()`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#954 <https://github.com/aio-libs/yarl/issues/954>`__, `#1442 <https://github.com/aio-libs/yarl/issues/1442>`__.
Miscellaneous internal changes
------------------------------
- Improved performances of multiple path properties on cache miss -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1443 <https://github.com/aio-libs/yarl/issues/1443>`__.
----
1.18.2
======
*(2024-11-29)*
No significant changes.
----
1.18.1
======
*(2024-11-29)*
Miscellaneous internal changes
------------------------------
- Improved cache performance when ``~yarl.URL`` objects are constructed from ``yarl.URL.build()`` with ``encoded=True`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1432 <https://github.com/aio-libs/yarl/issues/1432>`__.
- Improved cache performance for operations that produce a new ``~yarl.URL`` object -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1434 <https://github.com/aio-libs/yarl/issues/1434>`__, `#1436 <https://github.com/aio-libs/yarl/issues/1436>`__.
----
1.18.0
======
*(2024-11-21)*
Features
--------
- Added ``keep_query`` and ``keep_fragment`` flags in the ``yarl.URL.with_path()``, ``yarl.URL.with_name()`` and ``yarl.URL.with_suffix()`` methods, allowing users to optionally retain the query string and fragment in the resulting URL when replacing the path -- by `@paul-nameless <https://github.com/sponsors/paul-nameless>`__.
*Related issues and pull requests on GitHub:*
`#111 <https://github.com/aio-libs/yarl/issues/111>`__, `#1421 <https://github.com/aio-libs/yarl/issues/1421>`__.
Contributor-facing changes
--------------------------
- Started running downstream ``aiohttp`` tests in CI -- by `@Cycloctane <https://github.com/sponsors/Cycloctane>`__.
*Related issues and pull requests on GitHub:*
`#1415 <https://github.com/aio-libs/yarl/issues/1415>`__.
Miscellaneous internal changes
------------------------------
- Improved performance of converting ``~yarl.URL`` to a string -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1422 <https://github.com/aio-libs/yarl/issues/1422>`__.
----
1.17.2
======
*(2024-11-17)*
Bug fixes
---------
- Stopped implicitly allowing the use of Cython pre-release versions when
building the distribution package -- by `@ajsanchezsanz <https://github.com/sponsors/ajsanchezsanz>`__ and
`@markgreene74 <https://github.com/sponsors/markgreene74>`__.
*Related issues and pull requests on GitHub:*
`#1411 <https://github.com/aio-libs/yarl/issues/1411>`__, `#1412 <https://github.com/aio-libs/yarl/issues/1412>`__.
- Fixed a bug causing ``~yarl.URL.port`` to return the default port when the given port was zero
-- by `@gmacon <https://github.com/sponsors/gmacon>`__.
*Related issues and pull requests on GitHub:*
`#1413 <https://github.com/aio-libs/yarl/issues/1413>`__.
Features
--------
- Make error messages include details of incorrect type when ``port`` is not int in ``yarl.URL.build()``.
-- by `@Cycloctane <https://github.com/sponsors/Cycloctane>`__.
*Related issues and pull requests on GitHub:*
`#1414 <https://github.com/aio-libs/yarl/issues/1414>`__.
Packaging updates and notes for downstreams
-------------------------------------------
- Stopped implicitly allowing the use of Cython pre-release versions when
building the distribution package -- by `@ajsanchezsanz <https://github.com/sponsors/ajsanchezsanz>`__ and
`@markgreene74 <https://github.com/sponsors/markgreene74>`__.
*Related issues and pull requests on GitHub:*
`#1411 <https://github.com/aio-libs/yarl/issues/1411>`__, `#1412 <https://github.com/aio-libs/yarl/issues/1412>`__.
Miscellaneous internal changes
------------------------------
- Improved performance of the ``yarl.URL.joinpath()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1418 <https://github.com/aio-libs/yarl/issues/1418>`__.
----
1.17.1
======
*(2024-10-30)*
Miscellaneous internal changes
------------------------------
- Improved performance of many ``~yarl.URL`` methods -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1396 <https://github.com/aio-libs/yarl/issues/1396>`__, `#1397 <https://github.com/aio-libs/yarl/issues/1397>`__, `#1398 <https://github.com/aio-libs/yarl/issues/1398>`__.
- Improved performance of passing a `dict` or `str` to ``yarl.URL.extend_query()`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1401 <https://github.com/aio-libs/yarl/issues/1401>`__.
----
1.17.0
======
*(2024-10-28)*
Features
--------
- Added ``~yarl.URL.host_port_subcomponent`` which returns the ``3986#section-3.2.2`` host and ``3986#section-3.2.3`` port subcomponent -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1375 <https://github.com/aio-libs/yarl/issues/1375>`__.
----
1.16.0
======
*(2024-10-21)*
Bug fixes
---------
- Fixed blocking I/O to load Python code when creating a new ``~yarl.URL`` with non-ascii characters in the network location part -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1342 <https://github.com/aio-libs/yarl/issues/1342>`__.
Removals and backward incompatible breaking changes
---------------------------------------------------
- Migrated to using a single cache for encoding hosts -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
Passing ``ip_address_size`` and ``host_validate_size`` to ``yarl.cache_configure()`` is deprecated in favor of the new ``encode_host_size`` parameter and will be removed in a future release. For backwards compatibility, the old parameters affect the ``encode_host`` cache size.
*Related issues and pull requests on GitHub:*
`#1348 <https://github.com/aio-libs/yarl/issues/1348>`__, `#1357 <https://github.com/aio-libs/yarl/issues/1357>`__, `#1363 <https://github.com/aio-libs/yarl/issues/1363>`__.
Miscellaneous internal changes
------------------------------
- Improved performance of constructing ``~yarl.URL`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1336 <https://github.com/aio-libs/yarl/issues/1336>`__.
- Improved performance of calling ``yarl.URL.build()`` and constructing unencoded ``~yarl.URL`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1345 <https://github.com/aio-libs/yarl/issues/1345>`__.
- Reworked the internal encoding cache to improve performance on cache hit -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1369 <https://github.com/aio-libs/yarl/issues/1369>`__.
----
1.15.5
======
*(2024-10-18)*
Miscellaneous internal changes
------------------------------
- Improved performance of the ``yarl.URL.joinpath()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1304 <https://github.com/aio-libs/yarl/issues/1304>`__.
- Improved performance of the ``yarl.URL.extend_query()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1305 <https://github.com/aio-libs/yarl/issues/1305>`__.
- Improved performance of the ``yarl.URL.origin()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1306 <https://github.com/aio-libs/yarl/issues/1306>`__.
- Improved performance of the ``yarl.URL.with_path()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1307 <https://github.com/aio-libs/yarl/issues/1307>`__.
- Improved performance of the ``yarl.URL.with_query()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1308 <https://github.com/aio-libs/yarl/issues/1308>`__, `#1328 <https://github.com/aio-libs/yarl/issues/1328>`__.
- Improved performance of the ``yarl.URL.update_query()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1309 <https://github.com/aio-libs/yarl/issues/1309>`__, `#1327 <https://github.com/aio-libs/yarl/issues/1327>`__.
- Improved performance of the ``yarl.URL.join()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1313 <https://github.com/aio-libs/yarl/issues/1313>`__.
- Improved performance of ``~yarl.URL`` equality checks -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1315 <https://github.com/aio-libs/yarl/issues/1315>`__.
- Improved performance of ``~yarl.URL`` methods that modify the network location -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1316 <https://github.com/aio-libs/yarl/issues/1316>`__.
- Improved performance of the ``yarl.URL.with_fragment()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1317 <https://github.com/aio-libs/yarl/issues/1317>`__.
- Improved performance of calculating the hash of ``~yarl.URL`` objects -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1318 <https://github.com/aio-libs/yarl/issues/1318>`__.
- Improved performance of the ``yarl.URL.relative()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1319 <https://github.com/aio-libs/yarl/issues/1319>`__.
- Improved performance of the ``yarl.URL.with_name()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1320 <https://github.com/aio-libs/yarl/issues/1320>`__.
- Improved performance of ``~yarl.URL.parent`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1321 <https://github.com/aio-libs/yarl/issues/1321>`__.
- Improved performance of the ``yarl.URL.with_scheme()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1322 <https://github.com/aio-libs/yarl/issues/1322>`__.
----
1.15.4
======
*(2024-10-16)*
Miscellaneous internal changes
------------------------------
- Improved performance of the quoter when all characters are safe -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1288 <https://github.com/aio-libs/yarl/issues/1288>`__.
- Improved performance of unquoting strings -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1292 <https://github.com/aio-libs/yarl/issues/1292>`__, `#1293 <https://github.com/aio-libs/yarl/issues/1293>`__.
- Improved performance of calling ``yarl.URL.build()`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1297 <https://github.com/aio-libs/yarl/issues/1297>`__.
----
1.15.3
======
*(2024-10-15)*
Bug fixes
---------
- Fixed ``yarl.URL.build()`` failing to validate paths must start with a ``/`` when passing ``authority`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
The validation only worked correctly when passing ``host``.
*Related issues and pull requests on GitHub:*
`#1265 <https://github.com/aio-libs/yarl/issues/1265>`__.
Removals and backward incompatible breaking changes
---------------------------------------------------
- Removed support for Python 3.8 as it has reached end of life -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1203 <https://github.com/aio-libs/yarl/issues/1203>`__.
Miscellaneous internal changes
------------------------------
- Improved performance of constructing ``~yarl.URL`` when the net location is only the host -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1271 <https://github.com/aio-libs/yarl/issues/1271>`__.
----
1.15.2
======
*(2024-10-13)*
Miscellaneous internal changes
------------------------------
- Improved performance of converting ``~yarl.URL`` to a string -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1234 <https://github.com/aio-libs/yarl/issues/1234>`__.
- Improved performance of ``yarl.URL.joinpath()`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1248 <https://github.com/aio-libs/yarl/issues/1248>`__, `#1250 <https://github.com/aio-libs/yarl/issues/1250>`__.
- Improved performance of constructing query strings from ``~multidict.MultiDict`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1256 <https://github.com/aio-libs/yarl/issues/1256>`__.
- Improved performance of constructing query strings with ``int`` values -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1259 <https://github.com/aio-libs/yarl/issues/1259>`__.
----
1.15.1
======
*(2024-10-12)*
Miscellaneous internal changes
------------------------------
- Improved performance of calling ``yarl.URL.build()`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1222 <https://github.com/aio-libs/yarl/issues/1222>`__.
- Improved performance of all ``~yarl.URL`` methods that create new ``~yarl.URL`` objects -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1226 <https://github.com/aio-libs/yarl/issues/1226>`__.
- Improved performance of ``~yarl.URL`` methods that modify the network location -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1229 <https://github.com/aio-libs/yarl/issues/1229>`__.
----
1.15.0
======
*(2024-10-11)*
Bug fixes
---------
- Fixed validation with ``yarl.URL.with_scheme()`` when passed scheme is not lowercase -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1189 <https://github.com/aio-libs/yarl/issues/1189>`__.
Features
--------
- Started building ``armv7l`` wheels -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1204 <https://github.com/aio-libs/yarl/issues/1204>`__.
Miscellaneous internal changes
------------------------------
- Improved performance of constructing unencoded ``~yarl.URL`` objects -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1188 <https://github.com/aio-libs/yarl/issues/1188>`__.
- Added a cache for parsing hosts to reduce overhead of encoding ``~yarl.URL`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1190 <https://github.com/aio-libs/yarl/issues/1190>`__.
- Improved performance of constructing query strings from ``~collections.abc.Mapping`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1193 <https://github.com/aio-libs/yarl/issues/1193>`__.
- Improved performance of converting ``~yarl.URL`` objects to strings -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1198 <https://github.com/aio-libs/yarl/issues/1198>`__.
----
1.14.0
======
*(2024-10-08)*
Packaging updates and notes for downstreams
-------------------------------------------
- Switched to using the ``propcache`` package for property caching
-- by `@bdraco <https://github.com/sponsors/bdraco>`__.
The ``propcache`` package is derived from the property caching
code in ``yarl`` and has been broken out to avoid maintaining it for multiple
projects.
*Related issues and pull requests on GitHub:*
`#1169 <https://github.com/aio-libs/yarl/issues/1169>`__.
Contributor-facing changes
--------------------------
- Started testing with Hypothesis -- by `@webknjaz <https://github.com/sponsors/webknjaz>`__ and `@bdraco <https://github.com/sponsors/bdraco>`__.
Special thanks to `@Zac-HD <https://github.com/sponsors/Zac-HD>`__ for helping us get started with this framework.
*Related issues and pull requests on GitHub:*
`#860 <https://github.com/aio-libs/yarl/issues/860>`__.
Miscellaneous internal changes
------------------------------
- Improved performance of ``yarl.URL.is_default_port()`` when no explicit port is set -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1168 <https://github.com/aio-libs/yarl/issues/1168>`__.
- Improved performance of converting ``~yarl.URL`` to a string when no explicit port is set -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1170 <https://github.com/aio-libs/yarl/issues/1170>`__.
- Improved performance of the ``yarl.URL.origin()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1175 <https://github.com/aio-libs/yarl/issues/1175>`__.
- Improved performance of encoding hosts -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1176 <https://github.com/aio-libs/yarl/issues/1176>`__.
----
1.13.1
======
*(2024-09-27)*
Miscellaneous internal changes
------------------------------
- Improved performance of calling ``yarl.URL.build()`` with ``authority`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1163 <https://github.com/aio-libs/yarl/issues/1163>`__.
----
1.13.0
======
*(2024-09-26)*
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 `@mjpieters <https://github.com/sponsors/mjpieters>`__.
*Related issues and pull requests on GitHub:*
`#880 <https://github.com/aio-libs/yarl/issues/880>`__, `#954 <https://github.com/aio-libs/yarl/issues/954>`__.
- Fixed IPv6 addresses missing brackets when the ``~yarl.URL`` was converted to a string -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1157 <https://github.com/aio-libs/yarl/issues/1157>`__, `#1158 <https://github.com/aio-libs/yarl/issues/1158>`__.
Features
--------
- Added ``~yarl.URL.host_subcomponent`` which returns the ``3986#section-3.2.2`` host subcomponent -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
The only current practical difference between ``~yarl.URL.raw_host`` and ``~yarl.URL.host_subcomponent`` is that IPv6 addresses are returned bracketed.
*Related issues and pull requests on GitHub:*
`#1159 <https://github.com/aio-libs/yarl/issues/1159>`__.
----
1.12.1
======
*(2024-09-23)*
No significant changes.
----
1.12.0
======
*(2024-09-23)*
Features
--------
- Added ``~yarl.URL.path_safe`` to be able to fetch the path without ``%2F`` and ``%25`` decoded -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1150 <https://github.com/aio-libs/yarl/issues/1150>`__.
Removals and backward incompatible breaking changes
---------------------------------------------------
- Restore decoding ``%2F`` (``/``) in ``URL.path`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
This change restored the behavior before `#1057 <https://github.com/aio-libs/yarl/issues/1057>`__.
*Related issues and pull requests on GitHub:*
`#1151 <https://github.com/aio-libs/yarl/issues/1151>`__.
Miscellaneous internal changes
------------------------------
- Improved performance of processing paths -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1143 <https://github.com/aio-libs/yarl/issues/1143>`__.
----
1.11.1
======
*(2024-09-09)*
Bug fixes
---------
- Allowed scheme replacement for relative URLs if the scheme does not require a host -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#280 <https://github.com/aio-libs/yarl/issues/280>`__, `#1138 <https://github.com/aio-libs/yarl/issues/1138>`__.
- Allowed empty host for URL schemes other than the special schemes listed in the WHATWG URL spec -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1136 <https://github.com/aio-libs/yarl/issues/1136>`__.
Features
--------
- Loosened restriction on integers as query string values to allow classes that implement ``__int__`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1139 <https://github.com/aio-libs/yarl/issues/1139>`__.
Miscellaneous internal changes
------------------------------
- Improved performance of normalizing paths -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1137 <https://github.com/aio-libs/yarl/issues/1137>`__.
----
1.11.0
======
*(2024-09-08)*
Features
--------
- Added ``URL.extend_query()()`` method, which can be used to extend parameters without replacing same named keys -- by `@bdraco <https://github.com/sponsors/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 <https://github.com/aio-libs/yarl/issues/1128>`__.
Miscellaneous internal changes
------------------------------
- Improved performance of the Cython ``cached_property`` implementation -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1122 <https://github.com/aio-libs/yarl/issues/1122>`__.
- Simplified computing ports by removing unnecessary code -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1123 <https://github.com/aio-libs/yarl/issues/1123>`__.
- Improved performance of encoding non IPv6 hosts -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1125 <https://github.com/aio-libs/yarl/issues/1125>`__.
- Improved performance of ``URL.build()()`` when the path, query string, or fragment is an empty string -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1126 <https://github.com/aio-libs/yarl/issues/1126>`__.
- Improved performance of the ``URL.update_query()()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1130 <https://github.com/aio-libs/yarl/issues/1130>`__.
- Improved performance of processing query string changes when arguments are ``str`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1131 <https://github.com/aio-libs/yarl/issues/1131>`__.
----
1.10.0
======
*(2024-09-06)*
Bug fixes
---------
- Fixed joining a path when the existing path was empty -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
A regression in ``URL.join()()`` was introduced in `#1082 <https://github.com/aio-libs/yarl/issues/1082>`__.
*Related issues and pull requests on GitHub:*
`#1118 <https://github.com/aio-libs/yarl/issues/1118>`__.
Features
--------
- Added ``URL.without_query_params()()`` method, to drop some parameters from query string -- by `@hongquan <https://github.com/sponsors/hongquan>`__.
*Related issues and pull requests on GitHub:*
`#774 <https://github.com/aio-libs/yarl/issues/774>`__, `#898 <https://github.com/aio-libs/yarl/issues/898>`__, `#1010 <https://github.com/aio-libs/yarl/issues/1010>`__.
- The previously protected types ``_SimpleQuery``, ``_QueryVariable``, and ``_Query`` are now available for use externally as ``SimpleQuery``, ``QueryVariable``, and ``Query`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1050 <https://github.com/aio-libs/yarl/issues/1050>`__, `#1113 <https://github.com/aio-libs/yarl/issues/1113>`__.
Contributor-facing changes
--------------------------
- Replaced all ``~typing.Optional`` with ``~typing.Union`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1095 <https://github.com/aio-libs/yarl/issues/1095>`__.
Miscellaneous internal changes
------------------------------
- Significantly improved performance of parsing the network location -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1112 <https://github.com/aio-libs/yarl/issues/1112>`__.
- Added internal types to the cache to prevent future refactoring errors -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1117 <https://github.com/aio-libs/yarl/issues/1117>`__.
----
1.9.11
======
*(2024-09-04)*
Bug fixes
---------
- Fixed a ``TypeError`` with ``MultiDictProxy`` and Python 3.8 -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1084 <https://github.com/aio-libs/yarl/issues/1084>`__, `#1105 <https://github.com/aio-libs/yarl/issues/1105>`__, `#1107 <https://github.com/aio-libs/yarl/issues/1107>`__.
Miscellaneous internal changes
------------------------------
- Improved performance of encoding hosts -- by `@bdraco <https://github.com/sponsors/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 ``3986#section-3.2.2``.
*Related issues and pull requests on GitHub:*
`#1104 <https://github.com/aio-libs/yarl/issues/1104>`__.
----
1.9.10
======
*(2024-09-04)*
Bug fixes
---------
- ``URL.join()()`` has been changed to match
``3986`` and align with
``/ operation()`` and ``URL.joinpath()()``
when joining URLs with empty segments.
Previously ``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 ``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 `@commonism <https://github.com/sponsors/commonism>`__
This change initially appeared in 1.9.5 but was reverted in 1.9.6 to resolve a problem with query string handling.
*Related issues and pull requests on GitHub:*
`#1039 <https://github.com/aio-libs/yarl/issues/1039>`__, `#1082 <https://github.com/aio-libs/yarl/issues/1082>`__.
Features
--------
- Added ``~yarl.URL.absolute`` which is now preferred over ``URL.is_absolute()`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1100 <https://github.com/aio-libs/yarl/issues/1100>`__.
----
1.9.9
=====
*(2024-09-04)*
Bug fixes
---------
- Added missing type on ``~yarl.URL.port`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1097 <https://github.com/aio-libs/yarl/issues/1097>`__.
----
1.9.8
=====
*(2024-09-03)*
Features
--------
- Covered the ``~yarl.URL`` object with types -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1084 <https://github.com/aio-libs/yarl/issues/1084>`__.
- Cache parsing of IP Addresses when encoding hosts -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1086 <https://github.com/aio-libs/yarl/issues/1086>`__.
Contributor-facing changes
--------------------------
- Covered the ``~yarl.URL`` object with types -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1084 <https://github.com/aio-libs/yarl/issues/1084>`__.
Miscellaneous internal changes
------------------------------
- Improved performance of handling ports -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
*Related issues and pull requests on GitHub:*
`#1081 <https://github.com/aio-libs/yarl/issues/1081>`__.
----
1.9.7
=====
*(2024-09-01)*
Removals and backward incompatible breaking changes
---------------------------------------------------
- Removed support ``3986#section-3.2.3`` port normalization when the scheme is not one of ``http``, ``https``, ``wss``, or ``ws`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
Support for port normalization was recently added in `#1033 <https://github.com/aio-libs/yarl/issues/1033>`__ and contained code that would do blocking I/O if the scheme was not one of the four listed above. The code has been removed because this library is intended to be safe for usage with ``asyncio``.
*Related issues and pull requests on GitHub:*
`#1076 <https://github.com/aio-libs/yarl/issues/1076>`__.
Miscellaneous internal changes
------------------------------
- Improved performance of property caching -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
The ``reify`` implementation from ``aiohttp`` was adapted to replace the internal ``cached_property`` implementation.
*Related issues and pull requests on GitHub:*
`#1070 <https://github.com/aio-libs/yarl/issues/1070>`__.
----
1.9.6
=====
*(2024-08-30)*
Bug fixes
---------
- Reverted ``3986`` compatible ``URL.join()()`` honoring empty segments which was introduced in `#1039 <https://github.com/aio-libs/yarl/issues/1039>`__.
This change introduced a regression handling query string parameters with joined URLs. The change was reverted to maintain compatibility with the previous behavior.
*Related issues and pull requests on GitHub:*
`#1067 <https://github.com/aio-libs/yarl/issues/1067>`__.
----
1.9.5
=====
*(2024-08-30)*
Bug fixes
---------
- Joining URLs with empty segments has been changed
to match ``3986``.
Previously empty segments would be removed from path,
breaking use-cases such as
.. code-block:: python
URL("https://web.archive.org/web/") / "https://github.com/"
Now ``/ operation()`` and ``URL.joinpath()()``
keep empty segments, but do not introduce new empty segments.
e.g.
.. code-block:: python
URL("https://example.org/") / ""
does not introduce an empty segment.
-- by `@commonism <https://github.com/sponsors/commonism>`__ and `@youtux <https://github.com/sponsors/youtux>`__
*Related issues and pull requests on GitHub:*
`#1026 <https://github.com/aio-libs/yarl/issues/1026>`__.
- The default protocol ports of well-known URI schemes are now taken into account
during the normalization of the URL string representation in accordance with
``3986#section-3.2.3``.
Specified ports are removed from the ``str`` representation of a ``~yarl.URL``
if the port matches the scheme's default port -- by `@commonism <https://github.com/sponsors/commonism>`__.
*Related issues and pull requests on GitHub:*
`#1033 <https://github.com/aio-libs/yarl/issues/1033>`__.
- ``URL.join()()`` has been changed to match
``3986`` and align with
``/ operation()`` and ``URL.joinpath()()``
when joining URLs with empty segments.
Previously ``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 ``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 `@commonism <https://github.com/sponsors/commonism>`__
*Related issues and pull requests on GitHub:*
`#1039 <https://github.com/aio-libs/yarl/issues/1039>`__.
Removals and backward incompatible breaking changes
---------------------------------------------------
- Stopped decoding ``%2F`` (``/``) in ``URL.path``, as this could lead to code incorrectly treating it as a path separator
-- by `@Dreamsorcerer <https://github.com/sponsors/Dreamsorcerer>`__.
*Related issues and pull requests on GitHub:*
`#1057 <https://github.com/aio-libs/yarl/issues/1057>`__.
- Dropped support for Python 3.7 -- by `@Dreamsorcerer <https://github.com/sponsors/Dreamsorcerer>`__.
*Related issues and pull requests on GitHub:*
`#1016 <https://github.com/aio-libs/yarl/issues/1016>`__.
Improved documentation
----------------------
- On the ``Contributing docs`` page,
a link to the ``Towncrier philosophy`` has been fixed.
*Related issues and pull requests on GitHub:*
`#981 <https://github.com/aio-libs/yarl/issues/981>`__.
- The pre-existing ``/ magic method()``
has been documented in the API reference -- by `@commonism <https://github.com/sponsors/commonism>`__.
*Related issues and pull requests on GitHub:*
`#1026 <https://github.com/aio-libs/yarl/issues/1026>`__.
Packaging updates and notes for downstreams
-------------------------------------------
- A flaw in the logic for copying the project directory into a
temporary folder that led to infinite recursion when ``TMPDIR``
was set to a project subdirectory path. This was happening in Fedora
and its downstream due to the use of `pyproject-rpm-macros
<https://src.fedoraproject.org/rpms/pyproject-rpm-macros>`__. It was
only reproducible with ``pip wheel`` and was not affecting the
``pyproject-build`` users.
-- by `@hroncok <https://github.com/sponsors/hroncok>`__ and `@webknjaz <https://github.com/sponsors/webknjaz>`__
*Related issues and pull requests on GitHub:*
`#992 <https://github.com/aio-libs/yarl/issues/992>`__, `#1014 <https://github.com/aio-libs/yarl/issues/1014>`__.
- Support Python 3.13 and publish non-free-threaded wheels
*Related issues and pull requests on GitHub:*
`#1054 <https://github.com/aio-libs/yarl/issues/1054>`__.
Contributor-facing changes
--------------------------
- The CI/CD setup has been updated to test ``arm64`` wheels
under macOS 14, except for Python 3.7 that is unsupported
in that environment -- by `@webknjaz <https://github.com/sponsors/webknjaz>`__.
*Related issues and pull requests on GitHub:*
`#1015 <https://github.com/aio-libs/yarl/issues/1015>`__.
- Removed unused type ignores and casts -- by `@hauntsaninja <https://github.com/sponsors/hauntsaninja>`__.
*Related issues and pull requests on GitHub:*
`#1031 <https://github.com/aio-libs/yarl/issues/1031>`__.
Miscellaneous internal changes
------------------------------
- ``port``, ``scheme``, and ``raw_host`` are now ``cached_property`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.
``aiohttp`` accesses these properties quite often, which cause ``urllib`` to build the ``_hostinfo`` property every time. ``port``, ``scheme``, and ``raw_host`` are now cached properties, which will improve performance.
*Related issues and pull requests on GitHub:*
`#1044 <https://github.com/aio-libs/yarl/issues/1044>`__, `#1058 <https://github.com/aio-libs/yarl/issues/1058>`__.
----
1.9.4 (2023-12-06)
==================
Bug fixes
---------
- Started raising ``TypeError`` when a string value is passed into
``yarl.URL.build()`` as the ``port`` argument -- by `@commonism <https://github.com/sponsors/commonism>`__.
Previously the empty string as port would create malformed URLs when rendered as string representations. (`#883 <https://github.com/aio-libs/yarl/issues/883>`__)
Packaging updates and notes for downstreams
-------------------------------------------
- The leading ``--`` has been dropped from the `PEP 517 <https://peps.python.org/pep-517>`__ in-tree build
backend config setting names. ``--pure-python`` is now just ``pure-python``
-- by `@webknjaz <https://github.com/sponsors/webknjaz>`__.
The usage now looks as follows:
.. code-block:: console
$ python -m build \
--config-setting=pure-python=true \
--config-setting=with-cython-tracing=true
(`#963 <https://github.com/aio-libs/yarl/issues/963>`__)
Contributor-facing changes
--------------------------
- A step-by-step ``Release Guide`` guide has
been added, describing how to release *yarl* -- by `@webknjaz <https://github.com/sponsors/webknjaz>`__.
This is primarily targeting maintainers. (`#960 <https://github.com/aio-libs/yarl/issues/960>`__)
- Coverage collection has been implemented for the Cython modules
-- by `@webknjaz <https://github.com/sponsors/webknjaz>`__.
It will also be reported to Codecov from any non-release CI jobs.
To measure coverage in a development environment, *yarl* can be
installed in editable mode:
.. code-block:: console
$ python -Im pip install -e .
Editable install produces C-files required for the Cython coverage
plugin to map the measurements back to the PYX-files.
`#961 <https://github.com/aio-libs/yarl/issues/961>`__
- It is now possible to request line tracing in Cython builds using the
``with-cython-tracing`` `PEP 517 <https://peps.python.org/pep-517>`__ config setting
-- `@webknjaz <https://github.com/sponsors/webknjaz>`__.
This can be used in CI and development environment to measure coverage
on Cython modules, but is not normally useful to the end-users or
downstream packagers.
Here's a usage example:
.. code-block:: console
$ python -Im pip install . --config-settings=with-cython-tracing=true
For editable installs, this setting is on by default. Otherwise, it's
off unless requested explicitly.
The following produces C-files required for the Cython coverage
plugin to map the measurements back to the PYX-files:
.. code-block:: console
$ python -Im pip install -e .
Alternatively, the ``YARL_CYTHON_TRACING=1`` environment variable
can be set to do the same as the `PEP 517 <https://peps.python.org/pep-517>`__ config setting.
`#962 <https://github.com/aio-libs/yarl/issues/962>`__
1.9.3 (2023-11-20)
==================
Bug fixes
---------
- Stopped dropping trailing slashes in ``yarl.URL.joinpath()`` -- by `@gmacon <https://github.com/sponsors/gmacon>`__. (`#862 <https://github.com/aio-libs/yarl/issues/862>`__, `#866 <https://github.com/aio-libs/yarl/issues/866>`__)
- Started accepting string subclasses in ``yarl.URL.__truediv__()`` operations (``URL / segment``) -- by `@mjpieters <https://github.com/sponsors/mjpieters>`__. (`#871 <https://github.com/aio-libs/yarl/issues/871>`__, `#884 <https://github.com/aio-libs/yarl/issues/884>`__)
- Fixed the human representation of URLs with square brackets in usernames and passwords -- by `@mjpieters <https://github.com/sponsors/mjpieters>`__. (`#876 <https://github.com/aio-libs/yarl/issues/876>`__, `#882 <https://github.com/aio-libs/yarl/issues/882>`__)
- Updated type hints to include ``URL.missing_port()``, ``URL.__bytes__()``
and the ``encoding`` argument to ``yarl.URL.joinpath()``
-- by `@mjpieters <https://github.com/sponsors/mjpieters>`__. (`#891 <https://github.com/aio-libs/yarl/issues/891>`__)
Packaging updates and notes for downstreams
-------------------------------------------
- Integrated Cython 3 to enable building *yarl* under Python 3.12 -- by `@mjpieters <https://github.com/sponsors/mjpieters>`__. (`#829 <https://github.com/aio-libs/yarl/issues/829>`__, `#881 <https://github.com/aio-libs/yarl/issues/881>`__)
- Declared modern ``setuptools.build_meta`` as the `PEP 517 <https://peps.python.org/pep-517>`__ build
backend in ``pyproject.toml`` explicitly -- by `@webknjaz <https://github.com/sponsors/webknjaz>`__. (`#886 <https://github.com/aio-libs/yarl/issues/886>`__)
- Converted most of the packaging setup into a declarative ``setup.cfg``
config -- by `@webknjaz <https://github.com/sponsors/webknjaz>`__. (`#890 <https://github.com/aio-libs/yarl/issues/890>`__)
- The packaging is replaced from an old-fashioned ``setup.py`` to an
in-tree `PEP 517 <https://peps.python.org/pep-517>`__ build backend -- by `@webknjaz <https://github.com/sponsors/webknjaz>`__.
Whenever the end-users or downstream packagers need to build ``yarl`` from
source (a Git checkout or an sdist), they may pass a ``config_settings``
flag ``--pure-python``. If this flag is not set, a C-extension will be built
and included into the distribution.
Here is how this can be done with ``pip``:
.. code-block:: console
$ python -m pip install . --config-settings=--pure-python=false
This will also work with ``-e | --editable``.
The same can be achieved via ``pypa/build``:
.. code-block:: console
$ python -m build --config-setting=--pure-python=false
Adding ``-w | --wheel`` can force ``pypa/build`` produce a wheel from source
directly, as opposed to building an ``sdist`` and then building from it. (`#893 <https://github.com/aio-libs/yarl/issues/893>`__)
.. attention::
v1.9.3 was the only version using the ``--pure-python`` setting name.
Later versions dropped the ``--`` prefix, making it just ``pure-python``.
- Declared Python 3.12 supported officially in the distribution package metadata
-- by `@edgarrmondragon <https://github.com/sponsors/edgarrmondragon>`__. (`#942 <https://github.com/aio-libs/yarl/issues/942>`__)
Contributor-facing changes
--------------------------
- A regression test for no-host URLs was added per `#821 <https://github.com/aio-libs/yarl/issues/821>`__
and ``3986`` -- by `@kenballus <https://github.com/sponsors/kenballus>`__. (`#821 <https://github.com/aio-libs/yarl/issues/821>`__, `#822 <https://github.com/aio-libs/yarl/issues/822>`__)
- Started testing *yarl* against Python 3.12 in CI -- by `@mjpieters <https://github.com/sponsors/mjpieters>`__. (`#881 <https://github.com/aio-libs/yarl/issues/881>`__)
- All Python 3.12 jobs are now marked as required to pass in CI
-- by `@edgarrmondragon <https://github.com/sponsors/edgarrmondragon>`__. (`#942 <https://github.com/aio-libs/yarl/issues/942>`__)
- MyST is now integrated in Sphinx -- by `@webknjaz <https://github.com/sponsors/webknjaz>`__.
This allows the contributors to author new documents in Markdown
when they have difficulties with going straight RST. (`#953 <https://github.com/aio-libs/yarl/issues/953>`__)
1.9.2 (2023-04-25)
==================
Bugfixes
--------
- Fix regression with ``yarl.URL.__truediv__()`` and absolute URLs with empty paths causing the raw path to lack the leading ``/``.
(`#854 <https://github.com/aio-libs/yarl/issues/854>`_)
1.9.1 (2023-04-21)
==================
Bugfixes
--------
- Marked tests that fail on older Python patch releases (< 3.7.10, < 3.8.8 and < 3.9.2) as expected to fail due to missing a security fix for CVE-2021-23336. (`#850 <https://github.com/aio-libs/yarl/issues/850>`_)
1.9.0 (2023-04-19)
==================
This release was never published to PyPI, due to issues with the build process.
Features
--------
- Added ``URL.joinpath(*elements)``, to create a new URL appending multiple path elements. (`#704 <https://github.com/aio-libs/yarl/issues/704>`_)
- Made ``URL.__truediv__()()`` return ``NotImplemented`` if called with an
unsupported type — by `@michaeljpeters <https://github.com/sponsors/michaeljpeters>`__.
(`#832 <https://github.com/aio-libs/yarl/issues/832>`_)
Bugfixes
--------
- Path normalization for absolute URLs no longer raises a ValueError exception
when ``..`` segments would otherwise go beyond the URL path root.
(`#536 <https://github.com/aio-libs/yarl/issues/536>`_)
- Fixed an issue with update_query() not getting rid of the query when argument is None. (`#792 <https://github.com/aio-libs/yarl/issues/792>`_)
- Added some input restrictions on with_port() function to prevent invalid boolean inputs or out of valid port inputs; handled incorrect 0 port representation. (`#793 <https://github.com/aio-libs/yarl/issues/793>`_)
- Made ``yarl.URL.build()`` raise a ``TypeError`` if the ``host`` argument is ``None`` — by `@paulpapacz <https://github.com/sponsors/paulpapacz>`__. (`#808 <https://github.com/aio-libs/yarl/issues/808>`_)
- Fixed an issue with ``update_query()`` getting rid of the query when the argument
is empty but not ``None``. (`#845 <https://github.com/aio-libs/yarl/issues/845>`_)
Misc
----
- `#220 <https://github.com/aio-libs/yarl/issues/220>`_
1.8.2 (2022-12-03)
==================
This is the first release that started shipping wheels for Python 3.11.
1.8.1 (2022-08-01)
==================
Misc
----
- `#694 <https://github.com/aio-libs/yarl/issues/694>`_, `#699 <https://github.com/aio-libs/yarl/issues/699>`_, `#700 <https://github.com/aio-libs/yarl/issues/700>`_, `#701 <https://github.com/aio-libs/yarl/issues/701>`_, `#702 <https://github.com/aio-libs/yarl/issues/702>`_, `#703 <https://github.com/aio-libs/yarl/issues/703>`_, `#739 <https://github.com/aio-libs/yarl/issues/739>`_
1.8.0 (2022-08-01)
==================
Features
--------
- Added ``URL.raw_suffix``, ``URL.suffix``, ``URL.raw_suffixes``, ``URL.suffixes``, ``URL.with_suffix``. (`#613 <https://github.com/aio-libs/yarl/issues/613>`_)
Improved Documentation
----------------------
- Fixed broken internal references to ``yarl.URL.human_repr()``.
(`#665 <https://github.com/aio-libs/yarl/issues/665>`_)
- Fixed broken external references to ``multidict:index`` docs. (`#665 <https://github.com/aio-libs/yarl/issues/665>`_)
Deprecations and Removals
-------------------------
- Dropped Python 3.6 support. (`#672 <https://github.com/aio-libs/yarl/issues/672>`_)
Misc
----
- `#646 <https://github.com/aio-libs/yarl/issues/646>`_, `#699 <https://github.com/aio-libs/yarl/issues/699>`_, `#701 <https://github.com/aio-libs/yarl/issues/701>`_
1.7.2 (2021-11-01)
==================
Bugfixes
--------
- Changed call in ``with_port()`` to stop reencoding parts of the URL that were already encoded. (`#623 <https://github.com/aio-libs/yarl/issues/623>`_)
1.7.1 (2021-10-07)
==================
Bugfixes
--------
- Fix 1.7.0 build error
1.7.0 (2021-10-06)
==================
Features
--------
- Add ``__bytes__()`` magic method so that ``bytes(url)`` will work and use optimal ASCII encoding.
(`#582 <https://github.com/aio-libs/yarl/issues/582>`_)
- Started shipping platform-specific arm64 wheels for Apple Silicon. (`#622 <https://github.com/aio-libs/yarl/issues/622>`_)
- Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes. (`#622 <https://github.com/aio-libs/yarl/issues/622>`_)
- Added support for Python 3.10. (`#622 <https://github.com/aio-libs/yarl/issues/622>`_)
1.6.3 (2020-11-14)
==================
Bugfixes
--------
- No longer loose characters when decoding incorrect percent-sequences (like ``%e2%82%f8``). All non-decodable percent-sequences are now preserved.
`#517 <https://github.com/aio-libs/yarl/issues/517>`_
- Provide x86 Windows wheels.
`#535 <https://github.com/aio-libs/yarl/issues/535>`_
----
1.6.2 (2020-10-12)
==================
Bugfixes
--------
- Provide generated ``.c`` files in TarBall distribution.
`#530 <https://github.com/aio-libs/multidict/issues/530>`_
1.6.1 (2020-10-12)
==================
Features
--------
- Provide wheels for ``aarch64``, ``i686``, ``ppc64le``, ``s390x`` architectures on
Linux as well as ``x86_64``.
`#507 <https://github.com/aio-libs/yarl/issues/507>`_
- Provide wheels for Python 3.9.
`#526 <https://github.com/aio-libs/yarl/issues/526>`_
Bugfixes
--------
- ``human_repr()`` now always produces valid representation equivalent to the original URL (if the original URL is valid).
`#511 <https://github.com/aio-libs/yarl/issues/511>`_
- Fixed requoting a single percent followed by a percent-encoded character in the Cython implementation.
`#514 <https://github.com/aio-libs/yarl/issues/514>`_
- Fix ValueError when decoding ``%`` which is not followed by two hexadecimal digits.
`#516 <https://github.com/aio-libs/yarl/issues/516>`_
- Fix decoding ``%`` followed by a space and hexadecimal digit.
`#520 <https://github.com/aio-libs/yarl/issues/520>`_
- Fix annotation of ``with_query()``/``update_query()`` methods for ``key=[val1, val2]`` case.
`#528 <https://github.com/aio-libs/yarl/issues/528>`_
Removal
-------
- Drop Python 3.5 support; Python 3.6 is the minimal supported Python version.
----
1.6.0 (2020-09-23)
==================
Features
--------
- Allow for int and float subclasses in query, while still denying bool.
`#492 <https://github.com/aio-libs/yarl/issues/492>`_
Bugfixes
--------
- Do not requote arguments in ``URL.build()``, ``with_xxx()`` and in ``/`` operator.
`#502 <https://github.com/aio-libs/yarl/issues/502>`_
- Keep IPv6 brackets in ``origin()``.
`#504 <https://github.com/aio-libs/yarl/issues/504>`_
----
1.5.1 (2020-08-01)
==================
Bugfixes
--------
- Fix including relocated internal ``yarl._quoting_c`` C-extension into published PyPI dists.
`#485 <https://github.com/aio-libs/yarl/issues/485>`_
Misc
----
- `#484 <https://github.com/aio-libs/yarl/issues/484>`_
----
1.5.0 (2020-07-26)
==================
Features
--------
- Convert host to lowercase on URL building.
`#386 <https://github.com/aio-libs/yarl/issues/386>`_
- Allow using ``mod`` operator (``%``) for updating query string (an alias for ``update_query()`` method).
`#435 <https://github.com/aio-libs/yarl/issues/435>`_
- Allow use of sequences such as ``list`` and ``tuple`` in the values
of a mapping such as ``dict`` to represent that a key has many values::
url = URL("http://example.com")
assert url.with_query({"a": [1, 2]}) == URL("http://example.com/?a=1&a=2")
`#443 <https://github.com/aio-libs/yarl/issues/443>`_
- Support ``URL.build()`` with scheme and path (creates a relative URL).
`#464 <https://github.com/aio-libs/yarl/issues/464>`_
- Cache slow IDNA encode/decode calls.
`#476 <https://github.com/aio-libs/yarl/issues/476>`_
- Add ``@final`` / ``Final`` type hints
`#477 <https://github.com/aio-libs/yarl/issues/477>`_
- Support URL authority/raw_authority properties and authority argument of ``URL.build()`` method.
`#478 <https://github.com/aio-libs/yarl/issues/478>`_
- Hide the library implementation details, make the exposed public list very clean.
`#483 <https://github.com/aio-libs/yarl/issues/483>`_
Bugfixes
--------
- Fix tests with newer Python (3.7.6, 3.8.1 and 3.9.0+).
`#409 <https://github.com/aio-libs/yarl/issues/409>`_
- Fix a bug where query component, passed in a form of mapping or sequence, is unquoted in unexpected way.
`#426 <https://github.com/aio-libs/yarl/issues/426>`_
- Hide ``Query`` and ``QueryVariable`` type aliases in ``__init__.pyi``, now they are prefixed with underscore.
`#431 <https://github.com/aio-libs/yarl/issues/431>`_
- Keep IPv6 brackets after updating port/user/password.
`#451 <https://github.com/aio-libs/yarl/issues/451>`_
----
1.4.2 (2019-12-05)
==================
Features
--------
- Workaround for missing ``str.isascii()`` in Python 3.6
`#389 <https://github.com/aio-libs/yarl/issues/389>`_
----
1.4.1 (2019-11-29)
==================
* Fix regression, make the library work on Python 3.5 and 3.6 again.
1.4.0 (2019-11-29)
==================
* Distinguish an empty password in URL from a password not provided at all (#262)
* Fixed annotations for optional parameters of ``URL.build`` (#309)
* Use None as default value of ``user`` parameter of ``URL.build`` (#309)
* Enforce building C Accelerated modules when installing from source tarball, use
``YARL_NO_EXTENSIONS`` environment variable for falling back to (slower) Pure Python
implementation (#329)
* Drop Python 3.5 support
* Fix quoting of plus in path by pure python version (#339)
* Don't create a new URL if fragment is unchanged (#292)
* Included in error message the path that produces starting slash forbidden error (#376)
* Skip slow IDNA encoding for ASCII-only strings (#387)
1.3.0 (2018-12-11)
==================
* Fix annotations for ``query`` parameter (#207)
* An incoming query sequence can have int variables (the same as for
Mapping type) (#208)
* Add ``URL.explicit_port`` property (#218)
* Give a friendlier error when port can't be converted to int (#168)
* ``bool(URL())`` now returns ``False`` (#272)
1.2.6 (2018-06-14)
==================
* Drop Python 3.4 trove classifier (#205)
1.2.5 (2018-05-23)
==================
* Fix annotations for ``build`` (#199)
1.2.4 (2018-05-08)
==================
* Fix annotations for ``cached_property`` (#195)
1.2.3 (2018-05-03)
==================
* Accept ``str`` subclasses in ``URL`` constructor (#190)
1.2.2 (2018-05-01)
==================
* Fix build
1.2.1 (2018-04-30)
==================
* Pin minimal required Python to 3.5.3 (#189)
1.2.0 (2018-04-30)
==================
* Forbid inheritance, replace ``__init__`` with ``__new__`` (#171)
* Support PEP-561 (provide type hinting marker) (#182)
1.1.1 (2018-02-17)
==================
* Fix performance regression: don't encode empty ``netloc`` (#170)
1.1.0 (2018-01-21)
==================
* Make pure Python quoter consistent with Cython version (#162)
1.0.0 (2018-01-15)
==================
* Use fast path if quoted string does not need requoting (#154)
* Speed up quoting/unquoting by ``_Quoter`` and ``_Unquoter`` classes (#155)
* Drop ``yarl.quote`` and ``yarl.unquote`` public functions (#155)
* Add custom string writer, reuse static buffer if available (#157)
Code is 50-80 times faster than Pure Python version (was 4-5 times faster)
* Don't recode IP zone (#144)
* Support ``encoded=True`` in ``yarl.URL.build()`` (#158)
* Fix updating query with multiple keys (#160)
0.18.0 (2018-01-10)
===================
* Fallback to IDNA 2003 if domain name is not IDNA 2008 compatible (#152)
0.17.0 (2017-12-30)
===================
* Use IDNA 2008 for domain name processing (#149)
0.16.0 (2017-12-07)
===================
* Fix raising ``TypeError`` by ``url.query_string()`` after
``url.with_query({})`` (empty mapping) (#141)
0.15.0 (2017-11-23)
===================
* Add ``raw_path_qs`` attribute (#137)
0.14.2 (2017-11-14)
===================
* Restore ``strict`` parameter as no-op in ``quote`` / ``unquote``
0.14.1 (2017-11-13)
===================
* Restore ``strict`` parameter as no-op for sake of compatibility with
aiohttp 2.2
0.14.0 (2017-11-11)
===================
* Drop strict mode (#123)
* Fix ``"ValueError: Unallowed PCT %"`` when there's a ``"%"`` in the URL (#124)
0.13.0 (2017-10-01)
===================
* Document ``encoded`` parameter (#102)
* Support relative URLs like ``'?key=value'`` (#100)
* Unsafe encoding for QS fixed. Encode ``;`` character in value parameter (#104)
* Process passwords without user names (#95)
0.12.0 (2017-06-26)
===================
* Properly support paths without leading slash in ``URL.with_path()`` (#90)
* Enable type annotation checks
0.11.0 (2017-06-26)
===================
* Normalize path (#86)
* Clear query and fragment parts in ``.with_path()`` (#85)
0.10.3 (2017-06-13)
===================
* Prevent double URL arguments unquoting (#83)
0.10.2 (2017-05-05)
===================
* Unexpected hash behavior (#75)
0.10.1 (2017-05-03)
===================
* Unexpected compare behavior (#73)
* Do not quote or unquote + if not a query string. (#74)
0.10.0 (2017-03-14)
===================
* Added ``URL.build`` class method (#58)
* Added ``path_qs`` attribute (#42)
0.9.8 (2017-02-16)
==================
* Do not quote ``:`` in path
0.9.7 (2017-02-16)
==================
* Load from pickle without _cache (#56)
* Percent-encoded pluses in path variables become spaces (#59)
0.9.6 (2017-02-15)
==================
* Revert backward incompatible change (BaseURL)
0.9.5 (2017-02-14)
==================
* Fix BaseURL rich comparison support
0.9.4 (2017-02-14)
==================
* Use BaseURL
0.9.3 (2017-02-14)
==================
* Added BaseURL
0.9.2 (2017-02-08)
==================
* Remove debug print
0.9.1 (2017-02-07)
==================
* Do not lose tail chars (#45)
0.9.0 (2017-02-07)
==================
* Allow to quote ``%`` in non strict mode (#21)
* Incorrect parsing of query parameters with %3B (;) inside (#34)
* Fix core dumps (#41)
* ``tmpbuf`` - compiling error (#43)
* Added ``URL.update_path()`` method
* Added ``URL.update_query()`` method (#47)
0.8.1 (2016-12-03)
==================
* Fix broken aiohttp: revert back ``quote`` / ``unquote``.
0.8.0 (2016-12-03)
==================
* Support more verbose error messages in ``.with_query()`` (#24)
* Don't percent-encode ``@`` and ``:`` in path (#32)
* Don't expose ``yarl.quote`` and ``yarl.unquote``, these functions are
part of private API
0.7.1 (2016-11-18)
==================
* Accept not only ``str`` but all classes inherited from ``str`` also (#25)
0.7.0 (2016-11-07)
==================
* Accept ``int`` as value for ``.with_query()``
0.6.0 (2016-11-07)
==================
* Explicitly use UTF8 encoding in ``setup.py`` (#20)
* Properly unquote non-UTF8 strings (#19)
0.5.3 (2016-11-02)
==================
* Don't use ``typing.NamedTuple`` fields but indexes on URL construction
0.5.2 (2016-11-02)
==================
* Inline ``_encode`` class method
0.5.1 (2016-11-02)
==================
* Make URL construction faster by removing extra classmethod calls
0.5.0 (2016-11-02)
==================
* Add Cython optimization for quoting/unquoting
* Provide binary wheels
0.4.3 (2016-09-29)
==================
* Fix typing stubs
0.4.2 (2016-09-29)
==================
* Expose ``quote()`` and ``unquote()`` as public API
0.4.1 (2016-09-28)
==================
* Support empty values in query (``'/path?arg'``)
0.4.0 (2016-09-27)
==================
* Introduce ``relative()`` (#16)
0.3.2 (2016-09-27)
==================
* Typo fixes #15
0.3.1 (2016-09-26)
==================
* Support sequence of pairs as ``with_query()`` parameter
0.3.0 (2016-09-26)
==================
* Introduce ``is_default_port()``
0.2.1 (2016-09-26)
==================
* Raise ValueError for URLs like 'http://:8080/'
0.2.0 (2016-09-18)
==================
* Avoid doubling slashes when joining paths (#13)
* Appending path starting from slash is forbidden (#12)
0.1.4 (2016-09-09)
==================
* Add ``kwargs`` support for ``with_query()`` (#10)
0.1.3 (2016-09-07)
==================
* Document ``with_query()``, ``with_fragment()`` and ``origin()``
* Allow ``None`` for ``with_query()`` and ``with_fragment()``
0.1.2 (2016-09-07)
==================
* Fix links, tune docs theme.
0.1.1 (2016-09-06)
==================
* Update README, old version used obsolete API
0.1.0 (2016-09-06)
==================
* The library was deeply refactored, bytes are gone away but all
accepted strings are encoded if needed.
0.0.1 (2016-08-30)
==================
* The first release.
Raw data
{
"_id": null,
"home_page": "https://github.com/aio-libs/yarl",
"name": "yarl",
"maintainer": "aiohttp team <team@aiohttp.org>",
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": "team@aiohttp.org",
"keywords": "cython, cext, yarl",
"author": "Andrew Svetlov",
"author_email": "andrew.svetlov@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/b7/9d/4b94a8e6d2b51b599516a5cb88e5bc99b4d8d4583e468057eaa29d5f0918/yarl-1.18.3.tar.gz",
"platform": null,
"description": "yarl\n====\n\nThe module provides handy URL class for URL parsing and changing.\n\n.. image:: https://github.com/aio-libs/yarl/workflows/CI/badge.svg\n :target: https://github.com/aio-libs/yarl/actions?query=workflow%3ACI\n :align: right\n\n.. image:: https://codecov.io/gh/aio-libs/yarl/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/aio-libs/yarl\n\n.. image:: https://img.shields.io/endpoint?url=https://codspeed.io/badge.json\n :target: https://codspeed.io/aio-libs/yarl\n\n.. image:: https://badge.fury.io/py/yarl.svg\n :target: https://badge.fury.io/py/yarl\n\n.. image:: https://readthedocs.org/projects/yarl/badge/?version=latest\n :target: https://yarl.aio-libs.org\n\n.. image:: https://img.shields.io/pypi/pyversions/yarl.svg\n :target: https://pypi.python.org/pypi/yarl\n\n.. image:: https://img.shields.io/matrix/aio-libs:matrix.org?label=Discuss%20on%20Matrix%20at%20%23aio-libs%3Amatrix.org&logo=matrix&server_fqdn=matrix.org&style=flat\n :target: https://matrix.to/#/%23aio-libs:matrix.org\n :alt: Matrix Room \u2014 #aio-libs:matrix.org\n\n.. image:: https://img.shields.io/matrix/aio-libs-space:matrix.org?label=Discuss%20on%20Matrix%20at%20%23aio-libs-space%3Amatrix.org&logo=matrix&server_fqdn=matrix.org&style=flat\n :target: https://matrix.to/#/%23aio-libs-space:matrix.org\n :alt: Matrix Space \u2014 #aio-libs-space:matrix.org\n\n\nIntroduction\n------------\n\nUrl is constructed from ``str``:\n\n.. code-block:: pycon\n\n >>> from yarl import URL\n >>> url = URL('https://www.python.org/~guido?arg=1#frag')\n >>> url\n URL('https://www.python.org/~guido?arg=1#frag')\n\nAll url parts: *scheme*, *user*, *password*, *host*, *port*, *path*,\n*query* and *fragment* are accessible by properties:\n\n.. code-block:: pycon\n\n >>> url.scheme\n 'https'\n >>> url.host\n 'www.python.org'\n >>> url.path\n '/~guido'\n >>> url.query_string\n 'arg=1'\n >>> url.query\n <MultiDictProxy('arg': '1')>\n >>> url.fragment\n 'frag'\n\nAll url manipulations produce a new url object:\n\n.. code-block:: pycon\n\n >>> url = URL('https://www.python.org')\n >>> url / 'foo' / 'bar'\n URL('https://www.python.org/foo/bar')\n >>> url / 'foo' % {'bar': 'baz'}\n URL('https://www.python.org/foo?bar=baz')\n\nStrings passed to constructor and modification methods are\nautomatically encoded giving canonical representation as result:\n\n.. code-block:: pycon\n\n >>> url = URL('https://www.python.org/\u0448\u043b\u044f\u0445')\n >>> url\n URL('https://www.python.org/%D1%88%D0%BB%D1%8F%D1%85')\n\nRegular properties are *percent-decoded*, use ``raw_`` versions for\ngetting *encoded* strings:\n\n.. code-block:: pycon\n\n >>> url.path\n '/\u0448\u043b\u044f\u0445'\n\n >>> url.raw_path\n '/%D1%88%D0%BB%D1%8F%D1%85'\n\nHuman readable representation of URL is available as ``.human_repr()``:\n\n.. code-block:: pycon\n\n >>> url.human_repr()\n 'https://www.python.org/\u0448\u043b\u044f\u0445'\n\nFor full documentation please read https://yarl.aio-libs.org.\n\n\nInstallation\n------------\n\n::\n\n $ pip install yarl\n\nThe library is Python 3 only!\n\nPyPI contains binary wheels for Linux, Windows and MacOS. If you want to install\n``yarl`` on another operating system where wheels are not provided,\nthe the tarball will be used to compile the library from\nthe source code. It requires a C compiler and and Python headers installed.\n\nTo skip the compilation you must explicitly opt-in by using a PEP 517\nconfiguration setting ``pure-python``, or setting the ``YARL_NO_EXTENSIONS``\nenvironment variable to a non-empty value, e.g.:\n\n.. code-block:: console\n\n $ pip install yarl --config-settings=pure-python=false\n\nPlease note that the pure-Python (uncompiled) version is much slower. However,\nPyPy always uses a pure-Python implementation, and, as such, it is unaffected\nby this variable.\n\nDependencies\n------------\n\nYARL requires multidict_ and propcache_ libraries.\n\n\nAPI documentation\n------------------\n\nThe documentation is located at https://yarl.aio-libs.org.\n\n\nWhy isn't boolean supported by the URL query API?\n-------------------------------------------------\n\nThere is no standard for boolean representation of boolean values.\n\nSome systems prefer ``true``/``false``, others like ``yes``/``no``, ``on``/``off``,\n``Y``/``N``, ``1``/``0``, etc.\n\n``yarl`` cannot make an unambiguous decision on how to serialize ``bool`` values because\nit is specific to how the end-user's application is built and would be different for\ndifferent apps. The library doesn't accept booleans in the API; a user should convert\nbools into strings using own preferred translation protocol.\n\n\nComparison with other URL libraries\n------------------------------------\n\n* furl (https://pypi.python.org/pypi/furl)\n\n The library has rich functionality but the ``furl`` object is mutable.\n\n I'm afraid to pass this object into foreign code: who knows if the\n code will modify my url in a terrible way while I just want to send URL\n with handy helpers for accessing URL properties.\n\n ``furl`` has other non-obvious tricky things but the main objection\n is mutability.\n\n* URLObject (https://pypi.python.org/pypi/URLObject)\n\n URLObject is immutable, that's pretty good.\n\n Every URL change generates a new URL object.\n\n But the library doesn't do any decode/encode transformations leaving the\n end user to cope with these gory details.\n\n\nSource code\n-----------\n\nThe project is hosted on GitHub_\n\nPlease file an issue on the `bug tracker\n<https://github.com/aio-libs/yarl/issues>`_ if you have found a bug\nor have some suggestion in order to improve the library.\n\nDiscussion list\n---------------\n\n*aio-libs* google group: https://groups.google.com/forum/#!forum/aio-libs\n\nFeel free to post your questions and ideas here.\n\n\nAuthors and License\n-------------------\n\nThe ``yarl`` package is written by Andrew Svetlov.\n\nIt's *Apache 2* licensed and freely available.\n\n\n.. _GitHub: https://github.com/aio-libs/yarl\n\n.. _multidict: https://github.com/aio-libs/multidict\n\n.. _propcache: https://github.com/aio-libs/propcache\n\n=========\nChangelog\n=========\n\n..\n You should *NOT* be adding new change log entries to this file, this\n file is managed by towncrier. You *may* edit previous change logs to\n fix problems like typo corrections or such.\n To add a new change log entry, please see\n https://pip.pypa.io/en/latest/development/#adding-a-news-entry\n we named the news folder \"changes\".\n\n WARNING: Don't drop the next directive!\n\n.. towncrier release notes start\n\n1.18.3\n======\n\n*(2024-12-01)*\n\n\nBug fixes\n---------\n\n- Fixed uppercase ASCII hosts being rejected by ``URL.build()()`` and ``yarl.URL.with_host()`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#954 <https://github.com/aio-libs/yarl/issues/954>`__, `#1442 <https://github.com/aio-libs/yarl/issues/1442>`__.\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performances of multiple path properties on cache miss -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1443 <https://github.com/aio-libs/yarl/issues/1443>`__.\n\n\n----\n\n\n1.18.2\n======\n\n*(2024-11-29)*\n\n\nNo significant changes.\n\n\n----\n\n\n1.18.1\n======\n\n*(2024-11-29)*\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved cache performance when ``~yarl.URL`` objects are constructed from ``yarl.URL.build()`` with ``encoded=True`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1432 <https://github.com/aio-libs/yarl/issues/1432>`__.\n\n- Improved cache performance for operations that produce a new ``~yarl.URL`` object -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1434 <https://github.com/aio-libs/yarl/issues/1434>`__, `#1436 <https://github.com/aio-libs/yarl/issues/1436>`__.\n\n\n----\n\n\n1.18.0\n======\n\n*(2024-11-21)*\n\n\nFeatures\n--------\n\n- Added ``keep_query`` and ``keep_fragment`` flags in the ``yarl.URL.with_path()``, ``yarl.URL.with_name()`` and ``yarl.URL.with_suffix()`` methods, allowing users to optionally retain the query string and fragment in the resulting URL when replacing the path -- by `@paul-nameless <https://github.com/sponsors/paul-nameless>`__.\n\n *Related issues and pull requests on GitHub:*\n `#111 <https://github.com/aio-libs/yarl/issues/111>`__, `#1421 <https://github.com/aio-libs/yarl/issues/1421>`__.\n\n\nContributor-facing changes\n--------------------------\n\n- Started running downstream ``aiohttp`` tests in CI -- by `@Cycloctane <https://github.com/sponsors/Cycloctane>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1415 <https://github.com/aio-libs/yarl/issues/1415>`__.\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performance of converting ``~yarl.URL`` to a string -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1422 <https://github.com/aio-libs/yarl/issues/1422>`__.\n\n\n----\n\n\n1.17.2\n======\n\n*(2024-11-17)*\n\n\nBug fixes\n---------\n\n- Stopped implicitly allowing the use of Cython pre-release versions when\n building the distribution package -- by `@ajsanchezsanz <https://github.com/sponsors/ajsanchezsanz>`__ and\n `@markgreene74 <https://github.com/sponsors/markgreene74>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1411 <https://github.com/aio-libs/yarl/issues/1411>`__, `#1412 <https://github.com/aio-libs/yarl/issues/1412>`__.\n\n- Fixed a bug causing ``~yarl.URL.port`` to return the default port when the given port was zero\n -- by `@gmacon <https://github.com/sponsors/gmacon>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1413 <https://github.com/aio-libs/yarl/issues/1413>`__.\n\n\nFeatures\n--------\n\n- Make error messages include details of incorrect type when ``port`` is not int in ``yarl.URL.build()``.\n -- by `@Cycloctane <https://github.com/sponsors/Cycloctane>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1414 <https://github.com/aio-libs/yarl/issues/1414>`__.\n\n\nPackaging updates and notes for downstreams\n-------------------------------------------\n\n- Stopped implicitly allowing the use of Cython pre-release versions when\n building the distribution package -- by `@ajsanchezsanz <https://github.com/sponsors/ajsanchezsanz>`__ and\n `@markgreene74 <https://github.com/sponsors/markgreene74>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1411 <https://github.com/aio-libs/yarl/issues/1411>`__, `#1412 <https://github.com/aio-libs/yarl/issues/1412>`__.\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performance of the ``yarl.URL.joinpath()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1418 <https://github.com/aio-libs/yarl/issues/1418>`__.\n\n\n----\n\n\n1.17.1\n======\n\n*(2024-10-30)*\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performance of many ``~yarl.URL`` methods -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1396 <https://github.com/aio-libs/yarl/issues/1396>`__, `#1397 <https://github.com/aio-libs/yarl/issues/1397>`__, `#1398 <https://github.com/aio-libs/yarl/issues/1398>`__.\n\n- Improved performance of passing a `dict` or `str` to ``yarl.URL.extend_query()`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1401 <https://github.com/aio-libs/yarl/issues/1401>`__.\n\n\n----\n\n\n1.17.0\n======\n\n*(2024-10-28)*\n\n\nFeatures\n--------\n\n- Added ``~yarl.URL.host_port_subcomponent`` which returns the ``3986#section-3.2.2`` host and ``3986#section-3.2.3`` port subcomponent -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1375 <https://github.com/aio-libs/yarl/issues/1375>`__.\n\n\n----\n\n\n1.16.0\n======\n\n*(2024-10-21)*\n\n\nBug fixes\n---------\n\n- Fixed blocking I/O to load Python code when creating a new ``~yarl.URL`` with non-ascii characters in the network location part -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1342 <https://github.com/aio-libs/yarl/issues/1342>`__.\n\n\nRemovals and backward incompatible breaking changes\n---------------------------------------------------\n\n- Migrated to using a single cache for encoding hosts -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n Passing ``ip_address_size`` and ``host_validate_size`` to ``yarl.cache_configure()`` is deprecated in favor of the new ``encode_host_size`` parameter and will be removed in a future release. For backwards compatibility, the old parameters affect the ``encode_host`` cache size.\n\n *Related issues and pull requests on GitHub:*\n `#1348 <https://github.com/aio-libs/yarl/issues/1348>`__, `#1357 <https://github.com/aio-libs/yarl/issues/1357>`__, `#1363 <https://github.com/aio-libs/yarl/issues/1363>`__.\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performance of constructing ``~yarl.URL`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1336 <https://github.com/aio-libs/yarl/issues/1336>`__.\n\n- Improved performance of calling ``yarl.URL.build()`` and constructing unencoded ``~yarl.URL`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1345 <https://github.com/aio-libs/yarl/issues/1345>`__.\n\n- Reworked the internal encoding cache to improve performance on cache hit -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1369 <https://github.com/aio-libs/yarl/issues/1369>`__.\n\n\n----\n\n\n1.15.5\n======\n\n*(2024-10-18)*\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performance of the ``yarl.URL.joinpath()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1304 <https://github.com/aio-libs/yarl/issues/1304>`__.\n\n- Improved performance of the ``yarl.URL.extend_query()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1305 <https://github.com/aio-libs/yarl/issues/1305>`__.\n\n- Improved performance of the ``yarl.URL.origin()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1306 <https://github.com/aio-libs/yarl/issues/1306>`__.\n\n- Improved performance of the ``yarl.URL.with_path()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1307 <https://github.com/aio-libs/yarl/issues/1307>`__.\n\n- Improved performance of the ``yarl.URL.with_query()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1308 <https://github.com/aio-libs/yarl/issues/1308>`__, `#1328 <https://github.com/aio-libs/yarl/issues/1328>`__.\n\n- Improved performance of the ``yarl.URL.update_query()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1309 <https://github.com/aio-libs/yarl/issues/1309>`__, `#1327 <https://github.com/aio-libs/yarl/issues/1327>`__.\n\n- Improved performance of the ``yarl.URL.join()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1313 <https://github.com/aio-libs/yarl/issues/1313>`__.\n\n- Improved performance of ``~yarl.URL`` equality checks -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1315 <https://github.com/aio-libs/yarl/issues/1315>`__.\n\n- Improved performance of ``~yarl.URL`` methods that modify the network location -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1316 <https://github.com/aio-libs/yarl/issues/1316>`__.\n\n- Improved performance of the ``yarl.URL.with_fragment()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1317 <https://github.com/aio-libs/yarl/issues/1317>`__.\n\n- Improved performance of calculating the hash of ``~yarl.URL`` objects -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1318 <https://github.com/aio-libs/yarl/issues/1318>`__.\n\n- Improved performance of the ``yarl.URL.relative()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1319 <https://github.com/aio-libs/yarl/issues/1319>`__.\n\n- Improved performance of the ``yarl.URL.with_name()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1320 <https://github.com/aio-libs/yarl/issues/1320>`__.\n\n- Improved performance of ``~yarl.URL.parent`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1321 <https://github.com/aio-libs/yarl/issues/1321>`__.\n\n- Improved performance of the ``yarl.URL.with_scheme()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1322 <https://github.com/aio-libs/yarl/issues/1322>`__.\n\n\n----\n\n\n1.15.4\n======\n\n*(2024-10-16)*\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performance of the quoter when all characters are safe -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1288 <https://github.com/aio-libs/yarl/issues/1288>`__.\n\n- Improved performance of unquoting strings -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1292 <https://github.com/aio-libs/yarl/issues/1292>`__, `#1293 <https://github.com/aio-libs/yarl/issues/1293>`__.\n\n- Improved performance of calling ``yarl.URL.build()`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1297 <https://github.com/aio-libs/yarl/issues/1297>`__.\n\n\n----\n\n\n1.15.3\n======\n\n*(2024-10-15)*\n\n\nBug fixes\n---------\n\n- Fixed ``yarl.URL.build()`` failing to validate paths must start with a ``/`` when passing ``authority`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n The validation only worked correctly when passing ``host``.\n\n *Related issues and pull requests on GitHub:*\n `#1265 <https://github.com/aio-libs/yarl/issues/1265>`__.\n\n\nRemovals and backward incompatible breaking changes\n---------------------------------------------------\n\n- Removed support for Python 3.8 as it has reached end of life -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1203 <https://github.com/aio-libs/yarl/issues/1203>`__.\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performance of constructing ``~yarl.URL`` when the net location is only the host -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1271 <https://github.com/aio-libs/yarl/issues/1271>`__.\n\n\n----\n\n\n1.15.2\n======\n\n*(2024-10-13)*\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performance of converting ``~yarl.URL`` to a string -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1234 <https://github.com/aio-libs/yarl/issues/1234>`__.\n\n- Improved performance of ``yarl.URL.joinpath()`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1248 <https://github.com/aio-libs/yarl/issues/1248>`__, `#1250 <https://github.com/aio-libs/yarl/issues/1250>`__.\n\n- Improved performance of constructing query strings from ``~multidict.MultiDict`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1256 <https://github.com/aio-libs/yarl/issues/1256>`__.\n\n- Improved performance of constructing query strings with ``int`` values -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1259 <https://github.com/aio-libs/yarl/issues/1259>`__.\n\n\n----\n\n\n1.15.1\n======\n\n*(2024-10-12)*\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performance of calling ``yarl.URL.build()`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1222 <https://github.com/aio-libs/yarl/issues/1222>`__.\n\n- Improved performance of all ``~yarl.URL`` methods that create new ``~yarl.URL`` objects -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1226 <https://github.com/aio-libs/yarl/issues/1226>`__.\n\n- Improved performance of ``~yarl.URL`` methods that modify the network location -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1229 <https://github.com/aio-libs/yarl/issues/1229>`__.\n\n\n----\n\n\n1.15.0\n======\n\n*(2024-10-11)*\n\n\nBug fixes\n---------\n\n- Fixed validation with ``yarl.URL.with_scheme()`` when passed scheme is not lowercase -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1189 <https://github.com/aio-libs/yarl/issues/1189>`__.\n\n\nFeatures\n--------\n\n- Started building ``armv7l`` wheels -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1204 <https://github.com/aio-libs/yarl/issues/1204>`__.\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performance of constructing unencoded ``~yarl.URL`` objects -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1188 <https://github.com/aio-libs/yarl/issues/1188>`__.\n\n- Added a cache for parsing hosts to reduce overhead of encoding ``~yarl.URL`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1190 <https://github.com/aio-libs/yarl/issues/1190>`__.\n\n- Improved performance of constructing query strings from ``~collections.abc.Mapping`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1193 <https://github.com/aio-libs/yarl/issues/1193>`__.\n\n- Improved performance of converting ``~yarl.URL`` objects to strings -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1198 <https://github.com/aio-libs/yarl/issues/1198>`__.\n\n\n----\n\n\n1.14.0\n======\n\n*(2024-10-08)*\n\n\nPackaging updates and notes for downstreams\n-------------------------------------------\n\n- Switched to using the ``propcache`` package for property caching\n -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n The ``propcache`` package is derived from the property caching\n code in ``yarl`` and has been broken out to avoid maintaining it for multiple\n projects.\n\n *Related issues and pull requests on GitHub:*\n `#1169 <https://github.com/aio-libs/yarl/issues/1169>`__.\n\n\nContributor-facing changes\n--------------------------\n\n- Started testing with Hypothesis -- by `@webknjaz <https://github.com/sponsors/webknjaz>`__ and `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n Special thanks to `@Zac-HD <https://github.com/sponsors/Zac-HD>`__ for helping us get started with this framework.\n\n *Related issues and pull requests on GitHub:*\n `#860 <https://github.com/aio-libs/yarl/issues/860>`__.\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performance of ``yarl.URL.is_default_port()`` when no explicit port is set -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1168 <https://github.com/aio-libs/yarl/issues/1168>`__.\n\n- Improved performance of converting ``~yarl.URL`` to a string when no explicit port is set -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1170 <https://github.com/aio-libs/yarl/issues/1170>`__.\n\n- Improved performance of the ``yarl.URL.origin()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1175 <https://github.com/aio-libs/yarl/issues/1175>`__.\n\n- Improved performance of encoding hosts -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1176 <https://github.com/aio-libs/yarl/issues/1176>`__.\n\n\n----\n\n\n1.13.1\n======\n\n*(2024-09-27)*\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performance of calling ``yarl.URL.build()`` with ``authority`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1163 <https://github.com/aio-libs/yarl/issues/1163>`__.\n\n\n----\n\n\n1.13.0\n======\n\n*(2024-09-26)*\n\n\nBug fixes\n---------\n\n- Started rejecting ASCII hostnames with invalid characters. For host strings that\n look like authority strings, the exception message includes advice on what to do\n instead -- by `@mjpieters <https://github.com/sponsors/mjpieters>`__.\n\n *Related issues and pull requests on GitHub:*\n `#880 <https://github.com/aio-libs/yarl/issues/880>`__, `#954 <https://github.com/aio-libs/yarl/issues/954>`__.\n\n- Fixed IPv6 addresses missing brackets when the ``~yarl.URL`` was converted to a string -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1157 <https://github.com/aio-libs/yarl/issues/1157>`__, `#1158 <https://github.com/aio-libs/yarl/issues/1158>`__.\n\n\nFeatures\n--------\n\n- Added ``~yarl.URL.host_subcomponent`` which returns the ``3986#section-3.2.2`` host subcomponent -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n The only current practical difference between ``~yarl.URL.raw_host`` and ``~yarl.URL.host_subcomponent`` is that IPv6 addresses are returned bracketed.\n\n *Related issues and pull requests on GitHub:*\n `#1159 <https://github.com/aio-libs/yarl/issues/1159>`__.\n\n\n----\n\n\n1.12.1\n======\n\n*(2024-09-23)*\n\n\nNo significant changes.\n\n\n----\n\n\n1.12.0\n======\n\n*(2024-09-23)*\n\n\nFeatures\n--------\n\n- Added ``~yarl.URL.path_safe`` to be able to fetch the path without ``%2F`` and ``%25`` decoded -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1150 <https://github.com/aio-libs/yarl/issues/1150>`__.\n\n\nRemovals and backward incompatible breaking changes\n---------------------------------------------------\n\n- Restore decoding ``%2F`` (``/``) in ``URL.path`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n This change restored the behavior before `#1057 <https://github.com/aio-libs/yarl/issues/1057>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1151 <https://github.com/aio-libs/yarl/issues/1151>`__.\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performance of processing paths -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1143 <https://github.com/aio-libs/yarl/issues/1143>`__.\n\n\n----\n\n\n1.11.1\n======\n\n*(2024-09-09)*\n\n\nBug fixes\n---------\n\n- Allowed scheme replacement for relative URLs if the scheme does not require a host -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#280 <https://github.com/aio-libs/yarl/issues/280>`__, `#1138 <https://github.com/aio-libs/yarl/issues/1138>`__.\n\n- Allowed empty host for URL schemes other than the special schemes listed in the WHATWG URL spec -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1136 <https://github.com/aio-libs/yarl/issues/1136>`__.\n\n\nFeatures\n--------\n\n- Loosened restriction on integers as query string values to allow classes that implement ``__int__`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1139 <https://github.com/aio-libs/yarl/issues/1139>`__.\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performance of normalizing paths -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1137 <https://github.com/aio-libs/yarl/issues/1137>`__.\n\n\n----\n\n\n1.11.0\n======\n\n*(2024-09-08)*\n\n\nFeatures\n--------\n\n- Added ``URL.extend_query()()`` method, which can be used to extend parameters without replacing same named keys -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n This method was primarily added to replace the inefficient hand rolled method currently used in ``aiohttp``.\n\n *Related issues and pull requests on GitHub:*\n `#1128 <https://github.com/aio-libs/yarl/issues/1128>`__.\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performance of the Cython ``cached_property`` implementation -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1122 <https://github.com/aio-libs/yarl/issues/1122>`__.\n\n- Simplified computing ports by removing unnecessary code -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1123 <https://github.com/aio-libs/yarl/issues/1123>`__.\n\n- Improved performance of encoding non IPv6 hosts -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1125 <https://github.com/aio-libs/yarl/issues/1125>`__.\n\n- Improved performance of ``URL.build()()`` when the path, query string, or fragment is an empty string -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1126 <https://github.com/aio-libs/yarl/issues/1126>`__.\n\n- Improved performance of the ``URL.update_query()()`` method -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1130 <https://github.com/aio-libs/yarl/issues/1130>`__.\n\n- Improved performance of processing query string changes when arguments are ``str`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1131 <https://github.com/aio-libs/yarl/issues/1131>`__.\n\n\n----\n\n\n1.10.0\n======\n\n*(2024-09-06)*\n\n\nBug fixes\n---------\n\n- Fixed joining a path when the existing path was empty -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n A regression in ``URL.join()()`` was introduced in `#1082 <https://github.com/aio-libs/yarl/issues/1082>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1118 <https://github.com/aio-libs/yarl/issues/1118>`__.\n\n\nFeatures\n--------\n\n- Added ``URL.without_query_params()()`` method, to drop some parameters from query string -- by `@hongquan <https://github.com/sponsors/hongquan>`__.\n\n *Related issues and pull requests on GitHub:*\n `#774 <https://github.com/aio-libs/yarl/issues/774>`__, `#898 <https://github.com/aio-libs/yarl/issues/898>`__, `#1010 <https://github.com/aio-libs/yarl/issues/1010>`__.\n\n- The previously protected types ``_SimpleQuery``, ``_QueryVariable``, and ``_Query`` are now available for use externally as ``SimpleQuery``, ``QueryVariable``, and ``Query`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1050 <https://github.com/aio-libs/yarl/issues/1050>`__, `#1113 <https://github.com/aio-libs/yarl/issues/1113>`__.\n\n\nContributor-facing changes\n--------------------------\n\n- Replaced all ``~typing.Optional`` with ``~typing.Union`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1095 <https://github.com/aio-libs/yarl/issues/1095>`__.\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Significantly improved performance of parsing the network location -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1112 <https://github.com/aio-libs/yarl/issues/1112>`__.\n\n- Added internal types to the cache to prevent future refactoring errors -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1117 <https://github.com/aio-libs/yarl/issues/1117>`__.\n\n\n----\n\n\n1.9.11\n======\n\n*(2024-09-04)*\n\n\nBug fixes\n---------\n\n- Fixed a ``TypeError`` with ``MultiDictProxy`` and Python 3.8 -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1084 <https://github.com/aio-libs/yarl/issues/1084>`__, `#1105 <https://github.com/aio-libs/yarl/issues/1105>`__, `#1107 <https://github.com/aio-libs/yarl/issues/1107>`__.\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performance of encoding hosts -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n 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 ``3986#section-3.2.2``.\n\n *Related issues and pull requests on GitHub:*\n `#1104 <https://github.com/aio-libs/yarl/issues/1104>`__.\n\n\n----\n\n\n1.9.10\n======\n\n*(2024-09-04)*\n\n\nBug fixes\n---------\n\n- ``URL.join()()`` has been changed to match\n ``3986`` and align with\n ``/ operation()`` and ``URL.joinpath()()``\n when joining URLs with empty segments.\n Previously ``urllib.parse.urljoin`` was used,\n which has known issues with empty segments\n (`python/cpython#84774 <https://github.com/python/cpython/issues/84774>`_).\n\n Due to the semantics of ``URL.join()()``, joining an\n URL with scheme requires making it relative, prefixing with ``./``.\n\n .. code-block:: pycon\n\n >>> URL(\"https://web.archive.org/web/\").join(URL(\"./https://github.com/aio-libs/yarl\"))\n URL('https://web.archive.org/web/https://github.com/aio-libs/yarl')\n\n\n Empty segments are honored in the base as well as the joined part.\n\n .. code-block:: pycon\n\n >>> URL(\"https://web.archive.org/web/https://\").join(URL(\"github.com/aio-libs/yarl\"))\n URL('https://web.archive.org/web/https://github.com/aio-libs/yarl')\n\n\n\n -- by `@commonism <https://github.com/sponsors/commonism>`__\n\n This change initially appeared in 1.9.5 but was reverted in 1.9.6 to resolve a problem with query string handling.\n\n *Related issues and pull requests on GitHub:*\n `#1039 <https://github.com/aio-libs/yarl/issues/1039>`__, `#1082 <https://github.com/aio-libs/yarl/issues/1082>`__.\n\n\nFeatures\n--------\n\n- Added ``~yarl.URL.absolute`` which is now preferred over ``URL.is_absolute()`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1100 <https://github.com/aio-libs/yarl/issues/1100>`__.\n\n\n----\n\n\n1.9.9\n=====\n\n*(2024-09-04)*\n\n\nBug fixes\n---------\n\n- Added missing type on ``~yarl.URL.port`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1097 <https://github.com/aio-libs/yarl/issues/1097>`__.\n\n\n----\n\n\n1.9.8\n=====\n\n*(2024-09-03)*\n\n\nFeatures\n--------\n\n- Covered the ``~yarl.URL`` object with types -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1084 <https://github.com/aio-libs/yarl/issues/1084>`__.\n\n- Cache parsing of IP Addresses when encoding hosts -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1086 <https://github.com/aio-libs/yarl/issues/1086>`__.\n\n\nContributor-facing changes\n--------------------------\n\n- Covered the ``~yarl.URL`` object with types -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1084 <https://github.com/aio-libs/yarl/issues/1084>`__.\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performance of handling ports -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1081 <https://github.com/aio-libs/yarl/issues/1081>`__.\n\n\n----\n\n\n1.9.7\n=====\n\n*(2024-09-01)*\n\n\nRemovals and backward incompatible breaking changes\n---------------------------------------------------\n\n- Removed support ``3986#section-3.2.3`` port normalization when the scheme is not one of ``http``, ``https``, ``wss``, or ``ws`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n Support for port normalization was recently added in `#1033 <https://github.com/aio-libs/yarl/issues/1033>`__ and contained code that would do blocking I/O if the scheme was not one of the four listed above. The code has been removed because this library is intended to be safe for usage with ``asyncio``.\n\n *Related issues and pull requests on GitHub:*\n `#1076 <https://github.com/aio-libs/yarl/issues/1076>`__.\n\n\nMiscellaneous internal changes\n------------------------------\n\n- Improved performance of property caching -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n The ``reify`` implementation from ``aiohttp`` was adapted to replace the internal ``cached_property`` implementation.\n\n *Related issues and pull requests on GitHub:*\n `#1070 <https://github.com/aio-libs/yarl/issues/1070>`__.\n\n\n----\n\n\n1.9.6\n=====\n\n*(2024-08-30)*\n\n\nBug fixes\n---------\n\n- Reverted ``3986`` compatible ``URL.join()()`` honoring empty segments which was introduced in `#1039 <https://github.com/aio-libs/yarl/issues/1039>`__.\n\n This change introduced a regression handling query string parameters with joined URLs. The change was reverted to maintain compatibility with the previous behavior.\n\n *Related issues and pull requests on GitHub:*\n `#1067 <https://github.com/aio-libs/yarl/issues/1067>`__.\n\n\n----\n\n\n1.9.5\n=====\n\n*(2024-08-30)*\n\n\nBug fixes\n---------\n\n- Joining URLs with empty segments has been changed\n to match ``3986``.\n\n Previously empty segments would be removed from path,\n breaking use-cases such as\n\n .. code-block:: python\n\n URL(\"https://web.archive.org/web/\") / \"https://github.com/\"\n\n Now ``/ operation()`` and ``URL.joinpath()()``\n keep empty segments, but do not introduce new empty segments.\n e.g.\n\n .. code-block:: python\n\n URL(\"https://example.org/\") / \"\"\n\n does not introduce an empty segment.\n\n -- by `@commonism <https://github.com/sponsors/commonism>`__ and `@youtux <https://github.com/sponsors/youtux>`__\n\n *Related issues and pull requests on GitHub:*\n `#1026 <https://github.com/aio-libs/yarl/issues/1026>`__.\n\n- The default protocol ports of well-known URI schemes are now taken into account\n during the normalization of the URL string representation in accordance with\n ``3986#section-3.2.3``.\n\n Specified ports are removed from the ``str`` representation of a ``~yarl.URL``\n if the port matches the scheme's default port -- by `@commonism <https://github.com/sponsors/commonism>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1033 <https://github.com/aio-libs/yarl/issues/1033>`__.\n\n- ``URL.join()()`` has been changed to match\n ``3986`` and align with\n ``/ operation()`` and ``URL.joinpath()()``\n when joining URLs with empty segments.\n Previously ``urllib.parse.urljoin`` was used,\n which has known issues with empty segments\n (`python/cpython#84774 <https://github.com/python/cpython/issues/84774>`_).\n\n Due to the semantics of ``URL.join()()``, joining an\n URL with scheme requires making it relative, prefixing with ``./``.\n\n .. code-block:: pycon\n\n >>> URL(\"https://web.archive.org/web/\").join(URL(\"./https://github.com/aio-libs/yarl\"))\n URL('https://web.archive.org/web/https://github.com/aio-libs/yarl')\n\n\n Empty segments are honored in the base as well as the joined part.\n\n .. code-block:: pycon\n\n >>> URL(\"https://web.archive.org/web/https://\").join(URL(\"github.com/aio-libs/yarl\"))\n URL('https://web.archive.org/web/https://github.com/aio-libs/yarl')\n\n\n\n -- by `@commonism <https://github.com/sponsors/commonism>`__\n\n *Related issues and pull requests on GitHub:*\n `#1039 <https://github.com/aio-libs/yarl/issues/1039>`__.\n\n\nRemovals and backward incompatible breaking changes\n---------------------------------------------------\n\n- Stopped decoding ``%2F`` (``/``) in ``URL.path``, as this could lead to code incorrectly treating it as a path separator\n -- by `@Dreamsorcerer <https://github.com/sponsors/Dreamsorcerer>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1057 <https://github.com/aio-libs/yarl/issues/1057>`__.\n\n- Dropped support for Python 3.7 -- by `@Dreamsorcerer <https://github.com/sponsors/Dreamsorcerer>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1016 <https://github.com/aio-libs/yarl/issues/1016>`__.\n\n\nImproved documentation\n----------------------\n\n- On the ``Contributing docs`` page,\n a link to the ``Towncrier philosophy`` has been fixed.\n\n *Related issues and pull requests on GitHub:*\n `#981 <https://github.com/aio-libs/yarl/issues/981>`__.\n\n- The pre-existing ``/ magic method()``\n has been documented in the API reference -- by `@commonism <https://github.com/sponsors/commonism>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1026 <https://github.com/aio-libs/yarl/issues/1026>`__.\n\n\nPackaging updates and notes for downstreams\n-------------------------------------------\n\n- A flaw in the logic for copying the project directory into a\n temporary folder that led to infinite recursion when ``TMPDIR``\n was set to a project subdirectory path. This was happening in Fedora\n and its downstream due to the use of `pyproject-rpm-macros\n <https://src.fedoraproject.org/rpms/pyproject-rpm-macros>`__. It was\n only reproducible with ``pip wheel`` and was not affecting the\n ``pyproject-build`` users.\n\n -- by `@hroncok <https://github.com/sponsors/hroncok>`__ and `@webknjaz <https://github.com/sponsors/webknjaz>`__\n\n *Related issues and pull requests on GitHub:*\n `#992 <https://github.com/aio-libs/yarl/issues/992>`__, `#1014 <https://github.com/aio-libs/yarl/issues/1014>`__.\n\n- Support Python 3.13 and publish non-free-threaded wheels\n\n *Related issues and pull requests on GitHub:*\n `#1054 <https://github.com/aio-libs/yarl/issues/1054>`__.\n\n\nContributor-facing changes\n--------------------------\n\n- The CI/CD setup has been updated to test ``arm64`` wheels\n under macOS 14, except for Python 3.7 that is unsupported\n in that environment -- by `@webknjaz <https://github.com/sponsors/webknjaz>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1015 <https://github.com/aio-libs/yarl/issues/1015>`__.\n\n- Removed unused type ignores and casts -- by `@hauntsaninja <https://github.com/sponsors/hauntsaninja>`__.\n\n *Related issues and pull requests on GitHub:*\n `#1031 <https://github.com/aio-libs/yarl/issues/1031>`__.\n\n\nMiscellaneous internal changes\n------------------------------\n\n- ``port``, ``scheme``, and ``raw_host`` are now ``cached_property`` -- by `@bdraco <https://github.com/sponsors/bdraco>`__.\n\n ``aiohttp`` accesses these properties quite often, which cause ``urllib`` to build the ``_hostinfo`` property every time. ``port``, ``scheme``, and ``raw_host`` are now cached properties, which will improve performance.\n\n *Related issues and pull requests on GitHub:*\n `#1044 <https://github.com/aio-libs/yarl/issues/1044>`__, `#1058 <https://github.com/aio-libs/yarl/issues/1058>`__.\n\n\n----\n\n\n1.9.4 (2023-12-06)\n==================\n\nBug fixes\n---------\n\n- Started raising ``TypeError`` when a string value is passed into\n ``yarl.URL.build()`` as the ``port`` argument -- by `@commonism <https://github.com/sponsors/commonism>`__.\n\n Previously the empty string as port would create malformed URLs when rendered as string representations. (`#883 <https://github.com/aio-libs/yarl/issues/883>`__)\n\n\nPackaging updates and notes for downstreams\n-------------------------------------------\n\n- The leading ``--`` has been dropped from the `PEP 517 <https://peps.python.org/pep-517>`__ in-tree build\n backend config setting names. ``--pure-python`` is now just ``pure-python``\n -- by `@webknjaz <https://github.com/sponsors/webknjaz>`__.\n\n The usage now looks as follows:\n\n .. code-block:: console\n\n $ python -m build \\\n --config-setting=pure-python=true \\\n --config-setting=with-cython-tracing=true\n\n (`#963 <https://github.com/aio-libs/yarl/issues/963>`__)\n\n\nContributor-facing changes\n--------------------------\n\n- A step-by-step ``Release Guide`` guide has\n been added, describing how to release *yarl* -- by `@webknjaz <https://github.com/sponsors/webknjaz>`__.\n\n This is primarily targeting maintainers. (`#960 <https://github.com/aio-libs/yarl/issues/960>`__)\n- Coverage collection has been implemented for the Cython modules\n -- by `@webknjaz <https://github.com/sponsors/webknjaz>`__.\n\n It will also be reported to Codecov from any non-release CI jobs.\n\n To measure coverage in a development environment, *yarl* can be\n installed in editable mode:\n\n .. code-block:: console\n\n $ python -Im pip install -e .\n\n Editable install produces C-files required for the Cython coverage\n plugin to map the measurements back to the PYX-files.\n\n `#961 <https://github.com/aio-libs/yarl/issues/961>`__\n\n- It is now possible to request line tracing in Cython builds using the\n ``with-cython-tracing`` `PEP 517 <https://peps.python.org/pep-517>`__ config setting\n -- `@webknjaz <https://github.com/sponsors/webknjaz>`__.\n\n This can be used in CI and development environment to measure coverage\n on Cython modules, but is not normally useful to the end-users or\n downstream packagers.\n\n Here's a usage example:\n\n .. code-block:: console\n\n $ python -Im pip install . --config-settings=with-cython-tracing=true\n\n For editable installs, this setting is on by default. Otherwise, it's\n off unless requested explicitly.\n\n The following produces C-files required for the Cython coverage\n plugin to map the measurements back to the PYX-files:\n\n .. code-block:: console\n\n $ python -Im pip install -e .\n\n Alternatively, the ``YARL_CYTHON_TRACING=1`` environment variable\n can be set to do the same as the `PEP 517 <https://peps.python.org/pep-517>`__ config setting.\n\n `#962 <https://github.com/aio-libs/yarl/issues/962>`__\n\n\n1.9.3 (2023-11-20)\n==================\n\nBug fixes\n---------\n\n- Stopped dropping trailing slashes in ``yarl.URL.joinpath()`` -- by `@gmacon <https://github.com/sponsors/gmacon>`__. (`#862 <https://github.com/aio-libs/yarl/issues/862>`__, `#866 <https://github.com/aio-libs/yarl/issues/866>`__)\n- Started accepting string subclasses in ``yarl.URL.__truediv__()`` operations (``URL / segment``) -- by `@mjpieters <https://github.com/sponsors/mjpieters>`__. (`#871 <https://github.com/aio-libs/yarl/issues/871>`__, `#884 <https://github.com/aio-libs/yarl/issues/884>`__)\n- Fixed the human representation of URLs with square brackets in usernames and passwords -- by `@mjpieters <https://github.com/sponsors/mjpieters>`__. (`#876 <https://github.com/aio-libs/yarl/issues/876>`__, `#882 <https://github.com/aio-libs/yarl/issues/882>`__)\n- Updated type hints to include ``URL.missing_port()``, ``URL.__bytes__()``\n and the ``encoding`` argument to ``yarl.URL.joinpath()``\n -- by `@mjpieters <https://github.com/sponsors/mjpieters>`__. (`#891 <https://github.com/aio-libs/yarl/issues/891>`__)\n\n\nPackaging updates and notes for downstreams\n-------------------------------------------\n\n- Integrated Cython 3 to enable building *yarl* under Python 3.12 -- by `@mjpieters <https://github.com/sponsors/mjpieters>`__. (`#829 <https://github.com/aio-libs/yarl/issues/829>`__, `#881 <https://github.com/aio-libs/yarl/issues/881>`__)\n- Declared modern ``setuptools.build_meta`` as the `PEP 517 <https://peps.python.org/pep-517>`__ build\n backend in ``pyproject.toml`` explicitly -- by `@webknjaz <https://github.com/sponsors/webknjaz>`__. (`#886 <https://github.com/aio-libs/yarl/issues/886>`__)\n- Converted most of the packaging setup into a declarative ``setup.cfg``\n config -- by `@webknjaz <https://github.com/sponsors/webknjaz>`__. (`#890 <https://github.com/aio-libs/yarl/issues/890>`__)\n- The packaging is replaced from an old-fashioned ``setup.py`` to an\n in-tree `PEP 517 <https://peps.python.org/pep-517>`__ build backend -- by `@webknjaz <https://github.com/sponsors/webknjaz>`__.\n\n Whenever the end-users or downstream packagers need to build ``yarl`` from\n source (a Git checkout or an sdist), they may pass a ``config_settings``\n flag ``--pure-python``. If this flag is not set, a C-extension will be built\n and included into the distribution.\n\n Here is how this can be done with ``pip``:\n\n .. code-block:: console\n\n $ python -m pip install . --config-settings=--pure-python=false\n\n This will also work with ``-e | --editable``.\n\n The same can be achieved via ``pypa/build``:\n\n .. code-block:: console\n\n $ python -m build --config-setting=--pure-python=false\n\n Adding ``-w | --wheel`` can force ``pypa/build`` produce a wheel from source\n directly, as opposed to building an ``sdist`` and then building from it. (`#893 <https://github.com/aio-libs/yarl/issues/893>`__)\n\n .. attention::\n\n v1.9.3 was the only version using the ``--pure-python`` setting name.\n Later versions dropped the ``--`` prefix, making it just ``pure-python``.\n\n- Declared Python 3.12 supported officially in the distribution package metadata\n -- by `@edgarrmondragon <https://github.com/sponsors/edgarrmondragon>`__. (`#942 <https://github.com/aio-libs/yarl/issues/942>`__)\n\n\nContributor-facing changes\n--------------------------\n\n- A regression test for no-host URLs was added per `#821 <https://github.com/aio-libs/yarl/issues/821>`__\n and ``3986`` -- by `@kenballus <https://github.com/sponsors/kenballus>`__. (`#821 <https://github.com/aio-libs/yarl/issues/821>`__, `#822 <https://github.com/aio-libs/yarl/issues/822>`__)\n- Started testing *yarl* against Python 3.12 in CI -- by `@mjpieters <https://github.com/sponsors/mjpieters>`__. (`#881 <https://github.com/aio-libs/yarl/issues/881>`__)\n- All Python 3.12 jobs are now marked as required to pass in CI\n -- by `@edgarrmondragon <https://github.com/sponsors/edgarrmondragon>`__. (`#942 <https://github.com/aio-libs/yarl/issues/942>`__)\n- MyST is now integrated in Sphinx -- by `@webknjaz <https://github.com/sponsors/webknjaz>`__.\n\n This allows the contributors to author new documents in Markdown\n when they have difficulties with going straight RST. (`#953 <https://github.com/aio-libs/yarl/issues/953>`__)\n\n\n1.9.2 (2023-04-25)\n==================\n\nBugfixes\n--------\n\n- Fix regression with ``yarl.URL.__truediv__()`` and absolute URLs with empty paths causing the raw path to lack the leading ``/``.\n (`#854 <https://github.com/aio-libs/yarl/issues/854>`_)\n\n\n1.9.1 (2023-04-21)\n==================\n\nBugfixes\n--------\n\n- Marked tests that fail on older Python patch releases (< 3.7.10, < 3.8.8 and < 3.9.2) as expected to fail due to missing a security fix for CVE-2021-23336. (`#850 <https://github.com/aio-libs/yarl/issues/850>`_)\n\n\n1.9.0 (2023-04-19)\n==================\n\nThis release was never published to PyPI, due to issues with the build process.\n\nFeatures\n--------\n\n- Added ``URL.joinpath(*elements)``, to create a new URL appending multiple path elements. (`#704 <https://github.com/aio-libs/yarl/issues/704>`_)\n- Made ``URL.__truediv__()()`` return ``NotImplemented`` if called with an\n unsupported type \u2014 by `@michaeljpeters <https://github.com/sponsors/michaeljpeters>`__.\n (`#832 <https://github.com/aio-libs/yarl/issues/832>`_)\n\n\nBugfixes\n--------\n\n- Path normalization for absolute URLs no longer raises a ValueError exception\n when ``..`` segments would otherwise go beyond the URL path root.\n (`#536 <https://github.com/aio-libs/yarl/issues/536>`_)\n- Fixed an issue with update_query() not getting rid of the query when argument is None. (`#792 <https://github.com/aio-libs/yarl/issues/792>`_)\n- Added some input restrictions on with_port() function to prevent invalid boolean inputs or out of valid port inputs; handled incorrect 0 port representation. (`#793 <https://github.com/aio-libs/yarl/issues/793>`_)\n- Made ``yarl.URL.build()`` raise a ``TypeError`` if the ``host`` argument is ``None`` \u2014 by `@paulpapacz <https://github.com/sponsors/paulpapacz>`__. (`#808 <https://github.com/aio-libs/yarl/issues/808>`_)\n- Fixed an issue with ``update_query()`` getting rid of the query when the argument\n is empty but not ``None``. (`#845 <https://github.com/aio-libs/yarl/issues/845>`_)\n\n\nMisc\n----\n\n- `#220 <https://github.com/aio-libs/yarl/issues/220>`_\n\n\n1.8.2 (2022-12-03)\n==================\n\nThis is the first release that started shipping wheels for Python 3.11.\n\n\n1.8.1 (2022-08-01)\n==================\n\nMisc\n----\n\n- `#694 <https://github.com/aio-libs/yarl/issues/694>`_, `#699 <https://github.com/aio-libs/yarl/issues/699>`_, `#700 <https://github.com/aio-libs/yarl/issues/700>`_, `#701 <https://github.com/aio-libs/yarl/issues/701>`_, `#702 <https://github.com/aio-libs/yarl/issues/702>`_, `#703 <https://github.com/aio-libs/yarl/issues/703>`_, `#739 <https://github.com/aio-libs/yarl/issues/739>`_\n\n\n1.8.0 (2022-08-01)\n==================\n\nFeatures\n--------\n\n- Added ``URL.raw_suffix``, ``URL.suffix``, ``URL.raw_suffixes``, ``URL.suffixes``, ``URL.with_suffix``. (`#613 <https://github.com/aio-libs/yarl/issues/613>`_)\n\n\nImproved Documentation\n----------------------\n\n- Fixed broken internal references to ``yarl.URL.human_repr()``.\n (`#665 <https://github.com/aio-libs/yarl/issues/665>`_)\n- Fixed broken external references to ``multidict:index`` docs. (`#665 <https://github.com/aio-libs/yarl/issues/665>`_)\n\n\nDeprecations and Removals\n-------------------------\n\n- Dropped Python 3.6 support. (`#672 <https://github.com/aio-libs/yarl/issues/672>`_)\n\n\nMisc\n----\n\n- `#646 <https://github.com/aio-libs/yarl/issues/646>`_, `#699 <https://github.com/aio-libs/yarl/issues/699>`_, `#701 <https://github.com/aio-libs/yarl/issues/701>`_\n\n\n1.7.2 (2021-11-01)\n==================\n\nBugfixes\n--------\n\n- Changed call in ``with_port()`` to stop reencoding parts of the URL that were already encoded. (`#623 <https://github.com/aio-libs/yarl/issues/623>`_)\n\n\n1.7.1 (2021-10-07)\n==================\n\nBugfixes\n--------\n\n- Fix 1.7.0 build error\n\n1.7.0 (2021-10-06)\n==================\n\nFeatures\n--------\n\n- Add ``__bytes__()`` magic method so that ``bytes(url)`` will work and use optimal ASCII encoding.\n (`#582 <https://github.com/aio-libs/yarl/issues/582>`_)\n- Started shipping platform-specific arm64 wheels for Apple Silicon. (`#622 <https://github.com/aio-libs/yarl/issues/622>`_)\n- Started shipping platform-specific wheels with the ``musl`` tag targeting typical Alpine Linux runtimes. (`#622 <https://github.com/aio-libs/yarl/issues/622>`_)\n- Added support for Python 3.10. (`#622 <https://github.com/aio-libs/yarl/issues/622>`_)\n\n\n1.6.3 (2020-11-14)\n==================\n\nBugfixes\n--------\n\n- No longer loose characters when decoding incorrect percent-sequences (like ``%e2%82%f8``). All non-decodable percent-sequences are now preserved.\n `#517 <https://github.com/aio-libs/yarl/issues/517>`_\n- Provide x86 Windows wheels.\n `#535 <https://github.com/aio-libs/yarl/issues/535>`_\n\n\n----\n\n\n1.6.2 (2020-10-12)\n==================\n\n\nBugfixes\n--------\n\n- Provide generated ``.c`` files in TarBall distribution.\n `#530 <https://github.com/aio-libs/multidict/issues/530>`_\n\n1.6.1 (2020-10-12)\n==================\n\nFeatures\n--------\n\n- Provide wheels for ``aarch64``, ``i686``, ``ppc64le``, ``s390x`` architectures on\n Linux as well as ``x86_64``.\n `#507 <https://github.com/aio-libs/yarl/issues/507>`_\n- Provide wheels for Python 3.9.\n `#526 <https://github.com/aio-libs/yarl/issues/526>`_\n\nBugfixes\n--------\n\n- ``human_repr()`` now always produces valid representation equivalent to the original URL (if the original URL is valid).\n `#511 <https://github.com/aio-libs/yarl/issues/511>`_\n- Fixed requoting a single percent followed by a percent-encoded character in the Cython implementation.\n `#514 <https://github.com/aio-libs/yarl/issues/514>`_\n- Fix ValueError when decoding ``%`` which is not followed by two hexadecimal digits.\n `#516 <https://github.com/aio-libs/yarl/issues/516>`_\n- Fix decoding ``%`` followed by a space and hexadecimal digit.\n `#520 <https://github.com/aio-libs/yarl/issues/520>`_\n- Fix annotation of ``with_query()``/``update_query()`` methods for ``key=[val1, val2]`` case.\n `#528 <https://github.com/aio-libs/yarl/issues/528>`_\n\nRemoval\n-------\n\n- Drop Python 3.5 support; Python 3.6 is the minimal supported Python version.\n\n\n----\n\n\n1.6.0 (2020-09-23)\n==================\n\nFeatures\n--------\n\n- Allow for int and float subclasses in query, while still denying bool.\n `#492 <https://github.com/aio-libs/yarl/issues/492>`_\n\n\nBugfixes\n--------\n\n- Do not requote arguments in ``URL.build()``, ``with_xxx()`` and in ``/`` operator.\n `#502 <https://github.com/aio-libs/yarl/issues/502>`_\n- Keep IPv6 brackets in ``origin()``.\n `#504 <https://github.com/aio-libs/yarl/issues/504>`_\n\n\n----\n\n\n1.5.1 (2020-08-01)\n==================\n\nBugfixes\n--------\n\n- Fix including relocated internal ``yarl._quoting_c`` C-extension into published PyPI dists.\n `#485 <https://github.com/aio-libs/yarl/issues/485>`_\n\n\nMisc\n----\n\n- `#484 <https://github.com/aio-libs/yarl/issues/484>`_\n\n\n----\n\n\n1.5.0 (2020-07-26)\n==================\n\nFeatures\n--------\n\n- Convert host to lowercase on URL building.\n `#386 <https://github.com/aio-libs/yarl/issues/386>`_\n- Allow using ``mod`` operator (``%``) for updating query string (an alias for ``update_query()`` method).\n `#435 <https://github.com/aio-libs/yarl/issues/435>`_\n- Allow use of sequences such as ``list`` and ``tuple`` in the values\n of a mapping such as ``dict`` to represent that a key has many values::\n\n url = URL(\"http://example.com\")\n assert url.with_query({\"a\": [1, 2]}) == URL(\"http://example.com/?a=1&a=2\")\n\n `#443 <https://github.com/aio-libs/yarl/issues/443>`_\n- Support ``URL.build()`` with scheme and path (creates a relative URL).\n `#464 <https://github.com/aio-libs/yarl/issues/464>`_\n- Cache slow IDNA encode/decode calls.\n `#476 <https://github.com/aio-libs/yarl/issues/476>`_\n- Add ``@final`` / ``Final`` type hints\n `#477 <https://github.com/aio-libs/yarl/issues/477>`_\n- Support URL authority/raw_authority properties and authority argument of ``URL.build()`` method.\n `#478 <https://github.com/aio-libs/yarl/issues/478>`_\n- Hide the library implementation details, make the exposed public list very clean.\n `#483 <https://github.com/aio-libs/yarl/issues/483>`_\n\n\nBugfixes\n--------\n\n- Fix tests with newer Python (3.7.6, 3.8.1 and 3.9.0+).\n `#409 <https://github.com/aio-libs/yarl/issues/409>`_\n- Fix a bug where query component, passed in a form of mapping or sequence, is unquoted in unexpected way.\n `#426 <https://github.com/aio-libs/yarl/issues/426>`_\n- Hide ``Query`` and ``QueryVariable`` type aliases in ``__init__.pyi``, now they are prefixed with underscore.\n `#431 <https://github.com/aio-libs/yarl/issues/431>`_\n- Keep IPv6 brackets after updating port/user/password.\n `#451 <https://github.com/aio-libs/yarl/issues/451>`_\n\n\n----\n\n\n1.4.2 (2019-12-05)\n==================\n\nFeatures\n--------\n\n- Workaround for missing ``str.isascii()`` in Python 3.6\n `#389 <https://github.com/aio-libs/yarl/issues/389>`_\n\n\n----\n\n\n1.4.1 (2019-11-29)\n==================\n\n* Fix regression, make the library work on Python 3.5 and 3.6 again.\n\n1.4.0 (2019-11-29)\n==================\n\n* Distinguish an empty password in URL from a password not provided at all (#262)\n\n* Fixed annotations for optional parameters of ``URL.build`` (#309)\n\n* Use None as default value of ``user`` parameter of ``URL.build`` (#309)\n\n* Enforce building C Accelerated modules when installing from source tarball, use\n ``YARL_NO_EXTENSIONS`` environment variable for falling back to (slower) Pure Python\n implementation (#329)\n\n* Drop Python 3.5 support\n\n* Fix quoting of plus in path by pure python version (#339)\n\n* Don't create a new URL if fragment is unchanged (#292)\n\n* Included in error message the path that produces starting slash forbidden error (#376)\n\n* Skip slow IDNA encoding for ASCII-only strings (#387)\n\n\n1.3.0 (2018-12-11)\n==================\n\n* Fix annotations for ``query`` parameter (#207)\n\n* An incoming query sequence can have int variables (the same as for\n Mapping type) (#208)\n\n* Add ``URL.explicit_port`` property (#218)\n\n* Give a friendlier error when port can't be converted to int (#168)\n\n* ``bool(URL())`` now returns ``False`` (#272)\n\n1.2.6 (2018-06-14)\n==================\n\n* Drop Python 3.4 trove classifier (#205)\n\n1.2.5 (2018-05-23)\n==================\n\n* Fix annotations for ``build`` (#199)\n\n1.2.4 (2018-05-08)\n==================\n\n* Fix annotations for ``cached_property`` (#195)\n\n1.2.3 (2018-05-03)\n==================\n\n* Accept ``str`` subclasses in ``URL`` constructor (#190)\n\n1.2.2 (2018-05-01)\n==================\n\n* Fix build\n\n1.2.1 (2018-04-30)\n==================\n\n* Pin minimal required Python to 3.5.3 (#189)\n\n1.2.0 (2018-04-30)\n==================\n\n* Forbid inheritance, replace ``__init__`` with ``__new__`` (#171)\n\n* Support PEP-561 (provide type hinting marker) (#182)\n\n1.1.1 (2018-02-17)\n==================\n\n* Fix performance regression: don't encode empty ``netloc`` (#170)\n\n1.1.0 (2018-01-21)\n==================\n\n* Make pure Python quoter consistent with Cython version (#162)\n\n1.0.0 (2018-01-15)\n==================\n\n* Use fast path if quoted string does not need requoting (#154)\n\n* Speed up quoting/unquoting by ``_Quoter`` and ``_Unquoter`` classes (#155)\n\n* Drop ``yarl.quote`` and ``yarl.unquote`` public functions (#155)\n\n* Add custom string writer, reuse static buffer if available (#157)\n Code is 50-80 times faster than Pure Python version (was 4-5 times faster)\n\n* Don't recode IP zone (#144)\n\n* Support ``encoded=True`` in ``yarl.URL.build()`` (#158)\n\n* Fix updating query with multiple keys (#160)\n\n0.18.0 (2018-01-10)\n===================\n\n* Fallback to IDNA 2003 if domain name is not IDNA 2008 compatible (#152)\n\n0.17.0 (2017-12-30)\n===================\n\n* Use IDNA 2008 for domain name processing (#149)\n\n0.16.0 (2017-12-07)\n===================\n\n* Fix raising ``TypeError`` by ``url.query_string()`` after\n ``url.with_query({})`` (empty mapping) (#141)\n\n0.15.0 (2017-11-23)\n===================\n\n* Add ``raw_path_qs`` attribute (#137)\n\n0.14.2 (2017-11-14)\n===================\n\n* Restore ``strict`` parameter as no-op in ``quote`` / ``unquote``\n\n0.14.1 (2017-11-13)\n===================\n\n* Restore ``strict`` parameter as no-op for sake of compatibility with\n aiohttp 2.2\n\n0.14.0 (2017-11-11)\n===================\n\n* Drop strict mode (#123)\n\n* Fix ``\"ValueError: Unallowed PCT %\"`` when there's a ``\"%\"`` in the URL (#124)\n\n0.13.0 (2017-10-01)\n===================\n\n* Document ``encoded`` parameter (#102)\n\n* Support relative URLs like ``'?key=value'`` (#100)\n\n* Unsafe encoding for QS fixed. Encode ``;`` character in value parameter (#104)\n\n* Process passwords without user names (#95)\n\n0.12.0 (2017-06-26)\n===================\n\n* Properly support paths without leading slash in ``URL.with_path()`` (#90)\n\n* Enable type annotation checks\n\n0.11.0 (2017-06-26)\n===================\n\n* Normalize path (#86)\n\n* Clear query and fragment parts in ``.with_path()`` (#85)\n\n0.10.3 (2017-06-13)\n===================\n\n* Prevent double URL arguments unquoting (#83)\n\n0.10.2 (2017-05-05)\n===================\n\n* Unexpected hash behavior (#75)\n\n\n0.10.1 (2017-05-03)\n===================\n\n* Unexpected compare behavior (#73)\n\n* Do not quote or unquote + if not a query string. (#74)\n\n\n0.10.0 (2017-03-14)\n===================\n\n* Added ``URL.build`` class method (#58)\n\n* Added ``path_qs`` attribute (#42)\n\n\n0.9.8 (2017-02-16)\n==================\n\n* Do not quote ``:`` in path\n\n\n0.9.7 (2017-02-16)\n==================\n\n* Load from pickle without _cache (#56)\n\n* Percent-encoded pluses in path variables become spaces (#59)\n\n\n0.9.6 (2017-02-15)\n==================\n\n* Revert backward incompatible change (BaseURL)\n\n\n0.9.5 (2017-02-14)\n==================\n\n* Fix BaseURL rich comparison support\n\n\n0.9.4 (2017-02-14)\n==================\n\n* Use BaseURL\n\n\n0.9.3 (2017-02-14)\n==================\n\n* Added BaseURL\n\n\n0.9.2 (2017-02-08)\n==================\n\n* Remove debug print\n\n\n0.9.1 (2017-02-07)\n==================\n\n* Do not lose tail chars (#45)\n\n\n0.9.0 (2017-02-07)\n==================\n\n* Allow to quote ``%`` in non strict mode (#21)\n\n* Incorrect parsing of query parameters with %3B (;) inside (#34)\n\n* Fix core dumps (#41)\n\n* ``tmpbuf`` - compiling error (#43)\n\n* Added ``URL.update_path()`` method\n\n* Added ``URL.update_query()`` method (#47)\n\n\n0.8.1 (2016-12-03)\n==================\n\n* Fix broken aiohttp: revert back ``quote`` / ``unquote``.\n\n\n0.8.0 (2016-12-03)\n==================\n\n* Support more verbose error messages in ``.with_query()`` (#24)\n\n* Don't percent-encode ``@`` and ``:`` in path (#32)\n\n* Don't expose ``yarl.quote`` and ``yarl.unquote``, these functions are\n part of private API\n\n0.7.1 (2016-11-18)\n==================\n\n* Accept not only ``str`` but all classes inherited from ``str`` also (#25)\n\n0.7.0 (2016-11-07)\n==================\n\n* Accept ``int`` as value for ``.with_query()``\n\n0.6.0 (2016-11-07)\n==================\n\n* Explicitly use UTF8 encoding in ``setup.py`` (#20)\n* Properly unquote non-UTF8 strings (#19)\n\n0.5.3 (2016-11-02)\n==================\n\n* Don't use ``typing.NamedTuple`` fields but indexes on URL construction\n\n0.5.2 (2016-11-02)\n==================\n\n* Inline ``_encode`` class method\n\n0.5.1 (2016-11-02)\n==================\n\n* Make URL construction faster by removing extra classmethod calls\n\n0.5.0 (2016-11-02)\n==================\n\n* Add Cython optimization for quoting/unquoting\n* Provide binary wheels\n\n0.4.3 (2016-09-29)\n==================\n\n* Fix typing stubs\n\n0.4.2 (2016-09-29)\n==================\n\n* Expose ``quote()`` and ``unquote()`` as public API\n\n0.4.1 (2016-09-28)\n==================\n\n* Support empty values in query (``'/path?arg'``)\n\n0.4.0 (2016-09-27)\n==================\n\n* Introduce ``relative()`` (#16)\n\n0.3.2 (2016-09-27)\n==================\n\n* Typo fixes #15\n\n0.3.1 (2016-09-26)\n==================\n\n* Support sequence of pairs as ``with_query()`` parameter\n\n0.3.0 (2016-09-26)\n==================\n\n* Introduce ``is_default_port()``\n\n0.2.1 (2016-09-26)\n==================\n\n* Raise ValueError for URLs like 'http://:8080/'\n\n0.2.0 (2016-09-18)\n==================\n\n* Avoid doubling slashes when joining paths (#13)\n\n* Appending path starting from slash is forbidden (#12)\n\n0.1.4 (2016-09-09)\n==================\n\n* Add ``kwargs`` support for ``with_query()`` (#10)\n\n0.1.3 (2016-09-07)\n==================\n\n* Document ``with_query()``, ``with_fragment()`` and ``origin()``\n\n* Allow ``None`` for ``with_query()`` and ``with_fragment()``\n\n0.1.2 (2016-09-07)\n==================\n\n* Fix links, tune docs theme.\n\n0.1.1 (2016-09-06)\n==================\n\n* Update README, old version used obsolete API\n\n0.1.0 (2016-09-06)\n==================\n\n* The library was deeply refactored, bytes are gone away but all\n accepted strings are encoded if needed.\n\n0.0.1 (2016-08-30)\n==================\n\n* The first release.\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Yet another URL library",
"version": "1.18.3",
"project_urls": {
"CI: GitHub Workflows": "https://github.com/aio-libs/yarl/actions?query=branch:master",
"Chat: Matrix": "https://matrix.to/#/#aio-libs:matrix.org",
"Chat: Matrix Space": "https://matrix.to/#/#aio-libs-space:matrix.org",
"Code of Conduct": "https://github.com/aio-libs/.github/blob/master/CODE_OF_CONDUCT.md",
"Coverage: codecov": "https://codecov.io/github/aio-libs/yarl",
"Docs: Changelog": "https://yarl.aio-libs.org/en/latest/changes/",
"Docs: RTD": "https://yarl.aio-libs.org",
"GitHub: issues": "https://github.com/aio-libs/yarl/issues",
"GitHub: repo": "https://github.com/aio-libs/yarl",
"Homepage": "https://github.com/aio-libs/yarl"
},
"split_keywords": [
"cython",
" cext",
" yarl"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "d298e005bc608765a8a5569f58e650961314873c8469c333616eb40bff19ae97",
"md5": "2403204e201177fe32447d71f7a618fc",
"sha256": "7df647e8edd71f000a5208fe6ff8c382a1de8edfbccdbbfe649d263de07d8c34"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp310-cp310-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "2403204e201177fe32447d71f7a618fc",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 141458,
"upload_time": "2024-12-01T20:32:32",
"upload_time_iso_8601": "2024-12-01T20:32:32.604192Z",
"url": "https://files.pythonhosted.org/packages/d2/98/e005bc608765a8a5569f58e650961314873c8469c333616eb40bff19ae97/yarl-1.18.3-cp310-cp310-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "df5df8106b263b8ae8a866b46d9be869ac01f9b3fb7f2325f3ecb3df8003f796",
"md5": "f4fdb228711ce23f0f1a89de5d1eac82",
"sha256": "c69697d3adff5aa4f874b19c0e4ed65180ceed6318ec856ebc423aa5850d84f7"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "f4fdb228711ce23f0f1a89de5d1eac82",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 94365,
"upload_time": "2024-12-01T20:32:35",
"upload_time_iso_8601": "2024-12-01T20:32:35.736948Z",
"url": "https://files.pythonhosted.org/packages/df/5d/f8106b263b8ae8a866b46d9be869ac01f9b3fb7f2325f3ecb3df8003f796/yarl-1.18.3-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "563ed8637ddb9ba69bf851f765a3ee288676f7cf64fb3be13760c18cbc9d10bd",
"md5": "43248a813529d1bc7109f663d29a7770",
"sha256": "602d98f2c2d929f8e697ed274fbadc09902c4025c5a9963bf4e9edfc3ab6f7ed"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp310-cp310-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "43248a813529d1bc7109f663d29a7770",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 92181,
"upload_time": "2024-12-01T20:32:37",
"upload_time_iso_8601": "2024-12-01T20:32:37.944440Z",
"url": "https://files.pythonhosted.org/packages/56/3e/d8637ddb9ba69bf851f765a3ee288676f7cf64fb3be13760c18cbc9d10bd/yarl-1.18.3-cp310-cp310-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "76f9d616a5c2daae281171de10fba41e1c0e2d8207166fc3547252f7d469b4e1",
"md5": "8f102f49bf193707c6563ae69c85284b",
"sha256": "c654d5207c78e0bd6d749f6dae1dcbbfde3403ad3a4b11f3c5544d9906969dde"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "8f102f49bf193707c6563ae69c85284b",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 315349,
"upload_time": "2024-12-01T20:32:40",
"upload_time_iso_8601": "2024-12-01T20:32:40.126964Z",
"url": "https://files.pythonhosted.org/packages/76/f9/d616a5c2daae281171de10fba41e1c0e2d8207166fc3547252f7d469b4e1/yarl-1.18.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bbb43ea5e7b6f08f698b3769a06054783e434f6d59857181b5c4e145de83f59b",
"md5": "02c61ba914b5e40323d1a591e8142419",
"sha256": "5094d9206c64181d0f6e76ebd8fb2f8fe274950a63890ee9e0ebfd58bf9d787b"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "02c61ba914b5e40323d1a591e8142419",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 330494,
"upload_time": "2024-12-01T20:32:41",
"upload_time_iso_8601": "2024-12-01T20:32:41.833304Z",
"url": "https://files.pythonhosted.org/packages/bb/b4/3ea5e7b6f08f698b3769a06054783e434f6d59857181b5c4e145de83f59b/yarl-1.18.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "55f1e0fc810554877b1b67420568afff51b967baed5b53bcc983ab164eebf9c9",
"md5": "129112241dd512ce225a27c8d2c4ff21",
"sha256": "35098b24e0327fc4ebdc8ffe336cee0a87a700c24ffed13161af80124b7dc8e5"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "129112241dd512ce225a27c8d2c4ff21",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 326927,
"upload_time": "2024-12-01T20:32:43",
"upload_time_iso_8601": "2024-12-01T20:32:43.730921Z",
"url": "https://files.pythonhosted.org/packages/55/f1/e0fc810554877b1b67420568afff51b967baed5b53bcc983ab164eebf9c9/yarl-1.18.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a942b1753949b327b36f210899f2dd0a0947c0c74e42a32de3f8eb5c7d93edca",
"md5": "db697415cd1f9f8a10234f9771fb0e7c",
"sha256": "3236da9272872443f81fedc389bace88408f64f89f75d1bdb2256069a8730ccc"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "db697415cd1f9f8a10234f9771fb0e7c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 319703,
"upload_time": "2024-12-01T20:32:46",
"upload_time_iso_8601": "2024-12-01T20:32:46.131724Z",
"url": "https://files.pythonhosted.org/packages/a9/42/b1753949b327b36f210899f2dd0a0947c0c74e42a32de3f8eb5c7d93edca/yarl-1.18.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f06de87c62dc9635daefb064b56f5c97df55a2e9cc947a2b3afd4fd2f3b841c7",
"md5": "958f5be34f45899bfcbf3c675e87f015",
"sha256": "e2c08cc9b16f4f4bc522771d96734c7901e7ebef70c6c5c35dd0f10845270bcd"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "958f5be34f45899bfcbf3c675e87f015",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 310246,
"upload_time": "2024-12-01T20:32:48",
"upload_time_iso_8601": "2024-12-01T20:32:48.577969Z",
"url": "https://files.pythonhosted.org/packages/f0/6d/e87c62dc9635daefb064b56f5c97df55a2e9cc947a2b3afd4fd2f3b841c7/yarl-1.18.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e3efe2e8d1785cdcbd986f7622d7f0098205f3644546da7919c24b95790ec65a",
"md5": "b1c11a6fc8a62caacd58310045d46abe",
"sha256": "80316a8bd5109320d38eef8833ccf5f89608c9107d02d2a7f985f98ed6876990"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp310-cp310-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "b1c11a6fc8a62caacd58310045d46abe",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 319730,
"upload_time": "2024-12-01T20:32:50",
"upload_time_iso_8601": "2024-12-01T20:32:50.209148Z",
"url": "https://files.pythonhosted.org/packages/e3/ef/e2e8d1785cdcbd986f7622d7f0098205f3644546da7919c24b95790ec65a/yarl-1.18.3-cp310-cp310-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fc158723e22345bc160dfde68c4b3ae8b236e868f9963c74015f1bc8a614101c",
"md5": "7ee2db460faa9517903e1fae96231a86",
"sha256": "c1e1cc06da1491e6734f0ea1e6294ce00792193c463350626571c287c9a704db"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp310-cp310-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "7ee2db460faa9517903e1fae96231a86",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 321681,
"upload_time": "2024-12-01T20:32:52",
"upload_time_iso_8601": "2024-12-01T20:32:52.498054Z",
"url": "https://files.pythonhosted.org/packages/fc/15/8723e22345bc160dfde68c4b3ae8b236e868f9963c74015f1bc8a614101c/yarl-1.18.3-cp310-cp310-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8609bf764e974f1516efa0ae2801494a5951e959f1610dd41edbfc07e5e0f978",
"md5": "140d07681d924bdf7a863a5d7d2ec22f",
"sha256": "fea09ca13323376a2fdfb353a5fa2e59f90cd18d7ca4eaa1fd31f0a8b4f91e62"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp310-cp310-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "140d07681d924bdf7a863a5d7d2ec22f",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 324812,
"upload_time": "2024-12-01T20:32:54",
"upload_time_iso_8601": "2024-12-01T20:32:54.947372Z",
"url": "https://files.pythonhosted.org/packages/86/09/bf764e974f1516efa0ae2801494a5951e959f1610dd41edbfc07e5e0f978/yarl-1.18.3-cp310-cp310-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f64c20a0187e3b903c97d857cf0272d687c1b08b03438968ae8ffc50fe78b0d6",
"md5": "64ec71bdcb7f23afad9fb5994d5efa6c",
"sha256": "e3b9fd71836999aad54084906f8663dffcd2a7fb5cdafd6c37713b2e72be1760"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp310-cp310-musllinux_1_2_ppc64le.whl",
"has_sig": false,
"md5_digest": "64ec71bdcb7f23afad9fb5994d5efa6c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 337011,
"upload_time": "2024-12-01T20:32:57",
"upload_time_iso_8601": "2024-12-01T20:32:57.692492Z",
"url": "https://files.pythonhosted.org/packages/f6/4c/20a0187e3b903c97d857cf0272d687c1b08b03438968ae8ffc50fe78b0d6/yarl-1.18.3-cp310-cp310-musllinux_1_2_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c9716244599a6e1cc4c9f73254a627234e0dad3883ece40cc33dce6265977461",
"md5": "7dba5d3e643058749a980aedd53bd01c",
"sha256": "757e81cae69244257d125ff31663249b3013b5dc0a8520d73694aed497fb195b"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp310-cp310-musllinux_1_2_s390x.whl",
"has_sig": false,
"md5_digest": "7dba5d3e643058749a980aedd53bd01c",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 338132,
"upload_time": "2024-12-01T20:33:00",
"upload_time_iso_8601": "2024-12-01T20:33:00.247407Z",
"url": "https://files.pythonhosted.org/packages/c9/71/6244599a6e1cc4c9f73254a627234e0dad3883ece40cc33dce6265977461/yarl-1.18.3-cp310-cp310-musllinux_1_2_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "aff5e0c3efaf74566c4b4a41cb76d27097df424052a064216beccae8d303c90f",
"md5": "638732c1c0e7083f93393c33f3920051",
"sha256": "b1771de9944d875f1b98a745bc547e684b863abf8f8287da8466cf470ef52690"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp310-cp310-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "638732c1c0e7083f93393c33f3920051",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 331849,
"upload_time": "2024-12-01T20:33:02",
"upload_time_iso_8601": "2024-12-01T20:33:02.492768Z",
"url": "https://files.pythonhosted.org/packages/af/f5/e0c3efaf74566c4b4a41cb76d27097df424052a064216beccae8d303c90f/yarl-1.18.3-cp310-cp310-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8ab83d16209c2014c2f98a8f658850a57b716efb97930aebf1ca0d9325933731",
"md5": "2c51adcedd45be7b88d05f71408cbbf6",
"sha256": "8874027a53e3aea659a6d62751800cf6e63314c160fd607489ba5c2edd753cf6"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp310-cp310-win32.whl",
"has_sig": false,
"md5_digest": "2c51adcedd45be7b88d05f71408cbbf6",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 84309,
"upload_time": "2024-12-01T20:33:04",
"upload_time_iso_8601": "2024-12-01T20:33:04.832248Z",
"url": "https://files.pythonhosted.org/packages/8a/b8/3d16209c2014c2f98a8f658850a57b716efb97930aebf1ca0d9325933731/yarl-1.18.3-cp310-cp310-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fdb72e9a5b18eb0fe24c3a0e8bae994e812ed9852ab4fd067c0107fadde0d5f0",
"md5": "78ac522582c94c5ddf0a7734917be99d",
"sha256": "93b2e109287f93db79210f86deb6b9bbb81ac32fc97236b16f7433db7fc437d8"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "78ac522582c94c5ddf0a7734917be99d",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.9",
"size": 90484,
"upload_time": "2024-12-01T20:33:06",
"upload_time_iso_8601": "2024-12-01T20:33:06.615083Z",
"url": "https://files.pythonhosted.org/packages/fd/b7/2e9a5b18eb0fe24c3a0e8bae994e812ed9852ab4fd067c0107fadde0d5f0/yarl-1.18.3-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4093282b5f4898d8e8efaf0790ba6d10e2245d2c9f30e199d1a85cae9356098c",
"md5": "fe6cba279bb4ac463e5db03213cbbdb1",
"sha256": "8503ad47387b8ebd39cbbbdf0bf113e17330ffd339ba1144074da24c545f0069"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp311-cp311-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "fe6cba279bb4ac463e5db03213cbbdb1",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 141555,
"upload_time": "2024-12-01T20:33:08",
"upload_time_iso_8601": "2024-12-01T20:33:08.819406Z",
"url": "https://files.pythonhosted.org/packages/40/93/282b5f4898d8e8efaf0790ba6d10e2245d2c9f30e199d1a85cae9356098c/yarl-1.18.3-cp311-cp311-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6d9c0a49af78df099c283ca3444560f10718fadb8a18dc8b3edf8c7bd9fd7d89",
"md5": "b8855d552737193d0bcd02c716227f9e",
"sha256": "02ddb6756f8f4517a2d5e99d8b2f272488e18dd0bfbc802f31c16c6c20f22193"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "b8855d552737193d0bcd02c716227f9e",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 94351,
"upload_time": "2024-12-01T20:33:10",
"upload_time_iso_8601": "2024-12-01T20:33:10.609128Z",
"url": "https://files.pythonhosted.org/packages/6d/9c/0a49af78df099c283ca3444560f10718fadb8a18dc8b3edf8c7bd9fd7d89/yarl-1.18.3-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5aa1205ab51e148fdcedad189ca8dd587794c6f119882437d04c33c01a75dece",
"md5": "23c96326ed71d7795f9da6324585348e",
"sha256": "67a283dd2882ac98cc6318384f565bffc751ab564605959df4752d42483ad889"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp311-cp311-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "23c96326ed71d7795f9da6324585348e",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 92286,
"upload_time": "2024-12-01T20:33:12",
"upload_time_iso_8601": "2024-12-01T20:33:12.322416Z",
"url": "https://files.pythonhosted.org/packages/5a/a1/205ab51e148fdcedad189ca8dd587794c6f119882437d04c33c01a75dece/yarl-1.18.3-cp311-cp311-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "edfe88b690b30f3f59275fb674f5f93ddd4a3ae796c2b62e5bb9ece8a4914b83",
"md5": "ced90e294f2e0cf164ae0897627aa897",
"sha256": "d980e0325b6eddc81331d3f4551e2a333999fb176fd153e075c6d1c2530aa8a8"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "ced90e294f2e0cf164ae0897627aa897",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 340649,
"upload_time": "2024-12-01T20:33:13",
"upload_time_iso_8601": "2024-12-01T20:33:13.842519Z",
"url": "https://files.pythonhosted.org/packages/ed/fe/88b690b30f3f59275fb674f5f93ddd4a3ae796c2b62e5bb9ece8a4914b83/yarl-1.18.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "07eb3b65499b568e01f36e847cebdc8d7ccb51fff716dbda1ae83c3cbb8ca1c9",
"md5": "20e3a2448ffb58764a71f5e4ff3f0e52",
"sha256": "b643562c12680b01e17239be267bc306bbc6aac1f34f6444d1bded0c5ce438ca"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "20e3a2448ffb58764a71f5e4ff3f0e52",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 356623,
"upload_time": "2024-12-01T20:33:15",
"upload_time_iso_8601": "2024-12-01T20:33:15.535841Z",
"url": "https://files.pythonhosted.org/packages/07/eb/3b65499b568e01f36e847cebdc8d7ccb51fff716dbda1ae83c3cbb8ca1c9/yarl-1.18.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3346f559dc184280b745fc76ec6b1954de2c55595f0ec0a7614238b9ebf69618",
"md5": "a3fe02709fcedd937d5d418aef190896",
"sha256": "c017a3b6df3a1bd45b9fa49a0f54005e53fbcad16633870104b66fa1a30a29d8"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "a3fe02709fcedd937d5d418aef190896",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 354007,
"upload_time": "2024-12-01T20:33:17",
"upload_time_iso_8601": "2024-12-01T20:33:17.518912Z",
"url": "https://files.pythonhosted.org/packages/33/46/f559dc184280b745fc76ec6b1954de2c55595f0ec0a7614238b9ebf69618/yarl-1.18.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "afba1865d85212351ad160f19fb99808acf23aab9a0f8ff31c8c9f1b4d671fc9",
"md5": "71611febbfc1a71a7b3883c53461b655",
"sha256": "75674776d96d7b851b6498f17824ba17849d790a44d282929c42dbb77d4f17ae"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "71611febbfc1a71a7b3883c53461b655",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 344145,
"upload_time": "2024-12-01T20:33:20",
"upload_time_iso_8601": "2024-12-01T20:33:20.071178Z",
"url": "https://files.pythonhosted.org/packages/af/ba/1865d85212351ad160f19fb99808acf23aab9a0f8ff31c8c9f1b4d671fc9/yarl-1.18.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "94cb5c3e975d77755d7b3d5193e92056b19d83752ea2da7ab394e22260a7b824",
"md5": "b97f5a62ea05c3fc68b68da1cbf566eb",
"sha256": "ccaa3a4b521b780a7e771cc336a2dba389a0861592bbce09a476190bb0c8b4b3"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "b97f5a62ea05c3fc68b68da1cbf566eb",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 336133,
"upload_time": "2024-12-01T20:33:22",
"upload_time_iso_8601": "2024-12-01T20:33:22.515058Z",
"url": "https://files.pythonhosted.org/packages/94/cb/5c3e975d77755d7b3d5193e92056b19d83752ea2da7ab394e22260a7b824/yarl-1.18.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1989b77d3fd249ab52a5c40859815765d35c91425b6bb82e7427ab2f78f5ff55",
"md5": "2d6292dbf981349ff49841d81f9d1775",
"sha256": "2d06d3005e668744e11ed80812e61efd77d70bb7f03e33c1598c301eea20efbb"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp311-cp311-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "2d6292dbf981349ff49841d81f9d1775",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 347967,
"upload_time": "2024-12-01T20:33:24",
"upload_time_iso_8601": "2024-12-01T20:33:24.139081Z",
"url": "https://files.pythonhosted.org/packages/19/89/b77d3fd249ab52a5c40859815765d35c91425b6bb82e7427ab2f78f5ff55/yarl-1.18.3-cp311-cp311-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "35bdf6b7630ba2cc06c319c3235634c582a6ab014d52311e7d7c22f9518189b5",
"md5": "c3c247a7f0f2b7507e340cbfdf6a9c06",
"sha256": "9d41beda9dc97ca9ab0b9888cb71f7539124bc05df02c0cff6e5acc5a19dcc6e"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp311-cp311-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "c3c247a7f0f2b7507e340cbfdf6a9c06",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 346397,
"upload_time": "2024-12-01T20:33:26",
"upload_time_iso_8601": "2024-12-01T20:33:26.205988Z",
"url": "https://files.pythonhosted.org/packages/35/bd/f6b7630ba2cc06c319c3235634c582a6ab014d52311e7d7c22f9518189b5/yarl-1.18.3-cp311-cp311-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "181a0b4e367d5a72d1f095318344848e93ea70da728118221f84f1bf6c1e39e7",
"md5": "a9b12dae0cbadc13eaf5f69b75bee1f1",
"sha256": "ba23302c0c61a9999784e73809427c9dbedd79f66a13d84ad1b1943802eaaf59"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp311-cp311-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "a9b12dae0cbadc13eaf5f69b75bee1f1",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 350206,
"upload_time": "2024-12-01T20:33:27",
"upload_time_iso_8601": "2024-12-01T20:33:27.830269Z",
"url": "https://files.pythonhosted.org/packages/18/1a/0b4e367d5a72d1f095318344848e93ea70da728118221f84f1bf6c1e39e7/yarl-1.18.3-cp311-cp311-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b5cf320fff4367341fb77809a2d8d7fe75b5d323a8e1b35710aafe41fdbf327b",
"md5": "4381bd2e6b52c74243c5cc94d90a5353",
"sha256": "6748dbf9bfa5ba1afcc7556b71cda0d7ce5f24768043a02a58846e4a443d808d"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp311-cp311-musllinux_1_2_ppc64le.whl",
"has_sig": false,
"md5_digest": "4381bd2e6b52c74243c5cc94d90a5353",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 362089,
"upload_time": "2024-12-01T20:33:29",
"upload_time_iso_8601": "2024-12-01T20:33:29.565688Z",
"url": "https://files.pythonhosted.org/packages/b5/cf/320fff4367341fb77809a2d8d7fe75b5d323a8e1b35710aafe41fdbf327b/yarl-1.18.3-cp311-cp311-musllinux_1_2_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "57cfaadba261d8b920253204085268bad5e8cdd86b50162fcb1b10c10834885a",
"md5": "67e5e8edb15dcf71f8214df62f14fba3",
"sha256": "0b0cad37311123211dc91eadcb322ef4d4a66008d3e1bdc404808992260e1a0e"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp311-cp311-musllinux_1_2_s390x.whl",
"has_sig": false,
"md5_digest": "67e5e8edb15dcf71f8214df62f14fba3",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 366267,
"upload_time": "2024-12-01T20:33:31",
"upload_time_iso_8601": "2024-12-01T20:33:31.449145Z",
"url": "https://files.pythonhosted.org/packages/57/cf/aadba261d8b920253204085268bad5e8cdd86b50162fcb1b10c10834885a/yarl-1.18.3-cp311-cp311-musllinux_1_2_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5458fb4cadd81acdee6dafe14abeb258f876e4dd410518099ae9a35c88d8097c",
"md5": "da3d21a4fba20abfbebe7270c7feb61c",
"sha256": "0fb2171a4486bb075316ee754c6d8382ea6eb8b399d4ec62fde2b591f879778a"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp311-cp311-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "da3d21a4fba20abfbebe7270c7feb61c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 359141,
"upload_time": "2024-12-01T20:33:33",
"upload_time_iso_8601": "2024-12-01T20:33:33.790467Z",
"url": "https://files.pythonhosted.org/packages/54/58/fb4cadd81acdee6dafe14abeb258f876e4dd410518099ae9a35c88d8097c/yarl-1.18.3-cp311-cp311-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9a7a4c571597589da4cd5c14ed2a0b17ac56ec9ee7ee615013f74653169e702d",
"md5": "15356edbdac47f2f8bb464833c893633",
"sha256": "61b1a825a13bef4a5f10b1885245377d3cd0bf87cba068e1d9a88c2ae36880e1"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp311-cp311-win32.whl",
"has_sig": false,
"md5_digest": "15356edbdac47f2f8bb464833c893633",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 84402,
"upload_time": "2024-12-01T20:33:35",
"upload_time_iso_8601": "2024-12-01T20:33:35.689173Z",
"url": "https://files.pythonhosted.org/packages/9a/7a/4c571597589da4cd5c14ed2a0b17ac56ec9ee7ee615013f74653169e702d/yarl-1.18.3-cp311-cp311-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ae7b8600250b3d89b625f1121d897062f629883c2f45339623b69b1747ec65fa",
"md5": "9cff14282e682186fbef3df52fae8a82",
"sha256": "b9d60031cf568c627d028239693fd718025719c02c9f55df0a53e587aab951b5"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp311-cp311-win_amd64.whl",
"has_sig": false,
"md5_digest": "9cff14282e682186fbef3df52fae8a82",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.9",
"size": 91030,
"upload_time": "2024-12-01T20:33:37",
"upload_time_iso_8601": "2024-12-01T20:33:37.511491Z",
"url": "https://files.pythonhosted.org/packages/ae/7b/8600250b3d89b625f1121d897062f629883c2f45339623b69b1747ec65fa/yarl-1.18.3-cp311-cp311-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3385bd2e2729752ff4c77338e0102914897512e92496375e079ce0150a6dc306",
"md5": "1ffe7c4594f73dbf2c37e290844c00e4",
"sha256": "1dd4bdd05407ced96fed3d7f25dbbf88d2ffb045a0db60dbc247f5b3c5c25d50"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp312-cp312-macosx_10_13_universal2.whl",
"has_sig": false,
"md5_digest": "1ffe7c4594f73dbf2c37e290844c00e4",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 142644,
"upload_time": "2024-12-01T20:33:39",
"upload_time_iso_8601": "2024-12-01T20:33:39.204662Z",
"url": "https://files.pythonhosted.org/packages/33/85/bd2e2729752ff4c77338e0102914897512e92496375e079ce0150a6dc306/yarl-1.18.3-cp312-cp312-macosx_10_13_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ff741178322cc0f10288d7eefa6e4a85d8d2e28187ccab13d5b844e8b5d7c88d",
"md5": "2f03561ded4dfa941f779a27178d4ade",
"sha256": "7c33dd1931a95e5d9a772d0ac5e44cac8957eaf58e3c8da8c1414de7dd27c576"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp312-cp312-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "2f03561ded4dfa941f779a27178d4ade",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 94962,
"upload_time": "2024-12-01T20:33:40",
"upload_time_iso_8601": "2024-12-01T20:33:40.808118Z",
"url": "https://files.pythonhosted.org/packages/ff/74/1178322cc0f10288d7eefa6e4a85d8d2e28187ccab13d5b844e8b5d7c88d/yarl-1.18.3-cp312-cp312-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "be7579c6acc0261e2c2ae8a1c41cf12265e91628c8c58ae91f5ff59e29c0787f",
"md5": "09f2e32329b42c3b6b000b7f42242053",
"sha256": "25b411eddcfd56a2f0cd6a384e9f4f7aa3efee14b188de13048c25b5e91f1640"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp312-cp312-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "09f2e32329b42c3b6b000b7f42242053",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 92795,
"upload_time": "2024-12-01T20:33:42",
"upload_time_iso_8601": "2024-12-01T20:33:42.322069Z",
"url": "https://files.pythonhosted.org/packages/be/75/79c6acc0261e2c2ae8a1c41cf12265e91628c8c58ae91f5ff59e29c0787f/yarl-1.18.3-cp312-cp312-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6b32927b2d67a412c31199e83fefdce6e645247b4fb164aa1ecb35a0f9eb2058",
"md5": "f6c9bfdf7ee2bacf30e85ea6c5d7884a",
"sha256": "436c4fc0a4d66b2badc6c5fc5ef4e47bb10e4fd9bf0c79524ac719a01f3607c2"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "f6c9bfdf7ee2bacf30e85ea6c5d7884a",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 332368,
"upload_time": "2024-12-01T20:33:43",
"upload_time_iso_8601": "2024-12-01T20:33:43.956045Z",
"url": "https://files.pythonhosted.org/packages/6b/32/927b2d67a412c31199e83fefdce6e645247b4fb164aa1ecb35a0f9eb2058/yarl-1.18.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "19e5859fca07169d6eceeaa4fde1997c91d8abde4e9a7c018e371640c2da2b71",
"md5": "0c0f5cb09f538254db0db3bd92697b77",
"sha256": "e35ef8683211db69ffe129a25d5634319a677570ab6b2eba4afa860f54eeaf75"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "0c0f5cb09f538254db0db3bd92697b77",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 342314,
"upload_time": "2024-12-01T20:33:46",
"upload_time_iso_8601": "2024-12-01T20:33:46.046118Z",
"url": "https://files.pythonhosted.org/packages/19/e5/859fca07169d6eceeaa4fde1997c91d8abde4e9a7c018e371640c2da2b71/yarl-1.18.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "087576b63ccd91c9e03ab213ef27ae6add2e3400e77e5cdddf8ed2dbc36e3f21",
"md5": "991c3b5ca1258531bb9a45696b485516",
"sha256": "84b2deecba4a3f1a398df819151eb72d29bfeb3b69abb145a00ddc8d30094512"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "991c3b5ca1258531bb9a45696b485516",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 341987,
"upload_time": "2024-12-01T20:33:48",
"upload_time_iso_8601": "2024-12-01T20:33:48.352843Z",
"url": "https://files.pythonhosted.org/packages/08/75/76b63ccd91c9e03ab213ef27ae6add2e3400e77e5cdddf8ed2dbc36e3f21/yarl-1.18.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1ae1a097d5755d3ea8479a42856f51d97eeff7a3a7160593332d98f2709b3580",
"md5": "709d17d02e457dc3edcf121a0f9fbf1b",
"sha256": "00e5a1fea0fd4f5bfa7440a47eff01d9822a65b4488f7cff83155a0f31a2ecba"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "709d17d02e457dc3edcf121a0f9fbf1b",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 336914,
"upload_time": "2024-12-01T20:33:50",
"upload_time_iso_8601": "2024-12-01T20:33:50.875325Z",
"url": "https://files.pythonhosted.org/packages/1a/e1/a097d5755d3ea8479a42856f51d97eeff7a3a7160593332d98f2709b3580/yarl-1.18.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0b42e1b4d0e396b7987feceebe565286c27bc085bf07d61a59508cdaf2d45e63",
"md5": "fa3fc202b2d94257aa26bf3b310d19e1",
"sha256": "d0e883008013c0e4aef84dcfe2a0b172c4d23c2669412cf5b3371003941f72bb"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "fa3fc202b2d94257aa26bf3b310d19e1",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 325765,
"upload_time": "2024-12-01T20:33:52",
"upload_time_iso_8601": "2024-12-01T20:33:52.641853Z",
"url": "https://files.pythonhosted.org/packages/0b/42/e1b4d0e396b7987feceebe565286c27bc085bf07d61a59508cdaf2d45e63/yarl-1.18.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7e1803a5834ccc9177f97ca1bbb245b93c13e58e8225276f01eedc4cc98ab820",
"md5": "1c08dc4ee12def8ad44d2feafd989bcd",
"sha256": "5a3f356548e34a70b0172d8890006c37be92995f62d95a07b4a42e90fba54272"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp312-cp312-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "1c08dc4ee12def8ad44d2feafd989bcd",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 344444,
"upload_time": "2024-12-01T20:33:54",
"upload_time_iso_8601": "2024-12-01T20:33:54.395000Z",
"url": "https://files.pythonhosted.org/packages/7e/18/03a5834ccc9177f97ca1bbb245b93c13e58e8225276f01eedc4cc98ab820/yarl-1.18.3-cp312-cp312-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c803a713633bdde0640b0472aa197b5b86e90fbc4c5bc05b727b714cd8a40e6d",
"md5": "9bc76f776b392cb0798eadf663bcc5aa",
"sha256": "ccd17349166b1bee6e529b4add61727d3f55edb7babbe4069b5764c9587a8cc6"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp312-cp312-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "9bc76f776b392cb0798eadf663bcc5aa",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 340760,
"upload_time": "2024-12-01T20:33:56",
"upload_time_iso_8601": "2024-12-01T20:33:56.286400Z",
"url": "https://files.pythonhosted.org/packages/c8/03/a713633bdde0640b0472aa197b5b86e90fbc4c5bc05b727b714cd8a40e6d/yarl-1.18.3-cp312-cp312-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "eb99f6567e3f3bbad8fd101886ea0276c68ecb86a2b58be0f64077396cd4b95e",
"md5": "8fe6cdfc0ddcd5b270c67435ecacc7f9",
"sha256": "b958ddd075ddba5b09bb0be8a6d9906d2ce933aee81100db289badbeb966f54e"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp312-cp312-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "8fe6cdfc0ddcd5b270c67435ecacc7f9",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 346484,
"upload_time": "2024-12-01T20:33:58",
"upload_time_iso_8601": "2024-12-01T20:33:58.375007Z",
"url": "https://files.pythonhosted.org/packages/eb/99/f6567e3f3bbad8fd101886ea0276c68ecb86a2b58be0f64077396cd4b95e/yarl-1.18.3-cp312-cp312-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8ea984717c896b2fc6cb15bd4eecd64e34a2f0a9fd6669e69170c73a8b46795a",
"md5": "51be03f966215f55e958310379c64099",
"sha256": "c7d79f7d9aabd6011004e33b22bc13056a3e3fb54794d138af57f5ee9d9032cb"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp312-cp312-musllinux_1_2_ppc64le.whl",
"has_sig": false,
"md5_digest": "51be03f966215f55e958310379c64099",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 359864,
"upload_time": "2024-12-01T20:34:00",
"upload_time_iso_8601": "2024-12-01T20:34:00.220207Z",
"url": "https://files.pythonhosted.org/packages/8e/a9/84717c896b2fc6cb15bd4eecd64e34a2f0a9fd6669e69170c73a8b46795a/yarl-1.18.3-cp312-cp312-musllinux_1_2_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "1e2ed0f5f1bef7ee93ed17e739ec8dbcb47794af891f7d165fa6014517b48169",
"md5": "fc0fb8ab0a9a730686103b8c8a21d693",
"sha256": "4891ed92157e5430874dad17b15eb1fda57627710756c27422200c52d8a4e393"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp312-cp312-musllinux_1_2_s390x.whl",
"has_sig": false,
"md5_digest": "fc0fb8ab0a9a730686103b8c8a21d693",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 364537,
"upload_time": "2024-12-01T20:34:03",
"upload_time_iso_8601": "2024-12-01T20:34:03.540219Z",
"url": "https://files.pythonhosted.org/packages/1e/2e/d0f5f1bef7ee93ed17e739ec8dbcb47794af891f7d165fa6014517b48169/yarl-1.18.3-cp312-cp312-musllinux_1_2_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "978a568d07c5d4964da5b02621a517532adb8ec5ba181ad1687191fffeda0ab6",
"md5": "b8f614b023192a0adef513c151be24ea",
"sha256": "ce1af883b94304f493698b00d0f006d56aea98aeb49d75ec7d98cd4a777e9285"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp312-cp312-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "b8f614b023192a0adef513c151be24ea",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 357861,
"upload_time": "2024-12-01T20:34:05",
"upload_time_iso_8601": "2024-12-01T20:34:05.730138Z",
"url": "https://files.pythonhosted.org/packages/97/8a/568d07c5d4964da5b02621a517532adb8ec5ba181ad1687191fffeda0ab6/yarl-1.18.3-cp312-cp312-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "7de3924c3f64b6b3077889df9a1ece1ed8947e7b61b0a933f2ec93041990a677",
"md5": "1cc579e5007a6902dfae3a9ad7625741",
"sha256": "f91c4803173928a25e1a55b943c81f55b8872f0018be83e3ad4938adffb77dd2"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp312-cp312-win32.whl",
"has_sig": false,
"md5_digest": "1cc579e5007a6902dfae3a9ad7625741",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 84097,
"upload_time": "2024-12-01T20:34:07",
"upload_time_iso_8601": "2024-12-01T20:34:07.664407Z",
"url": "https://files.pythonhosted.org/packages/7d/e3/924c3f64b6b3077889df9a1ece1ed8947e7b61b0a933f2ec93041990a677/yarl-1.18.3-cp312-cp312-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "34450e055320daaabfc169b21ff6174567b2c910c45617b0d79c68d7ab349b02",
"md5": "6327e8f0e456d7b9b42404d9d5daa30e",
"sha256": "7e2ee16578af3b52ac2f334c3b1f92262f47e02cc6193c598502bd46f5cd1477"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "6327e8f0e456d7b9b42404d9d5daa30e",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.9",
"size": 90399,
"upload_time": "2024-12-01T20:34:09",
"upload_time_iso_8601": "2024-12-01T20:34:09.610614Z",
"url": "https://files.pythonhosted.org/packages/34/45/0e055320daaabfc169b21ff6174567b2c910c45617b0d79c68d7ab349b02/yarl-1.18.3-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "30c7c790513d5328a8390be8f47be5d52e141f78b66c6c48f48d241ca6bd5265",
"md5": "45d7a73d169d4280ca230546bb749479",
"sha256": "90adb47ad432332d4f0bc28f83a5963f426ce9a1a8809f5e584e704b82685dcb"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp313-cp313-macosx_10_13_universal2.whl",
"has_sig": false,
"md5_digest": "45d7a73d169d4280ca230546bb749479",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 140789,
"upload_time": "2024-12-01T20:34:11",
"upload_time_iso_8601": "2024-12-01T20:34:11.414740Z",
"url": "https://files.pythonhosted.org/packages/30/c7/c790513d5328a8390be8f47be5d52e141f78b66c6c48f48d241ca6bd5265/yarl-1.18.3-cp313-cp313-macosx_10_13_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "30aaa2f84e93554a578463e2edaaf2300faa61c8701f0898725842c704ba5444",
"md5": "5ea37f62070e496cc4f346f507879102",
"sha256": "913829534200eb0f789d45349e55203a091f45c37a2674678744ae52fae23efa"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp313-cp313-macosx_10_13_x86_64.whl",
"has_sig": false,
"md5_digest": "5ea37f62070e496cc4f346f507879102",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 94144,
"upload_time": "2024-12-01T20:34:13",
"upload_time_iso_8601": "2024-12-01T20:34:13.485229Z",
"url": "https://files.pythonhosted.org/packages/30/aa/a2f84e93554a578463e2edaaf2300faa61c8701f0898725842c704ba5444/yarl-1.18.3-cp313-cp313-macosx_10_13_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c6fcd68d8f83714b221a85ce7866832cba36d7c04a68fa6a960b908c2c84f325",
"md5": "4775f0253f3f22125bde8bb2fe7ade63",
"sha256": "ef9f7768395923c3039055c14334ba4d926f3baf7b776c923c93d80195624782"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "4775f0253f3f22125bde8bb2fe7ade63",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 91974,
"upload_time": "2024-12-01T20:34:15",
"upload_time_iso_8601": "2024-12-01T20:34:15.234638Z",
"url": "https://files.pythonhosted.org/packages/c6/fc/d68d8f83714b221a85ce7866832cba36d7c04a68fa6a960b908c2c84f325/yarl-1.18.3-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "564ed2563d8323a7e9a414b5b25341b3942af5902a2263d36d20fb17c40411e2",
"md5": "1a0d6f218d5fbca6bac80ed4efe18580",
"sha256": "88a19f62ff30117e706ebc9090b8ecc79aeb77d0b1f5ec10d2d27a12bc9f66d0"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "1a0d6f218d5fbca6bac80ed4efe18580",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 333587,
"upload_time": "2024-12-01T20:34:17",
"upload_time_iso_8601": "2024-12-01T20:34:17.358829Z",
"url": "https://files.pythonhosted.org/packages/56/4e/d2563d8323a7e9a414b5b25341b3942af5902a2263d36d20fb17c40411e2/yarl-1.18.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "25c9cfec0bc0cac8d054be223e9f2c7909d3e8442a856af9dbce7e3442a8ec8d",
"md5": "65faaa6bbdbdd94b1b6f0c7de7d1e166",
"sha256": "e17c9361d46a4d5addf777c6dd5eab0715a7684c2f11b88c67ac37edfba6c482"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "65faaa6bbdbdd94b1b6f0c7de7d1e166",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 344386,
"upload_time": "2024-12-01T20:34:19",
"upload_time_iso_8601": "2024-12-01T20:34:19.842335Z",
"url": "https://files.pythonhosted.org/packages/25/c9/cfec0bc0cac8d054be223e9f2c7909d3e8442a856af9dbce7e3442a8ec8d/yarl-1.18.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ab5d4c532190113b25f1364d25f4c319322e86232d69175b91f27e3ebc2caf9a",
"md5": "75ec2b277ca91f218e2c9c8687bf3bd1",
"sha256": "1a74a13a4c857a84a845505fd2d68e54826a2cd01935a96efb1e9d86c728e186"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "75ec2b277ca91f218e2c9c8687bf3bd1",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 345421,
"upload_time": "2024-12-01T20:34:21",
"upload_time_iso_8601": "2024-12-01T20:34:21.975345Z",
"url": "https://files.pythonhosted.org/packages/ab/5d/4c532190113b25f1364d25f4c319322e86232d69175b91f27e3ebc2caf9a/yarl-1.18.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "23d16cdd1632da013aa6ba18cee4d750d953104a5e7aac44e249d9410a972bf5",
"md5": "2005f072a6c7b408357b4424354a63bb",
"sha256": "41f7ce59d6ee7741af71d82020346af364949314ed3d87553763a2df1829cc58"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "2005f072a6c7b408357b4424354a63bb",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 339384,
"upload_time": "2024-12-01T20:34:24",
"upload_time_iso_8601": "2024-12-01T20:34:24.717890Z",
"url": "https://files.pythonhosted.org/packages/23/d1/6cdd1632da013aa6ba18cee4d750d953104a5e7aac44e249d9410a972bf5/yarl-1.18.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9ac46b3c39bec352e441bd30f432cda6ba51681ab19bb8abe023f0d19777aad1",
"md5": "69e54ee1dba79a0d35b9b31c6d231784",
"sha256": "f52a265001d830bc425f82ca9eabda94a64a4d753b07d623a9f2863fde532b53"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "69e54ee1dba79a0d35b9b31c6d231784",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 326689,
"upload_time": "2024-12-01T20:34:26",
"upload_time_iso_8601": "2024-12-01T20:34:26.886341Z",
"url": "https://files.pythonhosted.org/packages/9a/c4/6b3c39bec352e441bd30f432cda6ba51681ab19bb8abe023f0d19777aad1/yarl-1.18.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "233007fb088f2eefdc0aa4fc1af4e3ca4eb1a3aadd1ce7d866d74c0f124e6a85",
"md5": "c67319f10ba0f985252458d81f6499c7",
"sha256": "82123d0c954dc58db301f5021a01854a85bf1f3bb7d12ae0c01afc414a882ca2"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp313-cp313-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "c67319f10ba0f985252458d81f6499c7",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 345453,
"upload_time": "2024-12-01T20:34:29",
"upload_time_iso_8601": "2024-12-01T20:34:29.605542Z",
"url": "https://files.pythonhosted.org/packages/23/30/07fb088f2eefdc0aa4fc1af4e3ca4eb1a3aadd1ce7d866d74c0f124e6a85/yarl-1.18.3-cp313-cp313-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6309d54befb48f9cd8eec43797f624ec37783a0266855f4930a91e3d5c7717f8",
"md5": "eee5a22ce2aafcd067cc22e62cc4d1f6",
"sha256": "2ec9bbba33b2d00999af4631a3397d1fd78290c48e2a3e52d8dd72db3a067ac8"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp313-cp313-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "eee5a22ce2aafcd067cc22e62cc4d1f6",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 341872,
"upload_time": "2024-12-01T20:34:31",
"upload_time_iso_8601": "2024-12-01T20:34:31.454674Z",
"url": "https://files.pythonhosted.org/packages/63/09/d54befb48f9cd8eec43797f624ec37783a0266855f4930a91e3d5c7717f8/yarl-1.18.3-cp313-cp313-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "9126fd0ef9bf29dd906a84b59f0cd1281e65b0c3e08c6aa94b57f7d11f593518",
"md5": "2ab175c551f8ec824dd0459ea3f160fd",
"sha256": "fbd6748e8ab9b41171bb95c6142faf068f5ef1511935a0aa07025438dd9a9bc1"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp313-cp313-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "2ab175c551f8ec824dd0459ea3f160fd",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 347497,
"upload_time": "2024-12-01T20:34:34",
"upload_time_iso_8601": "2024-12-01T20:34:34.004693Z",
"url": "https://files.pythonhosted.org/packages/91/26/fd0ef9bf29dd906a84b59f0cd1281e65b0c3e08c6aa94b57f7d11f593518/yarl-1.18.3-cp313-cp313-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "d9b514ac7a256d0511b2ac168d50d4b7d744aea1c1aa20c79f620d1059aab8b2",
"md5": "c90f94b498ba9fe5490987a8a07c59ca",
"sha256": "877d209b6aebeb5b16c42cbb377f5f94d9e556626b1bfff66d7b0d115be88d0a"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp313-cp313-musllinux_1_2_ppc64le.whl",
"has_sig": false,
"md5_digest": "c90f94b498ba9fe5490987a8a07c59ca",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 359981,
"upload_time": "2024-12-01T20:34:36",
"upload_time_iso_8601": "2024-12-01T20:34:36.624180Z",
"url": "https://files.pythonhosted.org/packages/d9/b5/14ac7a256d0511b2ac168d50d4b7d744aea1c1aa20c79f620d1059aab8b2/yarl-1.18.3-cp313-cp313-musllinux_1_2_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "cab3d493221ad5cbd18bc07e642894030437e405e1413c4236dd5db6e46bcec9",
"md5": "bf2c6b9c5e317d25678aaf437a0bed56",
"sha256": "b464c4ab4bfcb41e3bfd3f1c26600d038376c2de3297760dfe064d2cb7ea8e10"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp313-cp313-musllinux_1_2_s390x.whl",
"has_sig": false,
"md5_digest": "bf2c6b9c5e317d25678aaf437a0bed56",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 366229,
"upload_time": "2024-12-01T20:34:38",
"upload_time_iso_8601": "2024-12-01T20:34:38.657524Z",
"url": "https://files.pythonhosted.org/packages/ca/b3/d493221ad5cbd18bc07e642894030437e405e1413c4236dd5db6e46bcec9/yarl-1.18.3-cp313-cp313-musllinux_1_2_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "04566a3e2a5d9152c56c346df9b8fb8edd2c8888b1e03f96324d457e5cf06d34",
"md5": "ce336be7d655082db71d70b5754f9ded",
"sha256": "8d39d351e7faf01483cc7ff7c0213c412e38e5a340238826be7e0e4da450fdc8"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp313-cp313-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "ce336be7d655082db71d70b5754f9ded",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 360383,
"upload_time": "2024-12-01T20:34:40",
"upload_time_iso_8601": "2024-12-01T20:34:40.501686Z",
"url": "https://files.pythonhosted.org/packages/04/56/6a3e2a5d9152c56c346df9b8fb8edd2c8888b1e03f96324d457e5cf06d34/yarl-1.18.3-cp313-cp313-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fdb74b3c7c7913a278d445cc6284e59b2e62fa25e72758f888b7a7a39eb8423f",
"md5": "90b4b0e97d46d31c0dc4d3c87bbdb0ff",
"sha256": "61ee62ead9b68b9123ec24bc866cbef297dd266175d53296e2db5e7f797f902d"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp313-cp313-win32.whl",
"has_sig": false,
"md5_digest": "90b4b0e97d46d31c0dc4d3c87bbdb0ff",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 310152,
"upload_time": "2024-12-01T20:34:42",
"upload_time_iso_8601": "2024-12-01T20:34:42.814766Z",
"url": "https://files.pythonhosted.org/packages/fd/b7/4b3c7c7913a278d445cc6284e59b2e62fa25e72758f888b7a7a39eb8423f/yarl-1.18.3-cp313-cp313-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f5d5688db678e987c3e0fb17867970700b92603cadf36c56e5fb08f23e822a0c",
"md5": "55ebedd553ed0221a00142164db9cace",
"sha256": "578e281c393af575879990861823ef19d66e2b1d0098414855dd367e234f5b3c"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp313-cp313-win_amd64.whl",
"has_sig": false,
"md5_digest": "55ebedd553ed0221a00142164db9cace",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.9",
"size": 315723,
"upload_time": "2024-12-01T20:34:44",
"upload_time_iso_8601": "2024-12-01T20:34:44.699341Z",
"url": "https://files.pythonhosted.org/packages/f5/d5/688db678e987c3e0fb17867970700b92603cadf36c56e5fb08f23e822a0c/yarl-1.18.3-cp313-cp313-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6a3bfec4b08f5e88f68e56ee698a59284a73704df2e0e0b5bdf6536c86e76c76",
"md5": "030adad44e7bbeb2b43600da00b04cf5",
"sha256": "61e5e68cb65ac8f547f6b5ef933f510134a6bf31bb178be428994b0cb46c2a04"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp39-cp39-macosx_10_9_universal2.whl",
"has_sig": false,
"md5_digest": "030adad44e7bbeb2b43600da00b04cf5",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 142780,
"upload_time": "2024-12-01T20:34:47",
"upload_time_iso_8601": "2024-12-01T20:34:47.312409Z",
"url": "https://files.pythonhosted.org/packages/6a/3b/fec4b08f5e88f68e56ee698a59284a73704df2e0e0b5bdf6536c86e76c76/yarl-1.18.3-cp39-cp39-macosx_10_9_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ed85796b0d6a22d536ec8e14bdbb86519250bad980cec450b6e299b1c2a9079e",
"md5": "d3ef9e45d394227a9e4991d69ac0a688",
"sha256": "fe57328fbc1bfd0bd0514470ac692630f3901c0ee39052ae47acd1d90a436719"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "d3ef9e45d394227a9e4991d69ac0a688",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 94981,
"upload_time": "2024-12-01T20:34:49",
"upload_time_iso_8601": "2024-12-01T20:34:49.264341Z",
"url": "https://files.pythonhosted.org/packages/ed/85/796b0d6a22d536ec8e14bdbb86519250bad980cec450b6e299b1c2a9079e/yarl-1.18.3-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ee0ea830fd2238f7a29050f6dd0de748b3d6f33a7dbb67dbbc081a970b2bbbeb",
"md5": "9ea660ba0f462a9c3a86c06324669659",
"sha256": "a440a2a624683108a1b454705ecd7afc1c3438a08e890a1513d468671d90a04e"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp39-cp39-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "9ea660ba0f462a9c3a86c06324669659",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 92789,
"upload_time": "2024-12-01T20:34:51",
"upload_time_iso_8601": "2024-12-01T20:34:51.009588Z",
"url": "https://files.pythonhosted.org/packages/ee/0e/a830fd2238f7a29050f6dd0de748b3d6f33a7dbb67dbbc081a970b2bbbeb/yarl-1.18.3-cp39-cp39-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0f4f438c9fd668954779e48f08c0688ee25e0673380a21bb1e8ccc56de5b55d7",
"md5": "f55af6d7e82894b917fd466bef14ed90",
"sha256": "09c7907c8548bcd6ab860e5f513e727c53b4a714f459b084f6580b49fa1b9cee"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"has_sig": false,
"md5_digest": "f55af6d7e82894b917fd466bef14ed90",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 317327,
"upload_time": "2024-12-01T20:34:53",
"upload_time_iso_8601": "2024-12-01T20:34:53.621541Z",
"url": "https://files.pythonhosted.org/packages/0f/4f/438c9fd668954779e48f08c0688ee25e0673380a21bb1e8ccc56de5b55d7/yarl-1.18.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bd79a78066f06179b4ed4581186c136c12fcfb928c475cbeb23743e71a991935",
"md5": "537189190c6e1b3a538584d96407a457",
"sha256": "b4f6450109834af88cb4cc5ecddfc5380ebb9c228695afc11915a0bf82116789"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"has_sig": false,
"md5_digest": "537189190c6e1b3a538584d96407a457",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 336999,
"upload_time": "2024-12-01T20:34:56",
"upload_time_iso_8601": "2024-12-01T20:34:56.171615Z",
"url": "https://files.pythonhosted.org/packages/bd/79/a78066f06179b4ed4581186c136c12fcfb928c475cbeb23743e71a991935/yarl-1.18.3-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "5502527963cf65f34a06aed1e766ff9a3b3e7d0eaa1c90736b2948a62e528e1d",
"md5": "49a94d4454e4fa9169f1871a24c175a1",
"sha256": "a9ca04806f3be0ac6d558fffc2fdf8fcef767e0489d2684a21912cc4ed0cd1b8"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"has_sig": false,
"md5_digest": "49a94d4454e4fa9169f1871a24c175a1",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 331693,
"upload_time": "2024-12-01T20:34:58",
"upload_time_iso_8601": "2024-12-01T20:34:58.258464Z",
"url": "https://files.pythonhosted.org/packages/55/02/527963cf65f34a06aed1e766ff9a3b3e7d0eaa1c90736b2948a62e528e1d/yarl-1.18.3-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a22a167447ae39252ba624b98b8c13c0ba35994d40d9110e8a724c83dbbb5822",
"md5": "19a7d1e462376b32f52a143883b587c9",
"sha256": "77a6e85b90a7641d2e07184df5557132a337f136250caafc9ccaa4a2a998ca2c"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "19a7d1e462376b32f52a143883b587c9",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 321473,
"upload_time": "2024-12-01T20:35:00",
"upload_time_iso_8601": "2024-12-01T20:35:00.207780Z",
"url": "https://files.pythonhosted.org/packages/a2/2a/167447ae39252ba624b98b8c13c0ba35994d40d9110e8a724c83dbbb5822/yarl-1.18.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "550307955fabb20082373be311c91fd78abe458bc7ff9069d34385e8bddad20e",
"md5": "c4901d249c1fc9ff43352e1aa5dece80",
"sha256": "6333c5a377c8e2f5fae35e7b8f145c617b02c939d04110c76f29ee3676b5f9a5"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"has_sig": false,
"md5_digest": "c4901d249c1fc9ff43352e1aa5dece80",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 313571,
"upload_time": "2024-12-01T20:35:02",
"upload_time_iso_8601": "2024-12-01T20:35:02.192261Z",
"url": "https://files.pythonhosted.org/packages/55/03/07955fabb20082373be311c91fd78abe458bc7ff9069d34385e8bddad20e/yarl-1.18.3-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "95e267c8d3ec58a8cd8ddb1d63bd06eb7e7b91c9f148707a3eeb5a7ed87df0ef",
"md5": "7ec8f94f7a2f1c73f79d4c8b801ebf0c",
"sha256": "0b3c92fa08759dbf12b3a59579a4096ba9af8dd344d9a813fc7f5070d86bbab1"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp39-cp39-musllinux_1_2_aarch64.whl",
"has_sig": false,
"md5_digest": "7ec8f94f7a2f1c73f79d4c8b801ebf0c",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 325004,
"upload_time": "2024-12-01T20:35:04",
"upload_time_iso_8601": "2024-12-01T20:35:04.044499Z",
"url": "https://files.pythonhosted.org/packages/95/e2/67c8d3ec58a8cd8ddb1d63bd06eb7e7b91c9f148707a3eeb5a7ed87df0ef/yarl-1.18.3-cp39-cp39-musllinux_1_2_aarch64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "064351ceb3e427368fe6ccd9eccd162be227fd082523e02bad1fd3063daf68da",
"md5": "ec6627b2e606f234403d1d3d98897275",
"sha256": "4ac515b860c36becb81bb84b667466885096b5fc85596948548b667da3bf9f24"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp39-cp39-musllinux_1_2_armv7l.whl",
"has_sig": false,
"md5_digest": "ec6627b2e606f234403d1d3d98897275",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 322677,
"upload_time": "2024-12-01T20:35:05",
"upload_time_iso_8601": "2024-12-01T20:35:05.916371Z",
"url": "https://files.pythonhosted.org/packages/06/43/51ceb3e427368fe6ccd9eccd162be227fd082523e02bad1fd3063daf68da/yarl-1.18.3-cp39-cp39-musllinux_1_2_armv7l.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e40e7ef286bfb23267739a703f7b967a858e2128c10bea898de8fa027e962521",
"md5": "682bbd73a5eba8e6e101cc4e9f19ca71",
"sha256": "045b8482ce9483ada4f3f23b3774f4e1bf4f23a2d5c912ed5170f68efb053318"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp39-cp39-musllinux_1_2_i686.whl",
"has_sig": false,
"md5_digest": "682bbd73a5eba8e6e101cc4e9f19ca71",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 332806,
"upload_time": "2024-12-01T20:35:08",
"upload_time_iso_8601": "2024-12-01T20:35:08.430202Z",
"url": "https://files.pythonhosted.org/packages/e4/0e/7ef286bfb23267739a703f7b967a858e2128c10bea898de8fa027e962521/yarl-1.18.3-cp39-cp39-musllinux_1_2_i686.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "c8942d1f060f4bfa47c8bd0bcb652bfe71fba881564bcac06ebb6d8ced9ac3bc",
"md5": "579efb3181dbc30d5b360bab0f84b5da",
"sha256": "a4bb030cf46a434ec0225bddbebd4b89e6471814ca851abb8696170adb163985"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp39-cp39-musllinux_1_2_ppc64le.whl",
"has_sig": false,
"md5_digest": "579efb3181dbc30d5b360bab0f84b5da",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 339919,
"upload_time": "2024-12-01T20:35:10",
"upload_time_iso_8601": "2024-12-01T20:35:10.548562Z",
"url": "https://files.pythonhosted.org/packages/c8/94/2d1f060f4bfa47c8bd0bcb652bfe71fba881564bcac06ebb6d8ced9ac3bc/yarl-1.18.3-cp39-cp39-musllinux_1_2_ppc64le.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8e8d73b5f9a6ab69acddf1ca1d5e7bc92f50b69124512e6c26b36844531d7f23",
"md5": "89a7d6de05d576138806759ae6692d51",
"sha256": "54d6921f07555713b9300bee9c50fb46e57e2e639027089b1d795ecd9f7fa910"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp39-cp39-musllinux_1_2_s390x.whl",
"has_sig": false,
"md5_digest": "89a7d6de05d576138806759ae6692d51",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 340960,
"upload_time": "2024-12-01T20:35:12",
"upload_time_iso_8601": "2024-12-01T20:35:12.761741Z",
"url": "https://files.pythonhosted.org/packages/8e/8d/73b5f9a6ab69acddf1ca1d5e7bc92f50b69124512e6c26b36844531d7f23/yarl-1.18.3-cp39-cp39-musllinux_1_2_s390x.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "4113ce6bc32be4476b60f4f8694831f49590884b2c975afcffc8d533bf2be7ec",
"md5": "ded79885004139f59de7d772f7d9e346",
"sha256": "1d407181cfa6e70077df3377938c08012d18893f9f20e92f7d2f314a437c30b1"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp39-cp39-musllinux_1_2_x86_64.whl",
"has_sig": false,
"md5_digest": "ded79885004139f59de7d772f7d9e346",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 336592,
"upload_time": "2024-12-01T20:35:14",
"upload_time_iso_8601": "2024-12-01T20:35:14.649609Z",
"url": "https://files.pythonhosted.org/packages/41/13/ce6bc32be4476b60f4f8694831f49590884b2c975afcffc8d533bf2be7ec/yarl-1.18.3-cp39-cp39-musllinux_1_2_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "81d56e0460292d6299ac3919945f912b16b104f4e81ab20bf53e0872a1296daf",
"md5": "f99b93338923830d59ed401289626e68",
"sha256": "ac36703a585e0929b032fbaab0707b75dc12703766d0b53486eabd5139ebadd5"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp39-cp39-win32.whl",
"has_sig": false,
"md5_digest": "f99b93338923830d59ed401289626e68",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 84833,
"upload_time": "2024-12-01T20:35:17",
"upload_time_iso_8601": "2024-12-01T20:35:17.170238Z",
"url": "https://files.pythonhosted.org/packages/81/d5/6e0460292d6299ac3919945f912b16b104f4e81ab20bf53e0872a1296daf/yarl-1.18.3-cp39-cp39-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b2fca8aef69156ad5508165d8ae956736d55c3a68890610834bd985540966008",
"md5": "01d073188e22e5c7449785d0c79e5543",
"sha256": "ba87babd629f8af77f557b61e49e7c7cac36f22f871156b91e10a6e9d4f829e9"
},
"downloads": -1,
"filename": "yarl-1.18.3-cp39-cp39-win_amd64.whl",
"has_sig": false,
"md5_digest": "01d073188e22e5c7449785d0c79e5543",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.9",
"size": 90968,
"upload_time": "2024-12-01T20:35:18",
"upload_time_iso_8601": "2024-12-01T20:35:18.962833Z",
"url": "https://files.pythonhosted.org/packages/b2/fc/a8aef69156ad5508165d8ae956736d55c3a68890610834bd985540966008/yarl-1.18.3-cp39-cp39-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f54ba06e0ec3d155924f77835ed2d167ebd3b211a7b0853da1cf8d8414d784ef",
"md5": "ea8a408b36e774dead48c99bd7d26331",
"sha256": "b57f4f58099328dfb26c6a771d09fb20dbbae81d20cfb66141251ea063bd101b"
},
"downloads": -1,
"filename": "yarl-1.18.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ea8a408b36e774dead48c99bd7d26331",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 45109,
"upload_time": "2024-12-01T20:35:20",
"upload_time_iso_8601": "2024-12-01T20:35:20.834535Z",
"url": "https://files.pythonhosted.org/packages/f5/4b/a06e0ec3d155924f77835ed2d167ebd3b211a7b0853da1cf8d8414d784ef/yarl-1.18.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b79d4b94a8e6d2b51b599516a5cb88e5bc99b4d8d4583e468057eaa29d5f0918",
"md5": "80b89d2b28be7345a38f099b2f839d7d",
"sha256": "ac1801c45cbf77b6c99242eeff4fffb5e4e73a800b5c4ad4fc0be5def634d2e1"
},
"downloads": -1,
"filename": "yarl-1.18.3.tar.gz",
"has_sig": false,
"md5_digest": "80b89d2b28be7345a38f099b2f839d7d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 181062,
"upload_time": "2024-12-01T20:35:23",
"upload_time_iso_8601": "2024-12-01T20:35:23.292910Z",
"url": "https://files.pythonhosted.org/packages/b7/9d/4b94a8e6d2b51b599516a5cb88e5bc99b4d8d4583e468057eaa29d5f0918/yarl-1.18.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-01 20:35:23",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "aio-libs",
"github_project": "yarl",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"lcname": "yarl"
}