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 Chat on Gitter

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.12.0 (2017-06-26)

  • Properly support paths without leading slash in URL.with_path() #90

  • Enable type annotation checks

0.11.0 (2017-06-26)

  • Normalize path #86

  • Clear query and fragment parts in .with_path() #85

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

Uploaded Source

Built Distributions

yarl-0.12.0-cp36-cp36m-win_amd64.whl (82.9 kB view details)

Uploaded CPython 3.6m Windows x86-64

yarl-0.12.0-cp36-cp36m-win32.whl (79.8 kB view details)

Uploaded CPython 3.6m Windows x86

yarl-0.12.0-cp36-cp36m-manylinux1_x86_64.whl (168.5 kB view details)

Uploaded CPython 3.6m

yarl-0.12.0-cp36-cp36m-manylinux1_i686.whl (161.4 kB view details)

Uploaded CPython 3.6m

yarl-0.12.0-cp35-cp35m-win_amd64.whl (82.7 kB view details)

Uploaded CPython 3.5m Windows x86-64

yarl-0.12.0-cp35-cp35m-win32.whl (79.6 kB view details)

Uploaded CPython 3.5m Windows x86

yarl-0.12.0-cp35-cp35m-manylinux1_x86_64.whl (167.1 kB view details)

Uploaded CPython 3.5m

yarl-0.12.0-cp35-cp35m-manylinux1_i686.whl (160.1 kB view details)

Uploaded CPython 3.5m

yarl-0.12.0-cp34-cp34m-manylinux1_x86_64.whl (169.4 kB view details)

Uploaded CPython 3.4m

yarl-0.12.0-cp34-cp34m-manylinux1_i686.whl (162.5 kB view details)

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for yarl-0.12.0.tar.gz
Algorithm Hash digest
SHA256 fc0f71ffdce882b4d4b287b0b3a68d9f2557ab14cc2c10ce4df714c42512cbde
MD5 7c004f4eb8630755f0126d7ea3188dfd
BLAKE2b-256 268be335a45600953cbaaa57e7f276eb8d89128898f11de63c47ecb97e32d29e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.12.0-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 093740341ed419afcbeb7af7548d726ecf03059ddaa2002d8d0ae68654cd97ab
MD5 3814ffa2b6148b6f090a4ccb4d1f21cb
BLAKE2b-256 7df7ecd2eab0dfa4574950af7e2c227113a4c4e9cfb0972eeea8bbce8e726bb4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.12.0-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 9696b961a9a787298615c46d02488d30231b5f2a1c6d69847d06315e01e4d186
MD5 2eea124787616f83623a0dce49a12b65
BLAKE2b-256 ee49a13a7b1c16df66f67a6a1944dc62f53d8026d2f0c0351d3531f2e1781e82

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.12.0-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 165baace17c27b96ccb9a01c7f713af2d0b7cc4c11a1aba6789431495b83b63f
MD5 047d3f41edf0d6c40e1019b77fd84fa3
BLAKE2b-256 c0854b525259ac42f2a449d2ca10c9987df9106c5d64c2831393a5d5beaecd75

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.12.0-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 4c02c43bc49e64a6da3b362200988c3a34df2ec0356bf42dc52cd995265a548a
MD5 8f040dbcbae6c2e8d444b051c9bfd954
BLAKE2b-256 96b53e67ecd07074dad1bc6e3b6051aae14dd89a679b154262b5771f05fd86f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.12.0-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 c8a8a797c18764706863998719612776c8e42770005963c462a8a5ec4407278e
MD5 1781287a0f1b25a73f70e8d72b19e213
BLAKE2b-256 2739863402ebeb74f70ff07800c71c2de8bb8fbff7a13b16b1e87f6ece1be3f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.12.0-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 810a4c07691325716f1a4db2694e23ef03ce25165d8b75c4312aac1d6a8c9eaf
MD5 37675d3ac2ff62d1251fab7241a88a52
BLAKE2b-256 ed551617321fb77e03ae4e65a6963a5b2b5a5b6d3776346ddcd08542c7331549

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.12.0-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 a377d7145e178dbe96c2e578acb69cf99d66ad5125dc928e583df9471a5f8734
MD5 9528d5acf95e67396586a840bd5e5f7a
BLAKE2b-256 ed3d9434b339d31586966636a27836a84d1f77a450670cd2a62b0c62dae72333

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.12.0-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 3e33c333aa5521f6751a79b53e4c557b398309f41c3ba208da841211c312bac8
MD5 69b8871d8df416d6392c6af1c3923a65
BLAKE2b-256 eaedc4d4b9000e4b40362ecb3e59819906c6ac5739c334a552548ba070e4564b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.12.0-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 ef30d9341db7e8a5adfeb5ccb70fe87847b6783a4a3069fdab2e0fa2cf04224d
MD5 29837dbb648a60191d7600bef5afb501
BLAKE2b-256 0e79c5a06800f308ce7279118af79b1e20954800e250affed147cb35f9cb0bc0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.12.0-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 2c17908b08b6ceff0944d2256eb889e5d81761509dc24504433bbcb7761eeb93
MD5 3b70c053306a3856808a13c87568887b
BLAKE2b-256 b95e59d1750750cd4842462a0effee47361e664a3bddf8c7355f0a32a36d910a

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