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

Uploaded Source

Built Distributions

yarl-0.14.2-cp36-cp36m-win_amd64.whl (85.7 kB view details)

Uploaded CPython 3.6m Windows x86-64

yarl-0.14.2-cp36-cp36m-win32.whl (82.4 kB view details)

Uploaded CPython 3.6m Windows x86

yarl-0.14.2-cp36-cp36m-manylinux1_x86_64.whl (157.4 kB view details)

Uploaded CPython 3.6m

yarl-0.14.2-cp36-cp36m-manylinux1_i686.whl (149.1 kB view details)

Uploaded CPython 3.6m

yarl-0.14.2-cp35-cp35m-win_amd64.whl (85.5 kB view details)

Uploaded CPython 3.5m Windows x86-64

yarl-0.14.2-cp35-cp35m-win32.whl (82.2 kB view details)

Uploaded CPython 3.5m Windows x86

yarl-0.14.2-cp35-cp35m-manylinux1_x86_64.whl (157.1 kB view details)

Uploaded CPython 3.5m

yarl-0.14.2-cp35-cp35m-manylinux1_i686.whl (148.0 kB view details)

Uploaded CPython 3.5m

yarl-0.14.2-cp34-cp34m-win_amd64.whl (84.6 kB view details)

Uploaded CPython 3.4m Windows x86-64

yarl-0.14.2-cp34-cp34m-win32.whl (82.5 kB view details)

Uploaded CPython 3.4m Windows x86

yarl-0.14.2-cp34-cp34m-manylinux1_x86_64.whl (156.4 kB view details)

Uploaded CPython 3.4m

yarl-0.14.2-cp34-cp34m-manylinux1_i686.whl (149.7 kB view details)

Uploaded CPython 3.4m

File details

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

File metadata

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

File hashes

Hashes for yarl-0.14.2.tar.gz
Algorithm Hash digest
SHA256 e3cace21c8044457eb3a54506b99b267974c80280d3accfc7f22e70170f87ea8
MD5 fb89c016de6fa1c32025548da3c90151
BLAKE2b-256 576b32869f57e72e63307ef3ed5800dec863d802f7248c72ad560ec685a059d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.2-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 5f3c6a3a8b2e249adc6baeb7bbef5c1c46430fe646ba7afce022d96f9b033802
MD5 ceb5bacabb36b59e57cf3719c23bee05
BLAKE2b-256 b3ab04ec46bafd788668470aaff05c9ea6e978b35e96a64e08fedd32e635ea5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.2-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 0789677506dc15a7f9677de897fb351417a04c28d45923437068ca254920530a
MD5 149202171b0c8cfe7a0ee533625549bc
BLAKE2b-256 64deaabb07449216e43ac606e8fe6ed20589ecf1de5a1037a701d9e6749c3175

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.2-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 28ff0d2c7b2326b90f5613e3e4081853fc8d52cc29c2fda7f54852125c469b93
MD5 a584d8e55d5603458af955e3095e6a53
BLAKE2b-256 dcfe7deb5eaa095ba58ec87b83dae296ce153645eb61c717dfbdb8a577451c21

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.2-cp36-cp36m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 3b6659d2c4bf4483945e78125a00cfdce4dd27aeb0331ed88cdcdd1ba33b1871
MD5 31f11adaabb80e9715e284b31214143b
BLAKE2b-256 361e81bc5582485418e41a0d0d6767fc28ffadbfa06dca884c461a8fe9668957

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.2-cp35-cp35m-win_amd64.whl
Algorithm Hash digest
SHA256 e4e4c36d7aabcea8cb5377fbbed16af695a1c99ff08b8a8c55317ad77e7bc75d
MD5 2474f3ae0f92fd429b0d0af4a868e486
BLAKE2b-256 1d734c6b7b1e448b447475c4b69cee513d66eb2a656ad8907bdf0aadd3c9851a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.2-cp35-cp35m-win32.whl
Algorithm Hash digest
SHA256 520ec764a1d39a3af0b8ef53cc639efb833f695abf30211e233c23c9f62c5d68
MD5 7daa5999ce8da80bf28f506af46f87d4
BLAKE2b-256 99f136afcf87ef29a04f7cd35967e44fedc890680a836e3962f8b943ad1c016b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.2-cp35-cp35m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 60d28f0202b520b8d8e7a4468964c76214e2849bf9a70427dd43a3145d64ab20
MD5 dbf608c75feb49d76740618aeee9cf32
BLAKE2b-256 1566c68ff513708e599e8caa636ac8eefb9a486293773eab82aa00f39fad5da6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.2-cp35-cp35m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 dd1f598d09b78a36d053cf75b474c2815c4c7e2e609014b3d0cd4872ba1383cb
MD5 b04158e64ab475d5ee2dc6aa782950ac
BLAKE2b-256 cb1ceff8b3b436f7126ea882da2180b139f1c29221e95c7bb91980b1e7cb41d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.2-cp34-cp34m-win_amd64.whl
Algorithm Hash digest
SHA256 57e962e253065d532828072468bbaf9e7304749244b0da9ab6b5ff2868cb260e
MD5 0a7ea4709071f8df08b7b501a6806e1d
BLAKE2b-256 ccefb50245435a48526749a2cf8ea924e8657001f4dccb685d00f4977079eb66

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.2-cp34-cp34m-win32.whl
Algorithm Hash digest
SHA256 b982b6a89be5c2d4ec160c899c39d1b1a93f0595d955f1c6694a462ee3b62033
MD5 33486c7458938930312d5c31ae2a055e
BLAKE2b-256 7926bf72d514854924630f1ff029904b2cd2d55b24c30f2a3fe66bdbf6ed9669

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.2-cp34-cp34m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 512911d0e0fa7970bb59402011f232bba03c56f1f77bae80264e0a370448d309
MD5 490f598cb802d6d702c0eaa06f3323c6
BLAKE2b-256 9c118afa0e42809d280bf2cdd0b16c88e3fe69ca3795b1d443ee9c1dc8ed40eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for yarl-0.14.2-cp34-cp34m-manylinux1_i686.whl
Algorithm Hash digest
SHA256 ef62ed11542934be938759de50ecb9b9b1fe4bc31329fbf93be0bc79d8f958c9
MD5 de99ade2a0e8b9b0c82fa3f83ba2fc42
BLAKE2b-256 b2d783a26b81e035ecc81bbd0e29234cd17ea2616668fe5c861f66999c44e378

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