Switch to PEP 639 license metadata#325
Conversation
DCO signed off ✔️All commits have been signed off. You have certified to the terms of the Developer Certificate of Origin, version 1.1. In particular, you certify that this contribution has not been developed using information obtained under a non-disclosure agreement or other license terms that forbid you from contributing it under the GNU Lesser General Public License, version 2.1. |
|
Without this change, source builds throw some aggressive warnings: We could fix the second warning without compatibility issues, but still: I'm not excited about carrying these warnings for a year, nor am I excited about a protracted battle with PyPA. Since this issue isn't user-facing, I'm now considering merging the changes as-is. Downstream packagers with setuptools < 77 would be impacted, but the issue won't be unique to OpenSlide Python, and packagers can work around it by patching out the |
5718074 to
d873500
Compare
Conform with PEP 639 by adding links to our license files, using a SPDX license expression to declare our licenses, and dropping the deprecated Trove license classifier. Without this change, setuptools shows a large deprecation warning saying that support for the old project.license syntax will be removed on 2026-Feb-18. However, the new syntax requires setuptools >= 77, so this change breaks compatibility with setuptools 61-76. Users installing from source will be unaffected because the build frontend automatically updates setuptools if required, but Linux distro packaging disallows such updates, so this change will break package builds for many still-supported distro releases. To build with setuptools 61 through 76, distros will need to patch out the project.license field and reduce the build-system.requires dependency. Signed-off-by: Benjamin Gilbert <bgilbert@cs.cmu.edu>
Conform with PEP 639 by adding links to our license files, using a SPDX license expression to declare our licenses, and dropping the deprecated license Trove classifier.
The new syntax for
project.licenserequires setuptools ≥ 77, so this change breaks compatibility with setuptools 61-76. Users installing from source will be unaffected because the build frontend automatically updates setuptools if required, but Linux distro packaging disallows such updates, so this change breaks package builds for many current distro versions, including all stable versions of Debian, Fedora, and Ubuntu as well as Debian testing.setuptools' deprecation warning claims that the old syntax will be removed on 2026-Feb-18. If setuptools sticks to this plan, they will cause ecosystem-wide packaging disruption. I intend to maintain the status quo as long as possible in the hope that PyPA opts to extend the deprecation period. If they do not, and setuptools drops support for the old syntax (and does not reinstate it within a few weeks), we'll probably need to drop the license fields for a few years until distros with setuptools < 77 reach EOL.