General becomes Argument Parsing for argparse, click, typer, and cyclopts, and prompt_toolkit moves to TUI Frameworks after textual. Redirects the old General URL.
Co-Authored-By: Claude <noreply@anthropic.com>
General held two unrelated tools. tablib moves to Data Formats, and General becomes Binary Formats for pyelftools. Redirects the old General URL.
Co-Authored-By: Claude <noreply@anthropic.com>
General held two unrelated tools. pyfiglet moves to CLI Development > Terminal Rendering as a challenger, and the rest becomes Diffs for difflib. Redirects the old General URL.
Co-Authored-By: Claude <noreply@anthropic.com>
Others mixed three jobs. pdb-like Debugger becomes Debuggers and takes debugpy, a new Web Framework Toolbars holds django-debug-toolbar, django-silk, and flask-debugtoolbar, and icecream joins Tracing. Redirects the two old subcategory URLs.
Co-Authored-By: Claude <noreply@anthropic.com>
Logs 27 starred projects judged and declined on 2026-11-08 under Rejected Additions, so later scans skip them.
Co-Authored-By: Claude <noreply@anthropic.com>
18,834,120 downloads/month on pypistats (fetched 2026-11-08), 9x secure; Django REST framework's docs name it as the way to handle CORS.
Co-Authored-By: Claude <noreply@anthropic.com>
78,662,693 downloads/month on pypistats (fetched 2026-11-08), about 24.0M of it its own after subtracting ipykernel, which requires it; VS Code's Python debugging docs tell users to pip install it for remote and attach debugging.
Co-Authored-By: Claude <noreply@anthropic.com>
On phones the label under each project name showed its subcategory, and names like "General", "Synchronous", or "Core" only make sense under their category heading, so the home and group tables showed vague labels.
Co-Authored-By: Claude <noreply@anthropic.com>
Step 1 read as if a bare `audit:` prefix dates a section's audit, so an "audit: restructure ..." subject left a finished audit counted as never done.
Co-Authored-By: Claude <noreply@anthropic.com>
Comparisons treat dataclasses as the default for class boilerplate and attrs as the upgrade for validators, converters, and slots.
Co-Authored-By: Claude <noreply@anthropic.com>
Split the flat list by job, since demoting bidict left 1 obvious choice and 3 challengers, over the 2-challenger cap. Class Boilerplate: attrs. Mappings: python-box promoted to obvious (5,756,670 downloads/month); bidict demoted to Second Tier, since python-socketio hard-depends on it and accounts for 21.4M of its 23.0M on pypistats, leaving about 1.6M of its own. UUID: uuid-utils, kept on judgment (most of its count comes from langsmith and langchain-core depending on it). Description fixes for attrs, bidict, and python-box. No removals. Figures: ClickPy fetched 2026-11-08 unless marked pypistats (same date).
Co-Authored-By: Claude <noreply@anthropic.com>
Challenger after pyright: 15.7% share in the 2026 Python Typing Survey (up from 10.9% in 2025) and 16.7M downloads/month via ClickPy vs pyrefly's 10.4M. Its only dependency is nodejs-wheel-binaries, so the count is independent demand, and the repo is active (last push 2026-10-28).
Co-Authored-By: Claude <noreply@anthropic.com>
The payment methods listed card via Open Collective first, ahead of the options sponsors are pointed to first.
Co-Authored-By: Claude <noreply@anthropic.com>
The recipe fell back to the gh CLI OAuth token (repo, workflow, gist, read:org scopes) for a job that reads only public data, and a missing GITHUB_TOKEN silently escalated to it.
Co-Authored-By: Claude <noreply@anthropic.com>
- machine-learning.md: the Prophet docs moved from facebook.github.io/prophet
(now 404) to meta.github.io/prophet, matching the github.com/meta/prophet
entry in README.md.
- web-apis.md: the Django Ninja routers guide is at /guide/routers/, not
/guides/routers/ (404).
The sitemap lastmod test failed wherever the global git config enabled commit signing with an unreachable key, because the test strips every GIT_* variable and so dropped any override that disabled signing.
Co-Authored-By: Claude <noreply@anthropic.com>
An explicit httpx.HTTPTransport makes httpx ignore HTTPS_PROXY, so the fetch failed with a DNS error wherever outbound traffic must go through a proxy.
Co-Authored-By: Claude <noreply@anthropic.com>
Local runs of make fetch_github_stars required a GITHUB_TOKEN in .env even when gh was already logged in.
Co-Authored-By: Claude <noreply@anthropic.com>
The loguru description broke the Description Style grammar: it lacked an article, used "which" on a restrictive clause, and said "bring ... in" instead of "to".
Co-Authored-By: Claude <noreply@anthropic.com>
CONTRIBUTING.md had no description style rule and audit-the-list never read descriptions, so verbatim taglines with grammar, hyphenation, and capitalization errors stayed in README.md.
Co-Authored-By: Claude <noreply@anthropic.com>
The Static Site Generators description used "a software", funcy's entry put "A" before plural "tools", and pyarmor's entry lacked an article.
Co-Authored-By: Claude <noreply@anthropic.com>
An entry link like /categories/caching/#entry-diskcache did not open its row when only the hash changed on an already-loaded page (editing the URL, back/forward), because the row-opening logic ran only on initial load.
Co-Authored-By: Claude <noreply@anthropic.com>
The test ran main.js against a hand-built fake page, so any new browser API main.js used at page load broke it with a TypeError unrelated to entry links.
Co-Authored-By: Claude <noreply@anthropic.com>