yarl


Nameyarl JSON
Version 1.18.3 PyPI version JSON
download
home_pagehttps://github.com/aio-libs/yarl
SummaryYet another URL library
upload_time2024-12-01 20:35:23
maintaineraiohttp team <team@aiohttp.org>
docs_urlNone
authorAndrew Svetlov
requires_python>=3.9
licenseApache-2.0
keywords cython cext yarl
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage
            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"
}
        
Elapsed time: 0.61945s