uv picked CPython 3.15.0 on CI runners and the locked markupsafe 3.0.3 has no 3.15 wheel under no-build, so CI and the nightly website deploy failed at uv sync.
Co-Authored-By: Claude <noreply@anthropic.com>
Redirect stubs for renamed category URLs carried a robots noindex meta, so Search Console filed them under "Excluded by 'noindex' tag" instead of treating the instant meta refresh as a permanent redirect, and the old URLs' ranking was not passed to the new pages.
Co-Authored-By: Claude <noreply@anthropic.com>
The naming rule only covered catch-all subcategories, but CLI Development > CLI Development and HTTP Clients > Clients were main use cases that repeated their section's name and were renamed General too, so the rule did not describe the practice.
Co-Authored-By: Claude <noreply@anthropic.com>
The subcategory nearly repeated its section's name, so its page could compete with the section page for the same searches, as Code Analysis did.
Co-Authored-By: Claude <noreply@anthropic.com>
The subcategory shared its section's name, so its page could compete with the section page for the same searches, as Code Analysis did.
Co-Authored-By: Claude <noreply@anthropic.com>
Subcategory titles such as "JWT for Authentication" lacked searchable words, and their boilerplate descriptions never named the listed projects and said "1 projects".
Co-Authored-By: Claude <noreply@anthropic.com>
Every sitemap URL got the build date as lastmod, so all pages claimed a change on each daily deploy, and the sponsorship page used file mtime, which on CI's fresh checkout is also build time.
Co-Authored-By: Claude <noreply@anthropic.com>
The catch-all subcategory shared its section's name, so its page ("Code Analysis for Code Analysis") split the "python code analysis" query with the section page in Search Console.
Co-Authored-By: Claude <noreply@anthropic.com>
Group pages showed only tables, so visitors arriving from broad searches like "python ml library" got none of the which-one-to-pick guidance that each section's intro already gives.
Co-Authored-By: Claude <noreply@anthropic.com>
The NLP intro left gensim out entirely, so readers wanting topic models or word embeddings got no pick even though the README lists it.
Co-Authored-By: Claude <noreply@anthropic.com>
The description said "Used for forms in many cases", which fits none of its four projects (pydantic, jsonschema, great-expectations, pandera).
Co-Authored-By: Claude <noreply@anthropic.com>
Its second sentence paired aiosmtplib and yagmail with their jobs in the same compressed two-pick frame the Admin Panels lead uses.
Co-Authored-By: Claude <noreply@anthropic.com>
The intro predated the audit and never mentioned django-mongodb-backend, which moved into ORM from Database Drivers.
Co-Authored-By: Claude <noreply@anthropic.com>
The intro predated the 2026-10-02 audit and did not mention the newly added aiosmtplib and django-anymail.
Co-Authored-By: Claude <noreply@anthropic.com>
The intro predated the 2026-10-02 audit and did not mention the newly added flask-restx and flask-smorest.
Co-Authored-By: Claude <noreply@anthropic.com>