The intro predated the 2026-10-02 audit and did not mention the newly added aiosmtplib and django-anymail.
Co-Authored-By: Claude <noreply@anthropic.com>
The intro predated the 2026-10-02 audit and did not mention the newly added flask-restx and flask-smorest.
Co-Authored-By: Claude <noreply@anthropic.com>
The intro predated the 2026-10-02 audit and did not mention the newly added prophet, statsforecast, and sktime.
Co-Authored-By: Claude <noreply@anthropic.com>
The intro predated the 2026-10-02 audit and still recommended Keras as a main pick after its demotion to Second Tier.
Co-Authored-By: Claude <noreply@anthropic.com>
thealgorithms isn't on PyPI and doesn't use its GitHub repo name, `Python`, as the naming rule requires, so it read as an unrecorded naming violation.
Co-Authored-By: Claude <noreply@anthropic.com>
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>