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>
Official Python client for the Meilisearch engine, 1,107,508 downloads/month (pepy.tech, fetched 2026-08-16). Admitted on the engine's developer-tool adoption trajectory; flagged as the weakest add of the Database & Storage audit (maintainer adjudicated 2026-08-16) and a judgment call in the reviewed verdicts. Placed after the obvious choices (elasticsearch, opensearch-py), before second-tier django-haystack, per entry-ordering rule.
Co-Authored-By: Claude <noreply@anthropic.com>
Database & Storage audit (2026-08-16): opensearch-py is the official
low-level client of the OpenSearch fork, 52,432,831 downloads/month,
near parity with elasticsearch at 54,160,230/month (both pepy.tech,
fetched 2026-08-16). Placed after elasticsearch, before second-tier
django-haystack, per entry-ordering rule.
Co-Authored-By: Claude <noreply@anthropic.com>
Removed pysolr (352,069 downloads/month via ClickPy, 347,571 pepy same-source, fetched 2026-08-16) — lightweight Apache Solr wrapper, the Solr era passed.
Renamed elasticsearch-py to elasticsearch per the PyPI-package-name naming rule in CONTRIBUTING.md; also fixes a NOT_FOUND row in every downloads sweep.
Reordered: elasticsearch (54,160,230/month pepy) obvious choice first, django-haystack (194,205/month pepy) kept and moved to second tier per maintainer's tier call during verdict review.
Co-Authored-By: Claude <noreply@anthropic.com>
Caching section audit (maintainer adjudicated 2026-08-16, format-only):
- Renamed python-diskcache to diskcache to match its PyPI package name per CONTRIBUTING.md naming rule; also fixes a NOT_FOUND row in every downloads sweep.
- Reordered by monthly downloads (pepy): cachetools (338,290,732) and diskcache (38,755,627) as obvious choices, then dogpile.cache (2,460,237) and django-cacheops (1,728,494) as second-tier challengers.
- Maintainer confirmed keeping diskcache despite the repo being dormant since 2024-08: 38.8M downloads/month and nothing succeeds it at its job.
Co-Authored-By: Claude <noreply@anthropic.com>
Adds lancedb as obvious choice #2 in Vector, from the Database & Storage audit (maintainer adjudicated 2026-08-16): embedded vector database for multimodal AI, 9,315,269 downloads/month (pepy.tech, fetched 2026-08-16), 11.2K stars, very active (pushed 2026-08-15). Same-source check keeps chromadb first (13.3M pepy); zvec stays last as trajectory challenger.
Co-Authored-By: Claude <noreply@anthropic.com>
Split the flat Database section into three subcategories (Analytical,
Vector, Key-Value & Document) since its 7 entries exceeded the shortlist
cap of 5 and the size reflected genuinely distinct jobs:
- Analytical: duckdb (obvious choice, 61,026,806 downloads/month), chdb
(challenger, 3,564,786 downloads/month)
- Vector: chromadb (obvious choice, 13,048,822 downloads/month), zvec
(challenger on star trajectory, 44,737 downloads/month, 15.4K stars
in 8 months)
- Key-Value & Document: tinydb (obvious choice, 6,194,854 downloads/month)
Removed:
- pickledb (29,446 downloads/month) - toy key-value store
- ZODB (197,044 downloads/month) - Zope-era native object database
nobody names unprompted in 2026; repo still active, this is a
relevance call, not an abandonment call
Rewrote the section description from "Databases implemented in
Python" to "In-process databases usable directly from Python"
because duckdb, chdb, and zvec are not themselves implemented in
Python, and the written-in-Python scope test was already removed
from CONTRIBUTING.md.
Downloads are PyPI last-30-day via ClickPy, fetched 2026-08-16.
Co-Authored-By: Claude <noreply@anthropic.com>
Oracle's official driver, successor to cx_Oracle. 26,856,874 downloads/month (pepy.tech, fetched 2026-08-16), from the Database & Storage audit (maintainer adjudicated 2026-08-16). Placed as obvious choice #2 between pyodbc (42.9M) and challenger mssql-python (3.3M) per entry-ordering rule.
Co-Authored-By: Claude <noreply@anthropic.com>
SQL Server / ODBC standard for two decades, 42,911,527 downloads/month (pepy.tech, fetched 2026-08-16). Its absence was a gap in the list from the Database & Storage audit, not a verdict on the project. Listed as obvious choice #1, before mssql-python (3.3M/month challenger), per entry-ordering rule.
Co-Authored-By: Claude <noreply@anthropic.com>
Database & Storage audit (2026-08-16): official ClickHouse client at 31,797,323 downloads/month has overtaken community clickhouse-driver at 18,405,937/month (pepy.tech, same source, fetched 2026-08-16). Listed first per entry-ordering rule; clickhouse-driver stays second tier.
Co-Authored-By: Claude <noreply@anthropic.com>
MagicStack's asyncio PostgreSQL driver, 122,401,686 downloads/month
(pepy.tech, fetched 2026-08-16). Verified as obvious choice #2 behind
psycopg (130.8M downloads/month, same source) in the Database & Storage
audit; last push 2026-02, inside the 12-month Active rule. Its absence
was a gap in the list.
Co-Authored-By: Claude <noreply@anthropic.com>
Database & Storage audit (maintainer adjudicated 2026-08-16), format-only outcome, no removals:
- Mint a ClickHouse subcategory between SQLite and Other Relational Databases, moving clickhouse-driver into it; two ClickHouse clients justify their own use case (official clickhouse-connect lands next as its own add commit).
- Rename entry redis-py to redis per the PyPI-package-name naming rule in CONTRIBUTING.md; also fixes a NOT_FOUND row in every downloads sweep.
- Reorder MySQL (pymysql 96.4M downloads/month before mysqlclient 20.4M) and NoSQL Databases (redis 277M pepy, pymongo 116.6M, cassandra-driver 8.0M, then django-mongodb-backend 31K as challenger) per the entry-ordering rule.
Co-Authored-By: Claude <noreply@anthropic.com>
Relational Databases had 7 entries against the cap of 5. Removed:
- dataset (2,316,477 downloads/month) - dict-store convenience wrapper, not the ORM job
- pony (653,675 downloads/month) - fading mindshare, no successor trajectory; repo still active, this is a cap call not an abandonment call
- tortoise-orm (599,872 downloads/month, flat) - async niche now served by SQLAlchemy asyncio and sqlmodel
Downloads are PyPI last-30-day via ClickPy fetched 2026-08-16.
Both subcategories reordered per entry-ordering rule: obvious choices by
downloads descending (sqlalchemy 423.9M, django.db.models riding django
56.1M, peewee 50.8M; pynamodb 4.1M, mongoengine 2.5M) then challengers
(sqlmodel 22.3M; beanie 1.6M).
Co-Authored-By: Claude <noreply@anthropic.com>
Maintainer follow-up to the 2026-08-16 HTTP & Scraping Audit:
"HTTP Clients / General" read redundant next to URL Manipulation.
Co-Authored-By: Claude <noreply@anthropic.com>
First Audit of the section; maintainer adjudicated 2026-08-16. yagmail
(346K/month, last push 2026-05) stays as the sole entry - the Cap is a
ceiling, not a floor.
Removed (downloads are PyPI last-30-day via ClickPy, fetched 2026-08-16):
- modoboa (7.6K/month): mail-hosting platform application, not a
library (ajenti/indico precedent); deployments do not flow through
pip - judgment call
Co-Authored-By: Claude <noreply@anthropic.com>
First Audit of the section; maintainer adjudicated 2026-08-16. Both
Subcategories reordered by downloads/month (Frameworks: browser-use,
scrapy, crawl4ai; Content Extraction: feedparser, html2text with a
watch - repo quiet since 2025-10 - and trafilatura).
Removed (downloads are PyPI last-30-day via ClickPy, fetched 2026-08-16):
- mechanicalsoup (162K/month): stateful-browsing era superseded by
browser automation
- crawlberg (10.6K/month): xberg-io coordinated self-promotion (the
org behind the standing rejection rule); repo created 2026-03,
155 stars
- website-downloader (352/month): hobby mirroring script, 174 stars
- micawber (209K/month): oEmbed extraction, small audience next to
the kept three
- sumy (168K/month): summarization, not content extraction - wrong
job for the Subcategory
Co-Authored-By: Claude <noreply@anthropic.com>
First Audit of the section. Restructure first, maintainer-chosen at the
preview review: the flat section splits into Clients and a minted URL
Manipulation Subcategory holding yarl (661.9M/month via BigQuery,
aio-libs, active 2026-08) and httpx.URL as a no-signal pointer to the
URL class bundled with the kept httpx. Client tiers: requests, httpx,
aiohttp Obvious; urllib3 in the Challenger slot by structure (transport
layer under requests, count inflated by that), ordered by
downloads/month. Maintainer-adjudicated 2026-08-16.
Removed (downloads are PyPI last-30-day via ClickPy, fetched 2026-08-16):
- furl (6.3M/month via BigQuery, same source as the yarl comparison):
URL manipulation, not an HTTP client; stdlib urllib.parse covers
parsing/joining/encoding and the minted Subcategory carries the
ergonomic successors - yarl outpulls it 105x; repo quiet since
2026-02
- httptap (1.7K/month): CLI diagnostic tool, repo created 2025-10,
790 stars; no adoption
Co-Authored-By: Claude <noreply@anthropic.com>
Authored by the parallel fetch-scripts session (its intended 0cffb5f
never landed; the content rode into an audit commit by accident and is
extracted here): fetch_pypi_downloads_via_clickpy.py becomes the
flagless full-README sweep and sole writer of data/pypi_downloads.tsv;
new fetch_pypi_downloads_via_bigquery.py is a print-only cross-check
taking explicit names behind a 400 GB billing cap; audit-the-list
SKILL.md step 2 updated to match.
Co-Authored-By: Claude <noreply@anthropic.com>
Follow-up to d07440f: the definition's placement clause described only
companion projects (flower/celery), but awesome-* also-see lists are
Sub-items too.
Co-Authored-By: Claude <noreply@anthropic.com>
fetch_pypi_downloads.py becomes fetch_pypi_downloads_via_clickpy.py and
fetch_pepy_downloads.py becomes fetch_pypi_downloads_via_pepy.py, ahead
of splitting the BigQuery path into its own file. Updates the usage
strings, the cross-file import, and the audit-the-list skill's
references to match. Pure rename, no behavior change.
Co-Authored-By: Claude <noreply@anthropic.com>
The device now has two precedents (aws-sdk-pandas under pandas, flower
under celery in the 2026-08-16 Web Development Audit) plus the awesome-*
links; future Audits need the term - an indented link that holds no slot
and rides its parent outside the Cap.
Co-Authored-By: Claude <noreply@anthropic.com>
Format-only outcomes of the 2026-08-16 Web Development Audit (no
removals): OAuth entries reordered by downloads/month (oauthlib,
authlib, django-allauth Obvious; django-oauth-toolkit Challenger),
Web Asset Management reordered (django-storages, django-compressor)
and its description gains "storing" to cover django-storages'
actual job. Template Engines, JWT, Permissions, WebSocket keeps
already sat in rule order.
Co-Authored-By: Claude <noreply@anthropic.com>
First Audit of the section; maintainer adjudicated 2026-08-16.
Reordered by downloads/month (pelican, nikola).
Removed (downloads are PyPI last-30-day via BigQuery, fetched 2026-08-16):
- lektor (12.5K/month): maintained (pushed 2026-08) but never named
unprompted; close call vs nikola - judgment call
Co-Authored-By: Claude <noreply@anthropic.com>
First Audit of the section; maintainer adjudicated 2026-08-16.
Reordered by downloads/month (wagtail, django-cms).
Removed (downloads are PyPI last-30-day via BigQuery, fetched 2026-08-16):
- indico (3.2K/month): event-management application (CERN), not a CMS
library; readers under CMS want wagtail/django-cms - judgment call
Co-Authored-By: Claude <noreply@anthropic.com>
First Audit of the section (flat Section = one Use Case, 7 entries over
the cap). Restructure first: flower is the Celery monitoring dashboard,
not an admin-panel library - it re-homes to Task Queues as a sub-item
under celery (outside the cap, aws-sdk-pandas precedent; Task Queues
sits at the hard max 5). Kept: flask-admin, django-unfold (Obvious),
django-grappelli (Challenger), ordered by downloads/month.
Maintainer-adjudicated 2026-08-16.
Removed (downloads are PyPI last-30-day via BigQuery, fetched 2026-08-16):
- ajenti (4.5K/month; its ajenti-panel package adds 4.5K): Linux server
control panel application, not a Python admin library
- func-to-web (3.5K/month): repo created 2025-10, 425 stars; no adoption
- jet-bridge (3.7K/month): bridge into the Jet Admin SaaS, not a library
readers seek here
Co-Authored-By: Claude <noreply@anthropic.com>
First Audit of the section; maintainer adjudicated 2026-08-16 at the
preview review, flipping autobahn-python to keep (enters as the
Challenger; Obvious slots are websockets, channels, flask-socketio).
Reordered by downloads/month within tiers.
Removed (downloads are PyPI last-30-day via BigQuery, fetched 2026-08-16):
- picows (66.3K/month): 290 stars; Challenger bar (adoption
trajectory) not met
Co-Authored-By: Claude <noreply@anthropic.com>
First Audit of the section. Restructure first: the RPC Subcategory is
not an "ASGI and WSGI compatible web server" - it moves to Web APIs,
whose description gains RPC; grpcio rides the move. ASGI reordered by
downloads/month (uvicorn Obvious; granian, hypercorn Challengers -
hypercorn kept with a watch, repo quiet since 2025-11).
Maintainer-adjudicated 2026-08-16.
Removed (downloads are PyPI last-30-day via BigQuery, fetched 2026-08-16):
- daphne (6.5M/month): installed as Django Channels' dependency, not
chosen standalone; judgment call
- uwsgi (2.0M/month): officially in maintenance mode; repo quiet since
2025-10
- rpyc (1.6M/month): repo last push 2025-08-14, exactly 12 months -
at the abandonment line
Co-Authored-By: Claude <noreply@anthropic.com>
First Audit of the section; maintainer adjudicated 2026-08-16 at the
preview review, flipping django-modern-rest to keep (enters as the
Django Challenger; Obvious slots stay django-rest-framework,
django-ninja, strawberry-django). Tiers reordered by downloads/month.
Removed (downloads are PyPI last-30-day via BigQuery, fetched 2026-08-16):
- falcon (1.8M/month): active, but not named unprompted since
fastapi/litestar; judgment call
- sanic (1.8M/month): same judgment as falcon - declining mindshare,
successor to nothing
- webargs (3.8M/month): request-parsing helper, not an API framework;
wrong job for the section
Co-Authored-By: Claude <noreply@anthropic.com>
First Audit of the section; maintainer adjudicated 2026-08-16 at the
preview review, flipping pyramid to keep (enters as Synchronous
Challenger beside fasthtml; the three Obvious slots stay flask, django,
bottle). Both tiers reordered by downloads/month per the ordering rule.
Removed (downloads are PyPI last-30-day via BigQuery, fetched 2026-08-16):
- masonite (26.4K/month): no adoption; Laravel-style niche
- microdot (10.4K/month): MicroPython-targeted, genuinely small audience
- robyn (50.9K/month): installs never followed the buzz
Co-Authored-By: Claude <noreply@anthropic.com>
Maintainer registered a free pepy API key (PEPY_TECH_API_KEY in the gitignored repo-root .env). fetch_pepy_downloads.py sums the most recent 30 days from the v2 per-day data, throttled to the free tier's 5 requests/minute, and prints TSV without touching the single-source cache file.
The audit-the-list skill's downloads bullet is rewritten in the same commit because the ClickPy-default change made its old --dry-run-first instruction fail; it now documents all three sources (ClickPy, BigQuery, pepy/pypistats) and the never-mix-mirror-counting rule.
Co-Authored-By: Claude <noreply@anthropic.com>
BigQuery required a personal Google Cloud account, so only the maintainer could run it and overruns cost real money. ClickPy is ClickHouse's free, keyless public mirror of the same PyPI download dataset, so it becomes the default source with a single batched query covering the full README in under a second.
BigQuery stays available behind a new --bigquery flag as the canonical-source cross-check; --dry-run now only applies to that path.
Live-tested: ClickPy full path (2/2 names), the --dry-run guard, and the BigQuery dry-run.
Co-Authored-By: Claude <noreply@anthropic.com>
Live bq show verified the pypi.file_downloads table clusters on the
top-level project column, not file.project as the docstring claimed.
Filtering on project (values verified identical to file.project across
408M rows, zero mismatches) gets cluster pruning and cuts the
full-README scan estimate from >1.2TB to ~275GB upper bound, with
actual billed bytes lower still (33.7GB measured for a single name) -
so full sweeps now fit the 1 TiB/month free tier.
Also adds --maximum_bytes_billed=400GB as a safety cap, enforced by
BigQuery pre-run against the dry-run upper-bound estimate.
Co-Authored-By: Claude <noreply@anthropic.com>
Verb-first naming per maintainer preference. Directory, frontmatter
name, and the audit-the-list reference updated together; template.html
moves with the directory unchanged.
Co-Authored-By: Claude <noreply@anthropic.com>
Packages the audit process proven across the shortlist-reform sweeps
as a reusable skill: resolve scope from the arguments (AskUserQuestion
when ambiguous or absent), fetch live evidence for every entry
(BigQuery downloads, repo state, PyPI metadata), draft verdicts with
restructure-before-cap and tier promotions/demotions, review through
the verdict-preview page, execute one commit per section on explicit
go, and record durable conclusions into CONTRIBUTING.md, CLAUDE.md,
AGENTS.md, and CONTEXT.md. CONTEXT.md gains the Audit glossary term
(the reform sweeps were the first Audits). Rules stay single-sourced in
CONTRIBUTING.md — the skill carries process only.
Co-Authored-By: Claude <noreply@anthropic.com>
AGENTS.md still carried pre-reform Key Rules (mandatory alphabetical
ordering, "quality over quantity" lanes-era language, no prune-sweep
commit exception, no live-verification rule). Bring it in line with
CLAUDE.md and CONTRIBUTING.md: downloads-descending tier ordering,
3+2 cap, sweep-commit exception, verification rule. Also record the
UV_PYTHON=3.13 workaround for Python-3.14-only machines in both files'
Makefile notes, and complete CLAUDE.md's Makefile target list.
Co-Authored-By: Claude <noreply@anthropic.com>
Apply the new ordering rule (downloads/month descending within each
tier, no-signal entries last alphabetically) to all ten swept sections.
Sixteen use cases change order: Vendor Agent SDKs, LLM Inference and
Serving, Speech, File Conversion, PDF, Markdown, Data Visualization
Specialized and Dashboards, Testing Frameworks and Mock, Financial
Data, Data Validation, Geolocation, Science Core and Simulation and
Modeling, Quantum Computing challengers. Unswept sections keep their
current order until their own sweeps. Bundled as a single
categorization commit per the Key Rules bundling exception.
Co-Authored-By: Claude <noreply@anthropic.com>
Maintainer decision 2026-08-16, amending the ordering half of the
Challenger-marking rule: within a use case, obvious choices still come
first and challengers still follow (position stays the marker), but
each tier now orders by PyPI downloads per month descending instead of
alphabetically. Entries without a download signal (stdlib modules,
agent skill packs) sort last within their tier, alphabetically.
Updated in CONTRIBUTING.md (Entry Ordering), CONTEXT.md (Challenger),
and CLAUDE.md (Key Rules).
Co-Authored-By: Claude <noreply@anthropic.com>
Per ADR-0001, maintainer-adjudicated at the Data & Science preview
review (2026-08-15). No removals — all four entries keep: qiskit and
qutip as Obvious Choices (circuit SDK and quantum physics simulation,
distinct jobs), cirq and pennylane as Challengers, ordered per the
Challenger-ordering rule. Format fixes bundled per the Key Rules
bundling exception: three em-dash separators normalized to hyphens,
Cirq lowercased to its PyPI name.
Co-Authored-By: Claude <noreply@anthropic.com>
Per ADR-0001, maintainer-adjudicated at the Data & Science preview
review (2026-08-15, all rows live-verified). Restructure first: Core
narrows to numba, numpy, scipy; mint Symbolic Mathematics (sympy),
Statistics (statsmodels), Graphs and Networks (networkx), and
Computational Geometry (shapely) — five co-obvious tools doing five
different jobs, the decision-13 pattern. Other shrinks to a two-entry
grab-bag; colour renamed to colour-science per the PyPI-name convention
(bare 'colour' on PyPI is an unrelated color-conversion library). Then
cap.
Removed (downloads are PyPI last-30-days via BigQuery, 2026-08-15):
- cclib (29.7K/month): computational-chemistry log parsing, small
audience
- openbabel (54.9K/month pip; conda-forge adds only 1.8M all-time):
legacy toolbox next to rdkit
- pydy (1.2K/month): near-zero usage
- PythonRobotics: educational algorithm compilation ("sample codes and
textbook" per its own description), not a library; not on PyPI
- pathsim (6.3K/month): no adoption
Co-Authored-By: Claude <noreply@anthropic.com>
Per ADR-0001, maintainer-adjudicated at the Data & Science preview
review (2026-08-15, all rows live-verified). Keeps geojson, geopandas,
and geopy as Obvious Choices; geodjango kept by maintainer flip and
listed last as Challenger (the cap allows three obvious choices).
Removed (downloads are PyPI last-30-days via BigQuery, 2026-08-15):
- django-countries (2.3M/month): country choices for Django forms and
models — Django form tooling, not geolocation work
Co-Authored-By: Claude <noreply@anthropic.com>