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

Uploaded Source

Built Distributions

yarl-0.10.2-cp36-cp36m-win_amd64.whl (81.9 kB view details)

Uploaded CPython 3.6m Windows x86-64

yarl-0.10.2-cp36-cp36m-win32.whl (78.9 kB view details)

Uploaded CPython 3.6m Windows x86

yarl-0.10.2-cp36-cp36m-manylinux1_x86_64.whl (167.5 kB view details)

Uploaded CPython 3.6m

yarl-0.10.2-cp36-cp36m-manylinux1_i686.whl (160.5 kB view details)

Uploaded CPython 3.6m

yarl-0.10.2-cp35-cp35m-win_amd64.whl (81.7 kB view details)

Uploaded CPython 3.5m Windows x86-64

yarl-0.10.2-cp35-cp35m-win32.whl (78.7 kB view details)

Uploaded CPython 3.5m Windows x86

yarl-0.10.2-cp35-cp35m-manylinux1_x86_64.whl (166.1 kB view details)

Uploaded CPython 3.5m

yarl-0.10.2-cp35-cp35m-manylinux1_i686.whl (159.0 kB view details)

Uploaded CPython 3.5m

yarl-0.10.2-cp34-cp34m-win_amd64.whl (80.6 kB view details)

Uploaded CPython 3.4m Windows x86-64

yarl-0.10.2-cp34-cp34m-win32.whl (78.7 kB view details)

Uploaded CPython 3.4m Windows x86

yarl-0.10.2-cp34-cp34m-manylinux1_x86_64.whl (168.4 kB view details)

Uploaded CPython 3.4m

yarl-0.10.2-cp34-cp34m-manylinux1_i686.whl (161.5 kB view details)

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for yarl-0.10.2.tar.gz
Algorithm Hash digest
SHA256 a042c5b3584531cd09cd5ca647f71553df7caaa3359b9b3f7eb34c3b1045b38d
MD5 a8bdba0b60e8c1fd8922e2ae9dd2b02e
BLAKE2b-256 83cdc9d2c92f12de6bbb8ab025a6a9488d64e75f8650e52232b4718124d28279

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 10f07aa527d09345bf140511e7633fe6e6598271d4b9e7bcccf25634adfc606d
MD5 9f0d794833826dc4c4048ccc3a4ea563
BLAKE2b-256 d88e251ab97bf0b9363203e5aa2314da47cf047d628bc15d102e0edcf37573ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.2-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 0134b16161f759cd836afd4586742db7819029a9e6c6ebd3217728e3c34d969e
MD5 5834516b2c7e6827e99d6e36f362976b
BLAKE2b-256 798bc6b1b2187966d2213e21d86e781c497d74a4210e792df548d34d9df05676

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.2-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 7fdb4ad4146ad90a5662118c720eb9844a473817d5e18567425e9898a87948a9
MD5 308bd63581c32fb715392652a329ba6a
BLAKE2b-256 88f51e63c611d511b0a2af4c0120b314471014478db6ced669273eb1cda788f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.2-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 3f81357ed2b8123fc49f727cc72718b3a186fc60cb879482318e2412d0437b71
MD5 235601b54fca65663bb162832cb149fa
BLAKE2b-256 4f1552cdefc8712147c319e781c368ae06cc93ac893b15fc88d3234cb8545f38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.2-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 660c078e53bb287550f3629babe6f7481684a666e61508663b80b69985f10290
MD5 9fb1d3b4e3fdf26a37701ffd3742c276
BLAKE2b-256 459e2dc85aba2a2312747da43270e9da357e388511805e7eda8d17971c267ddc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.2-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 e2bf7d6f22a0e9c010f241b16e2ec937a3ceec9189700f83200e0c16349ad3d2
MD5 07ebd997f3298162f5e0d48a3dadfa14
BLAKE2b-256 beb94aa2a984c40dd55eed9cfe9e7f2854d0ad345eb9f11fc55ac30bb4e81d8c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.2-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 756974323b8fcb6a66c0f213dadc21d9ec47df83109ac3f8f744ad664aabc9ae
MD5 b5c9066427a2d34cd7cbbe2575214794
BLAKE2b-256 947d6392b2eb8a101776e18cb1d57a14d59b8877ec057dad3cc1bc6ad803e641

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.2-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 049b1aa6e10e71dc09fd15fba216576d65c762f7f8e2594defef4d38c85e02e3
MD5 1525e8cf64dcecedea0bcaab31ba7825
BLAKE2b-256 0c6ed26b3ff668ccbd755ebfcd71fd4cbccb658651d124b0294adf61c82a8cfb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.2-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 2d4490744f8e44b079bb2ce00caa2f7bbfaf1f09c5fccba3b4f504220afb5832
MD5 cf02d234deaaaf2f6dc0fd85282b87da
BLAKE2b-256 9cf2a2032493753ae571ed6da2de6d7d1e55df78faa50c5310c978aa7e1ff9b7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.2-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 3b1e6f46837eadab75f483330547b3550aa09d4c5e170dd172c65fcb9c0bed15
MD5 4e4b125dbaaa41cd8af184f4aa79c22c
BLAKE2b-256 7f371a5569905b8f0f0b05d49ae92d6e54dbb315bde15376f650f8166c270786

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.2-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 29bee8fbd55915f79588b6b36b561a78c95d7974910926bd99845a176dd498af
MD5 fe511673bf2d022fab190a3184fcfdeb
BLAKE2b-256 b12ca817d400646d3c7b9be182a9c523d756d538043a17d81c2a79ddff54a345

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.2-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 67834a3fe68214f6e803a03c3d34c91ee8298c25405903cbfa9d6181e6d240c3
MD5 990dde27a3a2f31d0ec29824a76a4660
BLAKE2b-256 6b51bdb4504d14d5a90abf9bb59021c190a7564e9435eb793842c969dee6199a

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