pyuri
Better URI Handling
What it is and what it does
PyURI is a lightweight library for working with URIs as structured objects rather than strings. It lets you parse a URI into its components (scheme, host, port, path, query, fragment), construct URIs from individual parts, modify them, and compare them for equality. It also provides a helper to extract query parameters into a dictionary, handling repeated keys and URL decoding.
The package has no runtime dependencies and installs as a pure-Python wheel, making it quick to add to any project. However, it has been unmaintained since its single release in March 2017, with no updates for Python 3.7 and later versions. It was tested only with Python 2.7 and 3.6, so compatibility with modern Python is unknown.
Use it for:
- Parse a URI string into its component parts for inspection or validation in a web application.
- Construct a URI programmatically from individual components (scheme, host, port, path, query) without string concatenation.
- Extract and parse query parameters from a URI into a dictionary for easier access to key-value pairs.
- Modify an existing URI by changing its port, path, or query and then serialize it back to a string.
- Compare two URIs for equality after normalizing their components.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
PyURI parses, constructs, and manipulates URIs by component—scheme, host, port, path, query, and fragment—with utilities for extracting query parameters.
No. While the package is simple and has no dependencies, it has been abandoned since 2017 with no maintenance for nearly a decade. Python version support is unspecified and untested beyond 3.6. For URI handling, use the standard library's `urllib.parse` module, which is maintained, well-documented, and covers the same use cases.
Install
pyuri on PyPI
pip
pip install pyuriuv
uv add pyuripoetry
poetry add pyuriInstalling pyuri
Before you install
Installation is frictionless—a pure-Python wheel with no runtime dependencies. However, the package has been abandoned since its only release on 2017-03-27; no maintenance or updates have occurred in years, and Python version support is unspecified.
License in practice
MIT license permits free use, modification, and distribution with minimal restrictions, making it legally safe to adopt in most projects.
Quickstart
from pyuri import URI
uri = URI('http://localhost:80/path?query=value#fragment')
print(uri.scheme, uri.host, uri.port, uri.path)
print(uri.query_dict())
Verify before relying
- Whether the package works reliably with Python versions beyond 2.7 and 3.6 (support is unspecified in the fact sheet).
- Whether URI parsing handles edge cases and RFC compliance correctly (no test coverage details provided).
Package facts
| License | MIT (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | none |
| Maintenance | abandoned — 3,427 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 74,855/month — #14,782 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pyuri-0.3.1-py2.py3-none-any.whl
Tags
More Internet packages
Botocore provides low-level, data-driven access…
permissive · top 100 on PyPI
aiobotocoreProvides an async client for AWS services using…
permissive · top 100 on PyPI
pydanticPydantic validates Python data structures…
permissive · top 100 on PyPI
filelockProvides a platform-independent file locking…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
googleapis-common-protosProvides common Protocol Buffer message…
permissive · top 100 on PyPI
rfc3986Parses, validates, and normalizes URIs…
permissive · top 1,000 on PyPI
urlpathURLPath extends pathlib.PurePath to treat URLs…
permissive · top 15,000 on PyPI
arcpGenerate and parse arcp (Archive and Package)…
permissive · top 15,000 on PyPI
uritoolsParses, validates, and composes URIs and URI…
permissive · top 5,000 on PyPI
pyfaup-rsParses URLs into components (scheme, host,…
copyleft · top 15,000 on PyPI
ada-urlParse, validate, and manipulate URLs according…
permissive · top 15,000 on PyPI
rfc3987Provides RFC 3986 and RFC 3987 compliant…
copyleft · top 5,000 on PyPI
urlpyurlpy parses, normalizes, and compares URLs…
permissive · top 15,000 on PyPI
purlProvides an immutable, chainable URL class for…
permissive · top 15,000 on PyPI
multiurlDownloads files from one or multiple URLs into…
permissive · top 5,000 on PyPI