Releases: raimon49/pip-licenses
Release list
6.0.0b11
Patch Notes for v6.0.0 Beta Candidate (v6.0.0b11)
A second peek at some of the big changes coming in pip-licenses v6.
Note
This will also, be an opt-in pre-release (via pip install --pre ... (and does not supersede the LTS v5.5.5 yet) A few things are going to change before the final v6 release. See Version 6.x Series for planned work.
Impacted GHIs:
- Closes #194 (still unreleased)
- Resolves #309
- Contributes to #327 (remains unresolved)
Included & Superseded PR/MRs
- Supersedes #355
- Supersedes #350
- Supersedes #351
- Supersedes #357
- Includes & Supersedes #361
- Includes #362
- Includes & Supersedes #367
Copilot Summary
ðŊ Major Changes
Complete Codebase Refactoring
- Moved from single-module to package structure: The monolithic
piplicenses.pyhas been split into a modular package with organized submodules:piplicenses/__init__.py- Main package entry pointpiplicenses/__main__.py- CLI entry pointpiplicenses/cli/- Command-line argument parsing and configurationpiplicenses/core.py- Core license discovery logicpiplicenses/output/- Output formatting (tables, JSON, CSV, HTML, etc.)piplicenses/sorting.py- License comparison and filtering utilitiespiplicenses/constants.py- Centralized constants and field definitionspiplicenses/tomli_bridge.py- TOML file handling shim
Configuration System Enhancement
- Replaced argparse.Namespace with dataclass-based
Configurationobject for better type safety and IDE support - Improved configuration file loading and merging logic
- Support for environment-based Python executable selection
API Changes (Breaking Changes)
- Removed: Monolithic
piplicenses.main()entry point moved topiplicenses.__main__.main() - Renamed CLI arguments for consistency:
--with-license-fileâ--with-license-files(plural form added)--with-notice-fileâ--with-notice-files(plural form added)--no-versionâ--without-version(standardized naming)--no-license-pathâ--without-license-paths(standardized naming)
- New CLI options:
--with-other-files- Include other licensing-related files--no-file-paths- Suppress all file path outputs--format=expression- Support for PEP-639 license expressions
âĻ New Features
PEP-749 Compliance
- Aligned with PEP-749 (formerly PEP-753) regarding
typing.TYPE_CHECKINGdeprecation - Improved support for modern Python package metadata standards
Enhanced URL/Homepage Extraction
- New
extract_urls()function for comprehensive Project-URL parsing - Fallback to legacy
home-pagemetadata field for compatibility - Support for well-known project URL labels (source, repository, documentation, etc.)
Multiple License File Support
- Handle packages with multiple LICENSE files (GHI #71 - WIP)
- New
--with-license-filesflag for extracting all license files - Support for license file deduplication
Extended Output Formats
- Improved HTML table generation with
<thead>and<tbody>tags - Enhanced JSON output for structured data processing
- Better CSV escaping for RFC 4180 compliance
ð Bug Fixes
Priority Logic Regressions (GHI #309)
- Fixed non-deterministic ordering of multiple-source license results
- Improved consistency in license resolution order
Test Regressions (GHI #337, #338)
- Resolved version bump incompatibilities affecting multiple test suites
- Updated test fixtures to match current package versions
- Fixed Python 3.9 coverage regression in CI
False Positive CVE Fixes
ð Documentation Updates
README Improvements (GHI #328 - WIP)
- Added Python 3.8 legacy installation instructions (pip-licenses <5.0)
- Updated command examples with current package versions
- Improved option table formatting
- Added HTML output with proper semantic structure
- Updated Dockerfile references from Python 3.11 to 3.14
- Fixed C/C++ Extensions notation ("C++" instead of "C ++")
Contributing Guidelines
- Added
make local-ci-checktarget for pre-push validation - Fixed typos in contribution documentation
ð§ Infrastructure Changes
CI/CD Pipeline Updates
- Updated GitHub Actions versions:
actions/checkout@v7.0.0(from v6.0.2)actions/attest@v4.1.1(from v4.1.0)codecov/codecov-action@v7.0.0(from v6.0.0)actions/upload-artifact@v7.0.1(from v7.0.0)
- Updated Python version from 3.13 to 3.14 as default
- Bumped build tool requirements:
- pip âĨ26.0.1 (from âĨ26.0)
- setuptools âĨ83.0 (from âĨ82.0)
- wheel âĨ0.47 (from âĨ0.45)
Dependabot Configuration
- Improved pip dependency grouping and scheduling
- Added build/packaging dependency tracking
- Configured separate tracking for different target branches
Development Dependencies
- Major version bumps across the stack
- Removed
twinefrom development dependencies (simplified build process) - Pinned
mypy==1.19.1for Python 3.9 support - Updated test framework versions
- Enhanced linting with Ruff configuration adjustments
Project Configuration
- Updated
pyproject.tomlstructure for modern Python packaging standards - Reorganized setuptools configuration
- Improved metadata field definitions (PEP-621 compliance)
ð Version Information
- Current Version: 6.0.0b10 (Beta)
- Status: Subject to change in next release
- Python Support: 3.9.6+
- Target Release: 6.0.0 final
â ïļ Breaking Changes Summary
- Module structure - Import paths have changed due to package refactoring
- CLI argument names - Standardized naming conventions (see API Changes above)
- Type changes - Configuration is now a dataclass instead of Namespace
- Behavior changes - License file handling now supports multiples
ðŪ Upcoming Work (In Progress)
- GHI #316: Complete modularization refactoring
- GHI #242: New flags implementation (W.I.P)
- GHI #71: Improved handling of multiple license files (partially implemented)
ð Special thanks to...
- @matejkloska for their interest, and contributions in keeping the documentation updated
- @johnthagen for motivating much of this work, and again for their consistent interest
- @stefan6419846 for inspiring fixes, sharing insights, and giving feedback and code-reviews!
- @SAY-5 for their contributions
- Everyone else who opened a GHI or contributed (you now who you are)
Note
This is a beta release. All features and APIs are subject to change before the final 6.0.0 release.
Full Changelog: v-6.0.0a1...v-6.0.0b11
6.0.0b10
What's Changed
- Multiple Development (v6 betas) re-joined by @reactive-firewall in #361
- DRAFT - Patch known fixes for tests by @reactive-firewall in #362
- New Feature: markdown support for license files (paths only) by @reactive-firewall in #367
Full Changelog: v-6.0.0a1...v-6.0.0b10
6.0.0a1
Patch Notes
A sneak peek at some of the changes coming in pip-licenses v6 and some minor documentation corrections.
Note
This will be an opt-in pre-release (via pip install --pre ... (and does not supersede the LTS v5.5.5)
Container version bump ðĶ
Include with this release is a preview of the next LTS container version via, a long overdue, updated Dockerfile
Documentation ð (because it's not really about security with these)
Important
pip-licenses was NOT impacted by CVE-2025-47273. pip install pip-licenses>=5 will not have install the affected package setuptools<78.1.1 (despite an outdated example in the README.md); Most users should have been unaffected (except possibly on outdated forks?) unless doing very strange (unsupported) things with pip-licenses's source builds like monkey-patching the build logic, then maybe ð.
Numerous examples throughout the README.md (which is included in the official distributions, and may worry your favorite security tools) have been updated thanks to work by @matejkloska ð
Security ð
Important
pip-licenses was NOT impacted by CVE-2026-4539 for normal use-cases. pip install pip-licenses>=5 will not install the affected developer package Pypgments; Most users should have been unaffected (except possibly on forked projects).
Fixed false positive of: CVE-2026-4539 reDoS. Removed optional (and historical) use of twine to fix alert.
Important
Furthermore, pip-licenses was NOT impacted by CVE-2026-44432.
Furthermore, pip-licenses was NOT impacted by CVE-2026-44431.
Fixed false positive of CVE-2026-44432. Removed optional (and historical) use of twine to fix alerts.
Fixed false positive of CVE-2026-44431.
Experimental flags ð
Important
ð§ Upgrades are in-progress, please pardon the noisy changes and dust.
--with-*-files(as originally suggested by @johnthagen) plural nomenclature (filevs files) will lead to a more intuitive usage - these will be formally introduced in a future stable release (but this is an early sneak peek currently based on work by @stefan6419846)
These initial new flags are currently implemented in a purely stop-gap form (as they are based on the PR stefan6419846/pip-licenses-cli#132 (which was originally a fix for stefan6419846/pip-licenses-cli#8 that @johnthagen is similar to #71 and #242). To completely fix GHI #71 and related, full support of multiple licenses for a single package will become the default. This seemingly small design change will have impacts throughout the entire codebase. But for most users this hopefully will just look like adding an s to the --with-license-file flag (and the plan is to replace the old flag mostly behind the scenes to minimize potential breaking changes) or even no change to usage just a noisy depreciation warning that can be ignored (this re-design is not really about removing any features)
So yeah this would-be the next v5.5.x if not for all that; hence the bump to v6 (alpha))
Impacted GHIs:
- Closes #194
- Contributes to #309 (WIP)
- Closes #328
- Contributes to #327 (remains unresolved)
- Contributes to #242 (WIP)
- Resolves/Closed #352
Included & Superseded PR/MRs
- Supersedes #324
- Supersedes #325
- Includes & Supersedes #326
- Includes & Supersedes #328
- Supersedes #332
- Includes & Supersedes #337
- Includes #339
- Supersedes #341
- Supersedes #343
- Includes #346
Full Changelog: v-5.5.5...v-6.0.0a1
Special thanks to...
- @matejkloska for requesting this pre-release
- @johnthagen for motivating much of this work, and consistent interest
- @stefan6419846 for inspiring fixes, sharing insights, and giving feedback and code-reviews!
- @SAY-5 for their contributions
5.5.5
Patch Notes for 5.5.5
Combines recent pre-releases (including 5.5.2-5.5.4) to deliver significant codebase cleanup and lays the groundwork for upcoming changes planned for version v6.0.
What's Changed
- (RC-3) Additional tweaks to CHANGELOG and various comments.
- (RC-2) Updated Copyright lines and made note of new maintainer
- (RC-1) Reverts experiments from PR #313 to prepare for a proper release.
Full Changelog: v-5.5.4...v-5.5.5
5.5.4
Important
PRE-RELEASE UPDATE
This is an early pre-release to bring the default branch closer to upcoming development changes.
Patch Notes for 5.5.4
Notable Changes
Fixes #288. See GHI #288 & PR #313 for more info and relevant discussion.
Implements/Configures support forprekImplemented initialpre-commit-config.yamlbased on work by @DimitriPapadopoulos
- Implements additional support for typing
- Extended recent
ruffconfigurations- Aligned
ruffrules for style a moreblackcompatible experience - Enabled rules for linting type annotations with
ruff
- Aligned
- Added new type annotations through-out the codebase, including for test-code
- Added new experimental linter that aims to support the entire Python Typing spec.
- Extended recent
- Updated and re-tooled development dependencies
- Refactored tooling with more robust handling of pinning the known
filelockdependency across python versions - Several version bumps (still targeting Python 3.9+)
- re-factored/re-tooled the
Makefilefor developer workflows
- Refactored tooling with more robust handling of pinning the known
Impacted GHI
- Contributes to #319
Included and superseded PRs
5.5.3
Important
PRE-RELEASE UPDATE
This is an early pre-release to bring the default branch closer to upcoming development changes.
Patch Notes for 5.5.3
Notable Changes
ð A huge thanks to @DimitriPapadopoulos for their contributions.
- Aligned parsing logic with PEP 753
- Refactored to better leverage f-strings to improve performance slightly
Included and superseded PRs
What's Changed
- Fix warning in tests by @DimitriPapadopoulos in #304
- Get rid of Python 3.5 left-over by @DimitriPapadopoulos in #305
- Use f-strings by @DimitriPapadopoulos in #301
- Improve package home page discovery by @DimitriPapadopoulos in #306
- Additional codebase cleanup
Full Changelog: v-5.5.2...v-5.5.3
5.5.2
Important
PRE-RELEASE UPDATE
This is an early pre-release to bring the default branch closer to upcoming development changes.
Patch Notes for 5.5.2
This update migrates from the linters black and isort to ruff (Code style remains PEP-8 aligned, but should be slightly more readable).
Notable Changes:
- Added support for multi-line allow-only and fail-on arguments
- Relaxed parsing of most whitespace around semicolon delimeter
- Added simple
SECURITY.mdpolicy document - Fixed a duplication behavior in output when a package was found at multiple paths (e.g., symlinks)
- Fixed issue where lowercase license filenames were ignored
- Improved project
Makefilestability for developers - Migrated from the linters black and isort to ruff
- Code style remains PEP-8 aligned, but should be slightly more readable.
- Linting configuration remains in
pyproject.toml
- Updated
CONTRIBUTORS.mdguide with related changes
Impacted GHI
Included and superseded PRs
- Supersedes #221
- Includes and supersedes #261
- Includes and supersedes #287
- Includes and supersedes #289
- Includes and supersedes #291
- Includes and supersedes #297
Full Changelog: v-5.5.1...v-5.5.2
5.5.1
Patch Notes for 5.5.1
Contains packaging and CI updates, dependency/dev-dependency security updates, small code/style fixes (typos, formatting), and preparation for PEP-compliant metadata and sdist behaviour.
Notable user-visible changes
- Version bump: version set to 5.5.1 (piplicenses.py).
- Typos fixed: README examples and internal docstrings (codespell fix).
- Formatting: Applied black 26.1.0 changes across the codebase.
- CI/CD:
- Upgraded GitHub Actions runners/actions versions used in workflows:
- actions/checkout â v6.0.1
- actions/setup-python â v6.1.0
- actions/upload-artifact â v6.0.0
- actions/download-artifact â v7.0.0
- codecov/codecov-action â v5.5.2
- Workaround to bypass black lint step for Python 3.9 (black GHA failures with v3.9).
- Upgraded GitHub Actions runners/actions versions used in workflows:
- Packaging & metadata:
- pyproject.toml: made PEP-compliant changes:
- build-system requires reviewed
- project URLs normalized to "homepage", "releasenotes", "issues" (PEP-753 well-known labels)
- MANIFEST.in updated to use a prune/exclude strategy suitable for
setuptools-scm(avoid duplicative explicit include lists).
- project.license and license-files fields normalized (PEP-639)
- requires-python remains >=3.9 (note: CI deprecates 3.9 for black)
- build-system requires reviewed
- pyproject.toml: made PEP-compliant changes:
Developer dependencies updated (security/maintenance):
- urllib3 bumped 2.5.0 â 2.6.3
- wheel bumped 0.45.1 â 0.46.2
Small code cleanups:
- minor whitespace/annotation/style alignment and improved tuple assignment readability in piplicenses.py
- some filename/text extraction behavior unchanged but formatting and docstrings clarified.
Files (high-level) changed in this PR
piplicenses.py â version bump, docstring typo fix, style/formatting adjustments
CHANGELOG.md â added 5.5.1 notes
pyproject.toml â PEP-639/753 packaging metadata and URL label normalisation
MANIFEST.in â adapted for setuptools-scm (prune/exclude)
dev-requirements.txt â urllib3, wheel updates
.github/workflows/python-package.yml and .github/workflows/CD-PyPi.yml â updated action references, black job conditional, upload/download artifact and codecov action upgrades
Impacted GitHub Issues (GHI)
Included / Supersedes PRs
- Supersedes #251
- Includes and Supersedes #252
- Includes and Supersedes #253
- Includes and Supersedes #254
- Includes and Supersedes #255
- Includes and Supersedes #256
- Includes and Supersedes #257
- Includes and Supersedes #258
- Includes and Supersedes #259
- Includes and Supersedes #260
- Includes and Supersedes #263
- Includes and Supersedes #271
- Includes and Supersedes #275
- Supersedes #278
- Supersedes #281
Thanks to these Contributors ð
- @Akshat1931 made their first contribution in #244
- @kaine-bruce-dmt made their first contribution in #245
- @cnaples79 made their first contribution in #249
- @DimitriPapadopoulos made their first contribution in #260
Full Changelog: v-5.5.0...v-5.5.1
5.5.0
Patch Notes for 5.5.0
- Minor Security updates
- Initial Implementation of PEP-639 support
- Initial support for builtin
tomllibfor Python 3.11+ (reducing external dependencies by 1) - Fixes an edge case where packages are named with version info.
- Declares support for Python 3.13 & 3.14
Impacted GHI:
- Contributed to #236
Included and Superseded PRs
- includes and supersedes #210
- includes and supersedes #213
- includes and supersedes #214
- includes and supersedes #215
- includes and supersedes #218
- includes and supersedes #219
- includes and supersedes #222
- includes and supersedes #230