Url is constructed from
>>> 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:
>>> 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:
>>> url.parent / 'downloads/source' URL('https://www.python.org/downloads/source')
Strings passed to constructor and modification methods are automatically encoded giving canonical representation as result:
>>> url = URL('https://www.python.org/путь') >>> url URL('https://www.python.org/%D0%BF%D1%83%D1%82%D1%8C')
Regular properties are percent-decoded, use
raw_ versions for
getting encoded strings:
>>> url.path '/путь' >>> url.raw_path '/%D0%BF%D1%83%D1%82%D1%8C'
Human readable representation of URL is available as
>>> url.human_repr() 'https://www.python.org/путь'
For full documentation please read https://yarl.readthedocs.org.
$ pip install yarl
The library is Python 3 only!
YARL requires multidict library.
The documentation is located at https://yarl.readthedocs.org
Comparison with other URL libraries
The library has rich functionality but the
furlobject 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.
furlhas other non-obvious tricky things but the main objection is mutability.
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.
The project is hosted on GitHub
Please file an issue on the bug tracker if you have found a bug or have some suggestion in order to improve the library.
The library uses Travis for Continuous Integration.
aio-libs google group: https://groups.google.com/forum/#!forum/aio-libs
Feel free to post your questions and ideas here.
Authors and License
yarl package is written by Andrew Svetlov.
It's Apache 2 licensed and freely available.