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, 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.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.9.3.tar.gz (125.2 kB view details)

Uploaded Source

Built Distributions

yarl-0.9.3-cp35-cp35m-win_amd64.whl (80.7 kB view details)

Uploaded CPython 3.5m Windows x86-64

yarl-0.9.3-cp35-cp35m-win32.whl (77.6 kB view details)

Uploaded CPython 3.5m Windows x86

yarl-0.9.3-cp35-cp35m-manylinux1_x86_64.whl (165.0 kB view details)

Uploaded CPython 3.5m

yarl-0.9.3-cp35-cp35m-manylinux1_i686.whl (157.5 kB view details)

Uploaded CPython 3.5m

yarl-0.9.3-cp34-cp34m-win_amd64.whl (79.6 kB view details)

Uploaded CPython 3.4m Windows x86-64

yarl-0.9.3-cp34-cp34m-win32.whl (77.6 kB view details)

Uploaded CPython 3.4m Windows x86

yarl-0.9.3-cp34-cp34m-manylinux1_x86_64.whl (167.8 kB view details)

Uploaded CPython 3.4m

yarl-0.9.3-cp34-cp34m-manylinux1_i686.whl (160.7 kB view details)

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for yarl-0.9.3.tar.gz
Algorithm Hash digest
SHA256 e3b8c30182b7dac16a3666e89c004a18aa591f0242931d16e2e636a2133cce6c
MD5 8f0b03eecb5253e92a1bbbd0b054d4e5
BLAKE2b-256 d43dfaf9236e8486eac3ec9c6f8eef8ebe99b89fc4dc9ef6c5a2aad7b220d005

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.3-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 110129b714499148986e4746300a1f11bd11c5f6ab7ed7ae801a46490e09c87c
MD5 b7bfc0b509d91ac5e15398805179e3ad
BLAKE2b-256 c7d12dc72cd30294356b18dadc35ceef1f65a94de158fca7bd50030a33eedde6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.3-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 327a80064627f060035be0a81116112e9e5814b8718b445babfecfce03d2f9b7
MD5 ebe4195fb8a634f23fd27bc55647185b
BLAKE2b-256 0cfa9276935210b87afb4ae78b8f6eccee063c9f37c9bc95c8f8582d9f7ddb0f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.3-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 de2837afbaab1b2b2e6cd9f7282834725b276910004dd6e3577cd7753e2b6e26
MD5 c5fc2d0f57d78853034d852eec45746b
BLAKE2b-256 bbe1d937320bfa39ffca597a9b6b40112a2ffee2c5979a3a405b475b8e9807ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.3-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 10150efb1073ddcd4a57e0e4665b8aedfcb7ac8112915e85c28e0220a4a13497
MD5 a9d2abec2914fa1281f07895535d20e3
BLAKE2b-256 1679f5ed7602f72a433aecaf758a33adf1f7d9f03ccc8f63b6123554a9b51214

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.3-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 cff6b87352c120984fe4a399e207b41d0db8afb54744af9de1020073a4eb60f5
MD5 b1d29854c4f48855334dfc95c5b7d5c6
BLAKE2b-256 be6232a5b82e1512bcc1eab9f4b9316774d9b1f6dc92ff02748bcc94c6d5e694

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.3-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 5c1eb2d38b0779cde676d0a0a813b503206472566f469beb08e0510e9052c4d0
MD5 59751cd5e34cf45b33b03b99a8a10a11
BLAKE2b-256 eee200f43e313063909edebd21d95455e3ad852bd7a7f02ccd873b3aeec8963b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.3-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 8a3b28751ec158be1aab335617bda820bda69391523e6f0e473098e11a4ea879
MD5 7b871e9cf8941007e3e7f10b18a54b38
BLAKE2b-256 6f30b31c599a6575e40ff9330eaaf85c20951cc8fe3f24c009d47d8e2dd2ca9d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.3-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 24de86cd4aa743853ace84e083b441f0fda047a2c040fb8d677c0eb3431ebdaf
MD5 5ba04ec8c4ffcc7ccf491dc10ee4e433
BLAKE2b-256 be122b76370d5948f0912fee7410dc80f72ffa885fa790d7e4043a37aea0a7f0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page