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>
font-display: optional gives the web fonts only ~100ms; on a cold cache, or once GitHub Pages' max-age=600 expires and the font must revalidate, they miss that window and the whole page view renders in Georgia/Avenir Next until reload.
Co-Authored-By: Claude <noreply@anthropic.com>
The jump links sat 17.6px above the hero's bottom edge, tighter than the 20px above the topbar, so the hero looked cut short. Bottom padding goes from 1.1rem to 1.75rem; the comment justifying the smaller bottom no longer applies.
On phones the "Top ↑" header button was wider than the row arrows, so it set the arrow column's width and left a wide gap between the downloads number and the arrow.
Co-Authored-By: Claude <noreply@anthropic.com>
On phones the row arrow was centered in its column, leaving a wider gap on the right edge than on the left.
Co-Authored-By: Claude <noreply@anthropic.com>
On phones (max-width 680px) the "N projects" count beside each group heading on category pages crowded the heading into a narrow column.
Co-Authored-By: Claude <noreply@anthropic.com>