Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-pip-licenses for
openSUSE:Factory checked in at 2026-02-23 16:12:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pip-licenses (Old)
and /work/SRC/openSUSE:Factory/.python-pip-licenses.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-pip-licenses"
Mon Feb 23 16:12:42 2026 rev:19 rq:1334409 version:5.5.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pip-licenses/python-pip-licenses.changes
2026-01-07 16:02:45.506472929 +0100
+++
/work/SRC/openSUSE:Factory/.python-pip-licenses.new.1977/python-pip-licenses.changes
2026-02-23 16:14:30.742190136 +0100
@@ -1,0 +2,17 @@
+Mon Feb 23 08:57:08 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 5.5.1:
+ * Fixed typographical issue in README examples, closing GHI
+ #209.
+ * Fixed typographical issue in docstring found by codespell.
+ * Aligned Project URLs in `pyproject.toml` with PEP 753
+ * Brought `pyproject.toml` (e.g., packaging metadata) into
+ alignment with PEP 639 and related packaging guidance.
+ * Improved `MANIFEST.in` to `setuptools-scm` build logic with
+ better filtering, closing GHI #266
+ * Fixed a regression in linting via `black` by deprecating
+ support for python 3.9, closing GHI #264
+ * Applied `black 26.1.0`suggestions to codebase, closing GHI
+ #269
+
+-------------------------------------------------------------------
Old:
----
pip_licenses-5.5.0.tar.gz
New:
----
pip_licenses-5.5.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-pip-licenses.spec ++++++
--- /var/tmp/diff_new_pack.D5aVzp/_old 2026-02-23 16:14:31.418217969 +0100
+++ /var/tmp/diff_new_pack.D5aVzp/_new 2026-02-23 16:14:31.422218134 +0100
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-pip-licenses
-Version: 5.5.0
+Version: 5.5.1
Release: 0
Summary: Python packages license list
License: MIT
++++++ pip_licenses-5.5.0.tar.gz -> pip_licenses-5.5.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pip_licenses-5.5.0/.github/dependabot.yml
new/pip_licenses-5.5.1/.github/dependabot.yml
--- old/pip_licenses-5.5.0/.github/dependabot.yml 2025-10-19
02:29:30.000000000 +0200
+++ new/pip_licenses-5.5.1/.github/dependabot.yml 1970-01-01
01:00:00.000000000 +0100
@@ -1,47 +0,0 @@
-# To get started with Dependabot version updates, you'll need to specify which
-# package ecosystems to update and where the package manifests are located.
-# Please see the documentation for all configuration options:
-#
https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
----
-version: 2
-updates:
- - package-ecosystem: "pip" # See documentation for possible values
- directory: "/" # Location of package manifests
- target-branch: "master"
- versioning-strategy: increase
- rebase-strategy: "disabled"
- groups:
- production-dependencies:
- dependency-type: "production"
- allow:
- - dependency-name: "prettytable"
- dependency-type: "direct"
- - dependency-name: "tomli"
- dependency-type: "production"
- - dependency-name: "wcwidth"
- dependency-type: "production"
- ignore:
- - dependency-name: "*"
- exclude-paths:
- - "dev-requirements.txt"
- - "docker/*"
- assignees:
- - "reactive-firewall"
- commit-message:
- prefix: "[UPDATE] "
- include: "scope"
- schedule:
- interval: "weekly"
- day: "friday"
- - package-ecosystem: "github-actions" # See documentation for possible
values
- directory: ".github/workflows/" # Location of package manifests
- target-branch: "master"
- rebase-strategy: "disabled"
- assignees:
- - "reactive-firewall"
- commit-message:
- prefix: "[UPDATE] "
- include: "scope"
- schedule:
- interval: "weekly"
- day: "friday"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pip_licenses-5.5.0/.github/workflows/CD-PyPi.yml
new/pip_licenses-5.5.1/.github/workflows/CD-PyPi.yml
--- old/pip_licenses-5.5.0/.github/workflows/CD-PyPi.yml 2025-10-19
02:29:30.000000000 +0200
+++ new/pip_licenses-5.5.1/.github/workflows/CD-PyPi.yml 1970-01-01
01:00:00.000000000 +0100
@@ -1,89 +0,0 @@
----
-name: CD-PyPi
-description: "Continuous Deployment workflow for PyPi publishing."
-run-name: Build and publish ${{ github.ref_name }} by @${{ github.actor }}
-
-on:
- release:
- types:
- - published
-
-permissions: {}
-
-env:
- # Define Python versions at the top level -- Expected format: X.Y (e.g.,
3.13)
- PYTHON_DEFAULT: "${{ vars.PYTHON_DEFAULT || '3.13' }}"
-
-jobs:
- pypi-publish:
- name: upload release to PyPI
- if: ${{ github.event_name == 'release' && (github.repository ==
'raimon49/pip-licenses') && startsWith(github.ref, 'refs/tags/') }}
- runs-on: ubuntu-latest
- # Specifying a GitHub environment is optional, but strongly encouraged
- # environment: pypi
- permissions:
- # IMPORTANT: this permission is mandatory for Build Attestation
- attestations: write
- # IMPORTANT: this permission is mandatory for Trusted Publishing
- id-token: write
- statuses: write
- contents: read
- actions: read
- defaults:
- run:
- shell: bash
- env:
- LANG: "en_US.UTF-8"
- outputs:
- build_status: ${{ steps.build.outcome }}
- steps:
- - name: Checkout repository
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 #
v5.0.0
- with:
- persist-credentials: false
- - id: build-python
- uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c #
v6.0.0
- with:
- python-version: "${{ env.PYTHON_DEFAULT || 3.13 }}"
- - id: output_python
- name: "bootstrap Python"
- shell: bash
- run: |
- printf "%s\n" "::group::bootstrap-python-env"
- printf "python-path=%s\n" "${{
steps.build-python.outputs.python-path }}" >> "$GITHUB_OUTPUT"
- printf "PYTHON=%s\n" "${{ steps.build-python.outputs.python-path }}"
>> "$GITHUB_ENV"
- printf "python-version=%s\n" "${{
steps.build-python.outputs.python-version }}" >> "$GITHUB_OUTPUT"
- printf "PYTHON_VERSION=%s\n" "${{
steps.build-python.outputs.python-version }}" >> "$GITHUB_ENV"
- printf "%s\n" "::endgroup::"
- - name: Setup build tools
- id: build_deps
- shell: bash
- run: pip install --no-input --user "pip>=25.2" "setuptools>=80.9"
"wheel>=0.45" "build>=1.2.1"
- - name: Pre-Clean
- id: clean
- shell: bash
- run: make -j1 -f Makefile clean 2>/dev/null || true
- - name: Setup dependencies
- id: install_deps
- shell: bash
- run: pip install --no-input -r requirements.txt
- - name: Build
- id: build
- shell: bash
- run: make -j1 -f Makefile build
- - name: Calculate artifact checksums
- run: |
- shasum -a 512 dist/* > build.checksums.txt
- - name: "Attest Build with Checksums"
- id: multicast-build-chksum-attest
- if: ${{ !cancelled() && (github.repository == 'raimon49/pip-licenses')
&& startsWith(github.ref, 'refs/tags/') }}
- uses:
actions/attest-build-provenance@977bb373ede98d70efdf65b84cb5f73e068dcc2a #
v3.0.0
- with:
- subject-checksums: build.checksums.txt
- github-token: ${{ github.token }}
- - name: Publish package distributions to PyPI
- if: ${{ success() }}
- uses: pypa/gh-action-pypi-publish@release/v1 # no SHA -- MUST us 'v1'
here or PyPi will reject
- with:
- skip-existing: true
- packages-dir: dist/
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/pip_licenses-5.5.0/.github/workflows/python-package.yml
new/pip_licenses-5.5.1/.github/workflows/python-package.yml
--- old/pip_licenses-5.5.0/.github/workflows/python-package.yml 2025-10-19
02:29:30.000000000 +0200
+++ new/pip_licenses-5.5.1/.github/workflows/python-package.yml 1970-01-01
01:00:00.000000000 +0100
@@ -1,72 +0,0 @@
-name: Python package
-
-on:
- push:
- branches: [master]
- pull_request:
- branches:
- - master
- - "dev*"
- - "release*"
-
-jobs:
- build:
- runs-on: ubuntu-latest
- strategy:
- matrix:
- python-version: ['3.9', '3.10', '3.11', '3.12', '3.13', '3.14']
-
- steps:
- - name: Checkout repository
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 #
v5.0.0
- with:
- persist-credentials: false
- - name: Set up Python ${{ matrix.python-version }}
- uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c #
v6.0.0
- with:
- python-version: ${{ matrix.python-version }}
- - name: Lint with black
- uses: psf/black@stable
- with:
- options: "--check --diff"
- - name: Install dependencies
- run: |
- python -m pip install --upgrade pip
- if [ -f dev-requirements.txt ]; then pip install -r
dev-requirements.txt; fi
- - name: Test with pytest
- run: |
- pytest --pycodestyle -v --cov --cov-report=xml
- - name: Validate static typing with mypy
- run: |
- mkdir -p .mypy_cache
- mypy --install-types --non-interactive .
- - name: Update coverage artifact
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
# v4.6.2
- with:
- name: coverage-${{ matrix.python-version }}
- path: coverage.xml
- compression-level: 3
- retention-days: 2
- overwrite: true
-
- coverage:
- runs-on: ubuntu-latest
- needs: build
- steps:
- - name: Checkout repository
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 #
v5.0.0
- with:
- persist-credentials: false
- - name: Download all coverage artifacts
- uses:
actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
- with:
- pattern: coverage-*
- - name: Upload code coverage to Codecov
- uses: codecov/codecov-action@5a1091511ad55cbe89839c7260b706298ca349f7
# v5.5.1
- with:
- token: ${{ secrets.CODECOV_TOKEN }}
- name: codecov-umbrella
- fail_ci_if_error: true
- verbose: true
- env:
- CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pip_licenses-5.5.0/.gitignore
new/pip_licenses-5.5.1/.gitignore
--- old/pip_licenses-5.5.0/.gitignore 2025-10-19 02:29:30.000000000 +0200
+++ new/pip_licenses-5.5.1/.gitignore 1970-01-01 01:00:00.000000000 +0100
@@ -1,116 +0,0 @@
-# Byte-compiled / optimized / DLL files
-__pycache__/
-*.py[cod]
-*$py.class
-
-# C extensions
-*.so
-
-# Distribution / packaging
-.Python
-env/
-build/
-develop-eggs/
-dist/
-downloads/
-eggs/
-.eggs/
-lib/
-lib64/
-parts/
-sdist/
-var/
-wheels/
-*.egg-info/
-.installed.cfg
-*.egg
-
-# PyInstaller
-# Usually these files are written by a python script from a template
-# before PyInstaller builds the exe, so as to inject date/other infos into it.
-*.manifest
-*.spec
-
-# Installer logs
-pip-log.txt
-pip-delete-this-directory.txt
-
-# Unit test / coverage reports
-htmlcov/
-.tox/
-.coverage
-.coverage.*
-.cache
-nosetests.xml
-coverage.xml
-*.cover
-.hypothesis/
-.pytest_cache/
-
-# Translations
-*.mo
-*.pot
-
-# Django stuff:
-*.log
-local_settings.py
-
-# Flask stuff:
-instance/
-.webassets-cache
-
-# Scrapy stuff:
-.scrapy
-
-# Sphinx documentation
-docs/_build/
-
-# PyBuilder
-target/
-
-# Jupyter Notebook
-.ipynb_checkpoints
-
-# pyenv
-.python-version
-
-# celery beat schedule file
-celerybeat-schedule
-
-# SageMath parsed files
-*.sage.py
-
-# dotenv
-.env
-
-# virtualenv
-.venv
-venv/
-ENV/
-
-# Spyder project settings
-.spyderproject
-.spyproject
-
-# Rope project settings
-.ropeproject
-
-# mkdocs documentation
-/site
-
-# mypy
-.mypy_cache/
-
-# ignore files to run in docker
-docker/*
-!docker/.gitkeep
-
-# Windows
-[Dd]esktop.ini
-
-# macOS
-.DS_Store
-
-# IDE
-.idea
-*.iml
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pip_licenses-5.5.0/CHANGELOG.md
new/pip_licenses-5.5.1/CHANGELOG.md
--- old/pip_licenses-5.5.0/CHANGELOG.md 2025-10-19 02:29:30.000000000 +0200
+++ new/pip_licenses-5.5.1/CHANGELOG.md 2026-01-27 22:46:16.000000000 +0100
@@ -1,5 +1,15 @@
## CHANGELOG
+### 5.5.1
+
+* Fixed typographical issue in README examples, closing GHI #209.
+* Fixed typographical issue in docstring found by codespell.
+* Aligned Project URLs in `pyproject.toml` with [PEP
753](https://peps.python.org/pep-0753/)
+* Brought `pyproject.toml` (e.g., packaging metadata) into alignment with [PEP
639](https://peps.python.org/pep-0639/) and related packaging guidance.
+ * Improved `MANIFEST.in` to `setuptools-scm` build logic with better
filtering, closing GHI #266
+* Fixed a regression in linting via `black` by deprecating support for python
3.9, closing GHI #264
+ * Applied `black 26.1.0`suggestions to codebase, closing GHI #269
+
### 5.5.0
* Replace dependency on `tomli` with builtin `tomllib` for Python 3.11
@@ -8,6 +18,7 @@
* Breaking change: The `--from=all` output now includes the
`License-Expression` value
* Fixed KeyError with `--partial` and `--allow-only` if a license matches
multiple allowed licenses.
* Declare support for Python 3.13 and 3.14
+* Added RST/Sphinx workflow example for `--with-license-file` option in
documentation
### 5.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pip_licenses-5.5.0/CONTRIBUTING.md
new/pip_licenses-5.5.1/CONTRIBUTING.md
--- old/pip_licenses-5.5.0/CONTRIBUTING.md 2025-10-19 02:29:30.000000000
+0200
+++ new/pip_licenses-5.5.1/CONTRIBUTING.md 1970-01-01 01:00:00.000000000
+0100
@@ -1,29 +0,0 @@
-# How to contribute
-
-## Design policy
-
-The design policy of `pip-licenses` is as follows.
-
-* Focus only on outputting license information of Python packages installed in
user's environment.
-* Support Python 3.9 or later.
-* External packages that depend on runtime are
[prettytable](https://pypi.org/project/prettytable/) and
[tomli](https://pypi.org/project/tomli/) only.
- * Expect to be able to use
[importlib\_metadata](https://importlib_metadata.readthedocs.io/) APIs.
-
-## Setup
-
-1. Fork this repository on your GitHub account.
-2. Create a branch to represent changes.
- * Branch name does **NOT** need `feature/` prefix. Because git-flow is too
complicated.
-3. Create a new venv environment.
-4. Install package for development via `make setup` .
- * Dependencies are managed by
[pip-tools](https://pypi.org/project/pip-tools/).
- * If you want to add dependency packages for development, edit
[dev-requirements.in](https://github.com/raimon49/pip-licenses/blob/master/dev-requirements.in)
file and run `make update-depends` .
- * When you want to install the code under development, run `make
local-install` .
-
-## Implementation and testing
-
-* `pip-licenses` always measures code coverage for code quality. If you
implement the new feature, please also write unit test in
[test\_piplicenses.py](https://github.com/raimon49/pip-licenses/blob/master/test_piplicenses.py).
- * Tests can be run with `make test` .
-* Code conventions follow the [PEP
8](https://www.python.org/dev/peps/pep-0008/).
- * You can format the code by running `make lint` .
-* Send pull request to master branch.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pip_licenses-5.5.0/Dockerfile
new/pip_licenses-5.5.1/Dockerfile
--- old/pip_licenses-5.5.0/Dockerfile 2025-10-19 02:29:30.000000000 +0200
+++ new/pip_licenses-5.5.1/Dockerfile 1970-01-01 01:00:00.000000000 +0100
@@ -1,22 +0,0 @@
-FROM python:3.11-slim-bullseye
-LABEL maintainer="raimon <[email protected]>"
-
-ARG APPDIR=/opt/piplicenses
-
-WORKDIR ${APPDIR}
-
-COPY ./docker/requirements.txt ${APPDIR}
-
-SHELL ["/bin/bash", "-c"]
-
-ENV PIP_ROOT_USER_ACTION=ignore
-
-RUN python3 -m venv ${APPDIR}/myapp \
- && source ${APPDIR}/myapp/bin/activate
-
-RUN pip3 install -U pip \
- && pip3 install -r ${APPDIR}/requirements.txt \
- && pip3 install -U pip-licenses
-
-ENTRYPOINT ["pip-licenses"]
-CMD ["--from=mixed"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pip_licenses-5.5.0/MANIFEST.in
new/pip_licenses-5.5.1/MANIFEST.in
--- old/pip_licenses-5.5.0/MANIFEST.in 2025-10-19 02:29:30.000000000 +0200
+++ new/pip_licenses-5.5.1/MANIFEST.in 2026-01-27 22:46:16.000000000 +0100
@@ -1,6 +1,5 @@
-include LICENSE
-include README.md
-include CHANGELOG.md
-include py.typed
-include test_piplicenses.py
-include tests/fixtures/*.txt
+prune .github
+prune docker
+exclude .gitignore
+exclude CONTRIBUTING.md
+exclude Dockerfile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pip_licenses-5.5.0/PKG-INFO
new/pip_licenses-5.5.1/PKG-INFO
--- old/pip_licenses-5.5.0/PKG-INFO 2025-10-19 02:29:39.916367300 +0200
+++ new/pip_licenses-5.5.1/PKG-INFO 2026-01-27 22:46:22.427595600 +0100
@@ -1,16 +1,15 @@
Metadata-Version: 2.4
Name: pip-licenses
-Version: 5.5.0
+Version: 5.5.1
Summary: Dump the software license list of Python packages installed with pip.
Author-email: raimon <[email protected]>
-License: MIT
-Project-URL: Homepage, https://github.com/raimon49/pip-licenses
-Project-URL: Releases, https://github.com/raimon49/pip-licenses/releases
-Project-URL: Issues, https://github.com/raimon49/pip-licenses/issues
+License-Expression: MIT
+Project-URL: homepage, https://github.com/raimon49/pip-licenses
+Project-URL: releasenotes, https://github.com/raimon49/pip-licenses/releases
+Project-URL: issues, https://github.com/raimon49/pip-licenses/issues
Keywords: pip,pypi,package,license,check
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
@@ -525,6 +524,18 @@
**Note:** If you want to keep the license file path secret, specify
`--no-license-path` option together.
+**Note:** When using `--with-license-file` with structured formats like CSV,
Markdown, reST, or Confluence, the multi-line license file contents can break
the formatting. For documentation workflows (like Sphinx), consider using
separate commands:
+
+```bash
+# Generate clean RST table for documentation
+$ pip-licenses --from=mixed --format=rst --output-file summary.rst
+
+# Generate license file contents in plain-vertical format for inclusion
+$ pip-licenses --from=mixed --format=plain-vertical --with-license-file
--no-license-path --output-file with_license.txt
+```
+
+The RST file can be rendered nicely in Sphinx, while the plain-vertical format
preserves the license file contents as monospace text.
+
#### Option: filter\-strings
Some package data contains Unicode characters which might cause problems for
certain output formats (in particular ReST tables). If this filter is enabled,
all characters which cannot be encoded with a given code page (see
`--filter-code-page`) will be removed from any input strings (e.g. package
name, description).
@@ -644,7 +655,7 @@
Example `pyproject.toml` configuration:
```toml
-[tool.pip-licences]
+[tool.pip-licenses]
from = "classifier"
ignore-packages = [
"scipy"
@@ -747,6 +758,16 @@
## CHANGELOG
+### 5.5.1
+
+* Fixed typographical issue in README examples, closing GHI #209.
+* Fixed typographical issue in docstring found by codespell.
+* Aligned Project URLs in `pyproject.toml` with [PEP
753](https://peps.python.org/pep-0753/)
+* Brought `pyproject.toml` (e.g., packaging metadata) into alignment with [PEP
639](https://peps.python.org/pep-0639/) and related packaging guidance.
+ * Improved `MANIFEST.in` to `setuptools-scm` build logic with better
filtering, closing GHI #266
+* Fixed a regression in linting via `black` by deprecating support for python
3.9, closing GHI #264
+ * Applied `black 26.1.0`suggestions to codebase, closing GHI #269
+
### 5.5.0
* Replace dependency on `tomli` with builtin `tomllib` for Python 3.11
@@ -755,6 +776,7 @@
* Breaking change: The `--from=all` output now includes the
`License-Expression` value
* Fixed KeyError with `--partial` and `--allow-only` if a license matches
multiple allowed licenses.
* Declare support for Python 3.13 and 3.14
+* Added RST/Sphinx workflow example for `--with-license-file` option in
documentation
### 5.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pip_licenses-5.5.0/README.md
new/pip_licenses-5.5.1/README.md
--- old/pip_licenses-5.5.0/README.md 2025-10-19 02:29:30.000000000 +0200
+++ new/pip_licenses-5.5.1/README.md 2026-01-27 22:46:16.000000000 +0100
@@ -480,6 +480,18 @@
**Note:** If you want to keep the license file path secret, specify
`--no-license-path` option together.
+**Note:** When using `--with-license-file` with structured formats like CSV,
Markdown, reST, or Confluence, the multi-line license file contents can break
the formatting. For documentation workflows (like Sphinx), consider using
separate commands:
+
+```bash
+# Generate clean RST table for documentation
+$ pip-licenses --from=mixed --format=rst --output-file summary.rst
+
+# Generate license file contents in plain-vertical format for inclusion
+$ pip-licenses --from=mixed --format=plain-vertical --with-license-file
--no-license-path --output-file with_license.txt
+```
+
+The RST file can be rendered nicely in Sphinx, while the plain-vertical format
preserves the license file contents as monospace text.
+
#### Option: filter\-strings
Some package data contains Unicode characters which might cause problems for
certain output formats (in particular ReST tables). If this filter is enabled,
all characters which cannot be encoded with a given code page (see
`--filter-code-page`) will be removed from any input strings (e.g. package
name, description).
@@ -599,7 +611,7 @@
Example `pyproject.toml` configuration:
```toml
-[tool.pip-licences]
+[tool.pip-licenses]
from = "classifier"
ignore-packages = [
"scipy"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pip_licenses-5.5.0/dev-requirements.txt
new/pip_licenses-5.5.1/dev-requirements.txt
--- old/pip_licenses-5.5.0/dev-requirements.txt 2025-10-19 02:29:30.000000000
+0200
+++ new/pip_licenses-5.5.1/dev-requirements.txt 2026-01-27 22:46:16.000000000
+0100
@@ -158,13 +158,13 @@
# cryptography
# exceptiongroup
# mypy
-urllib3==2.5.0
+urllib3==2.6.3
# via
# requests
# twine
wcwidth==0.2.14
# via prettytable
-wheel==0.45.1
+wheel==0.46.2
# via
# pip-licenses (pyproject.toml)
# pip-tools
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pip_licenses-5.5.0/pip_licenses.egg-info/PKG-INFO
new/pip_licenses-5.5.1/pip_licenses.egg-info/PKG-INFO
--- old/pip_licenses-5.5.0/pip_licenses.egg-info/PKG-INFO 2025-10-19
02:29:39.000000000 +0200
+++ new/pip_licenses-5.5.1/pip_licenses.egg-info/PKG-INFO 2026-01-27
22:46:22.000000000 +0100
@@ -1,16 +1,15 @@
Metadata-Version: 2.4
Name: pip-licenses
-Version: 5.5.0
+Version: 5.5.1
Summary: Dump the software license list of Python packages installed with pip.
Author-email: raimon <[email protected]>
-License: MIT
-Project-URL: Homepage, https://github.com/raimon49/pip-licenses
-Project-URL: Releases, https://github.com/raimon49/pip-licenses/releases
-Project-URL: Issues, https://github.com/raimon49/pip-licenses/issues
+License-Expression: MIT
+Project-URL: homepage, https://github.com/raimon49/pip-licenses
+Project-URL: releasenotes, https://github.com/raimon49/pip-licenses/releases
+Project-URL: issues, https://github.com/raimon49/pip-licenses/issues
Keywords: pip,pypi,package,license,check
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
-Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
@@ -525,6 +524,18 @@
**Note:** If you want to keep the license file path secret, specify
`--no-license-path` option together.
+**Note:** When using `--with-license-file` with structured formats like CSV,
Markdown, reST, or Confluence, the multi-line license file contents can break
the formatting. For documentation workflows (like Sphinx), consider using
separate commands:
+
+```bash
+# Generate clean RST table for documentation
+$ pip-licenses --from=mixed --format=rst --output-file summary.rst
+
+# Generate license file contents in plain-vertical format for inclusion
+$ pip-licenses --from=mixed --format=plain-vertical --with-license-file
--no-license-path --output-file with_license.txt
+```
+
+The RST file can be rendered nicely in Sphinx, while the plain-vertical format
preserves the license file contents as monospace text.
+
#### Option: filter\-strings
Some package data contains Unicode characters which might cause problems for
certain output formats (in particular ReST tables). If this filter is enabled,
all characters which cannot be encoded with a given code page (see
`--filter-code-page`) will be removed from any input strings (e.g. package
name, description).
@@ -644,7 +655,7 @@
Example `pyproject.toml` configuration:
```toml
-[tool.pip-licences]
+[tool.pip-licenses]
from = "classifier"
ignore-packages = [
"scipy"
@@ -747,6 +758,16 @@
## CHANGELOG
+### 5.5.1
+
+* Fixed typographical issue in README examples, closing GHI #209.
+* Fixed typographical issue in docstring found by codespell.
+* Aligned Project URLs in `pyproject.toml` with [PEP
753](https://peps.python.org/pep-0753/)
+* Brought `pyproject.toml` (e.g., packaging metadata) into alignment with [PEP
639](https://peps.python.org/pep-0639/) and related packaging guidance.
+ * Improved `MANIFEST.in` to `setuptools-scm` build logic with better
filtering, closing GHI #266
+* Fixed a regression in linting via `black` by deprecating support for python
3.9, closing GHI #264
+ * Applied `black 26.1.0`suggestions to codebase, closing GHI #269
+
### 5.5.0
* Replace dependency on `tomli` with builtin `tomllib` for Python 3.11
@@ -755,6 +776,7 @@
* Breaking change: The `--from=all` output now includes the
`License-Expression` value
* Fixed KeyError with `--partial` and `--allow-only` if a license matches
multiple allowed licenses.
* Declare support for Python 3.13 and 3.14
+* Added RST/Sphinx workflow example for `--with-license-file` option in
documentation
### 5.0.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pip_licenses-5.5.0/pip_licenses.egg-info/SOURCES.txt
new/pip_licenses-5.5.1/pip_licenses.egg-info/SOURCES.txt
--- old/pip_licenses-5.5.0/pip_licenses.egg-info/SOURCES.txt 2025-10-19
02:29:39.000000000 +0200
+++ new/pip_licenses-5.5.1/pip_licenses.egg-info/SOURCES.txt 2026-01-27
22:46:22.000000000 +0100
@@ -1,7 +1,4 @@
-.gitignore
CHANGELOG.md
-CONTRIBUTING.md
-Dockerfile
LICENSE
MANIFEST.in
Makefile
@@ -12,10 +9,6 @@
pyproject.toml
requirements.txt
test_piplicenses.py
-.github/dependabot.yml
-.github/workflows/CD-PyPi.yml
-.github/workflows/python-package.yml
-docker/.gitkeep
pip_licenses.egg-info/PKG-INFO
pip_licenses.egg-info/SOURCES.txt
pip_licenses.egg-info/dependency_links.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pip_licenses-5.5.0/piplicenses.py
new/pip_licenses-5.5.1/piplicenses.py
--- old/pip_licenses-5.5.0/piplicenses.py 2025-10-19 02:29:30.000000000
+0200
+++ new/pip_licenses-5.5.1/piplicenses.py 2026-01-27 22:46:16.000000000
+0100
@@ -26,6 +26,7 @@
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
"""
+
from __future__ import annotations
import argparse
@@ -45,11 +46,10 @@
from prettytable import HRuleStyle, PrettyTable, RowType
-
if sys.version_info >= (3, 11):
import tomllib
else:
- import tomli as tomllib
+ import tomli as tomllib # type: ignore[import-not-found]
if TYPE_CHECKING: # pragma: no cover
from email.message import Message
@@ -58,7 +58,7 @@
open = open # allow monkey patching
__pkgname__ = "pip-licenses"
-__version__ = "5.5.0"
+__version__ = "5.5.1"
__summary__ = (
"Dump the software license list of Python packages installed with pip."
)
@@ -147,7 +147,7 @@
or specified in the CLI
Returns:
- normalized packege name
+ normalized package name
"""
return PATTERN_DELIMITER.sub("-", pkg_name).lower().strip()
@@ -317,10 +317,10 @@
return (included_file, included_text)
def get_pkg_info(pkg: Distribution) -> dict[str, str | list[str]]:
- (license_file, license_text) = get_pkg_included_file(
+ license_file, license_text = get_pkg_included_file(
pkg, "LICEN[CS]E.*|COPYING.*"
)
- (notice_file, notice_text) = get_pkg_included_file(pkg, "NOTICE.*")
+ notice_file, notice_text = get_pkg_included_file(pkg, "NOTICE.*")
pkg_info: dict[str, str | list[str]] = {
"name": pkg.metadata["name"],
"version": pkg.version,
@@ -1169,7 +1169,9 @@
action="store_true",
default=config_from_file.get("with-license-file", False),
help="dump with location of license file and "
- "contents, most useful with JSON output",
+ "contents, most useful with JSON output. "
+ "For structured formats (CSV, Markdown, reST), "
+ "see README for workflow examples.",
)
format_options.add_argument(
"--no-license-path",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/pip_licenses-5.5.0/pyproject.toml
new/pip_licenses-5.5.1/pyproject.toml
--- old/pip_licenses-5.5.0/pyproject.toml 2025-10-19 02:29:30.000000000
+0200
+++ new/pip_licenses-5.5.1/pyproject.toml 2026-01-27 22:46:16.000000000
+0100
@@ -1,5 +1,5 @@
[build-system]
-requires = ["setuptools>=75.1.0", "setuptools_scm"]
+requires = ["setuptools>=77.0.3", "setuptools_scm"]
build-backend = "setuptools.build_meta"
[project]
@@ -7,7 +7,8 @@
description = "Dump the software license list of Python packages installed
with pip."
dynamic = ["version", "readme"]
requires-python = ">=3.9"
-license = {text = "MIT"}
+license = "MIT"
+license-files = ["LICENSE"]
authors = [
{name = "raimon", email = "[email protected]"}
]
@@ -15,7 +16,6 @@
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Developers",
- "License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.9",
@@ -51,9 +51,9 @@
]
[project.urls]
-Homepage = "https://github.com/raimon49/pip-licenses"
-Releases = "https://github.com/raimon49/pip-licenses/releases"
-Issues = "https://github.com/raimon49/pip-licenses/issues"
+homepage = "https://github.com/raimon49/pip-licenses"
+releasenotes = "https://github.com/raimon49/pip-licenses/releases"
+issues = "https://github.com/raimon49/pip-licenses/issues"
[project.scripts]
pip-licenses = "piplicenses:main"