Skip to content

About -misnamed python projects #1128

@AMDmi3

Description

@AMDmi3

Recently a bunch of python module packages from some repositories, which drop python-, py-, py and alike prefixes or suffixes from the original module names, allegedly to avoid tautological package names like python-python-mpd2 or py-py-imgur, were pessimized and marked as misnamed. Explaining why.

  • Repology cannot tell if the name was tampered with, and merge the package with corresponding project based on genuine name (which also contains corresponding PyPI entry).
  • Mangling introduces project name conflicts. Examples of classes containing up to 5 distinct modules which will intersect if py/python prefixes/suffixes are omitted:
    class     | count |                           array_agg                           
--------------+-------+---------------------------------------------------------------
 flux         |     5 | {flux-python,fluxpy,pyflux,python-flux,flux}
 magic        |     5 | {magic,magic-python,pymagic,python-magic,magicpy}
 mcp          |     5 | {mcp,mcppy,mcp-python,python-mcp,pymcp}
 ulid         |     5 | {py-ulid,python-ulid,ulid,ulid-py,ulid-python}
 a3           |     4 | {a3py,pya3,a3,a3-python}
 chzzk        |     4 | {chzzkpy,chzzk,python-chzzk,chzzk-python}
 clean        |     4 | {cleanpy,pyclean,clean-python,clean-py}
 cloudflare   |     4 | {cloudflarepy,cloudflare,python-cloudflare,cloudflare-python}
 codex-sdk    |     4 | {python-codex-sdk,codex-sdk,codex-sdk-python,codex-sdk-py}
 coingecko    |     4 | {coingecko-python,coingecko,pycoingecko,python-coingecko}
 dal          |     4 | {dal,dal-python,dalpy,pydal}
 enigma       |     4 | {enigma,pyenigma,enigmapython,py-enigma}
 ffmpeg       |     4 | {ffmpeg-python,ffmpeg,pyffmpeg,python-ffmpeg}
 gen          |     4 | {genpy,pygen,gen,pygen-py}
 harmony      |     4 | {harmonypy,harmony-py,pyharmony,harmony}
 kafka        |     4 | {kafkapy,kafka,pykafka,kafka-python}
 la           |     4 | {la,lapy,pyla,pylapy}
 local        |     4 | {localpy,python-local,localpython,py-local}
 nest         |     4 | {nestpy,nest,python-nest,nestpython}
 netbox       |     4 | {netbox-python,pynetbox,python-netbox,netbox}
 orca         |     4 | {orca,orcapy,py-orca,orca-python}
 ort          |     4 | {ort,ort-python,ortpy,python-ort}
 pact         |     4 | {pypact,pact-python,python-pact,pact}
 pam          |     4 | {pam-python,pam,pampy,python-pam}
 pumpfun      |     4 | {pumpfun,pypumpfun,python-pumpfun,pumpfunpy}
 spot         |     4 | {spot,pyspot,spotpy,spotpython}
 systemd      |     4 | {pysystemd,python-systemd,systemd,systemd-python}
 tlsh         |     4 | {py-tlsh,python-tlsh,tlsh,tlsh-python}
 toon         |     4 | {pytoon,toon-py,toon-python,python-toon}
 utils        |     4 | {python-utils,pythonutils,pyutils,utils}
 uv           |     4 | {pyuv,python-uv,uv,uvpy}
 vcon         |     4 | {python-vcon,pyvcon,vcon,vcon-py}
 whois        |     4 | {python-whois,pythonwhois,pywhois,whois}
 wss          |     4 | {pywss,wss,wss-python,wss-py}
  • This increases report traffic.
  • Apart from Repology, it breaks tools which, for instance, try to convert pip invocations into installing native packages of requested python modules. In some cases, there may be security implications due to name squatting.

So, we strongly discourage name mangling, and require python package names to match pypi (plus prefix used for python modules in you repository).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions