This project has been archived by its maintainers, and is no longer receiving any updates.
PURL2NOTICES - Package URL (PURL) to Legal Notices
Generate legal notices (attribution to authors and copyrights) for software packages.
Features
- Multi-format support: Process PURLs, archives (JAR/WAR/WHL), directories, and cache files
- 12+ ecosystems: npm, PyPI, Maven, Cargo, Go, NuGet, Conda, and more
- Smart extraction: Uses multiple engines (purl2src, upmex, oslili) for accurate license detection
- Flexible output: Text/HTML with customizable Jinja2 templates
- Cache management: CycloneDX format with merge capabilities
- Override system: Customize licenses and filter unwanted content
Installation
pip install semantic-copycat-purl2notices
For development:
git clone https://github.com/oscarvalenzuelab/semantic-copycat-purl2notices.git
cd semantic-copycat-purl2notices
pip install -e .[dev]
Quick Start
# Process a single package
purl2notices -i pkg:npm/express@4.0.0
# Process an archive file
purl2notices -i library.jar -o NOTICE.txt
# Scan a directory
purl2notices -i ./src --recursive -o NOTICE.html -f html
# Process multiple packages
echo "pkg:npm/express@4.0.0" > packages.txt
echo "pkg:pypi/django@4.2.0" >> packages.txt
purl2notices -i packages.txt -o NOTICE.txt
Documentation
- User Guide - Complete usage documentation
- Examples - Detailed examples and use cases
- Configuration - Configuration options and customization
Common Use Cases
Generate notices for a project
purl2notices -i ./my-project --recursive --cache project.cache.json -o NOTICE.txt
Merge notices from multiple sources
purl2notices -i cache1.json --merge-cache cache2.json -o combined-NOTICE.txt
Customize output with overrides
purl2notices -i packages.txt --overrides custom.json -o NOTICE.txt
API Usage
from purl2notices import Purl2Notices
import asyncio
processor = Purl2Notices()
package = asyncio.run(processor.process_single_purl("pkg:npm/express@4.0.0"))
notices = processor.generate_notices([package])
print(notices)
Release files for semantic-copycat-purl2notices 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| semantic_copycat_purl2notices-1.2.0.tar.gz | 1.1 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| semantic_copycat_purl2notices-1.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.1 MB
Release files / semantic_copycat_purl2notices-1.2.0.tar.gz
| Download URL | semantic_copycat_purl2notices-1.2.0.tar.gz |
|---|---|
| Size | 1.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
17af1ff38c2d4db904d5e4d55bc806f659b9755a4322554996d01cd3f5dde632
|
|
BLAKE2b-256 checksum How to use checksums |
2272b888761bd9540f5334c2bb2f2ad844971ef56d8283c9e858a1f50f058233
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 17, 2025.
Transparency logRelease files / semantic_copycat_purl2notices-1.2.0-py3-none-any.whl
| Download URL | semantic_copycat_purl2notices-1.2.0-py3-none-any.whl |
|---|---|
| Size | 2.0 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
811b6b29884f4e18ee3d13e57fe99b63a42849d4b186118bc9fcadd30c4520a1
|
|
BLAKE2b-256 checksum How to use checksums |
d8be22d05567de693651ed3d73a7c100e68668d08167219e01c8b545612ea7ed
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 17, 2025.
Transparency log