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

Uploaded Source

Built Distributions

yarl-0.11.0-cp36-cp36m-win_amd64.whl (82.4 kB view details)

Uploaded CPython 3.6m Windows x86-64

yarl-0.11.0-cp36-cp36m-win32.whl (79.4 kB view details)

Uploaded CPython 3.6m Windows x86

yarl-0.11.0-cp36-cp36m-manylinux1_x86_64.whl (168.0 kB view details)

Uploaded CPython 3.6m

yarl-0.11.0-cp36-cp36m-manylinux1_i686.whl (160.9 kB view details)

Uploaded CPython 3.6m

yarl-0.11.0-cp35-cp35m-win_amd64.whl (82.2 kB view details)

Uploaded CPython 3.5m Windows x86-64

yarl-0.11.0-cp35-cp35m-win32.whl (79.2 kB view details)

Uploaded CPython 3.5m Windows x86

yarl-0.11.0-cp35-cp35m-manylinux1_x86_64.whl (166.6 kB view details)

Uploaded CPython 3.5m

yarl-0.11.0-cp35-cp35m-manylinux1_i686.whl (159.5 kB view details)

Uploaded CPython 3.5m

yarl-0.11.0-cp34-cp34m-win_amd64.whl (81.1 kB view details)

Uploaded CPython 3.4m Windows x86-64

yarl-0.11.0-cp34-cp34m-win32.whl (79.2 kB view details)

Uploaded CPython 3.4m Windows x86

yarl-0.11.0-cp34-cp34m-manylinux1_x86_64.whl (168.9 kB view details)

Uploaded CPython 3.4m

yarl-0.11.0-cp34-cp34m-manylinux1_i686.whl (162.0 kB view details)

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for yarl-0.11.0.tar.gz
Algorithm Hash digest
SHA256 51b92ef78e322cb2c93839c404de5ae33e852cab665fc99652fa89d7ab16e761
MD5 a5a21f6ba05b62d34a32b3bbe50493bf
BLAKE2b-256 ccb614db4c96244fa47cf63db62177dd97739d505c90515c83479660ea6d9439

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.11.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 6e501af23b1a813cfde0b4a041f454db211e5adb3c2cbf5b3bd09624ec7cb48b
MD5 33ab02ca54106145bd511922d0bd3eae
BLAKE2b-256 13a42f84cf818b0bfe4548de7fd0d85207620dc777cd2f207124f258bfd22cfa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.11.0-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 c213c79d59620e63c7f5b974e5a7f9c924bf1ee713a7be28632d1091fdf5c380
MD5 b6f786f29179f6bec6b7292a5caedb51
BLAKE2b-256 40562cb30baa4ee047842d696a99ca9e8a074deed2510d4c3598968cb5778370

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.11.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 6c49b2217d27dde1519dd0c71911495f27827840d42bb8df47b7d7fef7a117ee
MD5 df4adc472735ca62a83f22093afce899
BLAKE2b-256 55a248ddc281e2e6a2c13efc519ad3504eb5f2ce90c6568c63158cb12cd89f7f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.11.0-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 23d9bffc63564ffcdd522ad805413a376d715598da33adfcd8c2a0285f1dbd5b
MD5 260fb2217e74ab859b6128d9713bdc51
BLAKE2b-256 6257b1e0dd8731a30377b0c930f00deaf6213ef354be965b265c9c047f6417fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.11.0-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 d10d4b5f87275f0552ee702d046e20102014c01365a4dcb9e14f47b7f52e50f6
MD5 e0e36da654f8547bcc9308851f2c7cfe
BLAKE2b-256 e4cae01fc5796681e89b39ec221a1c6c8d600989fba408a30ffcb96b56561bd2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.11.0-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 0d8c45fb10c57c5d796b990fc586430044ead9eb3d43c457fea79422e28e3221
MD5 390227f860fb3c63d0a38176ca2bb8f8
BLAKE2b-256 400e9f19d0a0e7bee7721fee159cb90f47c20729f2856b11750528d9e6de747e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.11.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f0fa3a44cc463ddc2257e17d7aa162069c921d662a17b1d7d963f417717ecb31
MD5 c930837e4cc0baec9b5c5e8eb877337e
BLAKE2b-256 a126a65d1befc6295e7fced10337a891811dc1417a406ef03e29a3f74b31389f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.11.0-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 a0f04ba59ab5f20096efb393647f9925c358eb943b4848b1d6026deeb02d5ea1
MD5 ff5711b619860fea8e49bcb1dee0945b
BLAKE2b-256 199ea3379eb4e3b2fa2cf412cc5d62218e5cda74dbd3fc6a4a092b8beabeb084

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.11.0-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 d2bf78c44bc3ddeb30731664af27815b4a263c0fc4890641d1550c152b1e534f
MD5 01d443403c5d8e9c6064561f05fba1a4
BLAKE2b-256 3121d5d2f7c105782c31f2e967b0a50aff1bbeb60d7577bdd0ea2846464a7e45

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.11.0-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 9f499fc70e0e199badc742d7c1d771ce54b56cdc51e6e5f6bf522a045115f30f
MD5 210d3a8afc58c05d11ad163274eaab08
BLAKE2b-256 6b17d737b36f34170ba9feee7f2697f7865170e4c62bba544037f8a03fe809de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.11.0-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e8b134dc870c338413781fcd3d53119f2fe1c46731d1adec7454784a7e0e5d7d
MD5 cc65474b315c09478521a978487c688b
BLAKE2b-256 11093d48981cb2e08390602ec325394c7d73612414abd5efb7463005a57aae85

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.11.0-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 215e66134d470078aa0efe80e4817dac13e8202fd1c8ada3ba1a8be2f66326e1
MD5 9936c79099200cb3ccdb548ba080e19c
BLAKE2b-256 6cce16ed5a98888dda0c7aac7ec1edf11818cb34588bae67273465e473a4d2de

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