rfc3986
Validating URI References per RFC 3986
Install
rfc3986 on PyPI
pip
pip install rfc3986uv
uv add rfc3986poetry
poetry add rfc3986Package 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
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...
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
Similar packages
permissive · top 1,000 on PyPI
rfc3986-validatorpermissive · top 1,000 on PyPI
hyperlinkpermissive · top 1,000 on PyPI
rfc3987-syntaxpermissive · top 1,000 on PyPI
url-normalizepermissive · top 1,000 on PyPI
tldextractpermissive · top 1,000 on PyPI
pbrpermissive · top 1,000 on PyPI
lockfilepermissive · top 1,000 on PyPI
uritemplatepermissive · top 1,000 on PyPI
uri-templatepermissive · top 1,000 on PyPI