Skip to main content

A pyparsing based URI parser/scanner library

Project description

ppURI

A pyparsing based URI parser/scanner library.

Install using pip or your tool of choice e.g.

pip install ppuri
poetry add ppuri

Usage

Parsing

Either import ppuri.uri and use the parse function to match and parse against all URI schemes e.g.

from ppuri import uri
info = uri.parse("https://www.example.com:443/a.path?q=aparam#afragment")
print(info)

prints

{
  "authority": { "address": "www.example.com", "port": "443" },
  "fragment": "afragment",
  "parameters": [{ "name": "q", "value": "aparam" }],
  "path": "/a.path",
  "scheme": "https",
  "uri": "https://www.example.com:443/a.path?q=aparam#afragment"
}

Or import a specific scheme's parse function.

from ppuri.scheme import http
info = http.parse()

and use that to parse

Scanning

To scan text for URIs use the scan method

Supported schemes

Currently supports the following schemes

  • http(s)
  • urn
  • data
  • file
  • mailto
  • about
  • aaa
  • coap
  • crid

Http(s)

parse_string returns a dictionary of the form

{
  "scheme": "http or https",
  "authority": {
    "address": "hostname or ipv4 address or ipv6 address",
    "port": "port number",
    "username": "user name if provided",
    "password": "pasword if provided"
  },
  "path": "path if provided",
  "parameters": [
    // list of parameters if provided
    {
      "name": "parameter name",
      "value": "parameter value or None if not provided"
    }
  ],
  "fragment": "fragment if provided",
  "uri": "The full URI"
}

Urn

parse_string returns a dictionary of the form

{
  "scheme": "urn",
  "nid": "Namespace Identifier",
  "nss": "Namespace Specific String",
  "uri": "The full URI"
}

MailTo

parse_string returns a dictionary of the form

{
  "scheme": "mailto",
  "addresses": [
    "List of email addresses",
  ]
  "parameters": [
    "list of parameters if provided",
    {
        "name": "bcc",
        "value": "dave@example.com"
    }
  ],
  "uri": "The full URI"
}

Data

parse_string returns a dictionary of the form

{
  "scheme": "data",
  "type": "Mime type",
  "subtype": "Mime Subtype",
  "encoding": "base64 if specified",
  "data": "The actual data",
  "uri": "The full URI"
}

File

parse_string returns a dictionary of the form

{
  "scheme": "file",
  "path": "The /file/path",
  "uri": "The full URI"
}

Package Status

GitHub Workflow Status PyPI - Downloads

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

ppuri-0.3.1.tar.gz (13.2 kB view details)

Uploaded Source

Built Distribution

ppuri-0.3.1-py3-none-any.whl (19.5 kB view details)

Uploaded Python 3

File details

Details for the file ppuri-0.3.1.tar.gz.

File metadata

  • Download URL: ppuri-0.3.1.tar.gz
  • Upload date:
  • Size: 13.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.15 CPython/3.10.5 Linux/5.10.102.1-microsoft-standard-WSL2

File hashes

Hashes for ppuri-0.3.1.tar.gz
Algorithm Hash digest
SHA256 8879b61fb9b578144e32a247e4ddb4e296ce1559fa97b4b3d73ddb2bc3cc04bc
MD5 45a510b968957e8db93a990adf47e697
BLAKE2b-256 4957922b063ff494cd4040f7f643203f20c4f56791879d8316c2de6b3266d891

See more details on using hashes here.

File details

Details for the file ppuri-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: ppuri-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 19.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.15 CPython/3.10.5 Linux/5.10.102.1-microsoft-standard-WSL2

File hashes

Hashes for ppuri-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4ab92fe53e9903176e55288fc26ebc261f2e98863fdaae7d3b58a23d67fa8851
MD5 840c60b402dac893364e32d2e3378579
BLAKE2b-256 85d5e3a8c00a91e1ef2db4bdbfde61b51eb0815e03457cffbea963a9eab0b03b

See more details on using hashes here.

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