Skip to content

Commit 3deb50d

Browse files
committed
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: #717 Signed-off-by: Michał Górny <mgorny@gentoo.org>
1 parent 1f35e60 commit 3deb50d

2 files changed

Lines changed: 4 additions & 3 deletions

File tree

  • src/pkgcheck/checks
  • testdata/data/repos/python/PythonPackageNameCheck/PythonMismatchedPackageName

src/pkgcheck/checks/python.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -946,5 +946,5 @@ def normalize(project: str) -> str:
946946
return PROJECT_SYMBOL_NORMALIZE_RE.sub("-", project).lower()
947947

948948
pypi_name = pypi_remotes[0].name
949-
if normalize(pkg.package) != normalize(pypi_name):
950-
yield PythonMismatchedPackageName(pypi_name.replace(".", "-"), pkg=pkg)
949+
if pkg.package != normalize(pypi_name):
950+
yield PythonMismatchedPackageName(normalize(pypi_name), pkg=pkg)
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
{"__class__": "PythonMismatchedPackageName", "category": "dev-python", "package": "PythonMismatchedPackageName1", "recommended": "MismatchedPackageName1"}
1+
{"__class__": "PythonMismatchedPackageName", "category": "dev-python", "package": "PythonMismatchedPackageName0", "recommended": "pythonmismatchedpackagename0"}
2+
{"__class__": "PythonMismatchedPackageName", "category": "dev-python", "package": "PythonMismatchedPackageName1", "recommended": "mismatchedpackagename1"}

0 commit comments

Comments
 (0)