Skip to main content

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.

Release files for yarl 0.15.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yarl 0.15.0
File Size Uploaded
yarl-0.15.0.tar.gz 135.9 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for yarl 0.15.0
File
yarl-0.15.0-cp36-cp36m-win_amd64.whl CPython 3.6 CPython 3.6 pymalloc Windows x86-64 Details
yarl-0.15.0-cp36-cp36m-win32.whl CPython 3.6 CPython 3.6 pymalloc Windows x86-32 Details
yarl-0.15.0-cp36-cp36m-manylinux1_x86_64.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-64 Details
yarl-0.15.0-cp36-cp36m-manylinux1_i686.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-32 Details
yarl-0.15.0-cp35-cp35m-win_amd64.whl CPython 3.5 CPython 3.5 pymalloc Windows x86-64 Details
yarl-0.15.0-cp35-cp35m-win32.whl CPython 3.5 CPython 3.5 pymalloc Windows x86-32 Details
yarl-0.15.0-cp35-cp35m-manylinux1_x86_64.whl CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-64 Details
yarl-0.15.0-cp35-cp35m-manylinux1_i686.whl CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-32 Details
yarl-0.15.0-cp34-cp34m-win_amd64.whl CPython 3.4 CPython 3.4 pymalloc Windows x86-64 Details
yarl-0.15.0-cp34-cp34m-win32.whl CPython 3.4 CPython 3.4 pymalloc Windows x86-32 Details
yarl-0.15.0-cp34-cp34m-manylinux1_x86_64.whl CPython 3.4 CPython 3.4 pymalloc Linux glibc 2.5+ x86-64 Details
yarl-0.15.0-cp34-cp34m-manylinux1_i686.whl CPython 3.4 CPython 3.4 pymalloc Linux glibc 2.5+ x86-32 Details

Total release size: 1.6 MB

Release files / yarl-0.15.0.tar.gz

Download URL yarl-0.15.0.tar.gz
Size 135.9 kB
Tags Source
SHA-256 checksum
How to use checksums
06b3a0d00aebf64b269a3410ec079386f5091e7603796da6644dff08f427737a
BLAKE2b-256 checksum
How to use checksums
04d9662fceeb7abd366116bff2d79561b67d7f4f95f1629ca980c205176f687a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / yarl-0.15.0-cp36-cp36m-win_amd64.whl

Download URL yarl-0.15.0-cp36-cp36m-win_amd64.whl
Size 85.7 kB
Tags CPython 3.6 CPython 3.6 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
aa9db9e3bf718ea0c0905fa8076e07486b3357688181cb430674bf26f2ce0acd
BLAKE2b-256 checksum
How to use checksums
fc983f37bdad975669bc8a3aa7695a01ce98869aa31fd3f550c4382f6cd85a61
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / yarl-0.15.0-cp36-cp36m-win32.whl

Download URL yarl-0.15.0-cp36-cp36m-win32.whl
Size 82.4 kB
Tags CPython 3.6 CPython 3.6 pymalloc Windows x86-32
SHA-256 checksum
How to use checksums
2aa32de85de42407c1c949c5c0b998d3805ffd4531a9a3b2dc81c5b6a8174b91
BLAKE2b-256 checksum
How to use checksums
a650614e91e629dcb069a023a55bd2ef154ae39bdb273431a0a8d4d6eca5ee1f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / yarl-0.15.0-cp36-cp36m-manylinux1_x86_64.whl

Download URL yarl-0.15.0-cp36-cp36m-manylinux1_x86_64.whl
Size 157.5 kB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
aac9baad9bc9a428d3abc1737862b2bfe818a6a3ccc6b8341dc62eb3b7f2b134
BLAKE2b-256 checksum
How to use checksums
cb55711b08e532529b3325cb4722bb601caa2c6995c91cb4520dfae44197e4e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / yarl-0.15.0-cp36-cp36m-manylinux1_i686.whl

Download URL yarl-0.15.0-cp36-cp36m-manylinux1_i686.whl
Size 149.2 kB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
5bd238a100be1438a3797fe2e793001b641adcd239b033d73e680bd5d7e07520
BLAKE2b-256 checksum
How to use checksums
d5380fac76ac22bcbbb2eba1f4b918d7e6cdbcb000c58a07fe8a9be853a7050e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / yarl-0.15.0-cp35-cp35m-win_amd64.whl

Download URL yarl-0.15.0-cp35-cp35m-win_amd64.whl
Size 85.6 kB
Tags CPython 3.5 CPython 3.5 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
58aba6b30e015f2731847eb608d0c38435a26a7c7eb8ca4111a39bd36b393bd0
BLAKE2b-256 checksum
How to use checksums
740838886549680256c4c054c72196dfcf41ea76048f3584314ec58740d58b6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / yarl-0.15.0-cp35-cp35m-win32.whl

Download URL yarl-0.15.0-cp35-cp35m-win32.whl
Size 82.3 kB
Tags CPython 3.5 CPython 3.5 pymalloc Windows x86-32
SHA-256 checksum
How to use checksums
366c2021db3ed548c4cebb2e1ff7cd7e22975e3bf31519464c11c257e80e056f
BLAKE2b-256 checksum
How to use checksums
bb49db33d556d42b813d789729476ac07455239ae73c882c8b0c0f84a35ab526
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / yarl-0.15.0-cp35-cp35m-manylinux1_x86_64.whl

Download URL yarl-0.15.0-cp35-cp35m-manylinux1_x86_64.whl
Size 157.2 kB
Tags CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
fc5598d6bde4a2333109e9b90d246a61ef4a73e201329de0f0bcd7271d71b2dc
BLAKE2b-256 checksum
How to use checksums
5e66daabc807c78a37482f34baa70eea3596de3e8f7b10161f4a70472dea5349
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / yarl-0.15.0-cp35-cp35m-manylinux1_i686.whl

Download URL yarl-0.15.0-cp35-cp35m-manylinux1_i686.whl
Size 148.1 kB
Tags CPython 3.5 CPython 3.5 pymalloc Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
b2df0dd3db8b39a51e5a7856a3969166a140f7f316e05deea0c696f58a4472da
BLAKE2b-256 checksum
How to use checksums
8d367bfabc2d7beb5523090336706b2e3f37b5ee0a97fa07dd8ad4d00d0557d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / yarl-0.15.0-cp34-cp34m-win_amd64.whl

Download URL yarl-0.15.0-cp34-cp34m-win_amd64.whl
Size 84.6 kB
Tags CPython 3.4 CPython 3.4 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
e0157aca55a555bff824c2dc2d30c2a8adfa768e0ca8168f2b614920475522a0
BLAKE2b-256 checksum
How to use checksums
5d2657a47dc9c37b9db734ab7c9709ef3ce6cd52a460ca4a342d85dba6212dfd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / yarl-0.15.0-cp34-cp34m-win32.whl

Download URL yarl-0.15.0-cp34-cp34m-win32.whl
Size 82.5 kB
Tags CPython 3.4 CPython 3.4 pymalloc Windows x86-32
SHA-256 checksum
How to use checksums
a2f7dbbfa3f360adced0116e600e24b0fbef4ff1a11235309818ac8c2aabddac
BLAKE2b-256 checksum
How to use checksums
fa8d90da86861bafaf7f0ade1f76bf929d3f9c99b1652f06ac47af50daba88cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / yarl-0.15.0-cp34-cp34m-manylinux1_x86_64.whl

Download URL yarl-0.15.0-cp34-cp34m-manylinux1_x86_64.whl
Size 156.4 kB
Tags CPython 3.4 CPython 3.4 pymalloc Linux glibc 2.5+ x86-64
SHA-256 checksum
How to use checksums
a4fa02a86aa753a7ae08525c76a5ea099fe246ec645b252a353c4e5c4e38fae5
BLAKE2b-256 checksum
How to use checksums
0757ba2ebb8100704f3bfbb0249684613ae4fb6723d2b88601d00f6cde5605c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / yarl-0.15.0-cp34-cp34m-manylinux1_i686.whl

Download URL yarl-0.15.0-cp34-cp34m-manylinux1_i686.whl
Size 149.8 kB
Tags CPython 3.4 CPython 3.4 pymalloc Linux glibc 2.5+ x86-32
SHA-256 checksum
How to use checksums
bd2155dc2fec1c4703404387376863fd13cf5e080950b2ad2aa1145bcd65aa6a
BLAKE2b-256 checksum
How to use checksums
34cb0246d42cb9c0825ccb95457dd958d7afc9f30c701b841b0c5a74b47f481e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

1.9.6

92 release files

1.9.5

92 release files

1.9.3

90 release files

1.9.2

74 release files

1.9.1

74 release files

1.6.3

37 release files

1.6.2

33 release files

1.6.1

33 release files

1.6.0

17 release files

1.5.0

17 release files

1.4.1

17 release files

1.4.0

17 release files

1.3.0

11 release files

1.2.6

9 release files

1.2.5

9 release files

1.2.4

9 release files

1.2.3

9 release files

1.2.2

9 release files

1.2.1

9 release files

1.2.0

13 release files

1.1.1

13 release files

1.1.0

13 release files

1.0.0

13 release files

This release

0.15.0 This release

13 release files

0.11.1

6 release files

0.10.0

9 release files

0.9.8

9 release files

0.9.7

9 release files

0.9.6

9 release files

0.9.5

9 release files

0.9.4

9 release files

0.9.3

9 release files

0.9.2

9 release files

0.9.1

9 release files

0.9.0

9 release files

0.8.1

9 release files

0.8.0

9 release files

0.7.1

9 release files

0.7.0

9 release files

0.6.0

9 release files

0.5.3

9 release files

0.5.2

9 release files

0.5.1

9 release files

0.5.0

9 release files

0.5.0b1

0.5.0b0

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page