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

Uploaded Source

Built Distributions

yarl-0.14.1-cp36-cp36m-win_amd64.whl (84.2 kB view details)

Uploaded CPython 3.6m Windows x86-64

yarl-0.14.1-cp36-cp36m-win32.whl (81.0 kB view details)

Uploaded CPython 3.6m Windows x86

yarl-0.14.1-cp36-cp36m-manylinux1_x86_64.whl (152.8 kB view details)

Uploaded CPython 3.6m

yarl-0.14.1-cp36-cp36m-manylinux1_i686.whl (145.0 kB view details)

Uploaded CPython 3.6m

yarl-0.14.1-cp35-cp35m-win_amd64.whl (84.1 kB view details)

Uploaded CPython 3.5m Windows x86-64

yarl-0.14.1-cp35-cp35m-win32.whl (80.9 kB view details)

Uploaded CPython 3.5m Windows x86

yarl-0.14.1-cp35-cp35m-manylinux1_x86_64.whl (152.6 kB view details)

Uploaded CPython 3.5m

yarl-0.14.1-cp35-cp35m-manylinux1_i686.whl (144.0 kB view details)

Uploaded CPython 3.5m

yarl-0.14.1-cp34-cp34m-win_amd64.whl (83.1 kB view details)

Uploaded CPython 3.4m Windows x86-64

yarl-0.14.1-cp34-cp34m-win32.whl (81.1 kB view details)

Uploaded CPython 3.4m Windows x86

yarl-0.14.1-cp34-cp34m-manylinux1_x86_64.whl (151.8 kB view details)

Uploaded CPython 3.4m

yarl-0.14.1-cp34-cp34m-manylinux1_i686.whl (145.5 kB view details)

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for yarl-0.14.1.tar.gz
Algorithm Hash digest
SHA256 9980ec589b5c72d0fc0683a7fbb321196c623754c18fcd4174f2296401b423cc
MD5 4af68a16be08a01bfea27de33be0e5e3
BLAKE2b-256 11c2610ac992174a36048cc539282e6b586b8cbbdbec2549cbd15f8ecc6a760e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 6dad2d54868fb4a059996b9a38d313f7edd6095ed41cfeb1bcfee0b60e988979
MD5 fd5c05cf64c19d53dbea86dcab897819
BLAKE2b-256 36f4e4b2e6f7a7cff902205b4b3aecff2b41d1f7dc92406e5f35fdbe301c9b39

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.1-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 7fb7d676847d738c8027edbeaa0fd0675b9c52ce3c6abbd6bfb57ead5e0efbb7
MD5 1a1641f643b64ecd1a7d45048bb804cc
BLAKE2b-256 a27c46bc6f98bc8b553408fdc6306a89152d9459aa5244c8d8583240ebb4e4b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 d3c01a6b3bfd65ca2d662ada7f5fb7f34d45d45f86316825b2d4ca1297cbdcfb
MD5 c6b24eb371d8a56c6cd15cc46aa78303
BLAKE2b-256 f4aa96c14346912486dd8738391de41aa8f1cfb8cf63236f0c39006080c7a5ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.1-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 1a412ca9654f1be1aed082302f3bef9257f1d7e5af34703765e3796b8d6c1f97
MD5 e3a5850345b434862e2f79c075d4417e
BLAKE2b-256 a6f25f4dedd719ac305fe469679941c6fad95593870231d772a6b698b7c416b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.1-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 4d91c96cfe5c27e37f158697b9e8838096be79373c3ee2852d0fc5063a08e56b
MD5 3273ab954681e0ab1c71402d66700c83
BLAKE2b-256 bade6416990e725e70344fa73190f70e8cf3c78ec55e65ad9e85176f1d25af0b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.1-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 cac4297c7a29e20ea68769d94cfa214f24c0ede7540cb1f0ef4bde66aa14b549
MD5 a6146643c2d99b5e54354f48f7a23744
BLAKE2b-256 2e638465f1c1c505ed33e3858f82b978228229c829115e7cc0d3686959d5ceb9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.1-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 4e9cea5f2d1d703c679f2de1f87158e3c37ed6cef184cadc8628800e5cd79209
MD5 2e9e6c40cf11289154cb25801c1b5051
BLAKE2b-256 e412847e9e5a13f796c1e0e8c835a3afa269144b57d34cbbf6c1625194bc3bc9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.1-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 a2b152c2c8ddaecf795817b5cfeb360d06cf11c8be82fdaddc2e3bd7e432575a
MD5 01ed28e5702d5a43ec3cb4950c8cd00c
BLAKE2b-256 08e04c0106eae7fa81a15407051af179f8cd9db0780afc9116739258c9e43d81

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.1-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 aa75ae06f2161255ea6623afbe2e21587276aee4e6bc5e697868dffbec23b312
MD5 e977cae6bb6448dd088d0eaaa47de8b8
BLAKE2b-256 a78475e136cecc47d4caf6c08d31fa169ddf788f659e65df2f4596ee60701dfd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.1-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 5941a57b2b6d68533b73e9e4bd47eb8c5ffda1c1f815c72618491440f084e6cd
MD5 29003b265bd3f1e3ee3ed9fce2943ab7
BLAKE2b-256 b3ff3b5d300e02131e373e616f184bd3a252148b446fd290dd67f5f72df43d17

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.1-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 20b80d9506a7c81a4b23b86ae881e9c724e80050294fe51613161f68675ad700
MD5 4eaa4d7538b4fb421d218ec2099ec72c
BLAKE2b-256 ecb4d5ddc51cda102a4bf432d7e8c0e5aafd7d397894c5b9220a45de4f84fe05

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.1-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 4ca565209165e0958276ee418af4a4fd9bab36e8bb84bed2c852117b66ba0b76
MD5 2a7b094b98efe72c2edc4fc097e80dd0
BLAKE2b-256 7121e37a59ef3bfd407bccd611623c2391d8f5e9780c44f22c135168f2380e0b

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