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-hypernode.com/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-hypernode.com/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.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

This version

0.9.2

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

Uploaded Source

Built Distributions

yarl-0.9.2-cp35-cp35m-win_amd64.whl (80.6 kB view details)

Uploaded CPython 3.5m Windows x86-64

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

Uploaded CPython 3.5m Windows x86

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

Uploaded CPython 3.5m

yarl-0.9.2-cp35-cp35m-manylinux1_i686.whl (157.4 kB view details)

Uploaded CPython 3.5m

yarl-0.9.2-cp34-cp34m-win_amd64.whl (79.5 kB view details)

Uploaded CPython 3.4m Windows x86-64

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

Uploaded CPython 3.4m Windows x86

yarl-0.9.2-cp34-cp34m-manylinux1_x86_64.whl (167.7 kB view details)

Uploaded CPython 3.4m

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

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for yarl-0.9.2.tar.gz
Algorithm Hash digest
SHA256 4c63264bdf022e4ab509dd8946147dec026a4110c90e0a2dda9499385c312ece
MD5 09fc2fe4fcd34e9f49081c80efdd5a12
BLAKE2b-256 4a15a9f1b82bb88c2c11fee12d0e4248f0ed4cb0ec3e2b25fa4b0e52baff0899

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for yarl-0.9.2-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 58a91d6f8dc88314db0e6b46e41a8d53817366fe9237085391f7e24f11006df4
MD5 583184ffc9c6c1c749c527eda98b04dc
BLAKE2b-256 4e1d024d77ef4e60940e69c0d185504f68e23fa0039b175f7a2932573686f006

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for yarl-0.9.2-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 e41ff50d29f9f871fe68e43615638f7ee915d1f500c207e7c2e330c3713679d9
MD5 29e4fe885327a59b2e8cb842a0e45330
BLAKE2b-256 53f8db0561214fa94bff552f95394dc1eff499edfa369ef7818222c89e7b655d

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for yarl-0.9.2-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 c719c5b83112891ef0dee602e32e8d771a23b956a58b35b0280d37df89106fce
MD5 0186827ccb533c434c6b0a8e6a2909bb
BLAKE2b-256 cda793b77fb2a7b814667d17310482617b8efb883498920c3b561437c98cc4d0

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for yarl-0.9.2-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 602bcb74eaee9321209900df3feeedc2ca61bf6f4da6fd8917abe431424af4d2
MD5 67a0972d47bd4e267241d7386c466e49
BLAKE2b-256 2db36c853c8b399d8bb087d9367b86ba1ec959930c7cac8f1cf81c7f941cc736

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for yarl-0.9.2-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 85b40e8b6d17380a829eb281694d4c503521f66808fb04a4c39f4fcd9bca78db
MD5 be115bd16149df708b09e69bb67c7a11
BLAKE2b-256 db891fd63df2252bb0f867a3338697debca167ba834075cf78f045ee5b251492

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for yarl-0.9.2-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 cf8f57afec63a796f86a5485aad204bd61912e16112fffd30cf3171aa8d68e28
MD5 07df976aec756fcfa4fd72d9b9073fb6
BLAKE2b-256 27f058f43056ef0afb407b72ffb8f1d9a78bd60056dece10ca6ec9cdcc0f8e27

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for yarl-0.9.2-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 9abfb3aa2c949ca51e31e8993a69cb0c7096fd45471b4a6ab1a91d6a09f7a61d
MD5 7224243904bce64f35c9d9f1f93b6577
BLAKE2b-256 0e9687b269875fd2900742e04c1e23c5664eb24054b33719eb9d8775caff93bc

See more details on using hashes here.

Provenance

File details

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

File metadata

File hashes

Hashes for yarl-0.9.2-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 d79cd5d49798c8061b4f6966834e00cfb088b5b02299043d318db7e6fc8b490a
MD5 a5d823332ce62be6add904134b6bc0df
BLAKE2b-256 e6ea3786f77a5ad051e1c6f508b85d7fb419fb16df5a03617159e1a7050d9dac

See more details on using hashes here.

Provenance

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