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 Chat on Gitter

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.14.0 (2017-11-11)

  • Drop strict mode (#123)

  • Fix “ValueError: Unallowed PCT %” when there’s a “%” in the url (#124)

0.13.0 (2017-10-01)

  • Document encoded parameter (#102)

  • Support relative urls like ‘?key=value’ (#100)

  • Unsafe encoding for QS fixed. Encode ; char in value param (#104)

  • Process passwords without user names (#95)

0.12.0 (2017-06-26)

  • Properly support paths without leading slash in URL.with_path() (#90)

  • Enable type annotation checks

0.11.0 (2017-06-26)

  • Normalize path (#86)

  • Clear query and fragment parts in .with_path() (#85)

0.10.3 (2017-06-13)

  • Prevent double URL args unquoting (#83)

0.10.2 (2017-05-05)

  • Unexpected hash behaviour (#75)

0.10.1 (2017-05-03)

  • Unexpected compare behaviour (#73)

  • Do not quote or unquote + if not a query string. (#74)

0.10.0 (2017-03-14)

  • Added URL.build class method (#58)

  • Added path_qs attribute (#42)

0.9.8 (2017-02-16)

  • Do not quote “:” in path

0.9.7 (2017-02-16)

  • Load from pickle without _cache (#56)

  • Percent-encoded pluses in path variables become spaces (#59)

0.9.6 (2017-02-15)

  • Revert backward incompatible change (BaseURL)

0.9.5 (2017-02-14)

  • Fix BaseURL rich comparison support

0.9.4 (2017-02-14)

  • Use BaseURL

0.9.3 (2017-02-14)

  • Added BaseURL

0.9.2 (2017-02-08)

  • Remove debug print

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

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

Uploaded Source

Built Distributions

yarl-0.14.0-cp36-cp36m-win_amd64.whl (84.1 kB view details)

Uploaded CPython 3.6mWindows x86-64

yarl-0.14.0-cp36-cp36m-win32.whl (80.9 kB view details)

Uploaded CPython 3.6mWindows x86

yarl-0.14.0-cp36-cp36m-manylinux1_x86_64.whl (152.7 kB view details)

Uploaded CPython 3.6m

yarl-0.14.0-cp36-cp36m-manylinux1_i686.whl (144.9 kB view details)

Uploaded CPython 3.6m

yarl-0.14.0-cp35-cp35m-win_amd64.whl (84.0 kB view details)

Uploaded CPython 3.5mWindows x86-64

yarl-0.14.0-cp35-cp35m-win32.whl (80.8 kB view details)

Uploaded CPython 3.5mWindows x86

yarl-0.14.0-cp35-cp35m-manylinux1_x86_64.whl (152.4 kB view details)

Uploaded CPython 3.5m

yarl-0.14.0-cp35-cp35m-manylinux1_i686.whl (143.9 kB view details)

Uploaded CPython 3.5m

yarl-0.14.0-cp34-cp34m-win_amd64.whl (83.0 kB view details)

Uploaded CPython 3.4mWindows x86-64

yarl-0.14.0-cp34-cp34m-win32.whl (80.9 kB view details)

Uploaded CPython 3.4mWindows x86

yarl-0.14.0-cp34-cp34m-manylinux1_x86_64.whl (151.7 kB view details)

Uploaded CPython 3.4m

yarl-0.14.0-cp34-cp34m-manylinux1_i686.whl (145.4 kB view details)

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for yarl-0.14.0.tar.gz
Algorithm Hash digest
SHA256 de800f67f2e5d428a2ef61d57dc410457282111df5ba4bfda89c27dc05258605
MD5 b43d3efc0836154bcfbd7a9ca1b71721
BLAKE2b-256 44661d2b5660fb6c3cf34595c1241f8187af3e07f831da37637887dee88fd694

See more details on using hashes here.

File details

Details for the file yarl-0.14.0-cp36-cp36m-win_amd64.whl.

File metadata

File hashes

Hashes for yarl-0.14.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 fe86e5305130abaf845bd46f2aafc0af8ade748d2a43b4de89903eaeb37ec918
MD5 d1bb5acc01f6590ee96e7df2758ffaef
BLAKE2b-256 e937f452baa2782f675dccf3412dddd1693769b409703b589b4bfbd99f498222

See more details on using hashes here.

File details

Details for the file yarl-0.14.0-cp36-cp36m-win32.whl.

File metadata

File hashes

Hashes for yarl-0.14.0-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 16f3e25991ed9674234fd6beae4d8be0868c8c9273417e8657b05fb043797f01
MD5 64458cb61efd6356b4d833b0c5069d01
BLAKE2b-256 f26a585db5ae7fc11cfa288fd1a492772abc51ffa65e1adf45c07d36b7bb439e

See more details on using hashes here.

File details

Details for the file yarl-0.14.0-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

File hashes

Hashes for yarl-0.14.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 d259c0de2bbc4aa2c79e555f96280736f5647b516efd0952eb56c819ae0b7b52
MD5 421c5cadc112fa1aca42a00dd1a9bb98
BLAKE2b-256 64515f162b512ae74294bbca4058a82923f8cbd38c067bb002aa9a4e690abb4e

See more details on using hashes here.

File details

Details for the file yarl-0.14.0-cp36-cp36m-manylinux1_i686.whl.

File metadata

File hashes

Hashes for yarl-0.14.0-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 4f3ca006175e0a8a9485a475ea7c54f1b42067ccc1a12e4ad4eed28da0ad9491
MD5 3ff61d395a966e05af4878a6fdc5ba49
BLAKE2b-256 b5a8a1805acb11165c739204078fcafcf28921e38a5bd79d83a2d3233723f04e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.0-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 6d0cc6b1ce2c2c91bb70d5e07c61d1e27123ebdfda4b3b0652b38cf0caed062b
MD5 7997091339a36663708d190b61a89302
BLAKE2b-256 48370d3848eb91328a396db68de81477a67585749ca4a3d5cab751c070395c9f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.0-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 6302accf770fed760c8207e01179eb99bf7f58ad5a07ff2834573c71f9d9fccf
MD5 e9d90c6dd9c4356b4c163445ed0c302f
BLAKE2b-256 d04cc5aa683f92b9750b3137e9eee53a1edccddb3d4ca48188a1e51d73a0479c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 37c9d6578e64ff47fd2b384a4d6778990086fe2511ab3fc208574958cfd752c8
MD5 03ccecffa5eda2fcbd6ff379a3503152
BLAKE2b-256 444eb39bb0a552b586d4aadb2ff82a6bec2c2d5486139749e3d180794c6017de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.0-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 2762b8d47f2b711dfd015bc3bc51aa5e0c865ccc6987b8bed4925672f8b33ce3
MD5 1daca64cc26cc7d8b772af811f04430d
BLAKE2b-256 143857fb3fc57765e6b15f544a3765541bf79cff01d4f37f5f9b87f294047405

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.0-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 c74bcc178ade38e4203783c5ff34b625c921347e4c8f157a5d6d63ef7ebf9e81
MD5 9e340551bf7ac007aed67eddc162c3a0
BLAKE2b-256 3c2abe8eaa40c211bac16d30effb24b8425a57ff89ab7013bcc598faccf6b187

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.0-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 7cdef9efdec1dcaadf65ead0309a161f68aa31733107f2e4ee2a1b66607f9dca
MD5 a785d616f218de0654fe10c7556dfdf1
BLAKE2b-256 03320cae3352860b9bdea672920387dae0401743cc09f0fee6498da5a907deff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.0-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 7b6d5a42016f3f81f5620b8e2f08e9835badc0845ece132f3b16b8504bc40923
MD5 1ee8027e996effa10e0e923ba470541b
BLAKE2b-256 96b4283a8f3de9574306de31612f7618e025f1c3bdc2e1f803aa5d1d81b772b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.0-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 2ef6f140f7d45b754ab2dbedb2ca93e4f2aa8d6099245888b08b00696ba4c345
MD5 a1a6e807f7e251a4e539fb418b5677df
BLAKE2b-256 343b68a65ba6d9cac6ee3b7442d1aa84713a468afe2577cf10295686b647697e

See more details on using hashes here.

Supported by

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