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

Uploaded Source

Built Distributions

yarl-0.9.6-cp35-cp35m-win_amd64.whl (80.7 kB view details)

Uploaded CPython 3.5m Windows x86-64

yarl-0.9.6-cp35-cp35m-win32.whl (77.7 kB view details)

Uploaded CPython 3.5m Windows x86

yarl-0.9.6-cp35-cp35m-manylinux1_x86_64.whl (165.1 kB view details)

Uploaded CPython 3.5m

yarl-0.9.6-cp35-cp35m-manylinux1_i686.whl (157.5 kB view details)

Uploaded CPython 3.5m

yarl-0.9.6-cp34-cp34m-win_amd64.whl (79.7 kB view details)

Uploaded CPython 3.4m Windows x86-64

yarl-0.9.6-cp34-cp34m-win32.whl (77.7 kB view details)

Uploaded CPython 3.4m Windows x86

yarl-0.9.6-cp34-cp34m-manylinux1_x86_64.whl (167.9 kB view details)

Uploaded CPython 3.4m

yarl-0.9.6-cp34-cp34m-manylinux1_i686.whl (160.8 kB view details)

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for yarl-0.9.6.tar.gz
Algorithm Hash digest
SHA256 b6f16314b3944ac9aa412caa2cb9ac5f34de0af9f79aac35879676a04f9a04b1
MD5 6a359ac0e24cdf287e3d461966cc481a
BLAKE2b-256 2f08b197bd19930410d647939af91cc3a26125b826a2d7b22bf28c3ccad79819

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.6-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 e9ab26d3ce4f41a4ef9556f10fcc1ea2178312d35caa4e2ce0ad51d35e9e84ea
MD5 ab053c4dfec9ad02f69d8c23ad93a92c
BLAKE2b-256 f07da41e0b2a769654a309abf7e23318ceade504903cf887f3706cb14a1eaabd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.6-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 53e117604d81c040185eed8fb29974713f394754e55029262ced4058b910cb84
MD5 247343e39f0826aa385a24237a111ba7
BLAKE2b-256 4562463e0e1ee09d627db9b7cfe692710a7b6ff8680b5ce367756e9756fb804e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.6-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f2a87610af91f0a753530c5dfffcc2929684fa24d23f13ef6651d91fe6307576
MD5 cb9f51baf49f7fae00008422b46e73c1
BLAKE2b-256 4ac2043215872a2528268efd2997436a366ffe620e717039e7e6bf2098c468c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.6-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 3c5280884cc879faed9bd3615b445440443b5270b052bafa20ffcafaafa27a06
MD5 5d33321823834e2cbe9bca6cbfbe4ef9
BLAKE2b-256 56285dce9ff11568d2b0e2b48418387b9bb4b14cd390de308adc465af35c12e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.6-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 8149c02bf780a9bf363b00b133b5b7602c8895eff8216e646cf3f9c9b324fa9e
MD5 52079921f80326cf6e50abc5d0a572e2
BLAKE2b-256 d0c2079a3a983fd9bf782da5e9cf67c57d66c5daea7460fb3ba7f84c5a9f3007

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.6-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 e0f3306053f500e6f124801b5ab49e57cd669d9f17786dd4bd9d899f9d27f304
MD5 143162501bf1ea0f469bbd2ac0bdacfb
BLAKE2b-256 2a2268455fa2a38b65c2896522bfbc0a1de461dfcec684b9d24958c6ab9f4d65

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.6-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 5faeea98c84033daab8ca56f8f5c8c4f34cd8960f34d97c654e409b1da0c6685
MD5 38d66297c45db731c2c9222fcac8cfd9
BLAKE2b-256 dc0dcbbe780c7824dd67519edf39ff1f8b2da17910af7fb4b090006345f3ddaa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.9.6-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 1288a2c1779306329b03aa5e03c51a93a0ef3d4a6e451f74d1848dbed9bb2625
MD5 66ebbdb0e6dd5c2f9bbf31651ccdb3c3
BLAKE2b-256 bd12f02d4c66d93706c4073376ee0809723660d99f9e81645d51281b80213a91

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