skillfed

rfc3986

Validating URI References per RFC 3986

rfc3986 Permissive license Apache 2.0 Abandoned v2.0.0 released

Install

rfc3986 on PyPI

pip

pip install rfc3986

uv

uv add rfc3986

poetry

poetry add rfc3986

Package facts

License Apache 2.0 (permissive)
Python support supports the current Python release (>=3.7)
Install friction low — pure-Python wheel
Runtime dependencies none
Maintenance abandoned — 1,676 days since the last release
First released
Popularity one of the top 1,000 most-downloaded packages on PyPI (30-day window, as of 2026-08-13)
Known vulnerabilities none known (OSV.dev, checked 2026-08-13)

Evidence: rfc3986-2.0.0-py2.py3-none-any.whl

Development Status :: 5 - Production/StableIntended Audience :: DevelopersLicense :: OSI Approved :: Apache Software LicenseNatural Language :: EnglishProgramming Language :: PythonProgramming Language :: Python :: 3Programming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9Programming Language :: Python :: Implementation :: CPython

About rfc3986

from the package's own PyPI description — quoted content, verbatim

rfc3986

A Python implementation of RFC 3986_ including validation and authority parsing.

Installation

Use pip to install rfc3986 like so::

pip install rfc3986

License

Apache License Version 2.0_

Example Usage

The following are the two most common use cases envisioned for rfc3986.

Replacing urlparse ``````````````````````

To parse a URI and receive something very similar to the standard library's urllib.parse.urlparse

.. code-block:: python

from rfc3986 import urlparse

ssh = urlparse('ssh://user@git.openstack.org:29418/openstack/glance.git')
print(ssh.scheme)  # => ssh
print(ssh.userinfo)  # => user
print(ssh.params)  # => None
print(ssh.port)  # => 29418

To create a copy of it with new pieces you can use copy_with:

.. code-block:: python

new_ssh = ssh.copy_with(
    scheme='https'
    userinfo='',
    port=443,
    path='/openstack/glance'
)
print(new_ssh.scheme)  # => https
print(new_ssh.userinfo)  # => None
# etc.

Strictly Parsing a URI and Applying Validation ``````````````````````````````````````````````

To parse a URI into a...

Read as markdown · JSON record · Homepage

AI interpretation — verify before relying

AI-generated interpretation of the package facts above; every digit, version, license, or vulnerability id it cites is grounded in the facts already shown on this page

rfc3986 parses, validates, and normalizes URIs according to RFC 3986 specification, offering RFC-compliant alternatives to the standard library's urlparse with support for strict validation and component extraction.

Installation is frictionless with no runtime dependencies and a pure-Python wheel distribution. However, the package is marked as abandoned with no releases since January 2022 (1676 days ago), meaning security updates and bug fixes are unlikely despite its Production/Stable classifier.

Licensed under Apache 2.0 (permissive), which allows commercial and private use with minimal restrictions, making it suitable for most projects that can tolerate an unmaintained dependency.

Usage

pip install rfc3986

from rfc3986 import uri_reference

ssh = uri_reference('ssh://user@git.openstack.org:29418/openstack/glance.git')
print(ssh.scheme)  # => ssh
print(ssh.port)   # => 29418
if ssh.is_valid():
    print(ssh.unsplit())

Requires Python 3.7 or later (supports 3.7, 3.8, 3.9, 3.10).

Verdict: rfc3986 is a stable, dependency-free RFC 3986 implementation suitable for URI parsing and validation tasks, but its abandoned maintenance status (no releases since January 2022) means it will not receive security patches or compatibility updates for future Python versions. Use it only if you are confident the codebase is stable for your use case and can accept the risk of an unmaintained dependency.

Needs verification

  • Whether any known security issues exist in the URI parsing logic that have not been reported to OSV
  • Whether the package's Python 3.10+ support has been tested since the last release in January 2022
  • Whether there are any pending pull requests or community forks addressing critical bugs
URI parsing and validationRFC 3986 implementationURL parsing with validationURI normalizationurlparse replacementURI component extractionstrict URI validation

Similar packages