reuse
reuse is a tool for compliance with the REUSE recommendations.
What it is and what it does
reuse is a compliance tool built by the Free Software Foundation Europe to help developers follow the REUSE recommendations—a standardized framework for declaring copyright and licensing in software projects. It validates that your project includes proper SPDX license identifiers and copyright notices in each file, stores licenses in a LICENSES/ directory, and confirms compliance against the REUSE specification.
The tool provides a CLI with commands to lint projects for compliance, annotate files with copyright and license headers, download licenses, generate SPDX documents, and convert legacy .reuse/dep5 configurations. It works across multiple version control systems and can be integrated into CI/CD pipelines via Docker or as a pre-commit hook. The package depends on Jinja2, license-expression, python-debian, tomlkit, attrs, click, and python-magic to parse licenses, render templates, and detect file types.
Use it for:
- Verify a project meets REUSE specification requirements before release or in CI/CD pipelines
- Automatically add SPDX copyright and license headers to source files across a project
- Generate an SPDX document describing all files and their licenses for compliance audits
- Validate individual files for correct REUSE compliance headers during code review
- Convert legacy .reuse/dep5 configuration files to the newer REUSE.toml format
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
reuse is a command-line tool that validates and enforces REUSE compliance—a standardized approach to declaring copyright and licensing information in software projects.
Yes. reuse is actively maintained, has no known vulnerabilities, and is the standard tool for REUSE compliance. Install friction is moderate but manageable. The copyleft license is appropriate for a compliance tool. Use it if you need to demonstrate or enforce standardized copyright and licensing practices in your project, especially for open-source software or when required by legal or organizational policy.
Install
reuse on PyPI
pip
pip install reuseuv
uv add reusepoetry
poetry add reuseInstalling reuse
Before you install
Medium install friction due to 7 runtime dependencies including Jinja2, license-expression, and python-magic. Maintenance is active with recent releases; the project is actively maintained by FSFE. Requires Python 3.10+. Optional system dependencies (libmagic, Git, Mercurial, Pijul, Jujutsu) improve functionality but are not required.
License in practice
Licensed under Apache-2.0, CC0-1.0, CC-BY-SA-4.0, and GPL-3.0-or-later (copyleft treatment). This multi-license model reflects the tool's own compliance with REUSE recommendations. Users should be aware of the copyleft obligations if they modify and redistribute the package.
Quickstart
pip install reuse
reuse lint
Requires Python 3.10+. libmagic is optional but recommended; without it, file encoding detection is slower. Version control systems (Git, Mercurial, Pijul, Jujutsu) are optional but needed for correct .gitignore handling.
Verify before relying
- Exact performance impact of missing libmagic on large projects
- Whether all 7 runtime dependencies are strictly required or if some are optional extras
Package facts
| License | Apache-2.0 AND CC0-1.0 AND CC-BY-SA-4.0 AND GPL-3.0-or-later (copyleft) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 7 — Jinja2, license-expression, python-debian, tomlkit, attrs, click, python-magic |
| Maintenance | actively maintained — 291 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 662,492/month — #5,437 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: reuse-6.2.0-cp310-cp310-manylinux_2_41_x86_64.whl
Tags
More Quality Assurance packages
Coverage.py measures which lines of Python code…
permissive · top 1,000 on PyPI
ruffRuff is a Python linter and code formatter…
permissive · top 1,000 on PyPI
pexpectPexpect spawns and controls interactive console…
permissive · top 1,000 on PyPI
blackBlack reformats Python source code to a…
permissive · top 1,000 on PyPI
pytest-xdistpytest-xdist distributes pytest tests across…
permissive · top 1,000 on PyPI
cfn-lintValidates AWS CloudFormation templates in YAML…
permissive · top 1,000 on PyPI
license-expressionParses, validates, simplifies, and normalizes…
permissive · top 1,000 on PyPI
scancode-toolkitScanCode Toolkit detects licenses, copyrights,…
permissive · top 15,000 on PyPI
spdx3-validateValidates SPDX 3 documents with context-aware…
permissive · top 15,000 on PyPI
spdx-toolsParse, validate, create, and convert SPDX…
permissive · top 5,000 on PyPI
invenio-records-permissionsDefines and enforces permission policies for…
permissive · top 15,000 on PyPI
antsibull-docutilsProvides docutils helpers and utilities for…
copyleft · top 15,000 on PyPI
pyspdxValidates and tokenizes SPDX license…
copyleft · top 15,000 on PyPI
pre-commit-hooksProvides a collection of reusable pre-commit…
permissive · top 5,000 on PyPI
pip-licenses-cliA command-line tool that scans installed Python…
permissive · top 15,000 on PyPI
pip-licenses-libProgrammatically retrieve and inspect the…
permissive · top 15,000 on PyPI