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

Uploaded Source

Built Distributions

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

Uploaded CPython 3.6mWindows x86-64

yarl-0.10.1-cp36-cp36m-win32.whl (78.8 kB view details)

Uploaded CPython 3.6mWindows x86

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

Uploaded CPython 3.6m

yarl-0.10.1-cp36-cp36m-manylinux1_i686.whl (160.4 kB view details)

Uploaded CPython 3.6m

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

Uploaded CPython 3.5mWindows x86-64

yarl-0.10.1-cp35-cp35m-win32.whl (78.6 kB view details)

Uploaded CPython 3.5mWindows x86

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

Uploaded CPython 3.5m

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

Uploaded CPython 3.5m

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

Uploaded CPython 3.4mWindows x86-64

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

Uploaded CPython 3.4mWindows x86

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

Uploaded CPython 3.4m

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

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for yarl-0.10.1.tar.gz
Algorithm Hash digest
SHA256 b05c43cf4c283d9cc4a05f59b0c21ebf6d3a997dfcc2defad381d4bfa87090d1
MD5 c08802c5e90038e360cd30160a3078eb
BLAKE2b-256 7b701597b5f367d64742c4d6b3dc44d7c0e4d4f705e16e302ea7b92719c65dd0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 ae681d2b724f73d8c29928399901389bd4f1eeac7412a26fd6992bb5754f25ff
MD5 8bc348ed85a33807bc2f4e7868fc7cb1
BLAKE2b-256 46b9794116ab5a31fa889647f0296ad8c4196cf6cf32aa101a634a9bc55d9662

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.1-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 4879256fedb682786bb69c1dc897417abe5606014fbce3ae14bcc7fffec87146
MD5 2ae32f126417cc3ad712eb800257ef5e
BLAKE2b-256 382481b0112e00698e74b0a75b6bcdc0bbd6a2dbc2cdfa3cbcf8828ce764eb7f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 f7e90620de3c4851900835d8d9818c2a1e813e9b39ee53269e3cde74d82846d7
MD5 a762fd86800e3bd8de55ad31df2754d0
BLAKE2b-256 91c389c8804155d9794359b7a33cfe89d972b1253963b2082f7f6d67c046d346

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.1-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 cba4214fce81aed6adfaddb1bc71dd9de0ab09778aac18c3bd2713871942a467
MD5 b416938b1813a104f75aa2e6e65264c0
BLAKE2b-256 bfc0ca15ad92c4b63f404c47a084ddb01b2ef1ed6566b88ad08e9fde81e6cd20

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.1-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 2d718fa0f7f4358f31b2d42f1ab93b5ada33792a9b81616e58931a60296c1aa0
MD5 5a610165336cabc72bd260fcb7f33147
BLAKE2b-256 a9163c7f5ae80fb6de9097e7aef31d94d6b331c70a46aa210b40e21097cd3b84

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.1-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 ca2ea80626b274f1a8c29df804eb4c63a5bdeb25e2c7b04fd075f071df018f31
MD5 407e2e428a350d173ae6634240fc38f1
BLAKE2b-256 93483ae05e19a9f98e9318243b4c48a3203703996e2291885c903f1e9a164488

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.1-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 87a7335d8e95330ea1fc03272ddd28f7e7abb5be8d8ba326ac092fc806724ab4
MD5 8a12ebec5cebbd9a0ac203ab6ed5ce6e
BLAKE2b-256 fe3a21f8297677a77e1f74697b892a3ee7f384506c5a202372bb4ee3b9bb38d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.1-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 8185bb96221bc0a35d82480af9189eae415707a473650ae6234d955e20577a0c
MD5 788d5a7fab849ef2ea044444df174dea
BLAKE2b-256 30d6e059126c8301c72316e37245f86cf6cd4482918315d445607145c977317e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.1-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 8f84554a75d0dbbfb199821b692a3f7b2e45171323d3083faf342c42b57ad3d6
MD5 a42f93c06eba9182b4fc21096f53017f
BLAKE2b-256 a58bda6db102748d55d6f29b91a1718b4d3fe0c81b4ea375c29aca59a557f960

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.1-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 8f65079ebf360df2e00f6e609f175ea94d513a246bde06975f65d7334a89f362
MD5 c56f1804784880b3d0303e8c64be78a4
BLAKE2b-256 afd505b129a782254f0af168ef5f4880334fe5292886a6570fe9e95d97acb899

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.1-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 67beefa39290b501949c2f5d820e9777e3236fe6b2c7366128aa6b636662fdce
MD5 33cb0aa1df220fe482857cdc10311153
BLAKE2b-256 4c53b6d7189fe36857c5320f725375d03a53d0d114d2248d66294e73cb094d8e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.1-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 a7ba45f498b127f0f40602c7767decbaa247f3d37f8e8dd7aac56e596fef1021
MD5 b2f5fef60e61c09397c4f55e8dc55e78
BLAKE2b-256 6ce11b6dc07f7be05a693fc52f0bc85e024f62ca9a9fe03231773212fc145d05

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page