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 https://img.shields.io/pypi/pyversions/yarl.svg

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, 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 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.python.org/pypi/furl)

    The library has a rich functionality but furl object is mutable.

    I 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.

    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.

CHANGES

0.9.1 (2017-02-07)

  • Do not lose tail chars #45

0.9.0 (2017-02-07)

  • Allow to quote % in non strict mode #21

  • Incorrect parsing of query parameters with %3B (;) inside #34

  • core dumps #41

  • tmpbuf - compiling error #43

  • Added URL.update_path() method

  • Added URL.update_query() method #47

0.8.1 (2016-12-03)

  • Fix broken aiohttp: revert back quote / unquote.

0.8.0 (2016-12-03)

  • Support more verbose error messages in .with_query() #24

  • Don’t percent-encode @ and : in path #32

  • Don’t expose yarl.quote and yarl.unquote, these functions are part of private API

0.7.1 (2016-11-18)

  • Accept not only str but all classes inherited from str also #25

0.7.0 (2016-11-07)

  • Accept int as value for .with_query()

0.6.0 (2016-11-07)

  • Explicitly use UTF8 encoding in setup.py #20

  • Properly unquote non-UTF8 strings #19

0.5.3 (2016-11-02)

  • Don’t use namedtuple fields but indexes on URL construction

0.5.2 (2016-11-02)

  • Inline _encode class method

0.5.1 (2016-11-02)

  • Make URL construction faster by removing extra classmethod calls

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 sequence 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 README, old version used obsolete API

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

This version

0.9.1

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.9.1.tar.gz (125.1 kB view details)

Uploaded Source

Built Distributions

yarl-0.9.1-cp35-cp35m-win_amd64.whl (80.6 kB view details)

Uploaded CPython 3.5m Windows x86-64

yarl-0.9.1-cp35-cp35m-win32.whl (77.5 kB view details)

Uploaded CPython 3.5m Windows x86

yarl-0.9.1-cp35-cp35m-manylinux1_x86_64.whl (165.0 kB view details)

Uploaded CPython 3.5m

yarl-0.9.1-cp35-cp35m-manylinux1_i686.whl (157.4 kB view details)

Uploaded CPython 3.5m

yarl-0.9.1-cp34-cp34m-win_amd64.whl (79.5 kB view details)

Uploaded CPython 3.4m Windows x86-64

yarl-0.9.1-cp34-cp34m-win32.whl (77.6 kB view details)

Uploaded CPython 3.4m Windows x86

yarl-0.9.1-cp34-cp34m-manylinux1_x86_64.whl (167.7 kB view details)

Uploaded CPython 3.4m

yarl-0.9.1-cp34-cp34m-manylinux1_i686.whl (160.7 kB view details)

Uploaded CPython 3.4m

File details

Details for the file yarl-0.9.1.tar.gz.

File metadata

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

File hashes

Hashes for yarl-0.9.1.tar.gz
Algorithm Hash digest
SHA256 d78260785d43a7ea5eead5b87937eb607651758547a1be94ed4d02068736002c
MD5 50e3ce72f00120734a2dd26fccbb35c6
BLAKE2b-256 0f60d918b5593f4457ee3e7ef57eec5c4ddc403fa17a3035775a70a44ec6a490

See more details on using hashes here.

File details

Details for the file yarl-0.9.1-cp35-cp35m-win_amd64.whl.

File metadata

File hashes

Hashes for yarl-0.9.1-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 37119c72c37f09c08b2488ba580a50e2051a3722643a8f50abbaed37d7a68b19
MD5 f9a9b91678ad8dac7b5750cfb5c70c5a
BLAKE2b-256 7e29c5beba727941876817d0cbcadda8cbf185ddc8bb47568dd4c2b59157cc44

See more details on using hashes here.

File details

Details for the file yarl-0.9.1-cp35-cp35m-win32.whl.

File metadata

File hashes

Hashes for yarl-0.9.1-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 b2fc9588a421bf3a46c4d895e94b78c46c362062bccfd3f4cdb5c9bb7c822129
MD5 e16907fd2f5e40e45f04263dab5efa70
BLAKE2b-256 cd42fa255e92f349d32f45dacfb24e6a97bf40553fa5762572d8ee1f4c0b6a7f

See more details on using hashes here.

File details

Details for the file yarl-0.9.1-cp35-cp35m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for yarl-0.9.1-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 0a76e0170551472c5c99441321078211c0322ebf4ef8e0bf0185a4a123d9c4f1
MD5 5db848c641c2b2314126ac6e9c58f2c9
BLAKE2b-256 583de19b8ff128c7861aaf6521cb199bbd08015c3f1fa27f8efcf7729ce25bbd

See more details on using hashes here.

File details

Details for the file yarl-0.9.1-cp35-cp35m-manylinux1_i686.whl.

File metadata

File hashes

Hashes for yarl-0.9.1-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 5d0410375b65bd6e2544b2709441ac69dcbc11d623d7df350e88ad64278e4241
MD5 34692d87323319e534209c35adbbefe2
BLAKE2b-256 312a4d33c2972f2b3528d4f11b178115fe8e34d0bef2bf7b481543973f29b6a3

See more details on using hashes here.

File details

Details for the file yarl-0.9.1-cp34-cp34m-win_amd64.whl.

File metadata

File hashes

Hashes for yarl-0.9.1-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 9d66c5b13c19b830ee3ff982a1348e1f3c9523b39e55e91ac50eb7b10bb6e276
MD5 b4ae39da3fc24c43282dc9a55c926cf2
BLAKE2b-256 941be3feaa75f997ee0b3b5b4572af91607cfd368fe40128e58ef0c875d07f35

See more details on using hashes here.

File details

Details for the file yarl-0.9.1-cp34-cp34m-win32.whl.

File metadata

File hashes

Hashes for yarl-0.9.1-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 c9efd1246f706cac80ab61abd42e1a72d2a453c3d12a4b9c16691abf9642d628
MD5 49e2c048c610fa6ee57dcbea15dcf97c
BLAKE2b-256 3ee078edc34c24611624e2ad980f78ba2489158c70d7769c8f018c0d72665160

See more details on using hashes here.

File details

Details for the file yarl-0.9.1-cp34-cp34m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for yarl-0.9.1-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e488e534cec93266e61567ad9fd8e201248ab15844cc71ca3ef5c0c32a98d425
MD5 4a4402ba1c2a271202b151745bd93419
BLAKE2b-256 cbbf5f31b627d67a64910717b22785a6edc3d23cbb70220c91b6f488d4940b04

See more details on using hashes here.

File details

Details for the file yarl-0.9.1-cp34-cp34m-manylinux1_i686.whl.

File metadata

File hashes

Hashes for yarl-0.9.1-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 605c458263a136bab0249fdde56f7408cf797878b40d63f40b1a924f44698da9
MD5 a0fbda4de9a9a20fdd490523f1e1b036
BLAKE2b-256 b69d1bde8364c9e82142862589347913c93f82ea17c5ff4401d3858d6a7a7e33

See more details on using hashes here.

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