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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

Supported by

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