Leaked secrets are a supply chain risk that dependency audits don't cover, so Supply Chain Security splits into Dependency Audits and Secret Scanning.
Co-Authored-By: Claude <noreply@anthropic.com>
Removed: jev-ultrafast (no PyPI download signal; not published on PyPI): its README calls it an MVP and it needs a hosted API key, so the challenger slot goes to scrapling in the next commit. This overrides the Challenger Exception recorded 2026-10-02.
Co-Authored-By: Claude <noreply@anthropic.com>
Local runners (ollama, llama-cpp-python, mlx-lm) and production serving engines (vllm, sglang) answer different needs, and one use case could not hold both at the cap. The old page redirects to LLM Serving.
Co-Authored-By: Claude <noreply@anthropic.com>
The hero-rise fade-in started .hero-copy, which holds the LCP <h1>, at opacity 0, and Chrome ignores opacity-0 paints for LCP, delaying it by about 455 ms.
Co-Authored-By: Claude <noreply@anthropic.com>
`.results-note` carried an inner `max-width: 28rem`, which breaks the rule that `.section-shell` is the only width cap.
Co-Authored-By: Claude <noreply@anthropic.com>
Ruff 0.16 enables 413 default rules (up from 59), so make lint failed with 11 findings, and it treated website/ modules as third-party.
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 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>
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>
The intro predated the 2026-10-02 audit and did not mention the newly added prophet, statsforecast, and sktime.
Co-Authored-By: Claude <noreply@anthropic.com>
The intro predated the 2026-10-02 audit and still recommended Keras as a main pick after its demotion to Second Tier.
Co-Authored-By: Claude <noreply@anthropic.com>
Group pages whose names start with "Python" got titles like "Python Python Language Libraries" in the title, og:title, and JSON-LD name.
Co-Authored-By: Claude <noreply@anthropic.com>
Category names ending in a plural noun (DevOps Tools, Web Frameworks, HTTP Clients, Stdlib) got titles like "Python DevOps Tools Libraries" in title, og:title, twitter:title, and JSON-LD name.
Co-Authored-By: Claude <noreply@anthropic.com>
The Mock entry was named `mock`, the PyPI backport package, while it links to and describes the standard-library `unittest.mock` module.
Co-Authored-By: Claude <noreply@anthropic.com>
The old intro recommended SET (social-engineer-toolkit), which the 2026-10-02 audit removed from the README section.
Co-Authored-By: Claude <noreply@anthropic.com>
The old intro recommended Gooey and Tkinter Designer, which the 2026-10-02 audit removed; removing Gooey also dissolved the Wrappers subcategory.
Co-Authored-By: Claude <noreply@anthropic.com>
The old intro recommended freezegun, which the 2026-10-02 audit replaced with time-machine in the README section.
Co-Authored-By: Claude <noreply@anthropic.com>
The old intro recommended MonkeyType and repowise, which the 2026-10-02 audit removed from the README section.
Co-Authored-By: Claude <noreply@anthropic.com>