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
>>> uri = urisplit('foo://example.com:8042/over/there?name=ferret#nose')
>>> uri
SplitResult(scheme='foo', authority='example.com:8042', path='/over/there',
            query='name=ferret', fragment='nose')
>>> uri.scheme
'foo'
>>> uri.authority
'example.com:8042'
>>> uri.host
'example.com'
>>> uri.port
'8042'
>>> uri.geturi()
'foo://example.com:8042/over/there?name=ferret#nose'
>>> uriunsplit(uri[:3] + ('name=swallow&type=African', 'beak'))
'foo://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(base='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 urlparse module is not compliant with current Internet standards, does not include Unicode support, and is generally unusable with proprietary URI schemes. As stated in Lib/urlparse.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 handling Unicode, normalizing URI paths, and 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.8.0.tar.gz (18.7 kB view details)

Uploaded Source

File details

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

File metadata

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

File hashes

Hashes for uritools-0.8.0.tar.gz
Algorithm Hash digest
SHA256 61bb9ae1aef6e3f977c6b6e15db77f93bbe70e5370b1594e6e613f96e9d6051f
MD5 ea0fcde998793b4d4f46991c6fc44d4c
BLAKE2b-256 3ab558f13f020e1f9ca7f4d8998995f2d68d9a46554422f47245391ed28a7097

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