The modern default backend — PyPA docs and project templates reach for
it: 507M downloads/month (pepy), pushed 2026-08. Obvious choice
alongside setuptools; ordering after it by downloads.
Co-Authored-By: Claude <noreply@anthropic.com>
Mints the Build Backends subcategory — the deferred agenda item from
the Developer Tools sitting (2026-08-16), landing in its designated
Python Toolchain slot. setuptools is the incumbent obvious choice:
1.51B downloads/month (pepy), half the ecosystem still builds with it,
pushed 2026-08.
Co-Authored-By: Claude <noreply@anthropic.com>
Restructure: the flat section becomes two subcategories — Package
Managers (this commit) and Build Backends (entering next as three
addition commits; the pyproject build-backend choice is a distinct job
from installing packages).
Package Managers tiers: pip (689.4M/mo), uv (194.1M/mo, the 2026
default recommendation for new projects), poetry (79M/mo) obvious
choices; hatch (22.2M/mo — kept by explicit maintainer flip against
the seeded drop), pipx (7.1M/mo, Second Tier — uv tool covers the job
for uv users), conda (no pip signal, the data-science distribution
standard; sorts last) challengers. The use case holds 6 entries by
explicit maintainer cap override — the list's third, same 3 obvious
choices + 3 challengers shape as Linters and Async I/O.
No removals.
Co-Authored-By: Claude <noreply@anthropic.com>
Tiers: virtualenv (545.7M/mo, much of it transitive via pip and tox),
uv (194.1M/mo, dual-listed here and in Package Managers by maintainer
acceptance), pyenv (no pip signal — distributed via git and brew;
45.0K stars) all obvious choices. pyenv-win converts to an indented
sub-item under pyenv (the flower/celery companion pattern — its job is
inseparable from its parent's), freeing a slot without losing the
pointer.
Removed:
- KillPy — 124 stars, created 2025, 3.7K downloads/month; nowhere
near obvious-choice or challenger territory.
Co-Authored-By: Claude <noreply@anthropic.com>
Maintainer correction to the previous amendment: stdlib sorts at the
top of the whole use case, not merely first within its tier. No README
movement results — the stdlib admission rule (a standard-library
module is listed only where it is itself the obvious choice) means
every stdlib entry already sits in the first tier, so tier-top and
use-case-top coincide; the rule text now states the intent directly.
Co-Authored-By: Claude <noreply@anthropic.com>
Applies the amended Entry Ordering rule (stdlib first in tier)
retroactively to all audited sections: sqlite3 (SQLite), mock (Mock),
logging (Logging), tomllib (Data Formats), argparse (CLI Development),
tkinter (Tkinter), functools (Functional Programming), asyncio with
its awesome-asyncio sub-item (Async I/O), zoneinfo (Date and Time).
Parallelism (concurrent.futures, multiprocessing) is an all-stdlib
tier and stays alphabetical. Unaudited sections (difflib, mimetypes,
pathlib, configparser) pick the rule up at their own audit. No entry
additions or removals.
Co-Authored-By: Claude <noreply@anthropic.com>
Maintainer rule change: built-ins lead their tier instead of sorting
last with the other no-signal entries — a stdlib module that earns a
slot is the default answer, so it reads first. Several stdlib modules
in one tier stay alphabetical. Non-stdlib no-signal entries (agent
skill packs, projects distributed outside PyPI) still sort last in
tier. README reorder of already-audited sections follows in a style
commit; unaudited sections pick the rule up at their own audit.
Co-Authored-By: Claude <noreply@anthropic.com>
Challenger with verified adoption trajectory: 9M downloads/month
(pepy), 2.4K stars, pushed 2026-08. Rust-backed and type-safe, with
published benchmarks 10-100x faster than Pendulum and Arrow and a
DST-correctness design aimed at the incumbents' known pitfalls.
Slots into the second challenger position after pendulum.
Co-Authored-By: Claude <noreply@anthropic.com>
No removals in either section — tier ordering and canonical-name
renames only.
Built-in Classes Enhancement: attrs (939M/mo), bidict (30.5M/mo)
obvious choices; uuid-utils (81.2M/mo, challenger on judgment — the
count is transitive-profile against 364 stars) and python-box
(renamed from box, its canonical PyPI name; 6.9M/mo) challengers.
Date and Time: python-dateutil (renamed from dateutil, its canonical
PyPI name; 1.21B/mo), dateparser (46.4M/mo), zoneinfo (stdlib, the
timezone answer since 3.9; no-signal, sorts last) obvious choices;
pendulum (71.6M/mo, revived 2026-07 after a long slump — Second
Tier-shaped) challenger.
Co-Authored-By: Claude <noreply@anthropic.com>
Restructure: the flat section splits — async I/O and process/pool
parallelism are distinct jobs. Parallelism holds concurrent.futures
and multiprocessing (both standard library, both obvious choices,
no-signal so alphabetical).
Async I/O tiers: anyio (1.07B/mo — heavily transitive via httpx and
Starlette, but independently the production-recommended structured-
concurrency layer), uvloop (267.7M/mo), asyncio (stdlib, no-signal,
sorts last; awesome-asyncio sub-item rides along) obvious choices;
trio (53.8M/mo), gevent (49.6M/mo), twisted (15.1M/mo) challengers —
gevent and twisted kept as Second Tier by explicit maintainer
decision, and the use case holds 6 entries by explicit maintainer cap
override (the list's second, after Linters and Formatters; same
3 obvious choices + 3 challengers shape).
No removals.
Co-Authored-By: Claude <noreply@anthropic.com>
Tiers: more-itertools (339.9M/mo), toolz (62.9M/mo), functools
(stdlib, the first stop for FP utilities; no-signal, sorts last)
obvious choices; funcy (7.3M/mo) and returns (1.37M/mo, typed
monads/Result trajectory) challengers.
Removed:
- coconut — 14.4K downloads/month, 4.3K stars; a compiled language
variant rather than a library, and nobody's unprompted answer for
functional Python. Judgment call.
Co-Authored-By: Claude <noreply@anthropic.com>
Tiers: cpython, micropython, pypy obvious choices (all no-signal —
distributed outside pip — so alphabetical); cython (130.3M/mo, kept
here by judgment as a Python-superset compiler with no better home)
and pyodide (no pip signal; distributed via CDN and npm) challengers.
Removed:
- ironpython — latest release v3.4.2 (2024-12) still implements
Python 3.4-era language, a decade behind CPython (verified from the
release feed; the repo itself is active, so this is not an
activity-line drop). 2.8K stars. Not an obvious choice for any
current job.
Co-Authored-By: Claude <noreply@anthropic.com>
Challenger to pygame: the community fork where long-time contributors
now develop, a drop-in replacement (same import name), and community
guidance for new projects favors it — adoption-trajectory evidence
verified by web search. 642.5K downloads/month (pepy), 1.6K stars,
created 2023, pushed 2026-08. Upstream pygame itself has been quiet
since 2025-11. Slots into the open challenger position ahead of
arcade (85.3K/mo).
Co-Authored-By: Claude <noreply@anthropic.com>
Restructure: the flat section splits into 3D Engines (panda3d
189.3K/mo, sole obvious choice), Game Frameworks (pygame 3.07M/mo and
pyglet 2.9M/mo obvious choices; arcade 85.3K/mo challenger — pygame-ce
joins as a challenger in its own addition commit), and Visual Novels
(renpy sole obvious choice — its 4/mo pip count is meaningless since
Ren'Py ships as its own SDK; ecosystem verified: 8,000+ published
works, release 8.5.3 in 2026-05).
Removed:
- py-sdl2 — 71.1K downloads/month (as PySDL2), 344 stars; low-level
SDL bindings whose job pygame-ce and pyglet cover for this list's
audience. Judgment call.
- pyopengl — 5.3M downloads/month, likely transitive
scientific-visualization traffic (judgment call, mechanism
unverified), 415 stars; raw OpenGL bindings are not a
game-development obvious choice.
Co-Authored-By: Claude <noreply@anthropic.com>
Restructure: gtts and KittenTTS re-home to AI and Agents > Speech — TTS
belongs with the speech models, not audio processing. gtts (3M/mo,
a 2014 service wrapper, quiet since 2026-04) lands as Second Tier;
kittentts (renamed to its canonical PyPI name, 15.3K stars within a
year of creation, pip count 3.9K/mo under-measures model adoption)
as challenger. Speech is now at exact cap (5/5) — future additions
there require displacement.
Audio keeps pydub (21.4M/mo) and librosa (11.7M/mo) as obvious
choices. Video unchanged: moviepy (7M/mo) obvious choice, vidgear
(25.3K/mo) challenger. Metadata reorders to tiers: mutagen (8.2M/mo)
obvious choice; tinytag (5.2M/mo), beets (67.4K/mo, kept as challenger
rather than minting a sole-entry subcategory — judgment call).
Removed:
- birdnet — 7.1K downloads/month, 1.7K stars; an applied bioacoustics
tool with a genuinely small audience, not an audio-processing
choice. Judgment call.
- matchering — 16.1K downloads/month, 2.6K stars; a single-task
automated-mastering tool with a small audience, no trajectory.
Judgment call.
Co-Authored-By: Claude <noreply@anthropic.com>
Maintainer-requested during the Media audit, replacing dropped
pymatting with the tool whose traffic pymatting was carrying: rembg is
the obvious choice for background removal — 4.1M downloads/month
direct (pepy), 24.3K stars, pushed 2026-08, active release train.
Takes the open third obvious-choice slot in General (no displacement
needed), ordering after pillow and scikit-image.
Co-Authored-By: Claude <noreply@anthropic.com>
Restructure: the flat section splits into Barcodes and QR Codes (qrcode
30.1M/mo, python-barcode 3.4M/mo, both obvious choices — generating
codes is a distinct job from manipulating images), General (pillow
552M/mo, scikit-image 28.5M/mo obvious choices; wand 1.4M/mo, pyvips
808.2K/mo challengers), and Image Serving (thumbor sole obvious choice —
a deployed service, so its 22K/mo pip count under-measures use).
Rename to canonical PyPI name: python-qrcode → qrcode.
Removed:
- pymatting — 3.3M downloads/month, but the traffic is transitive:
rembg declares pymatting as a hard dependency (verified in rembg's
PyPI metadata). A single-task alpha-matting library, 1.9K stars,
quiet since 2026-04; not an obvious choice for image processing.
Co-Authored-By: Claude <noreply@anthropic.com>
Restructure: the 12-entry Desktop use case splits — Qt (PySide6
3.9M/mo, PyQt6 2.7M/mo, co-obvious pair differing in licensing) and
Tkinter (customtkinter 1.13M/mo, tkinter stdlib obvious choices;
tkdesigner challenger, kept by maintainer decision) mint as
subcategories; residual Desktop lands at cap with pygobject (607.6K/mo),
wxPython (354.8K/mo), kivy (288.8K/mo) obvious choices and dearpygui
(193.5K/mo), toga (12.9K/mo, BeeWare trajectory) challengers.
Renames to canonical PyPI names: PyQt → PyQt6, pyside → PySide6 (the
PyPI package named pyside is the dead Qt4-era PySide 1).
Re-homes: urwid (11.3M/mo) moves to CLI Development > TUI Frameworks as
a challenger and pyglet (2.9M/mo, windowing and multimedia for games)
moves to Game Development, dissolving this section's Terminal
subcategory. Web-based keeps pywebview (2.19M/mo), nicegui (1.2M/mo),
flet (444.1K/mo) as obvious choices; gooey stays sole Wrappers entry.
Removed:
- enaml — 14.1K downloads/month, 1.6K stars after 13 years; a
declarative Qt DSL nobody names unprompted. Judgment call.
- buridan/ui — 248 stars, no PyPI package; a component-snippet
collection for Reflex, not a GUI framework. Fails admission.
- curses — standard-library rule: stdlib holds a slot only where it is
itself the obvious choice, and for building TUIs that is textual.
Co-Authored-By: Claude <noreply@anthropic.com>
Restructure: the Productivity Tools grab-bag dissolves into use cases —
Project Scaffolding (cookiecutter 10.1M/mo obvious choice, copier
2.5M/mo challenger), Shells (xonsh 419.5K/mo), Downloaders (yt-dlp
17.7M/mo), Terminal Workflow (tmuxp 129.4K/mo). CLI Enhancements
renames to Database CLIs (pgcli 636.6K/mo, mycli 124.9K/mo, litecli
74.2K/mo obvious choices; iredis 8.3K/mo challenger); HTTP Clients
minted for httpie.
httpie kept by explicit maintainer override of the 12-month activity
line (repo dormant since 2024-12, last release 2024-11; 1.04M
downloads/month) — second use of the schedule precedent.
Removed:
- thefuck — dormant since 2024-07, past the 12-month activity line;
7K downloads/month (most installs come from brew, not pip).
- kaydet — 48 stars, 5.6K downloads/month; a personal diary tool
nowhere near obvious-choice or challenger territory.
- doitlive — 651 downloads/month against 3.6K stars; alive but
effectively unused. Judgment call.
Co-Authored-By: Claude <noreply@anthropic.com>
Restructure: textual and asciimatics move from Terminal Rendering to a
minted TUI Frameworks subcategory — full-screen terminal UIs are a
distinct job from rendering output. urwid joins them in the GUI
Development commit, which dissolves that section's Terminal subcategory.
Renames to canonical PyPI names: python-prompt-toolkit → prompt_toolkit,
python-fire → fire (the PyPI package named python-fire is an unrelated
name-squatter; Google's project installs as fire).
Tiers: click (1.12B/mo), typer (366M/mo), argparse (stdlib) obvious
choices; prompt_toolkit (246.8M/mo), fire (22M/mo) challengers.
tqdm (670.1M/mo), rich (626.7M/mo) obvious choices; colorama
(425.6M/mo, largely pip-transitive traffic, superseded by rich for new
code) demoted to challenger (Second Tier) beside alive-progress (3.7M/mo).
textual (535.4M/mo) obvious choice of TUI Frameworks, asciimatics
(177.5K/mo) challenger.
Removed:
- cement — 565K downloads/month but 1.3K stars after 17 years
(CI-shaped count); alive yet no longer anyone's unprompted answer
against click, typer, fire, or prompt_toolkit. Judgment call.
Co-Authored-By: Claude <noreply@anthropic.com>
bandit (29.5M downloads/month) sorts last in the second tier behind pylint 65.2M and flake8 56.7M. The merged use case now holds 6 entries, past the hard cap of 5, by explicit maintainer override -- the list's first cap override, accepted knowingly.
Co-Authored-By: Claude <noreply@anthropic.com>
Removed mininet: no commits since 2024-07, past the 12-month activity
line; 2026 sources describe it as fading with forks carrying
development; its 3.7K/month PyPI row is not its real distribution
channel.
Reordered remaining obvious choices by downloads: scapy 4.4M then
napalm 199K.
Section rename to Networking was offered and the maintainer left the
current name standing.
Co-Authored-By: Claude <noreply@anthropic.com>
Removed logfmter (197,351 downloads/month, 107 stars) — logfmt formatting is a small audience and it is not a credible successor to any obvious choice; judgment call.
Reordered by tier and downloads: obvious choices structlog 114.5M (2026 consensus production pick), loguru 82.5M (developer-experience pick), and stdlib logging last as a no-signal entry — kept because stdlib logging is itself the obvious choice for the use case, the stdlib rule's yes-case.
Co-Authored-By: Claude <noreply@anthropic.com>
Split the flat section into two use cases — Task Scheduling (in-process scheduling) and Workflow Orchestration (data-pipeline orchestrators) — six entries were covering two distinct jobs.
Removed SpiffWorkflow (59,736 downloads/month — BPMN engine, a different job than scheduling or orchestration, small audience; active repo, drop is a judgment call).
Kept schedule by explicit maintainer override (9.4M downloads/month, 12.3K stars, but no commits since 2024-05 — past the 12-month activity line; the maintainer overrode the activity rule, schedule slots as challenger behind apscheduler).
Renamed airflow to apache-airflow (PyPI name — the bare airflow package is a 38K/month shim).
Ordering: Task Scheduling apscheduler 55.5M obvious choice then schedule 9.4M challenger; Workflow Orchestration obvious choices apache-airflow 20.9M, prefect 14.0M, dagster 10.2M.
luigi's removal from Distributed Computing rode that section's commit; flytekit was proposed and declined.
Co-Authored-By: Claude <noreply@anthropic.com>
Obvious choice per DevOps audit adjudicated by maintainer 2026-08-16: 9.1M downloads/month via ClickPy, Eclipse Foundation client described by 2026 sources as the bedrock of MQTT in Python. Ordered after pika (13.7M/month), before challenger faststream (1.5M/month).
Co-Authored-By: Claude <noreply@anthropic.com>
DevOps audit adjudicated by maintainer 2026-08-16: pika is the standard RabbitMQ/AMQP 0-9-1 client, 13.7M downloads/month via ClickPy. Ordered after confluent-kafka (61.8M/month) per downloads-descending tier.
Co-Authored-By: Claude <noreply@anthropic.com>
DevOps audit adjudicated by maintainer 2026-08-16: 61.8M downloads/month via ClickPy, librdkafka-backed, 2026 sources call it the production Kafka default. kafka-python is unmaintained and was excluded. Placed first per downloads-descending obvious-choice tier; pika and paho-mqtt follow in subsequent commits.
Co-Authored-By: Claude <noreply@anthropic.com>
DevOps audit adjudicated 2026-08-16, format-only (no removals).
Obvious choices: celery 58.4M, rq 18.1M, dramatiq 1.6M (promoted --
2026 sources call it the top celery alternative with closest feature
parity). Challengers: huey 20.9M (demoted -- raw count highest but
2026 sources file it as the lightweight small-app option), taskiq
2.0M. flower sub-item rides celery.
Co-Authored-By: Claude <noreply@anthropic.com>
Removed luigi (1,546,263 downloads/month, repo active with a push 2026-07) — the drop is editorial: Spotify itself moved to Flyte, 2026 orchestration comparisons no longer name luigi, and the Workflow Orchestration slots in Job Schedulers go to airflow, prefect, dagster.
Flattened the sole Batch Processing subcategory — the label added nothing, the section is a single use case.
Reordered by tier and downloads: obvious choices ray 62.6M, pyspark 48.3M, dask 30.0M; challengers joblib 216.9M raw (scikit-learn-dependency-inflated, judgment call — raw count still sorts it first in tier) and mpi4py 1.0M (HPC standard, specific audience not small).
Co-Authored-By: Claude <noreply@anthropic.com>
DevOps audit adjudicated by maintainer 2026-08-16: obvious-choice umbrella repo published as per-service packages, so no single download figure applies (google-cloud-storage alone is 253.1M downloads/month). Repo-name entry per the naming rule, placed after azure-sdk-for-python per no-signal alphabetical ordering within tier.
Co-Authored-By: Claude <noreply@anthropic.com>
DevOps audit adjudicated by maintainer 2026-08-16: obvious choice. Umbrella repo published as per-service packages, so no single download figure exists; azure-identity alone is 230.4M downloads/month. Repo-name entry used per the naming rule since there is no single pip name.
Co-Authored-By: Claude <noreply@anthropic.com>
removed openstack (mirror-index repo aggregating OpenStack projects — nothing installable, not configuration management; its daily pushes are mirror automation)
removed kubesdk (2,135 downloads/month, 105 stars, repo created 2025-10, entered via PR #3166 — nowhere near obvious choice or challenger; maintainer also declined adding the official docker and kubernetes clients, so no Containers use case)
renamed cloudinit to cloud-init (repo name; not on PyPI), saltstack to salt (PyPI name; Broadcom-sponsored, kept as Second Tier challenger — PyPI 102K/month undercounts onedir and distro installs), sentry-python to sentry-sdk (PyPI name; 178.5M/month), borg to borgbackup (PyPI name; the bare borg package on PyPI is unrelated)
reordered every subcategory by tier and downloads: Cloud Providers boto3 3.4B then awscli 264.3M; Configuration Management ansible 13.0M and no-signal cloud-init obvious choices, pyinfra 271K and salt challengers; Deployment fabric 12.7M then chalice 930K; Monitoring and Processes psutil 391.5M, sentry-sdk, supervisor 16.8M, challenger sh 12.0M; Other pre-commit 198.0M, borgbackup 76K, chaostoolkit 18K
Co-Authored-By: Claude <noreply@anthropic.com>
uv-build was deliberately not admitted to Build Tools since PEP 517 backends are a different job; that structure decision is deferred to the Python Toolchain sitting. Add a cross-reference so readers looking for Python packaging/build tooling (uv build backend, hatch) land on Package Management instead.
Co-Authored-By: Claude <noreply@anthropic.com>
Developer Tools audit adjudicated by maintainer 2026-08-16, format-only outcome for the two sections with no removals.
Algorithms: sortedcontainers (278.7M/month) first, then educational no-signal repos algorithms and thealgorithms alphabetically.
Design Patterns: transitions (2.9M/month) before no-signal python-patterns.
Documentation: sphinx (85.9M), mkdocs (17.8M), diagrams (6.8M) as obvious choices, pdoc (2.1M) as challenger.
Co-Authored-By: Claude <noreply@anthropic.com>
Adjudicated by maintainer 2026-08-16: mkdocs-material pulls 17.6M downloads/month via ClickPy, nearly equal to mkdocs itself, and is the theme most mkdocs sites run. Listed as a sub-item since its job is inseparable from its parent.
Co-Authored-By: Claude <noreply@anthropic.com>
Obvious choice per maintainer audit 2026-08-16: 175.7M downloads/month
via ClickPy, the default enhanced REPL and the kernel under Jupyter,
yet missing from the README. Placed first per downloads-descending
obvious-choice tier (jupyter 17.5M follows).
Co-Authored-By: Claude <noreply@anthropic.com>
Removed bitbake (no PyPI distribution, ships with Yocto — its users are embedded-Linux developers, fails the Serves Python Developers scope test). Removed platformio (1,255,169 downloads/month — embedded and IoT toolchain written in Python but used for C and C++ firmware work, same scope test as bitbake). Removed pybuilder (51,511 downloads/month — searches confirm niche adoption, small community, fails the obvious-choice bar). Reordered remaining entries: invoke (85.4M) and scons (924K) as obvious choices, doit (803K) as challenger.
Co-Authored-By: Claude <noreply@anthropic.com>
Developer Tools audit adjudicated by maintainer 2026-08-16: obvious choice per ClickPy (10.6M downloads/month), a statistical wall-clock profiler and common first reach for request-level profiling. Ordered after memray (15.6M/month), before challenger scalene (400K/month).
Co-Authored-By: Claude <noreply@anthropic.com>
Bloomberg memory profiler that tracks allocations in Python code, native extensions, and the interpreter itself. 15.6M downloads/month via ClickPy; the obvious choice for memory profiling work per maintainer audit 2026-08-16. Ordered after py-spy (28.5M/month) per downloads-descending tier.
Co-Authored-By: Claude <noreply@anthropic.com>
Developer Tools audit adjudicated by maintainer 2026-08-16:
- removed manhole (1,060,111 downloads/month but last push 2024-07, past the 12-month activity line; also mis-homed under Tracing, it is an inspection socket not a tracer)
- removed memory_graph (13,393 downloads/month, added 2025-12 by the project's own author with no displacement argued, teaching aid, fails the obvious-choice bar)
- renamed python-hunter to hunter (PyPI package name is hunter; the python-hunter name on PyPI is a squatter)
- reordered Others by downloads: django-debug-toolbar 9.1M, icecream 1.95M, flask-debugtoolbar 1.24M
Co-Authored-By: Claude <noreply@anthropic.com>
Adjudicated by maintainer 2026-08-16: obvious choice (39.4M downloads/month via ClickPy; 2026 sources call it the strong default -- conformance lead, Pylance engine, editor integration). Ordered after ty (41.2M/month) per downloads-descending obvious-choice tier.
Co-Authored-By: Claude <noreply@anthropic.com>
Removed code2flow (36,486 downloads/month, last push 2025-07 — fails the obvious-choice bar, same test as dropped peers).
Removed pytype (919,951 downloads/month — Google sunset, maintenance mode, Python 3.12 is the last supported version).
Merged Code Linters + Code Formatters into one Linters and Formatters use case (ruff is the 2026 de facto standard for both; tiers: ruff/black/isort obvious choices, pylint/flake8 second tier).
Re-homed bandit to new Security Linters subcategory (security linting is a distinct job from style linting).
Demoted typeshed to sub-item under mypy (stub infrastructure every checker consumes, not itself a checker holding a slot).
Promoted ty to obvious choice (maintainer call), order mypy/ty then pyrefly challenger.
Reordered Code Analysis subcategory vulture first (12.3M/month obvious choice, prospector 485K and repowise 33K challengers — repowise kept on maintainer flip).
Co-Authored-By: Claude <noreply@anthropic.com>
Multi-day reviews need to survive reboots, which system /tmp does not
guarantee. ./tmp is git-ignored so the generated pages never land in
commits.
Co-Authored-By: Claude <noreply@anthropic.com>
Adds a header row (name, downloads, fetched_at) to data/pypi_downloads.tsv
and stamps every row with the sweep date, so audits can tell evidence age
and skip re-fetching when the cache is less than 7 days old. The sweep
itself costs ~1s, so freshness is checked by the reader (audit-the-list
skill) instead of skip logic in the fetch script. SKILL.md documents the
7-day freshness rule.
Co-Authored-By: Claude <noreply@anthropic.com>
Verifying keep/drop reasons with download counts alone isn't enough to judge obvious-choice vs challenger tiers; the maintainer requires WebSearch evidence of adoption trajectory and community sentiment too. Also rewrites the repo overview in CLAUDE.md and mirrors it to AGENTS.md per the kept-in-sync convention.
Co-Authored-By: Claude <noreply@anthropic.com>
Broaden argument-hint to cover thematic groups alongside sections,
and backtick tool/skill names for consistency.
Co-Authored-By: Claude <noreply@anthropic.com>
Trim repository overview and structure sections into a brief intro
plus focused Entry Rules and Gotchas sections, dropping restated
CONTRIBUTING.md content and Makefile/pyproject boilerplate.
Co-Authored-By: Claude <noreply@anthropic.com>
The 2026-08-16 Database & Storage audit exposed a vocabulary gap: four adjudicated entries (clickhouse-driver, dogpile.cache, django-cacheops, django-haystack) are neither Obvious Choices nor trajectory-backed Challengers but demoted incumbents occupying Challenger slots, and the sitting had to improvise the term. The maintainer ratified it during review. A demoted incumbent counts against the two Challenger slots, but the adoption-trajectory bar gates only new admissions, not demotions.
Also from the same sitting: psycopg2 was deliberately left unlisted under Database Drivers > PostgreSQL (282M downloads/month as psycopg2-binary, pepy 2026-08-16) because psycopg 3 is the new-work answer and v2 is legacy install base. Recorded here so the next PostgreSQL audit knows it was a decision, not an oversight.
Co-Authored-By: Claude <noreply@anthropic.com>
Audit outcome of the Database & Storage sitting, maintainer adjudicated
2026-08-16, format-only.
Reordered from alphabetical to the entry-ordering rule: obvious choices by downloads/month descending, then challenger.
msgpack 290,175,972; orjson 234,189,977; marshmallow 122,497,803; msgspec (challenger) 43,745,974.
PyPI last-30-day downloads via ClickPy, fetched 2026-08-16.
Co-Authored-By: Claude <noreply@anthropic.com>