Skip to main content

Yet another URL library

Project description

yarl

https://travis-ci.org/aio-libs/yarl.svg?branch=master https://codecov.io/gh/aio-libs/yarl/branch/master/graph/badge.svg https://badge.fury.io/py/yarl.svg https://readthedocs.org/projects/yarl/badge/?version=latest

Introduction

Url is constructed from str:

>>> 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 .human_repr():

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

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

Installation

$ pip install yarl

The library is Python 3 only!

Dependencies

YARL requires multidict library.

API documentation

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

Comparison with other URL libraries

  • furl (https://pypi-hypernode.com/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-hypernode.com/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 transormations 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.

CHANGES

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 sequience of pairs as with_query() parameter

0.3.0 (2016-09-26)

  • Introduce is_default_port()

0.2.1 (2016-09-26)

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 REAMDE, old version used obsolete AIP

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.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yarl-0.5.0b4.tar.gz (115.4 kB view details)

Uploaded Source

Built Distributions

yarl-0.5.0b4-cp35-cp35m-manylinux1_x86_64.whl (123.0 kB view details)

Uploaded CPython 3.5m

yarl-0.5.0b4-cp35-cp35m-manylinux1_i686.whl (117.7 kB view details)

Uploaded CPython 3.5m

yarl-0.5.0b4-cp34-cp34m-manylinux1_x86_64.whl (124.9 kB view details)

Uploaded CPython 3.4m

yarl-0.5.0b4-cp34-cp34m-manylinux1_i686.whl (119.6 kB view details)

Uploaded CPython 3.4m

File details

Details for the file yarl-0.5.0b4.tar.gz.

File metadata

  • Download URL: yarl-0.5.0b4.tar.gz
  • Upload date:
  • Size: 115.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for yarl-0.5.0b4.tar.gz
Algorithm Hash digest
SHA256 2b1235cecbf4e52ed48bbf55553abfe45668e51ae62776b91b1b4749a3f52751
MD5 9d22e22711b4df2ae03aff98892736d3
BLAKE2b-256 85eb563d50adb60452336cb3d0800c4d5f3100f29c2c2966685ccb6124402e7d

See more details on using hashes here.

Provenance

File details

Details for the file yarl-0.5.0b4-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for yarl-0.5.0b4-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 2dbf30cac1b304bd8b7581c4a20c8b26befb9d5dac87e7d82c0ea71cd4890eb3
MD5 70edda8674944fb12359e99ef41f7245
BLAKE2b-256 e26d14e3e192f61c5930085792df399ad96b7c57e7693c2f6f0cb606a3f39103

See more details on using hashes here.

Provenance

File details

Details for the file yarl-0.5.0b4-cp35-cp35m-manylinux1_i686.whl.

File metadata

File hashes

Hashes for yarl-0.5.0b4-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 4691d3bfaa2df24fd127c0cb44c46deb26d9d34d0f452dc1467948c51d577466
MD5 ee8935238db6368531185a28de31e688
BLAKE2b-256 b372f6a8934120fbe6a44a48c265770a066934e013287cfd33a05371b5de26bc

See more details on using hashes here.

Provenance

File details

Details for the file yarl-0.5.0b4-cp34-cp34m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for yarl-0.5.0b4-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 07105a847fbe412a0b4a72e54fb0f7cfbf70aab275895109ca3754f9e9ab89dc
MD5 24bcdacbc7aa47aa12cb03473ce79e9e
BLAKE2b-256 7b390a392940926ac34114354d0ad8b567a56aaf837a8464667031414cce28bb

See more details on using hashes here.

Provenance

File details

Details for the file yarl-0.5.0b4-cp34-cp34m-manylinux1_i686.whl.

File metadata

File hashes

Hashes for yarl-0.5.0b4-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 28f37f7609f03df0a2e029086639514415d55f70f85010167fb449bd8ecfdfb0
MD5 015d31a74c7f0481cb1231741b96231d
BLAKE2b-256 7fd757683dafa68e84cfe0170e3ac30bee4c2da249cb1f5f03aa20ecc5e1501d

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page