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

1.0.0 (2018-01-15)

  • Use fast path if quoted string does not need requoting (#154)

  • Speed up quoting/unquoting by _Quoter and _Unquoter classes (#155)

  • Drop yarl.quote and yarl.unquote public functions (#155)

  • Add custom string writer, reuse static buffer if available (#157) Code is 50-80 times faster than Pure Python version (was 4-5 times faster)

  • Don’t recode IP zone (#144)

  • Support encoded=True in yarl.URL.build() (#158)

  • Fix updating query with multiple keys (#160)

0.18.0 (2018-01-10)

  • Fallback to IDNA 2003 if domain name is not IDNA 2008 compatible (#152)

0.17.0 (2017-12-30)

  • Use IDNA 2008 for domain name processing (#149)

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

Uploaded Source

Built Distributions

yarl-1.0.0-cp36-cp36m-win_amd64.whl (119.0 kB view details)

Uploaded CPython 3.6m Windows x86-64

yarl-1.0.0-cp36-cp36m-win32.whl (113.4 kB view details)

Uploaded CPython 3.6m Windows x86

yarl-1.0.0-cp36-cp36m-manylinux1_x86_64.whl (255.0 kB view details)

Uploaded CPython 3.6m

yarl-1.0.0-cp36-cp36m-manylinux1_i686.whl (247.2 kB view details)

Uploaded CPython 3.6m

yarl-1.0.0-cp35-cp35m-win_amd64.whl (118.5 kB view details)

Uploaded CPython 3.5m Windows x86-64

yarl-1.0.0-cp35-cp35m-win32.whl (113.1 kB view details)

Uploaded CPython 3.5m Windows x86

yarl-1.0.0-cp35-cp35m-manylinux1_x86_64.whl (250.1 kB view details)

Uploaded CPython 3.5m

yarl-1.0.0-cp35-cp35m-manylinux1_i686.whl (241.8 kB view details)

Uploaded CPython 3.5m

yarl-1.0.0-cp34-cp34m-win_amd64.whl (117.8 kB view details)

Uploaded CPython 3.4m Windows x86-64

yarl-1.0.0-cp34-cp34m-win32.whl (113.8 kB view details)

Uploaded CPython 3.4m Windows x86

yarl-1.0.0-cp34-cp34m-manylinux1_x86_64.whl (251.9 kB view details)

Uploaded CPython 3.4m

yarl-1.0.0-cp34-cp34m-manylinux1_i686.whl (243.6 kB view details)

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for yarl-1.0.0.tar.gz
Algorithm Hash digest
SHA256 5ea610467a04d99bfc8878186330b28859eafc6ca589cdd24ba6fb7234c4b011
MD5 3e4f8e14ca0b41ee587f8ca6ae4839f0
BLAKE2b-256 33922fa917aa6961d35fe2809fd16200441f49a347313a203b75f6a1b03915ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.0.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 07da885cf2b5ced4679d3a419557ee0f007dd498a91ca0d1cf855a62f291cf15
MD5 da5b01c507ad0ebd93654bfb608954e2
BLAKE2b-256 c2c42d58d49ebafcb815d13851193e4bd51cc9493bff090814a2c00be55fac76

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.0.0-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 86549278c9f5ef7873308038c591a45ee31a85bea7d386b1f9d954a910cfc16a
MD5 fe54abcb2e744ea382c35cac9a33b083
BLAKE2b-256 ed988cd1f60fea672c6613e7fde9aa519456d5f3d2e683f1d3693973e94fdde5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.0.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 9b7c0f6dff35e97acde71e0030b8b9fe4ac66eb25fb94ef14128f83ab7a21915
MD5 3b2986d94025fab6b1751e73d25b7acd
BLAKE2b-256 4d0218703c4ea346e0e376feeb4aa81b5e14a61b5802fb9f231abe15b00b25e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.0.0-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 bdf4ac90545fc54c86725601c36ae6ea4e6b193b7d2d72632a4811addec44f8f
MD5 78dae71a61ab8e287722d6bc4758615f
BLAKE2b-256 003b455ef6ca81509898ef5f677799fb8bf87d5916e4a012e7d947caa44d4f1d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.0.0-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 b6f9297b4a154bb4bc1ef471c96dccd163f0ea1f07a756012a59a0fca0b578ab
MD5 19f043e55543318c3a3eac4fe52b5ba4
BLAKE2b-256 95da11fc662793f985b9f3f8732da41efc1d712ffbc5722793e2437f26c55355

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.0.0-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 95cc9472f6693e6196a84d70c27dc25fdfc47bfc9c127bd8edc60b7b32da5497
MD5 3ead6ddb8c63895c6c130487a003ea25
BLAKE2b-256 83b8b6f54c258626cda2e01f76bb964e1b682c6fb1544f26e42dee8306d646bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.0.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 29a1461d3590506f1088b677b024ff44085894bc39073a26c5b513254645e538
MD5 aed63c9376f5aca2fefeb34e46da8d49
BLAKE2b-256 e9af17d443dcae8f1f5f75501b4040bc02690a58ed03668a32ddf5496dad7607

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.0.0-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 2ce7ce29b84f010881fb25f79aa0b67b8dfbdc9fcb1b4c3ec955ada5be002f76
MD5 3575153a7bea565e7f6079fb1e4cd9e0
BLAKE2b-256 25c2a807ca863753e5c7f2b9e4063a0cd1931ea5f27f1a77e088d79e57361f2e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.0.0-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 1d6e2f22eb5a5b1e0033280bcc2ff5bb40dfacfc20e6ed995fce937844b62729
MD5 e4d188de86f168d836c13bb857127379
BLAKE2b-256 858bcbf493ab720b9233b7db5534681b8e430087a50c85f4a816f3beb1a6a74c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.0.0-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 ea15affc5c3d4613d4052e05f6595d89d68475336a66a76ceb1dd9dcc3c8858d
MD5 747828312729284831df53da65ca3635
BLAKE2b-256 53013e25bd27e115b5173b2ca0354a8bb330dc72dd2874cdc4fa679aa82a66be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.0.0-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 61bc968a68aec5c4e4b1fad982546319d5493f8580f7360d10fb2adf03d02ebf
MD5 6e2655ebf26ea4962193f6f4bd112e24
BLAKE2b-256 7e481b3942418dbd218ac778999ae9ebb5b1e1641dac39f585717b721a710ae0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.0.0-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 b32a55fb56fa70cc2931f2b3b7e5d4c0ec3784e379523fb02a45f0854798f4e4
MD5 9b727fad2eb9d63ac3cb57022e830efd
BLAKE2b-256 3ddeb3d48dce72283890bac0c2b1ecb46b0272e52d8273166953bdc8068b71cc

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