Skip to main content

A purl aka. Package URL parser and builder

Project description

Python library to parse and build “purl” aka. Package URLs. See https://github.com/package-url/purl-spec for details.

Join the discussion at https://gitter.im/package-url/Lobby or enter a ticket for support.

License: MIT

Tests and build status

Tests and build

CI Tests and build status

Install

pip install packageurl-python

Usage

>>> from packageurl import PackageURL

>>> purl = PackageURL.from_string("pkg:maven/org.apache.commons/io@1.3.4")
>>> print(purl.to_dict())
{'type': 'maven', 'namespace': 'org.apache.commons', 'name': 'io', 'version': '1.3.4', 'qualifiers': None, 'subpath': None}

>>> print(purl.to_string())
pkg:maven/org.apache.commons/io@1.3.4

>>> print(str(purl))
pkg:maven/org.apache.commons/io@1.3.4

>>> print(repr(purl))
PackageURL(type='maven', namespace='org.apache.commons', name='io', version='1.3.4', qualifiers={}, subpath=None)

Utilities

Django models

packageurl.contrib.django.models.PackageURLMixin is a Django abstract model mixin to use Package URLs in Django.

SQLAlchemy mixin

packageurl.contrib.sqlalchemy.mixin.PackageURLMixin is a SQLAlchemy declarative mixin to use Package URLs in SQLAlchemy models.

URL to PURL

packageurl.contrib.url2purl.get_purl(url) returns a Package URL inferred from an URL.

>>> from packageurl.contrib import url2purl
>>> url2purl.get_purl("https://github.com/package-url/packageurl-python")
PackageURL(type='github', namespace='package-url', name='packageurl-python', version=None, qualifiers={}, subpath=None)

PURL to URL

  • packageurl.contrib.purl2url.get_repo_url(purl) returns a repository URL inferred from a Package URL.

  • packageurl.contrib.purl2url.get_download_url(purl) returns a download URL inferred from a Package URL.

  • packageurl.contrib.purl2url.get_inferred_urls(purl) return all inferred URLs (repository, download) from a Package URL.

>>> from packageurl.contrib import purl2url

>>> purl2url.get_repo_url("pkg:rubygems/bundler@2.3.23")
"https://rubygems.org/gems/bundler/versions/2.3.23"

>>> purl2url.get_download_url("pkg:rubygems/bundler@2.3.23")
"https://rubygems.org/downloads/bundler-2.3.23.gem"

>>> purl2url.get_inferred_urls("pkg:rubygems/bundler@2.3.23")
["https://rubygems.org/gems/bundler/versions/2.3.23", "https://rubygems.org/downloads/bundler-2.3.23.gem",]

Run tests

Install test dependencies:

python3 thirdparty/virtualenv.pyz --never-download --no-periodic-update .
bin/pip install -e ."[test]"

Run tests:

bin/py.test tests

Make a new release

  • start a new release branch

  • update the CHANGELOG.rst and AUTHORS.rst

  • update README.rst if needed

  • bump version in setup.cfg

  • run all tests

  • install restview and validate that all .rst docs are correct

  • commit and push this branch

  • tag and push that tag

  • make a PR to merge branch

  • once merged, run:

    bin/pip install --upgrade pip wheel twine setuptools
  • delete the “dist” and “build” directories:

    rm -rf dist/ build/
  • create a source distribution and wheel with:

    bin/python setup.py sdist bdist_wheel
  • finally, upload to PyPI:

    bin/twine upload dist/*

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

packageurl-python-0.11.3.tar.gz (36.8 kB view details)

Uploaded Source

Built Distribution

packageurl_python-0.11.3-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

Details for the file packageurl-python-0.11.3.tar.gz.

File metadata

  • Download URL: packageurl-python-0.11.3.tar.gz
  • Upload date:
  • Size: 36.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.18

File hashes

Hashes for packageurl-python-0.11.3.tar.gz
Algorithm Hash digest
SHA256 32c9952eb5ffceb1400e95cedf82166b4ca9034cdb3a4cbc36f63db7db4ea5be
MD5 861242eefc4a631513db3406b5beae5e
BLAKE2b-256 969b79c165b37e814afc5daa34fa2998823b2011a8a970b5f5324b78b3ba0b10

See more details on using hashes here.

Provenance

File details

Details for the file packageurl_python-0.11.3-py3-none-any.whl.

File metadata

File hashes

Hashes for packageurl_python-0.11.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c73bd6e6ebf1fad2df9b2b2e763ce18aeede790a1f45b3e24d08c9c31cdeabee
MD5 38a4f12cda69348987b413dc2e63b725
BLAKE2b-256 3334e045a1884e62c4cc539178581282c73dfe42fd55a70fd657e6ecb3bd86cb

See more details on using hashes here.

Provenance

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