Skip to content

Commit

Permalink
python: Enforce a stricter PyPI package naming policy
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
mgorny committed Nov 22, 2024
1 parent 1f35e60 commit 3deb50d
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 3 deletions.
4 changes: 2 additions & 2 deletions src/pkgcheck/checks/python.py
Original file line number Diff line number Diff line change
Expand Up @@ -946,5 +946,5 @@ def normalize(project: str) -> str:
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)
Original file line number Diff line number Diff line change
@@ -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"}

0 comments on commit 3deb50d

Please sign in to comment.