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

Uploaded Source

Built Distributions

yarl-0.9.8-cp35-cp35m-win_amd64.whl (81.0 kB view details)

Uploaded CPython 3.5m Windows x86-64

yarl-0.9.8-cp35-cp35m-win32.whl (77.9 kB view details)

Uploaded CPython 3.5m Windows x86

yarl-0.9.8-cp35-cp35m-manylinux1_x86_64.whl (165.3 kB view details)

Uploaded CPython 3.5m

yarl-0.9.8-cp35-cp35m-manylinux1_i686.whl (157.8 kB view details)

Uploaded CPython 3.5m

yarl-0.9.8-cp34-cp34m-win_amd64.whl (79.9 kB view details)

Uploaded CPython 3.4m Windows x86-64

yarl-0.9.8-cp34-cp34m-win32.whl (78.0 kB view details)

Uploaded CPython 3.4m Windows x86

yarl-0.9.8-cp34-cp34m-manylinux1_x86_64.whl (168.1 kB view details)

Uploaded CPython 3.4m

yarl-0.9.8-cp34-cp34m-manylinux1_i686.whl (161.1 kB view details)

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for yarl-0.9.8.tar.gz
Algorithm Hash digest
SHA256 a7818b0654265623525b56e78b901315a9ffb7ef0bf21b4af7e0e27572d54dec
MD5 055d1386dfc269c37785508b07d82665
BLAKE2b-256 662e646e7da82260ad1dce86ebeed0befbd487941b7aa61ee2291fa47aa71bf4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.8-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 236f62301ab1bffb0f3c8f9590a231562b8acbaefd36b674f5f361470ced7cf5
MD5 c071f448daf3acab76d3a8b5d0edc13b
BLAKE2b-256 04333cd8406c1a96ebdf21272c5c5577e15e92f84f5cacafa95063dffce5797e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.8-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 3229746744d7f16864599ee46d4270b1b8fa54c1053d004b16b6f0ca6c3d8ace
MD5 3b71157a2c126f279d2ee2cb426ca694
BLAKE2b-256 72c262fb8834a89fde6515f6944ec24ce4b6cdee3851325bfe84825cd82c4d8f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.8-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 c5825603d992a5e507f18fc83b452173f7d8bffa132270336dcf78edde3e2ba1
MD5 023a5200145b5a6e8cc8ae6934f9bf4b
BLAKE2b-256 a3fb662820524e47478b7c64f33fb29b1e8c241fac5f5a23acb5fd2fe073d14a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.8-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 cde6b00a048355de06c3ff31f1c3de97475ab1f4af274c538018754992138889
MD5 40834d669110c68b0b29fcfe689c8904
BLAKE2b-256 3accf1ec1bbec8145657ff1bfecc19d2ddfba30ba5a00ed5b60d93349aa84c1e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.8-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 d0fb3f77cab629ebf0c0c779712294d132a542a4c6155b45433e8c00e14b91b3
MD5 1362d8ddfdedbcbb23cca8e3622e4ab9
BLAKE2b-256 e5737177e7bba6bf9892dc8b35dc1199711681f38c818d233d6f9defcf44d927

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.8-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 993b7a1afe4fbf3edfa685ae15a4b4415ddf21e2ec6c32bff704dc4c09370f94
MD5 210692834638639b33a06725666af7f3
BLAKE2b-256 812d606c4a272f5ac2922af27c14effd32d4703f4840959593bf263d62b48271

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.8-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 18b81273f433ca706b14b855034db6ebeff56ff48e816c4aa3550de6da4d272a
MD5 94e6168abd0b3ee2d2e54d647e09f5e5
BLAKE2b-256 87713b1b6c01e3a2837edf3aa189f7fb53597134d5c23c07ef2846527348c147

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.8-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 1cc41899955d397eead6d66d917b0298096181e03c67b69e16121c069b916fb8
MD5 b9b001294651586018bb037cb1bcd669
BLAKE2b-256 1ea8f69b81b56ba690eb3f77f2ad996b01b482d9a6f59f0137a5085409dbfde8

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