commit: 3deb50dd5394ef306a911fdd37a1bf92ae658adc Author: Michał Górny <mgorny <AT> gentoo <DOT> org> AuthorDate: Fri Nov 22 15:07:02 2024 +0000 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> CommitDate: Fri Nov 22 21:35:14 2024 +0000 URL: https://gitweb.gentoo.org/proj/pkgcore/pkgcheck.git/commit/?id=3deb50dd
python: Enforce a stricter PyPI package naming policy Enforce a stricter package naming policy that requires using lowercase names and hyphens over underscores. Once this change lands, I'll update the Python Guide as well. Previously, the policy was to permit either forcing lowercase, or to follow upstream naming (and the name check, more liberally, was done case-insensitively), with a note to enforce consistency across different packages. This caused twofold problems. Firstly, not all packages ended up following the policy for consistent naming -- so we e.g. have flit-core but flit_scm, or flask but Frozen-Flask. Part of the problem is that 1) PyPI packages themselves, particularly third-party extensions, don't follow consistent naming themselves, and 2) some PyPI packages actually get "renamed" with case and/or hyphen changes. Secondly, this policy makes naming less predictable. In particular, with upstream name of "flit-scm", you don't immediately figure out it's "flit_scm" in Gentoo, or with "PyGithub" you can't guess whether to look for "PyGithub" or "pygithub". The changed policy will require changes to 44 packages in Gentoo. Closes: https://github.com/pkgcore/pkgcheck/pull/717 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org> src/pkgcheck/checks/python.py | 4 ++-- .../PythonPackageNameCheck/PythonMismatchedPackageName/expected.json | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/pkgcheck/checks/python.py b/src/pkgcheck/checks/python.py index bacbdb5a..392241b2 100644 --- a/src/pkgcheck/checks/python.py +++ b/src/pkgcheck/checks/python.py @@ -946,5 +946,5 @@ class PythonPackageNameCheck(Check): return PROJECT_SYMBOL_NORMALIZE_RE.sub("-", project).lower() pypi_name = pypi_remotes[0].name - if normalize(pkg.package) != normalize(pypi_name): - yield PythonMismatchedPackageName(pypi_name.replace(".", "-"), pkg=pkg) + if pkg.package != normalize(pypi_name): + yield PythonMismatchedPackageName(normalize(pypi_name), pkg=pkg) diff --git a/testdata/data/repos/python/PythonPackageNameCheck/PythonMismatchedPackageName/expected.json b/testdata/data/repos/python/PythonPackageNameCheck/PythonMismatchedPackageName/expected.json index 3c85ada5..5142f6a8 100644 --- a/testdata/data/repos/python/PythonPackageNameCheck/PythonMismatchedPackageName/expected.json +++ b/testdata/data/repos/python/PythonPackageNameCheck/PythonMismatchedPackageName/expected.json @@ -1 +1,2 @@ -{"__class__": "PythonMismatchedPackageName", "category": "dev-python", "package": "PythonMismatchedPackageName1", "recommended": "MismatchedPackageName1"} +{"__class__": "PythonMismatchedPackageName", "category": "dev-python", "package": "PythonMismatchedPackageName0", "recommended": "pythonmismatchedpackagename0"} +{"__class__": "PythonMismatchedPackageName", "category": "dev-python", "package": "PythonMismatchedPackageName1", "recommended": "mismatchedpackagename1"}
