Skip to content

mypy reports nothing, so the CI step blocks merges now - #376

Merged
alexarje merged 1 commit into
masterfrom
mypy-zero
Aug 23, 2026
Merged

mypy reports nothing, so the CI step blocks merges now#376
alexarje merged 1 commit into
masterfrom
mypy-zero

Conversation

@alexarje

Copy link
Copy Markdown
Contributor

Closes #350.

mypy musicalgestures/ is clean across all 69 source files, from 248 when that issue was opened, and the || true that made the step advisory is gone. No allowlist was needed in the end.

The last eight

Of a piece with the rest of the backlog:

  • get_acceleration declared fps: int — the same mistake frame2ms carried. A frame rate is not an integer; 29.97 and 23.976 are ordinary.
  • Two GPU objects created under a flag and used under the same flag, which mypy will not correlate.
  • Three output names resolved in one branch and read in another.
  • _pose_mediapipe and _rerender_pose_from_cache had no return annotation at all, so everything returning their result returned Any.

Why this is safe to gate on

The pin added in 3504a15 is the precondition. The count mypy reports moves with the checker as well as with the code: on identical source, 1.20.1 reports 169 errors where 2.3.1 reports 90. Blocking on an unpinned checker would let a release turn CI red with no change to the code at all.

Verification

682 tests pass, 4 skipped, on the same tree as the clean type check — rerun after the motion_mp merge rather than carried over from before it.

🤖 Generated with Claude Code

Closes #350. `mypy musicalgestures/` is clean across all 69 source files, from
248 when that issue was opened, and the `|| true` that made the step advisory is
gone. No allowlist was needed in the end.

The last eight were of a piece with the rest. `get_acceleration` declared
`fps: int`, the same mistake `frame2ms` carried --- a frame rate is not an
integer. Two GPU objects are created under a flag and used under the same flag,
which mypy will not correlate. Three output names are resolved in one branch and
read in another. And `_pose_mediapipe` and `_rerender_pose_from_cache` had no
return annotation at all, so everything that returned their result returned Any.

The version pin added in 3504a15 is what makes this safe to gate on. The count
mypy reports moves with the checker as well as with the code: on identical
source, 1.20.1 reports 169 errors where 2.3.1 reports 90. Blocking on an
unpinned checker would let a release turn CI red with no change to the code.

682 tests pass, 4 skipped, on the same tree as the clean type check --- rerun
after the motion_mp merge rather than carried over from before it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@alexarje
alexarje merged commit 79e1e78 into master Aug 23, 2026
12 checks passed
@alexarje
alexarje deleted the mypy-zero branch August 23, 2026 17:49
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.

Type the internal modules and make the CI mypy step blocking

1 participant