scrapy was described as "screen scraping", python-patterns dropped "idioms", marimo's line was a run-on that skipped "reactive", and llama-index's predated its docs' "toolkit for RAG and agents". hermes-agent linked a lowercase owner that only resolved by redirect.
Co-Authored-By: Claude <noreply@anthropic.com>
actions/cache@v4, deploy-pages@v4, and upload-pages-artifact@v4 (which pins a Node 20 upload-artifact SHA) target the deprecated Node.js 20 runtime, so GitHub forced them onto Node 24 with a warning on every deploy run.
Co-Authored-By: Claude <noreply@anthropic.com>
Group pages whose names start with "Python" got titles like "Python Python Language Libraries" in the title, og:title, and JSON-LD name.
Co-Authored-By: Claude <noreply@anthropic.com>
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>