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.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 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.1

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

Uploaded Source

Built Distributions

yarl-0.8.1-cp35-cp35m-win_amd64.whl (74.8 kB view details)

Uploaded CPython 3.5m Windows x86-64

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

Uploaded CPython 3.5m Windows x86

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

Uploaded CPython 3.5m

yarl-0.8.1-cp35-cp35m-manylinux1_i686.whl (131.9 kB view details)

Uploaded CPython 3.5m

yarl-0.8.1-cp34-cp34m-win_amd64.whl (73.7 kB view details)

Uploaded CPython 3.4m Windows x86-64

yarl-0.8.1-cp34-cp34m-win32.whl (72.0 kB view details)

Uploaded CPython 3.4m Windows x86

yarl-0.8.1-cp34-cp34m-manylinux1_x86_64.whl (140.1 kB view details)

Uploaded CPython 3.4m

yarl-0.8.1-cp34-cp34m-manylinux1_i686.whl (134.6 kB view details)

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for yarl-0.8.1.tar.gz
Algorithm Hash digest
SHA256 9f0397ae540124bf16a8a5b89bc3ea1c07f8ae70c3e44231a40a9edd254d5712
MD5 34f60a148ab55e3bfde2c0efd7026308
BLAKE2b-256 101bbe30529bde22c85c2975a4e21cf7f13edbcb291350fbbde8bc13938620c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.8.1-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 19b4810f87ac2a2d89b12ba09ce0da905ce676686a1743e609ec337529ea0324
MD5 e4720485ae5efd9a625a6a5efdb9d956
BLAKE2b-256 e12e0506c99de1d63fba48bdbbede4688e16e8944a3de3c907fc62d0792548ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.8.1-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 1176d84106b57ce9185fa3ccff34e9d80790d484e4f4fba03e7c8de441c66d63
MD5 b934252f0dc6222521c75e0032ac448c
BLAKE2b-256 83a23ed4b2734019452ffacd7cf7401dfd5bb2f07eb26e18fef70bb1658bc81c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.8.1-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a469d45fb55c6d2de3d64f95ad77f533fd095426d2679c04d3e99de8eaf7bc8f
MD5 4163196781ef9a2b955dd54b7880b54c
BLAKE2b-256 b61b5c402fa7f4ecf5e4142f70c19e45cbf4960ad07b85b8c1aea6503c888699

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.8.1-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 1160bd7d055fcfcf3a09a4c4c2ae132fc598278ad83a0b0d86bf6ddf9bf528d1
MD5 0e7cf439f42dfe7f8d5ecb9b389a2b21
BLAKE2b-256 72eaacf35cc3698006d7430f50c70c7f9c4c8c4cbc6a81c88b2bbcbdbbb16cdd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.8.1-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 3081fa0772aa6eced9081ddaf27f214d99d661fc0efd653fbe07126ad438164b
MD5 7e3cbf9bc52cfd5f97e021be41d47d92
BLAKE2b-256 1ce6b71328fb8d02d7cd00473520e581446f95e4bf5df227af83928c05c4874d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.8.1-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 e69c9a908895d87d8ca8ce5fa74765c254de0551fb976c44fda6377a9285c123
MD5 d08db033349d64c479bb008dabd8cd4d
BLAKE2b-256 1b430443c4c5a60955d4cb3622b2e9a82953a31be245eb8008dc5bfbfdb6c5ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.8.1-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e987835339c31050e6598abd2afc2d87c0461d90127759d153e79d14031c587e
MD5 d1d3cbfe1b87aded0a8d643fc7c1b6ce
BLAKE2b-256 143514194b9e8aae3f6f99da4ffbc960b7cef5d7ef1971add49f99c288c9b01d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.8.1-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 1ac93132e3110bb1547a4758a473a36bfc958ce986e491607b72e472c222df79
MD5 2b80d588a11a61c702545e9156fc2b98
BLAKE2b-256 e6a0e87092b3b3a8271c0f4d7993de4f52380db2d2d796f0f39526b24c521949

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