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

1.1.1 (2018-02-17)

  • Fix performance regression: don’t encode enmpty netloc (#170)

1.1.0 (2018-01-21)

  • Make pure Python quoter consistent with Cython version (#162)

1.0.0 (2018-01-15)

  • Use fast path if quoted string does not need requoting (#154)

  • Speed up quoting/unquoting by _Quoter and _Unquoter classes (#155)

  • Drop yarl.quote and yarl.unquote public functions (#155)

  • Add custom string writer, reuse static buffer if available (#157) Code is 50-80 times faster than Pure Python version (was 4-5 times faster)

  • Don’t recode IP zone (#144)

  • Support encoded=True in yarl.URL.build() (#158)

  • Fix updating query with multiple keys (#160)

0.18.0 (2018-01-10)

  • Fallback to IDNA 2003 if domain name is not IDNA 2008 compatible (#152)

0.17.0 (2017-12-30)

  • Use IDNA 2008 for domain name processing (#149)

0.16.0 (2017-12-07)

  • Fix raising TypeError by url.query_string() after url.with_query({}) (empty mapping) (#141)

0.15.0 (2017-11-23)

  • Add raw_path_qs attribute (#137)

0.14.2 (2017-11-14)

  • Restore strict parameter as no-op in quote/unquote

0.14.1 (2017-11-13)

  • Restore strict parameter as no-op for sake of compatibility with aiohttp 2.2

0.14.0 (2017-11-11)

  • Drop strict mode (#123)

  • Fix “ValueError: Unallowed PCT %” when there’s a “%” in the url (#124)

0.13.0 (2017-10-01)

  • Document encoded parameter (#102)

  • Support relative urls like ‘?key=value’ (#100)

  • Unsafe encoding for QS fixed. Encode ; char in value param (#104)

  • Process passwords without user names (#95)

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

Uploaded Source

Built Distributions

yarl-1.1.1-cp36-cp36m-win_amd64.whl (119.2 kB view details)

Uploaded CPython 3.6mWindows x86-64

yarl-1.1.1-cp36-cp36m-win32.whl (113.6 kB view details)

Uploaded CPython 3.6mWindows x86

yarl-1.1.1-cp36-cp36m-manylinux1_x86_64.whl (255.2 kB view details)

Uploaded CPython 3.6m

yarl-1.1.1-cp36-cp36m-manylinux1_i686.whl (247.5 kB view details)

Uploaded CPython 3.6m

yarl-1.1.1-cp35-cp35m-win_amd64.whl (118.7 kB view details)

Uploaded CPython 3.5mWindows x86-64

yarl-1.1.1-cp35-cp35m-win32.whl (113.3 kB view details)

Uploaded CPython 3.5mWindows x86

yarl-1.1.1-cp35-cp35m-manylinux1_x86_64.whl (250.3 kB view details)

Uploaded CPython 3.5m

yarl-1.1.1-cp35-cp35m-manylinux1_i686.whl (242.0 kB view details)

Uploaded CPython 3.5m

yarl-1.1.1-cp34-cp34m-win_amd64.whl (118.1 kB view details)

Uploaded CPython 3.4mWindows x86-64

yarl-1.1.1-cp34-cp34m-win32.whl (114.0 kB view details)

Uploaded CPython 3.4mWindows x86

yarl-1.1.1-cp34-cp34m-manylinux1_x86_64.whl (252.1 kB view details)

Uploaded CPython 3.4m

yarl-1.1.1-cp34-cp34m-manylinux1_i686.whl (243.8 kB view details)

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for yarl-1.1.1.tar.gz
Algorithm Hash digest
SHA256 a69dd7e262cdb265ac7d5e929d55f2f3d07baaadd158c8f19caebf8dde08dfe8
MD5 eb683ad7e87dff3fd5e2823873ce8ad6
BLAKE2b-256 91145983db75b143681058d31a0a89a770f40a7f68f9b94cfeb6e6495b0039bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.1.1-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 e072edbd1c5628c0b8f97d00cf6c9fcd6a4ee2b5ded10d463fcb6eaa066cf40c
MD5 a3b56c2fdf5c3eb7cacdb9c55bd0284b
BLAKE2b-256 dc94da2f7bc0f0d051ea5f485ae869d065b6e190ff4d1d3856ac9ee4ed1ecef8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: yarl-1.1.1-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 113.6 kB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for yarl-1.1.1-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 5580f22ac1298261cd24e8e584180d83e2cca9a6167113466d2d16cb2aa1f7b1
MD5 54e06ed1c3bd193af6d2f1f775df7f06
BLAKE2b-256 916d3c048c98ab0a81c75cbd773f59700a8c36ca76086f70239a4e1f32b7e20b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.1.1-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 64727a2593fdba5d6ef69e94eba793a196deeda7152c7bd3a64edda6b1f95f6e
MD5 8db4636bb9457ab32236e27b777b12af
BLAKE2b-256 541e27cea815fde35aef1d16206c64b9baeffcaa8e0123c737fb437d84f3c198

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.1.1-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 6e75753065c310befab71c5077a59b7cb638d2146b1cfbb1c3b8f08b51362714
MD5 c63502b4ea4d1fb05b60fd635938a265
BLAKE2b-256 0b490534e4122be39c849cf9aa0133fa26d3c4ccc637c20f558d28b57403d103

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.1.1-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 e9a6a319c4bbfb57618f207e86a7c519ab0f637be3d2366e4cdac271577834b8
MD5 44cf472ecaa48a153392e90b1553a6c5
BLAKE2b-256 74c7086a1d04123ae52ae63a666cdadccd9965f65122db771935d7403afccfc8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: yarl-1.1.1-cp35-cp35m-win32.whl
  • Upload date:
  • Size: 113.3 kB
  • Tags: CPython 3.5m, Windows x86
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for yarl-1.1.1-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 7236eba4911a5556b497235828e7a4bc5d90957efa63b7c4b3e744d2d2cf1b94
MD5 a2a0fde3e614d10a5e218350d37c3707
BLAKE2b-256 8e0b96bb38c9a7fa2bd7b14398f762f5fac9a12c681193f61a17579be50151d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.1.1-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 213e8f54b4a942532d6ac32314c69a147d3b82fa1725ca05061b7c1a19a1d9b1
MD5 255e40b279d028b0394a9b1472dd0a90
BLAKE2b-256 c32dbaf97027dfaa1c76d78e9de488576d2d0280efb4ebe947f7a49a4808680e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.1.1-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 045dbba18c9142278113d5dc62622978a6f718ba662392d406141c59b540c514
MD5 4c6751b08bf078783cec944db22fa683
BLAKE2b-256 a65eb039a6b9e0a5c7bd6055fa64b76583d57ffea976780ff58ba9a8a3544c5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.1.1-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 51a084ff8756811101f8b5031a14d1c2dd26c666976e1b18579c6b1c8761a102
MD5 d1e641f9d1756706c845fbd44d91ab65
BLAKE2b-256 1e0ac785bd960adcfd94966c5b93457a86e941a4fc542ecca7f77b18b8ba3bb5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: yarl-1.1.1-cp34-cp34m-win32.whl
  • Upload date:
  • Size: 114.0 kB
  • Tags: CPython 3.4m, Windows x86
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for yarl-1.1.1-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 3353fae45d93cc3e7e41bfcb1b633acc37db821d368e660b03068dbfcf68f8c8
MD5 a4846a571fd656bc8315b73f800cdbdb
BLAKE2b-256 ce37cb888b136413c2553d80630021a9007f268d378c911fb9bcf7c2bcadc6db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.1.1-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 17e57a495efea42bcfca08b49e16c6d89e003acd54c99c903ea1cb3de0ba1248
MD5 92d5fc67a057a57dd4202051c4e8e271
BLAKE2b-256 24ec7bb8f361942018da3548322ce1eed7c1de647d7c15ec2acaea8723edb1da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-1.1.1-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 d9ca55a5a297408f08e5401c23ad22bd9f580dab899212f0d5dc1830f0909404
MD5 5cb1c360302903a8caaf4f4dad6e7235
BLAKE2b-256 e7607d3592292cbf4a5096c4cc78ec3be5430931c064ac9e47993345e91fae0a

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