Skip to content

fix: pin the docs extra back to its audited versions (1.0.1) - #44

Merged
bbalouki merged 1 commit into
mainfrom
fix/docs-extra-supply-chain
Sep 23, 2026
Merged

bbalouki merged 1 commit into
mainfrom
fix/docs-extra-supply-chain

Conversation

@bbalouki

Copy link
Copy Markdown
Owner

Summary

Restores the docs extra's five pinned packages to their audited versions,
and stops Dependabot from moving them again. Releases as 1.0.1.

The pins and the comments beside them had come apart. pyproject.toml
simultaneously said:

# Pinned because griffe>=2.0 stops shipping its own implementation and
# instead depends on `griffelib` and `griffecli`. 1.15.0 is the newest
# release verified clean (colorama-only) on PyPI as of 2026-07-13.
"griffe==2.3.0",

Checked rather than assumed, straight from PyPI metadata. Every one of the
five bumped releases depends on the package its own comment warns about:

Package Was pinned Pulls Restored to
griffe 2.3.0 griffelib==2.3.0, griffecli==2.3.0 1.15.0
mkdocstrings-python 2.0.8 griffelib>=2.0 2.0.2
mkdocs-gen-files 0.6.1 properdocs>=1.6.5 0.6.0
mkdocs-literate-nav 0.6.3 properdocs>=1.6.5 0.6.2
mkdocs-section-index 0.3.12 properdocs>=1.6.5 0.3.10

properdocs hijacks the mkdocs import namespace through a sys.meta_path
hook; griffelib replaces the real griffe under a new name.

Blast radius

Limited, but the published v1.0.0 metadata carries it permanently:

  • pip install cmakeless was never affected. The package has exactly one
    runtime dependency, Typer. docs is an optional extra.
  • Affected: pip install cmakeless[docs], and this repository's own docs CI
    job, which installs .[docs] on every run.

mkdocs build --strict passes unchanged on the audited versions, so nothing
actually depended on the newer ones.

Preventing a repeat

.github/dependabot.yml now ignores all five. They are pinned for
supply-chain reasons rather than compatibility, which is not a distinction an
automated version bump can make, so the pins move only when a human
re-audits the newer release and updates the comment along with it.

Checklist

  • Tests added or updated — n/a, no source change; the fix is dependency
    metadata, and the docs build is the thing that exercises it.
  • CHANGELOG.md updated under [1.0.1].
  • ruff check ., ruff format --check . and mypy src pass locally.
  • mkdocs build --strict passes on the restored pins.
  • CI green on Windows, Linux and macOS.

Notes for reviewers

The honest part: this rode into v1.0.0 through the merge. I reviewed my own
diff carefully and never diffed main's incoming commits, so two Dependabot
bumps that had landed on main while I worked went unexamined. Diffing what
is being merged in, not only what is being merged out, is the lesson.

Automation bumped griffe, mkdocstrings-python, mkdocs-gen-files,
mkdocs-literate-nav and mkdocs-section-index past the boundary the
comments beside them describe, and the comments were left behind saying
the opposite: the file simultaneously pinned griffe==2.3.0 and
explained that 1.15.0 was the newest release verified clean.

Checked rather than assumed. Every one of the five bumped releases
depends on the package its comment warns about: griffe 2.3.0 pulls
griffelib and griffecli, mkdocstrings-python 2.0.8 pulls griffelib, and
the three mkdocs plugins pull properdocs, which hijacks the mkdocs
import namespace through a sys.meta_path hook. The audited versions
build the documentation with mkdocs --strict unchanged, so nothing
depended on the newer ones.

Only "pip install cmakeless[docs]" and this project's own documentation
build were ever affected. The package itself still has exactly one
runtime dependency.

dependabot.yml now ignores all five. They are pinned for supply-chain
reasons rather than compatibility, and that is not a distinction an
automated version bump is able to make.
@codecov

codecov Bot commented Sep 23, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@bbalouki
bbalouki merged commit 4f44a65 into main Sep 23, 2026
14 checks passed
@bbalouki
bbalouki deleted the fix/docs-extra-supply-chain branch September 23, 2026 12:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant