02.01.2017       Выпуск 159 (02.01.2017 - 08.01.2017)       Интересные проекты, инструменты, библиотеки

yarl - еще одна библиотека для работы с URL


Экспериментальная функция:

Ниже вы видите текст статьи по ссылке. По нему можно быстро понять ссылка достойна прочтения или нет

Просим обратить внимание, что текст по ссылке и здесь может не совпадать.



https://travis-ci.org/aio-libs/yarl.svg?branch=master https://readthedocs.org/projects/yarl/badge/?version=latest


Url is constructed from str:

>>> from yarl import URL
>>> url = URL('https://www.python.org/~guido?arg=1#frag')
>>> url

All url parts: scheme, user, passsword, host, port, path, query and fragment are accessible by properties:

>>> url.scheme
>>> url.host
>>> url.path
>>> url.query_string
>>> url.query
<MultiDictProxy('arg': '1')>
>>> url.fragment

All url manipulations produces a new url object:

>>> url.parent / 'downloads/source'

Strings passed to constructor and modification methods are automatically encoded giving canonical representation as result:

>>> url = URL('https://www.python.org/путь')
>>> url

Regular properties are percent-decoded, use raw_ versions for getting encoded strings:

>>> url.path

>>> url.raw_path

Human readable representation of URL is available as .human_repr():

>>> url.human_repr()

For full documentation please read https://yarl.readthedocs.org.


$ pip install yarl

The library is Python 3 only!


YARL requires multidict library.

API documentation

The documentation is located at https://yarl.readthedocs.org

Comparison with other URL libraries

  • furl (https://pypi.python.org/pypi/furl)

    The libray has a rich functionality but furl object 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.

    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 any decode/encode transformations leaving end user to cope with these gory details.

Source code

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.

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.

Лучшая Python рассылка

Разместим вашу рекламу

Пиши: mail@pythondigest.ru

Нашли опечатку?

Выделите фрагмент и отправьте нажатием Ctrl+Enter.

Система Orphus