docs/audit-logs.md claimed every maintainer override is recorded, but the openviking stability override (PR #3302) and the seleniumbase challenger-evidence override (PR #3284) were missing.
Co-Authored-By: Claude <noreply@anthropic.com>
Inline code in category intros and guides inherited the body font with no background, so identifiers like INSTALLED_APPS read as ordinary words.
Co-Authored-By: Claude <noreply@anthropic.com>
awesome-pyramid last pushed 2021-07-08 and awesome-fasthtml 2024-09-08, both stale (checked via GitHub API 2026-09-27).
Co-Authored-By: Claude <noreply@anthropic.com>
18 entry descriptions overstated, understated, or misattributed their projects, checked against upstream on 2026-09-27 and approved row by row.
- django: "most popular" contradicted by the 2024 JetBrains/PSF survey, where FastAPI leads overall; now uses Django's own tagline.
- joblib: described as pipelining; its docs say parallel computing and disk caching.
- huey: called only "multi-threaded"; it also supports multi-process and greenlet workers.
- numba: updated to its current NumPy-aware wording.
- pytesseract: credited Google as Tesseract's developer, which ended in 2017.
- pennylane: description was narrower than its quantum computing/QML/chemistry scope.
- channels: didn't mention WebSocket support.
- justhtml: left out that it sanitizes untrusted HTML by default.
- akshare: left out its academic-research-only data terms.
- timesfm: left out its non-commercial default weights.
- pyvips: used libvips's own tagline instead of describing it as a binding.
- ultralytics: dropped an unverifiable SOTA claim and added its tracking capability.
- pandera: listed only 3 of its supported dataframe backends.
- sentry-skills: claimed a Python focus and debugging scope; it's the Sentry team's own skill set.
- trailofbits-skills: claimed to be Python-friendly, but only 2 of 85 skills are Python-specific.
- mysqlclient: fork link pointed to SourceForge mysql-python instead of MySQLdb1, and it now notes MariaDB support.
- charset-normalizer: called "the default" of requests, which prefers chardet when installed.
- pynacl: described as binding NaCl directly; it binds libsodium, a NaCl fork.
Co-Authored-By: Claude <noreply@anthropic.com>
This lead followed the same appositive frame as the other category intro leads ("X, a/the Python Y library ..."), so it read as one template with the category swapped in; it now has its own sentence frame, keeping the same picks and facts.
Co-Authored-By: Claude <noreply@anthropic.com>
This lead followed the same appositive frame as the other category intro leads ("X, a/the Python Y library ..."), so it read as one template with the category swapped in; it now has its own sentence frame, keeping the same picks and facts.
Co-Authored-By: Claude <noreply@anthropic.com>
This lead followed the same appositive frame as the other category intro leads ("X, a/the Python Y library ..."), so it read as one template with the category swapped in; it now has its own sentence frame, keeping the same picks and facts.
Co-Authored-By: Claude <noreply@anthropic.com>
This lead followed the same appositive frame as the other category intro leads ("X, a/the Python Y library ..."), so it read as one template with the category swapped in; it now has its own sentence frame, keeping the same picks and facts.
Co-Authored-By: Claude <noreply@anthropic.com>
This lead followed the same appositive frame as the other category intro leads ("X, a/the Python Y library ..."), so it read as one template with the category swapped in; it now has its own sentence frame, keeping the same picks and facts.
Co-Authored-By: Claude <noreply@anthropic.com>
This lead followed the same appositive frame as the other category intro leads ("X, a/the Python Y library ..."), so it read as one template with the category swapped in; it now has its own sentence frame, keeping the same picks and facts.
Co-Authored-By: Claude <noreply@anthropic.com>
This lead followed the same appositive frame as the other category intro leads ("X, a/the Python Y library ..."), so it read as one template with the category swapped in; it now has its own sentence frame, keeping the same picks and facts.
Co-Authored-By: Claude <noreply@anthropic.com>
This lead followed the same appositive frame as the other category intro leads ("X, a/the Python Y library ..."), so it read as one template with the category swapped in; it now has its own sentence frame, keeping the same picks and facts.
Co-Authored-By: Claude <noreply@anthropic.com>
This lead followed the same appositive frame as the other category intro leads ("X, a/the Python Y library ..."), so it read as one template with the category swapped in; it now has its own sentence frame, keeping the same picks and facts.
Co-Authored-By: Claude <noreply@anthropic.com>
Computer Vision's description said nothing; Template Engines claimed lexing; Email claimed parsing and mail server management though yagmail only sends; Build Tools said "compile software" though Invoke and doit are task runners; File Format Processing said "text formats" though it covers ELF, xlsx, docx, and PDF; Package Repositories left out mirrors like bandersnatch. These descriptions show on the category pages.
Co-Authored-By: Claude <noreply@anthropic.com>
langchain used an old composability tagline; transformers named only NLP/vision/audio though it now covers text, vision, audio, video, and multimodal; pgmpy left out its causal reasoning scope; uvicorn listed uvloop/httptools though both are optional extras; django-oauth-toolkit's "goodies" undersold an OAuth 2.0 authorization server; django-unfold used marketing copy instead of a description; pyparsing didn't match its repo's PEG parser description; pdfminer.six didn't say what it does; pyyaml's "implementations" was vague; whenever didn't reflect its Rust-or-pure-Python support; itsdangerous used an outdated upstream tagline; winpython's "Windows 10/11" will go stale; mssql-python's "low memory usage" claim has no upstream source; diskcache repeated the project's own speed benchmark instead of describing it; hishel left out its server-side support; jupyter used IPython's tagline instead of its own; ray used an old tagline; wxPython's sentence was garbled; kivy referenced outdated "NUI" and "Mac OS X" terms.
Co-Authored-By: Claude <noreply@anthropic.com>
Homepage description rows carried aria-hidden="true" on top of hidden, unlike category pages (fixed in 528f9ed); the hidden attribute alone already keeps them from assistive tech while hidden.
Co-Authored-By: Claude <noreply@anthropic.com>
applyFilters walked the static load-order NodeList, so after sorting by a column header, row numbers kept each row's original load-order position instead of counting 1..n down the sorted table.
Co-Authored-By: Claude <noreply@anthropic.com>
Category pages' JSON-LD ItemList listed entries in download order while the table renders them in README (editorial) order, so structured-data positions didn't match the visible rows.
Co-Authored-By: Claude <noreply@anthropic.com>
The rembg paragraph linked the same GitHub URL twice; the model-license link now points at the README's models section, where that claim is stated.
Co-Authored-By: Claude <noreply@anthropic.com>
The intro named Ultralytics' license with its version, AGPL-3.0, against the rule that intros name a license by family only.
Co-Authored-By: Claude <noreply@anthropic.com>
funasr: dropped stale 170x realtime and 50+ languages claims
easyocr: language count was stale at 40+, verified 80+
apiflask: said Marshmallow-only, missing its Pydantic support
urllib3: "A HTTP" grammar and awkward phrasing
django.db.models: linked to /en/dev/ instead of /en/stable/
pymysql: grammar slip "compatible to mysql-python", a phrase upstream dropped
zvec: unsourced "SQLite of vector databases" superlative
elasticsearch: linked to a redirected elastic.co/products/elasticsearch URL
matplotlib: called "2D" only, ignoring its animated/interactive support
geodjango: linked to /en/dev/ instead of /en/stable/
scipy: retired "ecosystem" tagline
mypy: "compile time" is wrong, Python has no compile-time type checking
tox: missing trailing period
schemathesis: described as OpenAPI/Swagger only, misses GraphQL schema support
polyfactory: grammar slip "support to classes"
mimesis: grammar slip "is a Python library that help you"
pdoc: outdated "Epydoc replacement" framing
pyinfra: grammar slip "A versatile CLI tools and python libraries"
typer: wrongly claimed to be built on Pydantic
copier: "projects templates" grammar slip
pygobject: said GTK+3 only, it now supports GTK 4
dearpygui: grammar slip and missing period
PySide6: claimed to be "same as PyQt6", it's not fully API-compatible
markupsafe: grammar slip in description
python-docx: outdated "Word 2007/2008" framing
mistune: grammar slip "Fastest and full featured pure Python parsers"
pillow: PIL link 404s
wand: MagickWand link went through two redirects to a stub page
vidgear: unverifiable "Most Powerful" superlative
tinytag: format list stale, missing supported formats
panda3d: said "developed by Disney", no longer Disney-only
micropython: vague description, missing microcontroller target
dateparser: language count was vague "dozens", verified 200+ locales
warehouse: outdated "Next generation" tagline
Nuitka: wrongly claimed to support all Python versions
cx-Freeze: grammar slip "It is a Python tool that converts"
dynaconf: wrongly claimed a FastAPI plugin
pip-audit: wrong database name
uv-audit: wrongly claimed malware scanning
pyenv-win: wrongly credited pyenv instead of rbenv-win as its fork origin
Co-Authored-By: Claude <noreply@anthropic.com>
The File Manipulation category page had no intro, showing only the table with a generic meta description.
Co-Authored-By: Claude <noreply@anthropic.com>
The Recommender Systems category page had no intro, showing only the table with a generic meta description.
Co-Authored-By: Claude <noreply@anthropic.com>