This commit is contained in:
Iliyan Angelov
2025-12-01 06:50:10 +02:00
parent 91f51bc6fe
commit 62c1fe5951
4682 changed files with 544807 additions and 31208 deletions

View File

@@ -0,0 +1,165 @@
Metadata-Version: 2.4
Name: packageurl-python
Version: 0.17.6
Summary: A purl aka. Package URL parser and builder
Home-page: https://github.com/package-url/packageurl-python
Author: the purl authors
License: MIT
Keywords: package,url,package manager,package url
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Utilities
Classifier: Typing :: Typed
Requires-Python: >=3.8
Provides-Extra: lint
Requires-Dist: isort; extra == "lint"
Requires-Dist: black; extra == "lint"
Requires-Dist: mypy; extra == "lint"
Provides-Extra: test
Requires-Dist: pytest; extra == "test"
Provides-Extra: build
Requires-Dist: setuptools; extra == "build"
Requires-Dist: wheel; extra == "build"
Provides-Extra: sqlalchemy
Requires-Dist: sqlalchemy>=2.0.0; extra == "sqlalchemy"
=================
packageurl-python
=================
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| |
+----------------------+
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:gem/bundler@2.3.23")
"https://rubygems.org/gems/bundler/versions/2.3.23"
>>> purl2url.get_download_url("pkg:gem/bundler@2.3.23")
"https://rubygems.org/downloads/bundler-2.3.23.gem"
>>> purl2url.get_inferred_urls("pkg:gem/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/pytest tests
Make a new release
==================
- Start a new release branch
- Update the CHANGELOG.rst, AUTHORS.rst, and 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
- Make a PR and merge once approved
- Tag and push that tag. This triggers the pypi-release.yml workflow that takes care of
building the dist release files and upload those to pypi::
VERSION=v0.x.x
git tag -a $VERSION -m "Tag $VERSION"
git push origin $VERSION
- Review the GitHub release created by the workflow at
https://github.com/package-url/packageurl-python/releases
.. |ci-tests| image:: https://github.com/package-url/packageurl-python/actions/workflows/ci.yml/badge.svg?branch=main
:target: https://github.com/package-url/packageurl-python/actions/workflows/ci.yml
:alt: CI Tests and build status

View File

@@ -0,0 +1,30 @@
packageurl/__init__.py,sha256=h_c_AmkoBA3HKPwugr1tzKaVx28QXLmlIphWxOaSeoE,21854
packageurl/__pycache__/__init__.cpython-312.pyc,,
packageurl/__pycache__/utils.cpython-312.pyc,,
packageurl/__pycache__/validate.cpython-312.pyc,,
packageurl/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
packageurl/contrib/__pycache__/__init__.cpython-312.pyc,,
packageurl/contrib/__pycache__/purl2url.cpython-312.pyc,,
packageurl/contrib/__pycache__/route.cpython-312.pyc,,
packageurl/contrib/__pycache__/url2purl.cpython-312.pyc,,
packageurl/contrib/django/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
packageurl/contrib/django/__pycache__/__init__.cpython-312.pyc,,
packageurl/contrib/django/__pycache__/filters.cpython-312.pyc,,
packageurl/contrib/django/__pycache__/models.cpython-312.pyc,,
packageurl/contrib/django/__pycache__/utils.cpython-312.pyc,,
packageurl/contrib/django/filters.py,sha256=kDLssFaI9MSaxsNbAjnevh-XNH2WgWDVMvTnvqAN15Y,2438
packageurl/contrib/django/models.py,sha256=4B3NVlqa2K1_FE1XyD1UlaZvoDrxWAw7LtAQSeF_deQ,5930
packageurl/contrib/django/utils.py,sha256=7VXvXV4kphqB41fGN2y__oXN7LTU6IovTE4iOxZdTqM,2547
packageurl/contrib/purl2url.py,sha256=TGuCqlBoCrvzzR2AmIxLNNOqpo_-Aykcd1NzRclgISA,20074
packageurl/contrib/route.py,sha256=i9-lc11w3DjdHBcSuR98eeLjFvL-biw-WLPQYRc33Ag,7991
packageurl/contrib/sqlalchemy/__pycache__/mixin.cpython-312.pyc,,
packageurl/contrib/sqlalchemy/mixin.py,sha256=EbETqZJh2TYvMB8d2Ziy72rV2ZlXqlMoocJRUNifHCc,4023
packageurl/contrib/url2purl.py,sha256=TydPhVVVYAv2-_AUTQtR_xO_IxEASPAOZ0rb1jpeUkU,25944
packageurl/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
packageurl/utils.py,sha256=MjafUuxzMxoyls8LyGBw3yHUCC8tSmv6JKdG1mOCFW8,2586
packageurl/validate.py,sha256=PExbT4b1Ua4HPTxvKClk7W-iv6gALre5QUGOQdN09lg,26562
packageurl_python-0.17.6.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4
packageurl_python-0.17.6.dist-info/METADATA,sha256=97NXUBHHvRoTdZGeHs0SWK1FQcbnV8d_9VugbjA17JQ,5089
packageurl_python-0.17.6.dist-info/RECORD,,
packageurl_python-0.17.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
packageurl_python-0.17.6.dist-info/top_level.txt,sha256=g2BLi7X2yUStC064EkVUlSvUGwh8lHZXmQVdo_k-lo8,11

View File

@@ -0,0 +1,5 @@
Wheel-Version: 1.0
Generator: setuptools (80.9.0)
Root-Is-Purelib: true
Tag: py3-none-any