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, passsword, 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 produces 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 libray has a rich functionality but
furlobject is mutable.
I afraid to pass this object into foreign code: who knows if the code will modifiy my url in a terrible way while I just want to send URL with handy helpers for accessing URL properies.
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 any decode/encode transformations leaving 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.