Commit Graph
1862 Commits
Author SHA1 Message Date
Vinta ChenandClaude da4383a06f audit: sweep Text Processing, dissolve General, drop textdistance, nameparser, user-agents, tree-sitter-language-pack
Restructure: the 10-entry General grab-bag dissolves — Encoding and
Unicode (chardet 224.1M/mo obvious choice, joined by
charset-normalizer next commit; ftfy 14.4M/mo kept as the fifth
mature-stable past-line keep, repo and release both 2024-10),
Internationalization (babel 135.2M/mo sole), Transliteration and
Slugs (python-slugify 87.7M/mo, unidecode 31.8M/mo), and a residual
General (difflib stdlib-first, pyfiglet 6.2M/mo judgment keep).
pypinyin (1.9M/mo) and pangu.py (14.9K/mo as PyPI pangu — display
name kept by explicit maintainer word, the second deliberate naming
exception after pytorch; kept on sole-tool judgment for CJK spacing)
re-home to Natural Language Processing > Chinese as challengers
beside jieba. Parser re-tiers: pygments (1.25B/mo), pyparsing
(422.3M/mo), sqlparse (146.8M/mo) obvious choices; phonenumbers
(renamed from python-phonenumbers, 39.4M/mo) and parsy (4M/mo)
challengers. Unique identifiers reorders to shortuuid then sqids.

Removed:
- textdistance — last release 2024-07 (25 months) and repo quiet
  since 2025-04, past the 12-month line; displaced by rapidfuzz
  (181.7M/mo vs 2.5M), entering in its own commit.
- python-nameparser — 3.3M downloads/month (as nameparser) and an
  active repo; editorial drop at cap: the domain-parser class is
  trimmed to the giant, phonenumbers. Judgment call.
- python-user-agents — repo quiet since 2023-02, three and a half
  years past the 12-month line.
- tree-sitter-language-pack — coordinated multi-entry self-promotion
  (automatic-rejection rule): PyPI provenance verified to xberg-io,
  the org that previously planted xberg and liter-llm. 6.6M/mo is
  real but the rule stands; its sibling drops from HTML Manipulation.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 15:09:02 +08:00
Vinta ChenandClaude 67c9f7ae93 style: split Computer Vision into General and OCR
No removals. General tiers: opencv-python (renamed from opencv to the
canonical pip package this entry already linked; 55.9M/mo) and
ultralytics (8.4M/mo, 60.7K stars) obvious choices; kornia (3.1M/mo)
and fiftyone (253.7K/mo — dataset tooling rather than a vision
algorithm library, kept as the unprompted answer for that adjacent
job) challengers. OCR minted as a distinct job: pytesseract (24M/mo)
and easyocr (3.6M/mo, quiet since 2025-12 — watch) obvious choices.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 14:48:57 +08:00
Vinta ChenandClaude c83b98c37e audit: sweep Natural Language Processing, drop funnlp
General tiers: nltk (71.4M/mo), spacy (25.4M/mo) obvious choices;
gensim (6M/mo, quiet since 2025-11 — watch) and stanza (1.1M/mo)
challengers. Chinese: jieba kept as mature-stable past the 12-month
activity line (repo quiet since 2024-08, last release 0.42.1 in
2020-01) on the sortedcontainers precedent — the fourth such keep:
3.3M downloads/month, 35.1K stars, still the Chinese segmentation
answer with no successor.

Removed:
- funnlp — three independent grounds: a link-collection rather than a
  library; repo quiet since 2024-05, past the 12-month line; 55
  downloads/month. Its 82.5K stars measure the bookmark, not a tool.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 14:48:38 +08:00
Vinta ChenandClaude 7d1c5c8d00 audit: sweep Machine Learning, three-way split, drop h2o, mindsdb, scikit-lego, TabGAN, spark.ml
Restructure: the 12-entry flat section splits into General
(scikit-learn 234.7M/mo obvious choice; pgmpy 843.7K/mo and
feature-engine — renamed from feature_engine to its canonical PyPI
name, 297.1K/mo — challengers), Gradient Boosting (xgboost 52M/mo,
lightgbm 26.5M/mo, catboost 6.3M/mo, all obvious choices; lightgbm's
lightgbm-org link verified current — microsoft/LightGBM redirects
there), and Time Series Forecasting (timesfm sole — a foundation
model judged by ecosystem adoption, 285K/mo and 27.6K stars; prophet
and darts are named absences, deliberately not added this sitting).

Removed:
- h2o — 215.1K downloads/month, 7.5K stars, and the repo is active;
  the drop is purely editorial: no longer anyone's unprompted answer
  against scikit-learn and the boosting trio. Judgment call.
- mindsdb — the linked repo redirects to mindsdb/mindshub, a "models
  workspace"; the AI-layer-for-databases product this entry described
  no longer exists (verified). 23.9K downloads/month.
- scikit-lego — 72.5K downloads/month, 1.4K stars; a grab-bag of
  sklearn extras that never became an unprompted answer. Judgment.
- TabGAN — 574 stars, 2.3K downloads/month. Nowhere near the bar.
- spark.ml — duplicate in all but name: pyspark is already listed in
  the audited DevOps group, same repo, same pip install. Structural.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 14:48:21 +08:00
Vinta ChenandClaude b95ce7e995 feat: add gymnasium to Deep Learning > Reinforcement Learning
The RL environments standard: community successor to OpenAI Gym
(unmaintained since 2022; few maintained RL libraries still support
old Gym — web-verified). 6.5M downloads/month (pepy), 12.3K stars,
pushed 2026-08. Obvious choice beside stable-baselines3, ordering
first by downloads.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 14:47:56 +08:00
Vinta ChenandClaude 34c550b864 style: split Deep Learning into Frameworks and Reinforcement Learning
No removals. Frameworks tiers: pytorch (96.6M/mo as PyPI torch — the
display name stays pytorch by explicit maintainer word, a deliberate
exception to the naming convention; the bare pytorch PyPI package is
a squatting placeholder), tensorflow (19.2M/mo — production incumbent,
flagged as a Second Tier demotion candidate for the next audit), keras
(18.6M/mo, backend-agnostic since Keras 3) obvious choices; jax
(21.8M/mo, TPU/performance trajectory) and pytorch-lightning
(11M/mo) challengers. Landscape verified: PyTorch is the 2026 default
with 85% research share.

stable-baselines3 moves into the minted Reinforcement Learning
subcategory — RL is a distinct job; gymnasium joins it next commit.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 14:47:44 +08:00
Vinta ChenandClaude 660d746237 style: move the ERP section to the Web Development group
Maintainer challenge upheld: Odoo is a ready-made web application
platform you extend, the sibling concept of CMS and Admin Panels —
so the section belongs beside them, not in the Other grab-bag (its
first placement was inertia from tryton's Miscellaneous home). TOC
and body both move; the group's section tail stays alphabetical
(Admin Panels, CMS, ERP, Static Site Generators).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 14:30:54 +08:00
Vinta ChenandClaude a2659635af feat: add odoo, minting the ERP section
The Python ERP by adoption: about 7M users across editions, 50+ app
modules, 53.7K stars, pushed daily (web-verified). Not pip-distributed
— the PyPI odoo package is a dateless placeholder — so no download
signal; judged by ecosystem and displayed by repository name (renpy
precedent). Sole obvious choice.

Second structure override of decision 18 by maintainer word (Supply
Chain Security precedent): ERP lands as a new section in the Other
group rather than a slot in the Miscellaneous grab-bag, replacing the
dropped tryton. TOC line, heading, and description ride this commit.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 14:27:23 +08:00
Vinta ChenandClaude f8e594a9b4 audit: sweep Miscellaneous, drop tryton, re-home itsdangerous to Cryptography
Restructure: itsdangerous moves to Security > Cryptography as a
challenger — HMAC-based data signing fits "cryptographic primitives
and secure protocols" better than the grab-bag. Kept past the
12-month activity line (repo quiet since 2025-06, last release
2024-04) as mature-stable on the sortedcontainers precedent: 222.8M
downloads/month, the signing answer, no successor. Miscellaneous
keeps blinker (192.2M/mo) and boltons (26.5M/mo) as obvious choices.

Removed:
- tryton — 10.9K downloads/month, and that PyPI package is the
  desktop client (the framework server is trytond); the linked GitHub
  repo is a self-described 216-star mirror; and the ERP obvious
  choice by adoption is Odoo (~7M users vs hundreds-to-thousands of
  Tryton deployments, web-verified), which enters in the next commit.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 14:27:02 +08:00
Vinta ChenandClaude 0194cbbe13 audit: sweep Hardware, drop synology-api
Tiers: bleak (2.5M/mo) and pynput (2.2M/mo) obvious choices;
jumpstarter (1.5K/mo, 211 stars, created 2026-01) kept as a
challenger by explicit maintainer flip against the seeded drop.

Removed:
- synology-api — 579 stars, 14.5K downloads/month; a single-vendor
  NAS API wrapper, not an obvious choice for any hardware job a
  general reader has. Judgment call.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 14:26:42 +08:00
Vinta ChenandClaude 16e17d62ba style: drop the preview label from uv audit's description
Maintainer word: no preview marker in the entry text. The stability
override itself stands unchanged.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 14:15:42 +08:00
Vinta ChenandClaude 913b380cc8 feat: add uv audit to Supply Chain Security
Maintainer-proposed during the Security sitting: uv's built-in
vulnerability and malware scanning (announced 2026-06, OSV-backed,
4-10x faster than pip-audit on typical projects). Enters as a
no-signal challenger behind pip-audit — not a package, so this is a
subcommand pointer entry linking the CLI docs (httpx.URL precedent).

Astral marks the feature preview/unstable; kept by explicit maintainer
override of the production-ready quality bar — the first stability
override. The description carries the preview label.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 14:15:21 +08:00
Vinta ChenandClaude fe7006edcc feat: add pip-audit, minting the Supply Chain Security section
The PyPA-official dependency vulnerability scanner: 30.9M
downloads/month (pepy; largely CI traffic, which is the use case),
1.3K stars, pushed 2026-08. Verified 2026 guidance names it the free
baseline over the older commercial safety. Sole obvious choice.

This mints the reform's first new section — an explicit maintainer
override of decision 18 (all minted use cases are subcategories),
accepted in the audit preview. TOC line, heading, and description
ride this commit per the Build Backends pattern; placed alphabetically
in the Security group.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 14:12:46 +08:00
Vinta ChenandClaude 438881adba style: audit Cryptography and Penetration Testing — renames and re-tiers
No removals in either section.

Cryptography: adds the missing italic section description; reorders to
downloads — cryptography (1.48B/mo), pynacl (241.7M/mo), paramiko
(155.4M/mo; SSH kept here as secure-protocols-adjacent rather than
minting a sole-entry use case) — all obvious choices.

Penetration Testing: tiers mitmproxy (10.8M/mo) and sqlmap (official
PyPI package verified, 65.3K/mo under-measures git-based usage; 38.2K
stars) obvious choices; sherlock-project (renamed from sherlock — the
bare PyPI name is an unrelated distributed-lock library; 115.9K/mo,
89.6K stars) and social-engineer-toolkit (renamed from setoolkit —
no PyPI package, so the naming convention falls back to the repository
name; no download signal, judged by ecosystem standing) challengers.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 14:12:29 +08:00
Vinta ChenandClaude 283f1425b3 style: fix display-name casing to canonical PyPI names
Maintainer-approved batch: gtts → gTTS, twisted → Twisted, cython →
Cython, per the naming convention (display name = canonical PyPI
package name, verified via the PyPI JSON API). All three were caught
post-commit in earlier sittings and parked awaiting explicit word.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 14:03:50 +08:00
Vinta ChenandClaude cf38a34ed4 refactor: re-home pre-commit to Code Analysis > Git Hooks
Maintainer-adjudicated close of the standing flag from the Developer
Tools sitting: pre-commit is developer-workflow tooling (a git-hook
framework orchestrating linters), not ops — it leaves the DevOps
Tools > Other grab-bag for a minted sole-entry Git Hooks subcategory
in Code Analysis. Placement avoids stretching the Linters and
Formatters cap override (already 6 by maintainer word). No additions
or removals — a pure re-home.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 14:03:35 +08:00
Vinta ChenandClaude ee0caca892 feat: add pydantic-settings to Configuration Files
Displacement of the dropped python-decouple: same job — settings from
environment variables and files — done with validation and types on
the pydantic ecosystem's momentum. 495M downloads/month (pepy), pushed
2026-08. Obvious choice, ordering after python-dotenv.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 13:54:05 +08:00
Vinta ChenandClaude 5a8c062f6d audit: sweep Configuration Files, drop python-decouple
Tiers: configparser (stdlib, leads the use case under the stdlib-first
ordering rule), python-dotenv (782.2M/mo) obvious choices —
pydantic-settings joins them in its own addition commit; hydra-core
(23.8M/mo — renamed from hydra to its canonical PyPI name; the cache's
bare hydra row is an ancient unrelated package; link updated to
hydra-ecosystem/hydra, where the facebookresearch repo now redirects,
target verified by description) and dynaconf (6.8M/mo) challengers.

Removed:
- python-decouple — repo dormant since 2024-11, last release 3.8 in
  2023-03, three and a half years past any release and past the
  12-month activity line. 8.4M downloads/month, 3.0K stars.
  Displaced by pydantic-settings (495M/mo) entering next.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 13:53:51 +08:00
Vinta ChenandClaude 9f9bd8db1f style: split Distribution into Executables and Obfuscation
Maintainer-directed restructure: instead of dropping pyarmor as
mis-homed, an Obfuscation subcategory is minted for it (sole obvious
choice — 501.5K/mo, 5.2K stars, pushed 2026-08); code obfuscation is a
distinct job from building executables. Executables tiers: pyinstaller
(13.1M/mo), Nuitka (512K/mo) obvious choices; shiv (487.3K/mo),
cx-Freeze (221K/mo) challengers. No removals.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 13:53:35 +08:00
Vinta ChenandClaude 947b93943a feat: add uv-build to Package Management > Build Backends
Challenger: uv's own backend at 26.5M downloads/month (pepy) within a
year of release, riding uv's adoption trajectory. Deferred by the
maintainer from the Developer Tools sitting; this closes that agenda
item.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-16 13:53:17 +08:00
Vinta ChenandClaude 0ec6f492f4 feat: add hatchling to Package Management > Build Backends
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>
2026-08-16 13:53:03 +08:00
Vinta ChenandClaude 1a36f77426 feat: add setuptools to Package Management > Build Backends
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>
2026-08-16 13:52:51 +08:00
Vinta ChenandClaude 1b51907189 audit: sweep Package Management, mint Package Managers subcategory, cap override to 6
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>
2026-08-16 13:52:39 +08:00
Vinta ChenandClaude a4eba37b1f audit: sweep Environment Management, drop KillPy, pyenv-win becomes a sub-item
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>
2026-08-16 13:52:22 +08:00
Vinta ChenandClaude 05a9dd4ed5 style: move standard-library entries to the top of their tiers
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>
2026-08-16 13:37:14 +08:00
Vinta ChenandClaude c00094add6 feat: add whenever to Date and Time
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>
2026-08-16 13:30:53 +08:00
Vinta ChenandClaude 16077fc0e1 style: re-tier Built-in Classes Enhancement and Date and Time
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>
2026-08-16 13:30:35 +08:00
Vinta ChenandClaude 19875cf356 audit: sweep Asynchronous Programming, split into Async I/O and Parallelism
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>
2026-08-16 13:30:08 +08:00
Vinta ChenandClaude 6af6158287 audit: sweep Functional Programming, drop coconut
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>
2026-08-16 13:29:44 +08:00
Vinta ChenandClaude 9fa72c1ee6 audit: sweep Implementations, drop ironpython
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>
2026-08-16 13:29:23 +08:00
Vinta ChenandClaude 8a3771e895 feat: add pygame-ce to Game Development > Game Frameworks
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>
2026-08-16 13:15:08 +08:00
Vinta ChenandClaude 3f391b34ba audit: sweep Game Development, split into use cases, drop py-sdl2, pyopengl
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>
2026-08-16 13:14:54 +08:00
Vinta ChenandClaude 8f9c3884bf audit: sweep Audio & Video Processing, re-home TTS to Speech, drop birdnet, matchering
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>
2026-08-16 13:14:37 +08:00
Vinta ChenandClaude 9970486a2a feat: add rembg to Image Processing > General
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>
2026-08-16 13:14:13 +08:00
Vinta ChenandClaude 41a1b4b0ae audit: sweep Image Processing, split into use cases, drop pymatting
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>
2026-08-16 13:13:57 +08:00
Vinta ChenandClaude 9bbe1cf6d0 audit: sweep GUI Development, split Desktop into Qt and Tkinter, drop enaml, buridan/ui, curses
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>
2026-08-16 12:56:44 +08:00
Vinta ChenandClaude 1a8e14c177 audit: sweep CLI Tools, dissolve Productivity Tools, drop thefuck, kaydet, doitlive
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>
2026-08-16 12:56:03 +08:00
Vinta ChenandClaude 35c68984e8 audit: sweep CLI Development, mint TUI Frameworks, drop cement
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>
2026-08-16 12:55:38 +08:00
Vinta ChenandClaude 3290ce586a style: merge Security Linters into Linters and Formatters
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>
2026-08-16 12:26:20 +08:00
Vinta ChenandClaude b8cacb558c audit: sweep Network Virtualization to the shortlist cap
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>
2026-08-16 12:19:44 +08:00
Vinta ChenandClaude 635a735802 audit: sweep Logging to the shortlist cap
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>
2026-08-16 12:19:12 +08:00
Vinta ChenandClaude 03d9139c35 audit: sweep Job Schedulers to the shortlist cap
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>
2026-08-16 12:18:40 +08:00
Vinta ChenandClaude 7fd495730d feat: add paho-mqtt to Messaging
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>
2026-08-16 12:17:59 +08:00
Vinta ChenandClaude 28b6d1398b feat: add pika to Messaging
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>
2026-08-16 12:17:28 +08:00
Vinta ChenandClaude e5ce98c0f2 feat: add confluent-kafka to Messaging
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>
2026-08-16 12:16:59 +08:00
Vinta ChenandClaude 83c723d61f style: reorder Task Queues by tier and downloads
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>
2026-08-16 12:16:27 +08:00
Vinta ChenandClaude 4fc32225a9 audit: sweep Distributed Computing to the shortlist cap
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>
2026-08-16 12:15:51 +08:00
Vinta ChenandClaude 77e7b62d93 feat: add google-cloud-python to Cloud Providers
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>
2026-08-16 12:15:10 +08:00
Vinta ChenandClaude b06104c97e feat: add azure-sdk-for-python to Cloud Providers
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>
2026-08-16 12:14:32 +08:00
Vinta ChenandClaude a610fcec61 audit: sweep DevOps Tools to the shortlist cap
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>
2026-08-16 12:13:54 +08:00