Sitelet https://github.com/msgwing/ZeroSMTP/pull/233/commits/c20f4aa8da02e2b2cb3119b247591dc1914219d5
Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
fix(ci): install pyyaml before the steps that import it, not after
tools/check-action.py was added yesterday and imports yaml. The pip install for
pyyaml lived inside the last step of the same job, so every run of device-table
since has died on ModuleNotFoundError before reaching it.

The first person to hit it was an outside contributor, on their first pull
request, on a change to a JSON file that has nothing to do with any of this.
Their pull request showed a red required check with my defect in it.

The install is its own step now, directly after setup-python, so adding a step
that needs a dependency cannot silently depend on the order of steps below it.

Worth naming the shape of this one rather than just fixing it: putting setup
inside the step that happened to need it worked for exactly as long as that
step was the only one. It was correct when written and became wrong when
something was added above it, and nothing was watching for that - the same
failure as a stale comment, in a workflow file.
  • Loading branch information
msgwing committed Aug 23, 2026
commit c20f4aa8da02e2b2cb3119b247591dc1914219d5
11 changes: 8 additions & 3 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,13 @@ jobs:
- uses: actions/setup-python@v7
with:
python-version: '3.13'
# Installed once, before anything that needs it. It used to live inside
# the last step in this job, which worked until a step that also imports
# yaml was added above it - and then the first person to hit
# ModuleNotFoundError was an outside contributor on their first pull
# request, on a change that had nothing to do with it.
- name: Python dependencies for the checks below
run: pip install --quiet pyyaml
- name: Device table and pages match data/devices.json
run: python tools/build-device-table.py --check
- name: Error pages match data/errors.json
Expand All @@ -82,9 +89,7 @@ jobs:
# edit had written where a regex meant backslash-1 and backslash-b.
# Cheap to check, expensive to miss.
- name: Workflow files parse, and carry no control characters
run: |
pip install --quiet pyyaml
python .github/check-workflows.py
run: python .github/check-workflows.py

bash:
needs: changes
Expand Down
Loading