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

  • Add raw_path_qs attribute (#137)

0.14.2 (2017-11-14)

  • Restore strict parameter as no-op in quote/unquote

0.14.1 (2017-11-13)

  • Restore strict parameter as no-op for sake of compatibility with aiohttp 2.2

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

Uploaded Source

Built Distributions

yarl-0.15.0-cp36-cp36m-win_amd64.whl (85.7 kB view details)

Uploaded CPython 3.6mWindows x86-64

yarl-0.15.0-cp36-cp36m-win32.whl (82.4 kB view details)

Uploaded CPython 3.6mWindows x86

yarl-0.15.0-cp36-cp36m-manylinux1_x86_64.whl (157.5 kB view details)

Uploaded CPython 3.6m

yarl-0.15.0-cp36-cp36m-manylinux1_i686.whl (149.2 kB view details)

Uploaded CPython 3.6m

yarl-0.15.0-cp35-cp35m-win_amd64.whl (85.6 kB view details)

Uploaded CPython 3.5mWindows x86-64

yarl-0.15.0-cp35-cp35m-win32.whl (82.3 kB view details)

Uploaded CPython 3.5mWindows x86

yarl-0.15.0-cp35-cp35m-manylinux1_x86_64.whl (157.2 kB view details)

Uploaded CPython 3.5m

yarl-0.15.0-cp35-cp35m-manylinux1_i686.whl (148.1 kB view details)

Uploaded CPython 3.5m

yarl-0.15.0-cp34-cp34m-win_amd64.whl (84.6 kB view details)

Uploaded CPython 3.4mWindows x86-64

yarl-0.15.0-cp34-cp34m-win32.whl (82.5 kB view details)

Uploaded CPython 3.4mWindows x86

yarl-0.15.0-cp34-cp34m-manylinux1_x86_64.whl (156.4 kB view details)

Uploaded CPython 3.4m

yarl-0.15.0-cp34-cp34m-manylinux1_i686.whl (149.8 kB view details)

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for yarl-0.15.0.tar.gz
Algorithm Hash digest
SHA256 06b3a0d00aebf64b269a3410ec079386f5091e7603796da6644dff08f427737a
MD5 a430eee7611f78587e0da51771e411a5
BLAKE2b-256 04d9662fceeb7abd366116bff2d79561b67d7f4f95f1629ca980c205176f687a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.15.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 aa9db9e3bf718ea0c0905fa8076e07486b3357688181cb430674bf26f2ce0acd
MD5 3cabe62f4bdb54ada5b20262885aadbf
BLAKE2b-256 fc983f37bdad975669bc8a3aa7695a01ce98869aa31fd3f550c4382f6cd85a61

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.15.0-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 2aa32de85de42407c1c949c5c0b998d3805ffd4531a9a3b2dc81c5b6a8174b91
MD5 4763831295dc531e93db2ca274a72ea4
BLAKE2b-256 a650614e91e629dcb069a023a55bd2ef154ae39bdb273431a0a8d4d6eca5ee1f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.15.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 aac9baad9bc9a428d3abc1737862b2bfe818a6a3ccc6b8341dc62eb3b7f2b134
MD5 ac8ccfb577032a4e3d118b9cbbc75889
BLAKE2b-256 cb55711b08e532529b3325cb4722bb601caa2c6995c91cb4520dfae44197e4e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.15.0-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 5bd238a100be1438a3797fe2e793001b641adcd239b033d73e680bd5d7e07520
MD5 b912c02963dd3442d2e9e3a4bcb84ddd
BLAKE2b-256 d5380fac76ac22bcbbb2eba1f4b918d7e6cdbcb000c58a07fe8a9be853a7050e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.15.0-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 58aba6b30e015f2731847eb608d0c38435a26a7c7eb8ca4111a39bd36b393bd0
MD5 eb3c520a89b5d389bcc6a6d2c06b1cb1
BLAKE2b-256 740838886549680256c4c054c72196dfcf41ea76048f3584314ec58740d58b6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.15.0-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 366c2021db3ed548c4cebb2e1ff7cd7e22975e3bf31519464c11c257e80e056f
MD5 7ebc44e849c42eec7641592329c3d550
BLAKE2b-256 bb49db33d556d42b813d789729476ac07455239ae73c882c8b0c0f84a35ab526

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.15.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 fc5598d6bde4a2333109e9b90d246a61ef4a73e201329de0f0bcd7271d71b2dc
MD5 996ebe11c6c65d447e9f30d05301e69f
BLAKE2b-256 5e66daabc807c78a37482f34baa70eea3596de3e8f7b10161f4a70472dea5349

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.15.0-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 b2df0dd3db8b39a51e5a7856a3969166a140f7f316e05deea0c696f58a4472da
MD5 ab5d7bc72defd0a27ab90921b526c361
BLAKE2b-256 8d367bfabc2d7beb5523090336706b2e3f37b5ee0a97fa07dd8ad4d00d0557d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.15.0-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 e0157aca55a555bff824c2dc2d30c2a8adfa768e0ca8168f2b614920475522a0
MD5 a6ce2dd5d59352d92476b0e951acf3bb
BLAKE2b-256 5d2657a47dc9c37b9db734ab7c9709ef3ce6cd52a460ca4a342d85dba6212dfd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.15.0-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 a2f7dbbfa3f360adced0116e600e24b0fbef4ff1a11235309818ac8c2aabddac
MD5 9a0319474041c413c4df4c224cbe9d9c
BLAKE2b-256 fa8d90da86861bafaf7f0ade1f76bf929d3f9c99b1652f06ac47af50daba88cd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.15.0-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a4fa02a86aa753a7ae08525c76a5ea099fe246ec645b252a353c4e5c4e38fae5
MD5 2060df4dd12f1332a0d72a048993a2f6
BLAKE2b-256 0757ba2ebb8100704f3bfbb0249684613ae4fb6723d2b88601d00f6cde5605c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.15.0-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 bd2155dc2fec1c4703404387376863fd13cf5e080950b2ad2aa1145bcd65aa6a
MD5 03e8188b2ee44db7d18f9cc7a0f91c1a
BLAKE2b-256 34cb0246d42cb9c0825ccb95457dd958d7afc9f30c701b841b0c5a74b47f481e

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