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

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, passsword, 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 libray has a rich functionality but furl object is mutable.

    I afraid to pass this object into foreign code: who knows if the code will modifiy my url in a terrible way while I just want to send URL with handy helpers for accessing URL properies.

    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 transormations 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.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 counstruction 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 sequience 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 REAMDE, old version used obsolete AIP

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

This version

0.8.0

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

Uploaded Source

Built Distributions

yarl-0.8.0-cp35-cp35m-win_amd64.whl (74.7 kB view details)

Uploaded CPython 3.5m Windows x86-64

yarl-0.8.0-cp35-cp35m-win32.whl (72.0 kB view details)

Uploaded CPython 3.5m Windows x86

yarl-0.8.0-cp35-cp35m-manylinux1_x86_64.whl (137.8 kB view details)

Uploaded CPython 3.5m

yarl-0.8.0-cp35-cp35m-manylinux1_i686.whl (131.8 kB view details)

Uploaded CPython 3.5m

yarl-0.8.0-cp34-cp34m-win_amd64.whl (73.6 kB view details)

Uploaded CPython 3.4m Windows x86-64

yarl-0.8.0-cp34-cp34m-win32.whl (71.9 kB view details)

Uploaded CPython 3.4m Windows x86

yarl-0.8.0-cp34-cp34m-manylinux1_x86_64.whl (140.0 kB view details)

Uploaded CPython 3.4m

yarl-0.8.0-cp34-cp34m-manylinux1_i686.whl (134.5 kB view details)

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for yarl-0.8.0.tar.gz
Algorithm Hash digest
SHA256 f93b9cef653cc2bc0b9112e145fd77818cffe4c7f534d25f9cf43bc5d750f9f6
MD5 c5090f0ee08156276a7af298abc1c5eb
BLAKE2b-256 ca95aa0cf9d3398038398c29616f744ed05cad26ab0d6f35a3569c26ad5bf349

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.8.0-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 7391854374b24faf31dfb92ed0a70b4dcee2096cf5a99583721575dbdd46bf5e
MD5 9db626e1b6421928f07e4a9a933b70c4
BLAKE2b-256 3bf3b43f13470131e14534faa4ecb00f142099a22d234630d6c4439b9a01372d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.8.0-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 6aab2b6a8090c65672cab75fb2a0a6a329f88b4dae580a5294897f5d0e73a24c
MD5 d65aa83719a0cdc76a6d4accbf3f4be7
BLAKE2b-256 1ecbfa3fb340e313ee2f725265219a7862d84bc1f5a7d26d2f0da51d3a6598f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.8.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 28025ec5e745fb909b968fdf869247edf8c264d7969f4b75c7494c54308cde21
MD5 06a59b0ff1fbdfcde96706318dd4f5aa
BLAKE2b-256 05e65c928ad6c1a15bb0c6a1b16076847887828ee1636d3f46a48b41e177dcc7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.8.0-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 7616c908fe7ca771fa2f98339dcd586e4b65d90253fb72a6e4ad279364ecc142
MD5 7e303d515a3a24e4eedf18f38a5fe3f9
BLAKE2b-256 8c1b6724d2cb80c11ae04b3c2aef92901ae666a686a64e28545eb7a798874d8a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.8.0-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 858244559e85c09587a21691d13646013c6716de9e43d6fe11ad80a2b9215fe8
MD5 d30361d7cf4cded244a91ea1183cb195
BLAKE2b-256 9856bca30dba191ae0a8d11cead2972bfaa603bfd06e58c411f1f24e4c3c762c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.8.0-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 5ae31c50f291745d5066de41ba62a2ee0ac0e21431318499a1d2553bccf6e6fb
MD5 83ebd027d9a4e19406128fedfa127897
BLAKE2b-256 e3cc08c8a680d497a64b1b539cf37fd08112640e76b9a2f07d98be5d59d63d33

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.8.0-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 6b157b8e724c55f2f866b33bec4b01ec81c130f81a12be7ecbe7452364b6b517
MD5 69ff637f9039cbed06afd287c33a44a0
BLAKE2b-256 5bcf0c543a73a4e48037cd3a24ad9bed0055f0854f1645c7a62090fc53332dfd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.8.0-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 862b239ad469ebc1f7a38130e5b8ede3d530d99735e63abd41b828d383afdd06
MD5 523e010094db45ba280bdd74f747a9be
BLAKE2b-256 5ffd9f8c98c93971ca6a15657f1d324f491b461e9f58601d50d0e9b7b6aca861

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