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.16.0 (2017-12-07)

  • Fix raising TypeError by url.query_string() after url.with_query({}) (empty mapping) #141

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

Uploaded Source

Built Distributions

yarl-0.16.0-cp36-cp36m-win_amd64.whl (85.9 kB view details)

Uploaded CPython 3.6m Windows x86-64

yarl-0.16.0-cp36-cp36m-win32.whl (82.5 kB view details)

Uploaded CPython 3.6m Windows x86

yarl-0.16.0-cp36-cp36m-manylinux1_x86_64.whl (157.6 kB view details)

Uploaded CPython 3.6m

yarl-0.16.0-cp36-cp36m-manylinux1_i686.whl (149.3 kB view details)

Uploaded CPython 3.6m

yarl-0.16.0-cp35-cp35m-win_amd64.whl (85.7 kB view details)

Uploaded CPython 3.5m Windows x86-64

yarl-0.16.0-cp35-cp35m-win32.whl (82.4 kB view details)

Uploaded CPython 3.5m Windows x86

yarl-0.16.0-cp35-cp35m-manylinux1_x86_64.whl (157.3 kB view details)

Uploaded CPython 3.5m

yarl-0.16.0-cp35-cp35m-manylinux1_i686.whl (148.2 kB view details)

Uploaded CPython 3.5m

yarl-0.16.0-cp34-cp34m-win_amd64.whl (84.7 kB view details)

Uploaded CPython 3.4m Windows x86-64

yarl-0.16.0-cp34-cp34m-win32.whl (82.7 kB view details)

Uploaded CPython 3.4m Windows x86

yarl-0.16.0-cp34-cp34m-manylinux1_x86_64.whl (156.6 kB view details)

Uploaded CPython 3.4m

yarl-0.16.0-cp34-cp34m-manylinux1_i686.whl (149.9 kB view details)

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for yarl-0.16.0.tar.gz
Algorithm Hash digest
SHA256 47622985ecd9b15335d65c1acd54aeb3ba449e6d09b36e37ecfe334c7e7b8d0b
MD5 af841bd257c3bf3ce5270b4522e92cd4
BLAKE2b-256 437ec32e170922822223ebf2b2bd3d0d2c63a0bc70ea79d342eb00cde04dadd6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.16.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 7a2001e180f169f762f9322066685f94808db5722ce7c4827a248d3f50d88e61
MD5 abf45581717686ecb1ead6c42faa5c1c
BLAKE2b-256 21a9bd441619c97978e13d241487fdb52c65ac70a720f3e41604fc2ab980bc26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.16.0-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 620f76a2452f502333392c86074046af6fde72b54065e43530e8417d689b1824
MD5 ed13fc65e96acddb6d89de8e1a972b35
BLAKE2b-256 b466d25fea682260e94f23119d44797fbb9ddb806664d6afd6785abcd8675471

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.16.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b3b2bfd039b6a89382ad46a20647286b012db34f63e00e39e185cb4df566121f
MD5 21ab1cb9235b71f822240a461d5e5b15
BLAKE2b-256 46364d7828f063d9933828c23754a9949fd8b6ef57520c982e93decd84a40e77

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.16.0-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 15ab97fd75bd531ba6e3e2639313db177ba44ec3a68bdd3f531904782872dfe9
MD5 0a937128794727f23a21ed386fccddb2
BLAKE2b-256 8a716f5985f335f85f7e107aa79aa7dc3c360b990709c2250ed4e06828ce5cfa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.16.0-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 e04c26c4fa6717ceeada129665cf19f630ddffb2df692bc5d51595b97227a5cf
MD5 c6fe23f7dc049647ff2ca3cb40bc60a9
BLAKE2b-256 7bc50d45e0e0dd25b540451eb7c55190304f32f48fe97972b10c68890ab225ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.16.0-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 e6c302aa976504e4cf299b5ae5385677b77f84b71f84aeddcc56b8841743b27b
MD5 1431a2df2ee0ece8c6bc1948cf28c14e
BLAKE2b-256 980beb2ba5e62faff9fdb7283437a90bac9c8ca82fb12cdc696cedf2fa5033bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.16.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 c1f6aa4f6647380dfee6a2f560079d2c2b105a6d7ab7c1ad83bc811fc0df7bb2
MD5 55cec9c9882d9c94406e932f3c295085
BLAKE2b-256 210064e9986765b4f68cdbe2d3b6f2d7e8ca2430b6b9dff928dffad65a4b9732

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.16.0-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 3c90b8b89d9e163fb114f8e491f85bc44aacc528d9ade3cb4a210a2340282b15
MD5 da4c6d9079c7911955b093827c917820
BLAKE2b-256 46d4fb8ad8f74431c0a282b7639782066975f32581d640d5a286eab93a249cc0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.16.0-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 6f662ff050945163fc70f6c4361807068f66b248d60d7f7d2fe35c6dce7e1490
MD5 574df11527171b22faeb41aa25da73cb
BLAKE2b-256 f5b5348609fc7ba0507d1a79731cc82506095095ae4a3e1e1a6fb531093043dc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.16.0-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 6594f27c81012c9bcad46693b599ae3cb6086ef0c32af68160e599e69b7ce2e6
MD5 6f507af38aa32b5bb6a97e0f11fba9bb
BLAKE2b-256 5868fc19bdd0194669885773e2f4846a83ac2e11924cbd20abbebc01e4f5a8ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.16.0-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 5970e4deb2ad23ececbaca8e20e7421d66d84f9a8978eb7d469b931f0a7c5bfa
MD5 fd076d633631a6ec2547ea73a38b73ce
BLAKE2b-256 3332f2c5f5af172c67641fe88498128737abc08f04322333cd099e41431ad9ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.16.0-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 55dfe4a952fddf3e32c08e3fe004a86b77963d95a4b36c8bdb5acc68960c4767
MD5 63327d20be485d0fc7f0bf2cd31cb314
BLAKE2b-256 05bf8a4d779cc9ef99e70e752d52fc06e8a193307e0933096c9bccfe20cc42da

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