Commit Graph
100 Commits
Author SHA1 Message Date
Vinta ChenandClaude 1ad8d9d4dc docs: add Job Schedulers category intro
The Job Schedulers category page had no intro, showing only the table with a generic meta description.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 09:59:23 +08:00
Vinta ChenandClaude f560c19d5c docs: add Configuration Files category intro
The Configuration Files category page had no intro, showing only the table with a generic meta description.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 09:59:20 +08:00
Vinta ChenandClaude dfe5052604 docs: add Interactive Interpreter category intro
The Interactive Interpreter category page had no intro, showing only the table with a generic meta description.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 09:59:16 +08:00
Vinta ChenandClaude c6c6684334 docs: add Authentication category intro
The Authentication category page showed only the table with a generic meta description, with no intro.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 09:46:42 +08:00
Vinta ChenandClaude f22f7ff1c7 docs: add Logging category intro
The Logging category page showed only the table with a generic meta description, with no intro.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 09:46:39 +08:00
Vinta ChenandClaude c358eb518c docs: add Database category intro
The Database category page showed only the table with a generic meta description, with no intro.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 09:46:35 +08:00
Vinta ChenandClaude 06d53f691f docs: restore Build Tools guide's closing pointer to Package Management
a942b13 dropped this as redundant with the header link, but readers who finish the guide below the table never see that header link and lose the pointer to Package Management entirely.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 09:13:46 +08:00
Vinta Chen 7fa334eb90 sync rules 2026-09-27 09:12:30 +08:00
Vinta Chen 8d6109aa4c Merge branch 'fix/description-category-links' into feature/seo-redesign 2026-09-27 09:10:59 +08:00
Vinta ChenandClaude 5b80c4ef6b fix: point description cross-reference links at category pages
Category pages render each README section's description as-is, so cross-reference links inside it pointed at README anchors (#package-management on Build Tools, #web-apis on Web Frameworks) that don't exist on those pages and led nowhere.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 09:10:59 +08:00
Vinta ChenandClaude ae6d0acfd6 docs: name Mutagen's license by family in audio-video-processing intro
The intro named Mutagen's license with a version (GPL-2.0-or-later) where intros name only the family.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 09:10:24 +08:00
Vinta ChenandClaude ffcdff3053 docs: name Mem0's license by family in ai-and-agents intro
The intro named Mem0's license with a version (Apache 2.0) where intros name only the family.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 09:10:23 +08:00
Vinta ChenandClaude a942b13d06 docs: drop closing Package Management link from build-tools intro
The page's description now links to Package Management, so the intro's closing pointer there was redundant.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 09:10:23 +08:00
Vinta ChenandClaude 646d3f3954 docs: add Data Analysis category intro
Data Analysis's category page had no intro, so its meta description fell back to generic text and gave readers no guidance on which library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 08:26:50 +08:00
Vinta ChenandClaude 25bf3d64f2 docs: add Caching category intro
Caching's category page had no intro, so its meta description fell back to generic text and gave readers no guidance on which library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 08:26:47 +08:00
Vinta ChenandClaude 7ecaa4ff2f docs: add Science category intro
The Science category page had no intro, so its meta description fell back to generic text and readers got no guidance on which library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 08:25:50 +08:00
Vinta ChenandClaude 9236dde9e3 docs: add Package Repositories category intro
The Package Repositories category page had no intro, so its meta description fell back to generic text and readers got no guidance on which library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 08:25:47 +08:00
Vinta ChenandClaude c0190bde84 docs: add Debugging Tools category intro
The Debugging Tools category page had no intro, so its meta description fell back to generic text and readers got no guidance on which library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 08:25:43 +08:00
Vinta ChenandClaude 14cfa54293 docs: add Geolocation category intro
The Geolocation category page had no intro, so its meta description fell back to generic text and readers got no guidance on which library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 08:25:40 +08:00
Vinta ChenandClaude 0d72391733 docs: add Email category intro
The Email category page had no intro, so its meta description fell back to generic text and readers got no guidance on which library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 08:25:37 +08:00
Vinta ChenandClaude 5cb69a9940 docs: add Functional Programming category intro
The Functional Programming category page had no intro, so its meta description fell back to generic text and readers got no guidance on which library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 08:25:34 +08:00
Vinta ChenandClaude e54c7216f9 docs: add Asynchronous Programming category intro
The Asynchronous Programming category page had no intro, so its meta description fell back to generic text and readers got no guidance on which library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 08:25:30 +08:00
Vinta ChenandClaude 2f9a8d4009 add Build Tools category intro
Its meta description fell back to generic text and readers got no guidance on which library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 08:06:53 +08:00
Vinta ChenandClaude 1ac5fdc841 add Quantum Computing category intro
Its meta description fell back to generic text and readers got no guidance on which library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 08:06:50 +08:00
Vinta ChenandClaude 6348d5f86a docs: add Static Site Generators category intro
Static Site Generators had no intro, so its meta description fell back to generic text and readers got no guidance on which library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 08:03:39 +08:00
Vinta ChenandClaude b5846d7208 docs: add Database Drivers category intro
Database Drivers had no intro, so its meta description fell back to generic text and readers got no guidance on which library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 08:03:35 +08:00
Vinta ChenandClaude d7f7fe0dcd docs: add Cryptography category intro
Cryptography had no intro, so its meta description fell back to generic text and readers got no guidance on which library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 08:03:32 +08:00
Vinta ChenandClaude 4e020707e7 docs: add Task Queues category intro
Task Queues had no intro, so its meta description fell back to generic text and readers got no guidance on which library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 08:03:28 +08:00
Vinta ChenandClaude da7c0b7342 docs: add Distributed Computing category intro
Distributed Computing had no intro, so its meta description fell back to generic text and readers got no guidance on which tool to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 07:45:23 +08:00
Vinta ChenandClaude 2d9b988863 docs: add Package Management category intro
Package Management had no intro, so its meta description fell back to generic text and readers got no guidance on which tool to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 07:45:20 +08:00
Vinta ChenandClaude bc590c6272 docs: add Admin Panels category intro
Admin Panels had no intro, so its meta description fell back to generic text and readers got no guidance on which tool to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 07:45:16 +08:00
Vinta ChenandClaude 06c39e9941 docs: add HTTP Clients category intro
Its meta description fell back to generic text with no guidance on which library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 07:34:16 +08:00
Vinta ChenandClaude 08f0718e60 docs: add Data Ingestion / ETL category intro
Its meta description fell back to generic text with no guidance on which library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 07:34:13 +08:00
Vinta ChenandClaude 12e4fc4962 docs: add Data Visualization category intro
Its meta description fell back to generic text with no guidance on which library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 07:34:09 +08:00
Vinta Chen 557e91d785 Merge branch 'docs/promote-memory-rules' into feature/seo-redesign 2026-09-27 07:01:47 +08:00
Vinta ChenandClaude 2e7816cd51 docs: require read-only checks for listed-project admission
Nothing in the project instructions said entry checks stay read-only, and an agent once proposed installing a listed project to test whether it imports, which runs untrusted code.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 07:01:47 +08:00
Vinta ChenandClaude f511780898 docs: add website design conventions to project instructions
Agents editing the website had no written guide to the site's layout model, width caps, font sizing, or peer-element consistency, so those conventions weren't applied to new changes.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 07:00:41 +08:00
Vinta ChenandClaude 8b04838903 docs: add web asset management category intro
The page had no intro, so readers got no pick between django-storages and Django Compressor.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 06:26:25 +08:00
Vinta ChenandClaude d7c709371f docs: add template engines category intro
The page had no intro, so readers got no pick between Jinja and Mako.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 06:26:22 +08:00
Vinta ChenandClaude cabd05ec7e docs: add WebSocket category intro
The page had no intro, so readers got no pick among Channels, Flask-SocketIO, websockets, and Autobahn|Python.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 06:26:18 +08:00
Vinta ChenandClaude 10a7f12861 docs: add web servers category intro
The Web Servers page had no intro, so readers got no pick among Gunicorn, Uvicorn, Waitress, Granian, and Hypercorn.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 03:27:35 +08:00
Vinta ChenandClaude d450705926 docs: add web APIs category intro
The Web APIs category page had no intro, leaving readers without a pick among Django REST framework, Django Ninja, FastAPI, and the GraphQL and RPC libraries.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 03:27:23 +08:00
Vinta ChenandClaude 3c05cd63d6 docs: add web frameworks category intro
The page had no intro, so readers got no pick among Django, Flask, and the other full-stack and async frameworks.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 03:26:34 +08:00
Vinta ChenandClaude 74513330aa docs: add natural language processing category intro
The page had no intro, so readers got no pick among spaCy, NLTK, Stanza, and the Chinese text libraries.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 03:03:31 +08:00
Vinta ChenandClaude 579ea6bf85 docs: add machine learning category intro
The page had no intro, so readers got no pick among scikit-learn, the boosting libraries, pgmpy, Feature-engine, and TimesFM.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 03:03:12 +08:00
Vinta ChenandClaude 80958eb516 docs: add deep learning category intro
The Deep Learning page had no intro, leaving readers with no pick among PyTorch, Keras, JAX, Lightning, and the reinforcement learning libraries.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 03:02:51 +08:00
Vinta ChenandClaude 4d09bcb7ab docs: add Implementations category intro
The page had no guidance on when to run CPython vs MicroPython, Pyodide, Cython, or PyPy.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 02:43:48 +08:00
Vinta ChenandClaude e2308c087d docs: add Date and Time category intro
The page had no guidance on which Python date library to pick.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 02:43:45 +08:00
Vinta ChenandClaude 432a25e384 docs: add Game Development category intro
The page had no guidance on which Python game library to pick. Recommends pygame-ce over upstream pygame, which fails to install on Python 3.14 (no cp314 wheel, open issues #4627/#4810).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 02:43:41 +08:00
Vinta ChenandClaude 9e8e38eb2e docs: add web scraping category intro
The web scraping category page had no intro, leaving readers without guidance for picking among crawling frameworks, LLM-ready crawlers, AI browser agents, and content extractors.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 02:36:14 +08:00
Vinta ChenandClaude fd40096421 docs: add text processing category intro
The page had no intro, so readers got no pick among the encoding detection, fuzzy matching, parser, slug, and ID libraries.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 02:35:47 +08:00
Vinta ChenandClaude adea5994b9 docs: add file format processing category intro
The category page had no intro, giving readers no guidance for picking among the PDF, Office, Markdown, and config libraries listed.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 02:35:12 +08:00
Vinta Chen eddc053759 Merge branch 'feature/hide-repeated-tags' into feature/seo-redesign 2026-09-27 02:05:21 +08:00
Vinta ChenandClaude 77b1b70df5 fix: hide use-case and page tags that repeat the group heading
On section and subcategory pages, every row repeated its use case and current page as tags (and as the label under the name on phones), right under a heading that already said the same thing. They are now hidden in editorial order and shown again when a column sort flattens the groups.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 02:05:18 +08:00
Vinta ChenandClaude ef00fe3adb fix: restore hidden group headings when navigating to a jump link
After sorting by a column, or while a search hid a group, category page group headings stayed hidden, so the header's jump links (and any use-case heading link) pointed at a hidden element and did nothing.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 02:04:41 +08:00
Vinta Chen f68450769b Merge branch 'feature/tag-navigation' into feature/seo-redesign 2026-09-27 00:34:10 +08:00
Vinta ChenandClaude 52915911d4 feat: link section use-case headings to their subcategory pages
With tags now pointing at section anchors instead of filtering in place, subcategory pages (74 clicks and 19.7K impressions in the last 3 months) had no other internal links pointing to them.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 00:34:07 +08:00
Vinta ChenandClaude 62a4e7c4e5 fix: make tags link to category pages instead of filtering in place
Clicking a category or group tag filtered the homepage table in place while rewriting the address bar to the category URL, so one URL rendered two different pages and readers never reached category pages with their intros and guides; category pages also showed a redundant self-referential filter bar.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 00:34:07 +08:00
Vinta ChenandClaude e5088a6f5c docs: rewrite Data Validation category intro
Covers Pydantic for API input and config, Pandera for dataframes, and jsonschema for JSON Schema validation.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 00:27:34 +08:00
Vinta ChenandClaude c52f21f99d docs: rewrite CLI Development category intro
Covers argparse for basic apps, Click or Typer beyond that, Rich for output, and TUI frameworks.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 00:27:29 +08:00
Vinta ChenandClaude ee2874a463 docs: rewrite Testing category intro
Covers pytest as the default, a how-to-choose item per README subcategory, and a guide on Hypothesis, Playwright, tox/Nox, mocks, and coverage.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 00:27:25 +08:00
Vinta ChenandClaude 3c2afa13bb docs: rewrite Audio & Video Processing category intro
Covers librosa for audio analysis, MoviePy for scripted video editing, VidGear for real-time video, Mutagen vs tinytag for tag read/write and licensing, and beets as a CLI tag/organization tool.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 00:27:20 +08:00
Vinta ChenandClaude 88cfcf6f4d docs: rewrite Computer Vision category intro
Covers OpenCV as the default, Ultralytics YOLO for detection/segmentation/pose models and its AGPL-3.0/Enterprise License terms, Kornia for GPU-batch vision ops, FiftyOne for dataset curation, and pytesseract vs EasyOCR for OCR.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 00:27:02 +08:00
Vinta ChenandClaude a9bb827b4a docs: add Code Analysis category intro
Ruff for linting and formatting, a type checker alongside it, and pre-commit to run them, with per-tool guidance sourced from each project's own docs.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 00:17:54 +08:00
Vinta ChenandClaude 5216fb3c1a docs: add Image Processing category intro
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 00:17:34 +08:00
Vinta ChenandClaude 2930319d48 docs: add CMS category intro
Explains when to pick Wagtail (developer-defined page types) versus
django CMS (editors composing pages live), based on each project's
own documentation.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-27 00:16:51 +08:00
Vinta Chen 4813374b9b Merge branch 'feature/category-redesign' into feature/seo-redesign 2026-09-26 23:34:26 +08:00
Vinta ChenandClaude d5febbea1f docs: document category page group rows and guide band
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 23:34:01 +08:00
Vinta ChenandClaude 2b9469c0ae feat: group category page rows by use case, restructure intro
Category pages sorted rows by downloads, which buried editorial leads (the Django ORM showed as row 7 of 7, tkinter as 14 of 14) against CONTRIBUTING.md's "position is the marker"; the full intro in the hero pushed the table 2.5 screens down on a phone; and every page repeated the same "Search every project in one place" H2.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 23:33:57 +08:00
Vinta ChenandClaude 528f9edbb7 fix: expose entry description rows to screen readers
Every entry description row carried aria-hidden="true", hiding descriptions that sighted readers can see from screen readers.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 23:32:20 +08:00
Vinta ChenandClaude 9cc721f533 fix: match category meta titles to search query word order
Category page titles read "ORM Python Libraries", but people search "python orm", so the title word order didn't match the query.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 23:28:51 +08:00
Vinta ChenandClaude b3fe53bf51 fix: stop tracking .claude/launch.json
Personal Claude Code preview config, now holding a local-worktree server with an absolute path, was tracked so local edits showed as repo changes; excluded via .git/info/exclude instead.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 23:17:02 +08:00
Vinta ChenandClaude eb51124608 refactor: extract category table row markup into entry_rows macro
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 22:20:37 +08:00
Vinta ChenandClaude eaddf9441e docs: drop links from gui-development how-to-choose list
7 of its 13 items carried links while the other intros' lists carry none, and the entry table already links every project.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 22:14:39 +08:00
Vinta ChenandClaude 00915b0300 docs: trim ai-and-agents how-to-choose list to 12 items
The list had 22 items, which in the upcoming layout sits above the entry table and would push it 4-5 phone screens down; it now has one item per README subcategory, in README order, reusing the intro's own wording.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 22:14:15 +08:00
Vinta ChenandClaude 2cc1bb440d docs: rewrite ORM category intro
The old intro told every FastAPI app to use SQLModel, which SQLModel's own docs don't claim beyond simple cases, and leaned on API names from SQLAlchemy's 2.0 rename (Mapped, mapped_column).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 22:09:22 +08:00
Vinta ChenandClaude 4d2c9906e3 docs: rewrite GUI Development category intro
The old intro's lead used the same "For a Python X library, use …" template as other category pages, and it carried version-bound usage tips (Qt Widgets vs Qt Quick, pyside6-uic, per-toolkit threading helpers) instead of each project's recommended setup.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 22:09:16 +08:00
Vinta ChenandClaude 17bb6270d6 docs: add AI and Agents category intro
The AI and Agents category page had no intro, so readers got a 35-project list with no guidance on which library to pick for building an agent, serving a model, or fine-tuning.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 22:09:10 +08:00
Vinta ChenandClaude 1dfa95834d docs: add GUI Development category intro
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 20:41:18 +08:00
Vinta ChenandClaude 3870b0a723 docs: add Audio & Video Processing category intro
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 20:40:53 +08:00
Vinta ChenandClaude b71151a808 docs: add Computer Vision category intro
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 20:40:29 +08:00
Vinta ChenandClaude ec54348e4c docs: add CLI Development category intro
Covers recommended usage from each project's own docs for Typer, argparse, Click, Rich, and Textual.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 20:10:52 +08:00
Vinta ChenandClaude 7d19f84e63 docs: add Data Validation category intro
Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 20:10:14 +08:00
Vinta ChenandClaude fd300c4453 docs: add Testing category intro
Recommends pytest, Hypothesis, Playwright, and tox/nox based on each project's own docs.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 20:09:42 +08:00
Vinta ChenandClaude 8ea48cbecd build: add Claude Code launch config for website preview
Adds a "website" launch config that runs `make preview` (build, rebuild on file changes, serve website/output), so the desktop app's preview pane can start the site in one step.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 19:43:59 +08:00
Vinta ChenandClaude 5b9bc45c2b docs: require a redirect entry when an audit renames or dissolves a category
Audits that rename or dissolve a category never added a redirect, which is how the 404s appearing in Search Console traced back to renamed category pages.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 19:42:33 +08:00
Vinta ChenandClaude a74ca52860 feat: render per-category intro text above the entry list
Category pages carried no text of their own beyond the README one-line description, and most meta descriptions fell back to a generic "Explore N curated Python projects" line, which correlated with weak search rankings for category queries. This adds optional per-category intro markdown files rendered under the H1, with the first paragraph used as the meta description and links opening in a new tab, starting with the ORM category.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 19:42:22 +08:00
Vinta ChenandClaude c10264977e feat: serve redirect stubs for renamed and dissolved category slugs
Renamed or dissolved category slugs (e.g. /categories/web-servers/rpc/, /categories/code-analysis/code-linters/) returned 404, Search Console lists 7 of them, and each audit re-home was dropping the old URL's ranking.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-09-26 18:45:53 +08:00
Vinta ChenandClaude f3fa6e1d01 docs: make PR numbers clickable links in review-prs skill
Deploy Website / deploy (push) Canceled after 0s
CI / test (push) Canceled after 0s
PR numbers named in chat during a review-prs run should be clickable so the maintainer can open each PR in the browser while deciding on it. Defines the PR link convention once in the intro and uses it at both chat sites: the closing-comment draft label and the final summary table.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-23 15:54:11 +08:00
Vinta ChenandClaude c1fe131ad7 fix: print closing comment drafts verbatim before AskUserQuestion
In the last review-prs run, closing comments were posted to GitHub without the maintainer ever seeing their full text - the AskUserQuestion options carried one-line paraphrases and the actual comment bytes first appeared inside the gh pr close --comment command. The old wording ("AskUserQuestion presenting the draft closing comment") was satisfiable by a summary. The Close arm now prints each draft verbatim in chat (fenced block, PR number as label) before the AskUserQuestion, and the step's completion criterion binds every posted comment to be byte-identical to a printed draft or to the maintainer's custom text.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-23 15:46:34 +08:00
Vinta Chen 3daa2fa7a7 Merge pull request #3297 from karpetrosyan/add-hishel 2026-08-23 15:38:48 +08:00
Vinta ChenandClaude 25618e2121 docs: warn that renaming an entry can expose it to the pypi sweep
Deploy Website / deploy (push) Canceled after 0s
CI / test (push) Canceled after 0s
The uv-audit bug has no automatic guard outside the bundled-entry
case, so the hazard has to live in the audit process instead. The
sweep only queries names matching PYPI_NAME_RE, so a display name
with a space is skipped outright; renaming it into a PyPI-shaped name
starts it being queried, which is how 'uv audit' became 'uv-audit'
and picked up an unrelated third-party package by rocshers.

The gotcha tells the auditor to fetch PyPI metadata for any renamed
entry and add a null override when the package isn't the linked
project. It also records two broader checks that were measured
against the full list and rejected, so a future audit doesn't spend
time re-proposing them: the repo-backlink check misses this case
entirely since uv-audit declares no repo URL, as do 26 legitimate
entries, and it flags 10 benign org moves; the name-versus-repo-name
check returns 46 hits that are all legitimate, including uv-build
with the shape identical to uv-audit.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-23 01:49:40 +08:00
Vinta ChenandClaude b7313dcffc test: assert bundled entries have a null PyPI override
The uv-audit bug had no automated guard: pypi_name_overrides.json is
a manual registry, so a wrong-package mapping is only caught if
someone already suspects it.

Two broader checks were measured against the real list and rejected.
Checking that PyPI metadata links back to the entry's GitHub repo
would not have caught uv-audit, since that package declares no
home_page or project_urls, landing it in a 26-entry bucket of
packages that simply don't declare a repo (numba, selenium, pyglet,
etc.), plus 10 benign cases of orgs moving or splitting bindings.
Flagging display-name/repo-name mismatches yields 46 hits, all
legitimate python-X-repo-to-X-package pairs, with uv-build sitting
among them despite being a real Astral package with the identical
shape to uv-audit.

What discriminates is the bundled marker itself: a "(part of X)"
entry ships inside something else and has no package of its own, so
the sweep must never query it. This test walks the real README and
requires a null override for every bundled entry whose normalized
name is PyPI-shaped. Verified it fails with exactly the uv-audit
message when that override is removed, and passes with it restored,
across the three current bundled entries with no false positives. It
runs offline, fitting the existing network-less CI.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-23 01:46:13 +08:00
Vinta ChenandClaude 8e7d2bc62c fix: add null pypi override for uv-audit
Renaming the entry from "uv audit" to "uv-audit" made the name PyPI-shaped: normalize() leaves spaces alone, so "uv audit" failed PYPI_NAME_RE and collect_names skipped it, but "uv-audit" passes, so the next sweep would have queried PyPI for it.

A uv-audit package does exist on PyPI, but it is version 0.1.9 by Alekse Marusich of rocshers, an unrelated third-party tool whose summary ("uv Tool for checking dependencies for vulnerabilities") is close enough to be mistaken for Astral's built-in uv audit subcommand. Without the override the entry would have shown that stranger's download count and lost its Bundled badge.

The sweep now writes uv-audit as NOT_FOUND, which load_downloads skips, so the badge is unaffected.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-23 01:30:53 +08:00
Vinta ChenandClaude e6fe7d165c docs: point uv-audit entry link to its GitHub repo
Keep the docs link inline in the description instead of as the primary entry link, matching the format used by other entries.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-23 01:29:02 +08:00
Vinta ChenandClaude 0f677911f0 feat: add "Multiple on PyPI" badge for SDK monorepos
azure-sdk-for-python and google-cloud-python were rendering "Not on
PyPI", which is misleading. Both do ship on PyPI, just as many
per-service packages (azure-identity, azure-storage-blob,
google-cloud-storage, etc.) rather than under the repo name.

pypi_name_overrides.json already recorded that distinction in its
reason field; those two entries now carry an optional "badge" value
that build.py reads into the PyPI Downloads column. The other sixteen
no-count entries (cpython, renpy, agent skill repos, etc.) keep
"Not on PyPI" since that remains accurate for them.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-23 01:28:33 +08:00
Vinta ChenandClaude c07324b24f docs: rename uv audit entry to uv-audit and reword description
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-23 01:15:33 +08:00
Vinta ChenandClaude 22e8208834 docs: remove httpx.URL entry from URL Manipulation
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-23 01:15:29 +08:00
Vinta ChenandClaude 733021ae5b feat: add Bundled badge for entries shipped inside a larger project
django.db.models, geodjango, httpx.URL and uv audit were rendering
"Not on PyPI" alongside eighteen genuinely standalone projects that
simply are not packaged on PyPI, conflating two different reasons for
a missing download count.

These four entries now carry a "(part of X)" description prefix in
README.md, mirroring the existing "(Python standard library)"
convention. build.py reads that prefix into a bundled flag that both
templates render as a "Bundled" badge.

The prefix approach was chosen over a separate data file so README.md
stays the single source of content truth, and over inferring from the
entry name because geodjango is neither dotted nor spaced and would
have been missed. Redundant tail wording was trimmed from the
httpx.URL, geodjango and uv audit descriptions now that the prefix
names the parent.

The new entry format is documented in CONTRIBUTING.md and the
vocabulary in CONTEXT.md.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-23 01:09:20 +08:00
Vinta ChenandClaude 2fc0edd565 feat: rename Built-in source type to Stdlib and show it in downloads column
Standard-library entries rendered "Not on PyPI" in the PyPI Downloads
column, which read like missing data rather than a deliberate category
— the build already forces downloads to None for them so they never
pick up a same-named PyPI backport. They now render a "Stdlib" badge
instead, while genuine non-PyPI entries keep "Not on PyPI".

The filter tag is renamed to match, so the source-type value, the row
filter tag, and the synthetic category heading all read Stdlib now.
The literal "Built-in" strings scattered through build.py are routed
through the existing BUILTIN_FILTER constant so the label lives in one
place. The category page slug stays "built-in" so the public URL
/categories/built-in/ does not break.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-23 01:01:17 +08:00