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

Uploaded Source

Built Distributions

yarl-0.10.3-cp36-cp36m-win_amd64.whl (82.0 kB view details)

Uploaded CPython 3.6m Windows x86-64

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

Uploaded CPython 3.6m Windows x86

yarl-0.10.3-cp36-cp36m-manylinux1_x86_64.whl (167.6 kB view details)

Uploaded CPython 3.6m

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

Uploaded CPython 3.6m

yarl-0.10.3-cp35-cp35m-win_amd64.whl (81.8 kB view details)

Uploaded CPython 3.5m Windows x86-64

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

Uploaded CPython 3.5m Windows x86

yarl-0.10.3-cp35-cp35m-manylinux1_x86_64.whl (166.2 kB view details)

Uploaded CPython 3.5m

yarl-0.10.3-cp35-cp35m-manylinux1_i686.whl (159.1 kB view details)

Uploaded CPython 3.5m

yarl-0.10.3-cp34-cp34m-win_amd64.whl (80.7 kB view details)

Uploaded CPython 3.4m Windows x86-64

yarl-0.10.3-cp34-cp34m-win32.whl (78.8 kB view details)

Uploaded CPython 3.4m Windows x86

yarl-0.10.3-cp34-cp34m-manylinux1_x86_64.whl (168.5 kB view details)

Uploaded CPython 3.4m

yarl-0.10.3-cp34-cp34m-manylinux1_i686.whl (161.6 kB view details)

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for yarl-0.10.3.tar.gz
Algorithm Hash digest
SHA256 27b24ba3ef3cb8475aea1a655a1750bb11918ba139278af21db5846ee9643138
MD5 c10a2eb1e3474c0f84994d537313d246
BLAKE2b-256 e6fc9b3820c47aa66924c38841f1766bf3b4857161b3c53e8548dd7a6dc0b226

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.3-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 c25ff7942ec5157c3c4e8d5fd203c28d44c698802bddd832b092a93fc0901b83
MD5 f467e883edd3b470dbe065147d534d4e
BLAKE2b-256 9c075f9c948ed92c6584ef1b3ea6dc5704a91e497b2651993c4d139f415d1735

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.3-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 493660233ec60caf52a18c0f1114b24d7d2a34320dd4977d48b019e8e89a3757
MD5 c2046e03c4ce093197d86975dfbe4c17
BLAKE2b-256 0b989570df6ca0a21934c17dbd332f95852634d8dbb62065f9106febe281492b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.3-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 83f4ff0318137d212368ee75d68c9541de293d3a54a033f96bf5c17ddea07bad
MD5 c098b8630c330806a0c130e782dd81ab
BLAKE2b-256 83473b66b1d0b8dfbde820a144b5bfb8a871de9359959100206dc90fe2d785b7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.3-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 6fc3dddc0b8d2bda65492ca42dabfa92bf65d7ef093b1ca37ebf91486b4499fc
MD5 65ab9656901687b3f7eb2d1d54d831fa
BLAKE2b-256 27fe9027292b4080a5c9798e9553363b3160e9a905a5a895cd6d0e6545560581

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.3-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 c37fe44e909f7de30499b562d3566e2cd5f8f4343a0e5e0b54b536de963660ff
MD5 0eda267308d73cc62c730b8abe64c84a
BLAKE2b-256 0e4d660bd500ec056b26f7980d4edcee2ae165397b3d4e536a9dbbee34d90898

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.3-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 49d210792e797f34abdd8f28f412552ac6780b883c0098871bba4ce275200075
MD5 87cb56d023a077ad163c4103fe9b50af
BLAKE2b-256 b6bbb0cdffd4ab9eff58099702e1fdf8d40ae07c8e919911136fdea4ca3b9ace

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.3-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 1ce778f7001c84735f4847f655e60a58b2104783b3478d6a0867c6e3f887c950
MD5 4aa50f94a64b8dcca0767cc59fb5400c
BLAKE2b-256 336ef4aadcfd473afbd093876b435e60b314013b13ee67a194771d5f57051a7c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.3-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 c6e459ad6bc8241e675dc15a1784707d82c3e12854c8d4718162ced48a6824e4
MD5 87d11d4da4b70054dd9be1d4423e4cf1
BLAKE2b-256 1256f7f88b59a234ba80e0110bb81df5150b8e460d415ef5f7a6fa0fca75e68c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.3-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 56f5bd0906dbf50dd24e879e168742629562c56565aa36149b57cfbff55d3348
MD5 7701e6df6a999457ca6193604233661a
BLAKE2b-256 62ba3b86a3bc46cf3a5bb402161cacb6cbd238f8112474e0fb9e616c09c88174

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.3-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 3163e9bcb8e86baac9aba73bc68b6f208d83aa5385b64ca1aa0ac271ee514d5c
MD5 9fa8ba6160e5d2b93c5a82c8be44c921
BLAKE2b-256 60676d16b63e52cd0c873dee177aea82c2c985631624881fd5ebd59b9cd87846

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.3-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 3a1d5d97fb2cbc93936857b734d849240a4f7a0cc5746298b5321b06936949f7
MD5 1d068332a923a45ba0b2b4b6c5799d37
BLAKE2b-256 092ec55411a7d57ac5b346092a578042efb9266c6dcc4129e5ece7c8b9b85674

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.10.3-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 7e01e5a67aae4c548da9e902fdd4b151a0a85f707e89d215fcb693a7043c8817
MD5 b1ec21c256f31cd563fcb49b7547285c
BLAKE2b-256 6b7845791f4f674b4a9b69e7c9bdeeac0b5b251de1883c52eb75834b86284de8

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