Skip to main content

URI parsing, classification and composition

Project description

Latest PyPI version CI build status Documentation build status Test coverage Libraries.io SourceRank License Code style: black

This module provides RFC 3986 compliant functions for parsing, classifying and composing URIs and URI references, largely replacing the Python Standard Library’s urllib.parse module.

>>> from uritools import uricompose, urijoin, urisplit, uriunsplit
>>> uricompose(scheme='foo', host='example.com', port=8042,
...            path='/over/there', query={'name': 'ferret'},
...            fragment='nose')
'foo://example.com:8042/over/there?name=ferret#nose'
>>> parts = urisplit(_)
>>> parts.scheme
'foo'
>>> parts.authority
'example.com:8042'
>>> parts.getport(default=80)
8042
>>> parts.getquerydict().get('name')
['ferret']
>>> parts.isuri()
True
>>> parts.isabsuri()
False
>>> urijoin(uriunsplit(parts), '/right/here?name=swallow#beak')
'foo://example.com:8042/right/here?name=swallow#beak'

For various reasons, urllib.parse and its Python 2 predecessor urlparse are not compliant with current Internet standards. 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 the most commonly used functions found in urllib.parse. It also includes functions for distinguishing between the different forms of URIs and URI references, and for conveniently creating URIs from their individual components.

Installation

uritools is available from PyPI and can be installed by running:

pip install uritools

Project Resources

License

Copyright (c) 2014-2026 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-6.0.2.tar.gz (23.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uritools-6.0.2-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: uritools-6.0.2.tar.gz
  • Upload date:
  • Size: 23.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for uritools-6.0.2.tar.gz
Algorithm Hash digest
SHA256 4d671c3b8ca230a5d47efa5f8a693f3d01531f38f4f523170299be734cc9851b
MD5 0676cb5088a96de11cd82a8618c3da6b
BLAKE2b-256 869207bd0999768dc45ab2be5795d53065cabee3bd54db89e7499005e09a4a32

See more details on using hashes here.

File details

Details for the file uritools-6.0.2-py3-none-any.whl.

File metadata

  • Download URL: uritools-6.0.2-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for uritools-6.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6c1bc9a38810f38d5e6b2ea0eb3edb6c3311bd915a4d4f457ff0de565d0e614b
MD5 8e159c02f7af9cf94198127aa275b7d1
BLAKE2b-256 e68589de28a9c7c94733e6525a39960f23bf557c1e072b1c53f787b6e5279ff1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page