single |
yarl
====
The module provides handy URL class for URL parsing and changing.
:align: right
:alt: Matrix Room — #aio-libs: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
>>> 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 (like *Alpine Linux*, which is not
manylinux-compliant because of the missing glibc and therefore, cannot be
used with our wheels) 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.:
|