Category names ending in a plural noun (DevOps Tools, Web Frameworks, HTTP Clients, Stdlib) got titles like "Python DevOps Tools Libraries" in title, og:title, twitter:title, and JSON-LD name.
Co-Authored-By: Claude <noreply@anthropic.com>
The Mock entry was named `mock`, the PyPI backport package, while it links to and describes the standard-library `unittest.mock` module.
Co-Authored-By: Claude <noreply@anthropic.com>
The old intro recommended SET (social-engineer-toolkit), which the 2026-10-02 audit removed from the README section.
Co-Authored-By: Claude <noreply@anthropic.com>
The old intro recommended Gooey and Tkinter Designer, which the 2026-10-02 audit removed; removing Gooey also dissolved the Wrappers subcategory.
Co-Authored-By: Claude <noreply@anthropic.com>
The old intro recommended freezegun, which the 2026-10-02 audit replaced with time-machine in the README section.
Co-Authored-By: Claude <noreply@anthropic.com>
The old intro recommended MonkeyType and repowise, which the 2026-10-02 audit removed from the README section.
Co-Authored-By: Claude <noreply@anthropic.com>
The 2026-10-02 audit changed the Jupyter entry from the jupyter metapackage to notebook, which the old intro predated.
Co-Authored-By: Claude <noreply@anthropic.com>
The old intro recommended PyGraphviz, which the 2026-10-02 audit replaced with graphviz, and missed Dash, which the audit added.
Co-Authored-By: Claude <noreply@anthropic.com>
The old intro recommended Kitten TTS and VibeVoice, which the 2026-10-02 audit removed from the README section.
Co-Authored-By: Claude <noreply@anthropic.com>
graphify's PyPI override was null (GitHub-only), so the site showed no download count although the project now publishes on PyPI as graphifyy.
Co-Authored-By: Claude <noreply@anthropic.com>
Dual-listing was allowed whenever a tool "earns its slot in each independently", which admits a challenger-tier second copy.
Co-Authored-By: Claude <noreply@anthropic.com>
The audit skill asked removal commits for a downloads figure without its source or fetch date, so the 2026-08 audit bodies could not be compared with later ClickPy or pypistats figures; it also ran make build right after the last commit, while added or renamed entries have no download cache row until the ClickPy sweep re-runs.
Co-Authored-By: Claude <noreply@anthropic.com>
jev-ultrafast's line read like a self-contained browser agent, but its README requires a TYPESAFE_API_KEY because action selection runs on TypeSafe's hosted Jev service.
Co-Authored-By: Claude <noreply@anthropic.com>
jev-ultrafast is not published on PyPI but had no null override, so every download sweep queried PyPI for it and recorded NOT_FOUND.
Co-Authored-By: Claude <noreply@anthropic.com>
Standing maintainer decisions (the August schedule and httpie keeps, uv-audit's experimental status, jev-ultrafast's admission, the three 6-entry caps) lived only in old commit bodies or conversation, so the next audit would re-drop them as rule failures.
Co-Authored-By: Claude <noreply@anthropic.com>
The download sweep queried PyPI by display name, but PyPI conda is a stale 2017 upload and PyPI pyodide is a 0.0.2 placeholder, so the site showed unrelated packages' download counts for both entries.
Co-Authored-By: Claude <noreply@anthropic.com>
Four display names broke the naming convention (display name = PyPI package name): jupyter linked the notebook project while PyPI jupyter is a metapackage, and factory_boy, pygobject and kivy differ from their PyPI names factory-boy, PyGObject and Kivy.
Co-Authored-By: Claude <noreply@anthropic.com>
Hardware had no serial-port library, though pyserial is the standard answer at about 12M downloads/month, roughly 8x the largest listed Hardware entry.
Co-Authored-By: Claude <noreply@anthropic.com>
Two sections broke the downloads-order rule: bleak sat above pynput, which has more downloads, and pythonnet sat above pywin32, which has about seven times more.
Co-Authored-By: Claude <noreply@anthropic.com>
Web Security had no HTML sanitizer since bleach was removed as deprecated; only justhtml in HTML Manipulation sanitizes, as part of parsing.
Co-Authored-By: Claude <noreply@anthropic.com>
Penetration Testing had no library for Windows and Active Directory protocol work (SMB, Kerberos, NTLM relay).
Co-Authored-By: Claude <noreply@anthropic.com>
Removed: social-engineer-toolkit (no PyPI download signal; not published on PyPI): a standalone social-engineering console rather than something Python developers use in their Python work, so it fails Serves Python Developers; its pyproject also requires Python >=3.11,<3.14. Its slot goes to impacket and pwntools in the next commits.
Co-Authored-By: Claude <noreply@anthropic.com>
hydra-core linked facebookresearch/hydra, which redirects to hydra-ecosystem/hydra after a repo transfer (same GitHub repo id), and an earlier commit had treated the new location as an unrelated project.
Co-Authored-By: Claude <noreply@anthropic.com>
Removed: shiv (224,563 downloads/month, pypistats 2026-10-02): displaced by pex (4,682,918/month on the same source, released 2026-10-02), the more-used and more-active builder for the same self-contained zipapp job; shiv's last release was 1.0.8 on 2024-11-01.
Co-Authored-By: Claude <noreply@anthropic.com>
Build Backends omitted poetry-core, the backend of every Poetry project, at 88,000,485 downloads/month; about 47M remains without poetry, still 3x uv-build.
Co-Authored-By: Claude <noreply@anthropic.com>
Package Repositories omitted pypiserver, the minimal self-hosted index the PyPA hosting guide names alongside devpi, which has 5x the downloads of devpi-server.
Co-Authored-By: Claude <noreply@anthropic.com>
Removed: warehouse (no PyPI download signal; not a pip-installed package): the section is self-hosted servers, proxies, and mirrors, and Warehouse is not one. Its docs call pypi.org the canonical deployment and document only a local development setup, and the PyPA guide to hosting your own repository does not list it. Also: devpi (99,216 downloads/month for devpi-server, pypistats 2026-10-02) moves above bandersnatch (4,351) to follow the downloads order.
Co-Authored-By: Claude <noreply@anthropic.com>
The uuid-utils line set it apart by RFC 9562 support (UUIDv6, v7, v8), but the standard library uuid module gained uuid6, uuid7 and uuid8 in Python 3.14, so that no longer distinguishes it.
Co-Authored-By: Claude <noreply@anthropic.com>
pygame led Game Frameworks although its last release, 2.6.1, has no Python 3.14 wheel and the source build fails, while the actively developed drop-in replacement pygame-ce sat below it.
Co-Authored-By: Claude <noreply@anthropic.com>
Audio listed no general audio file I/O library, though soundfile is the standard libsndfile reader and writer under librosa.
Co-Authored-By: Claude <noreply@anthropic.com>
Removed: vidgear (10,854 downloads/month, pypistats 2026-10-02): a challenger with no adoption trajectory (about half its August count), not anyone's unprompted answer next to moviepy and PyAV. Also: pydub moves below librosa to Second Tier under the Python-version rule; its only release, 0.25.1 (2021), fails `import pydub` on Python 3.13+ without audioop-lts, but it still has 17,778,797 downloads/month.
Co-Authored-By: Claude <noreply@anthropic.com>
PDF omitted pymupdf, the second most-installed PDF library at 81,101,392 downloads/month (pypistats 2026-10-02) and the fastest at text extraction and page rendering.
Co-Authored-By: Claude <noreply@anthropic.com>