Skip to main content

Fully RFC 3986/3987 URI and IRI parsing and manipulation

Project description

The iriuri Python Package

WARNING: This package is not yet ready for use!**

The iriuri package will offer both generic and scheme-specific IRI and URI parsing, validation, manipulation, and serialization.

It will also be able to serve as an Apache 2.0-licensed drop-in replacement for at least the basic parsing/composing/resolving features of the GPL'd rfc3987 library (which I highly recommend if you are able to comply with the conditions of GPL).

Release timeline

This package is being developed by @handrews. If you would like for me to have more time for open source work, I would be grateful for any sponsorship.

Features

Initial functionality will target generic IRI/URI syntax, with scheme-specific features for http, https, and urn, as well as media-type-based fragment syntax for HTML, XML, YAML, JSON Schema, and OpenAPI and application/x-www-form-urlencoded query strings being prioritized next.

This libraries eventual goals include:

  • Round-trip-safe parsing and serialization
    • correct handling of empty string vs null components
    • preservation of case for case-insensitive components
    • no unexpected automatic encoding or normalization
  • Proper handling of base URIs/IRIs and URI/IRI-references
  • Full compliance with the ABNF from appropriate standards, including:
    • RFC 3986 Uniform Resource Identifier (URI): Generic Syntax
    • RFC 3987 Internationalized Resource Identifiers (IRIs)
    • RFC 6874 Representing IPv6 Zone Identifiers in Address Literals and URIs
    • RFC 8141 Uniform Resource Names (URNs)
    • additional scheme-/query-/fragment-/urn-namespace-specific standards TBD
  • Flexible options to balance performance and correctness
  • Extensible parsing, validation, normalization, defaults, and comparisons for specific URI/IRI subsets
    • Scheme-specific for authority/query syntax
    • Query format-specific for query syntax
    • Media type-specific for fragment syntax
    • URN namespace-specific for namespace-specific string syntax
  • A comprehensive test suite
    • Scheme-specific tests where relevant
    • Please file an issue if you know of public IRI test data!
    • CJK, right-to-left, vertical, and other display challenges
    • While not a display library, there is a gap in good IRI test data
    • Likely to include WHATWG's URL tests, although this library will comply with IETF standards; whether WHATWG support will ever be considered depends on the degree of divergence involved

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

iriuri-0.0.1.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

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

iriuri-0.0.1-py3-none-any.whl (9.6 kB view details)

Uploaded Python 3

File details

Details for the file iriuri-0.0.1.tar.gz.

File metadata

  • Download URL: iriuri-0.0.1.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.8.13 Darwin/21.6.0

File hashes

Hashes for iriuri-0.0.1.tar.gz
Algorithm Hash digest
SHA256 ecf8cdcbabac6be91ee1d1ea50d0e3d0d6fcced8f1a407fd56f237132e6aa4f9
MD5 9f28f76eb7f28c761c172c3c58d6527a
BLAKE2b-256 029007606db3acd7d39a3844017395f1fdaedd8bd30677aaac12cf698b42aae2

See more details on using hashes here.

File details

Details for the file iriuri-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: iriuri-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 9.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.8.13 Darwin/21.6.0

File hashes

Hashes for iriuri-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d654311510a5bc88af544272fd024d71a0f0c4b273498955ff5c7382afa5bb68
MD5 d97596998cafbb5c244a8cf6d61b992c
BLAKE2b-256 20df7cd083b559d6297c27c947003bc872e33a8d2b8931ebb8b8544946776d1a

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