Skip to main content

RFC 3986 compliant, Unicode-aware, scheme-agnostic replacement for urlparse

Project description

This module defines RFC 3986 compliant replacements for the most commonly used functions of the Python 2.7 Standard Library urlparse and Python 3 urllib.parse modules.

>>> from uritools import urisplit, uriunsplit, urijoin, uridefrag
>>> parts = urisplit('foo://user@example.com:8042/over/there?name=ferret#nose')
>>> parts
SplitResultString(scheme='foo', authority='user@example.com:8042',
                  path='/over/there', query='name=ferret', fragment='nose')
>>> parts.scheme
'foo'
>>> parts.authority
'user@example.com:8042'
>>> parts.userinfo
'user'
>>> parts.host
'example.com'
>>> parts.port
'8042'
>>> uriunsplit(parts[:3] + ('name=swallow&type=African', 'beak'))
'foo://user@example.com:8042/over/there?name=swallow&type=African#beak'
>>> urijoin('http://www.cwi.nl/~guido/Python.html', 'FAQ.html')
'http://www.cwi.nl/~guido/FAQ.html'
>>> uridefrag('http://pythonhosted.org/uritools/index.html#constants')
DefragResult(uri='http://pythonhosted.org/uritools/index.html',
             fragment='constants')
>>> urisplit('http://www.xn--lkrbis-vxa4c.at/').gethost(encoding='idna')
'www.ölkürbis.at'

For various reasons, the Python 2 urlparse module is not compliant with current Internet standards, does not include Unicode support, and is generally unusable with proprietary URI schemes. Python 3’s urllib.parse improves on Unicode support, but the other issues still remain. As stated in Lib/urllib/parse.py:

RFC 3986 is considered the current standard and any future changes
to urlparse module should conform with it.  The urlparse module is
currently not entirely compliant with this RFC due to defacto
scenarios for parsing, and for backward compatibility purposes,
some parsing quirks from older RFCs are retained.

This module aims to provide fully RFC 3986 compliant replacements for some commonly used functions found in urlparse, plus additional functions for conveniently composing URIs from their individual components.

Installation

Install uritools using pip:

pip install uritools

Project Resources

Latest PyPI version Number of PyPI downloads Travis CI build status Test coverage

License

Copyright (c) 2014 Thomas Kemmer.

Licensed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uritools-0.10.0.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

uritools-0.10.0-py2.py3-none-any.whl (15.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file uritools-0.10.0.tar.gz.

File metadata

  • Download URL: uritools-0.10.0.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for uritools-0.10.0.tar.gz
Algorithm Hash digest
SHA256 7fea183ff3f4dbd93b937db716b65121f7d346a38a8e192038b532482468833f
MD5 5802d60a90b896e0dad4f35d32457b97
BLAKE2b-256 53fe8c72a243cd2df3e9d3ae6dabce60c6fe5c7498ce0320aee3e0d7edab0fe8

See more details on using hashes here.

File details

Details for the file uritools-0.10.0-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for uritools-0.10.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 14d76af99eba110f39af213126bf2d94af455a54969c114e1c513ca8490bb17b
MD5 82ada8f772800fed9cc2d2975d2c1595
BLAKE2b-256 dfc6f078fa0b190ee853c55202c9e31e79dbcd3803d8a3e0e3ce893b2b364374

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