Skip to content

Session Handoff [python-contract]: Mypy-Only Build Directories Settled and Released as 2.0.737 #2008

Description

@ptr727

This round finished #1941 with the maintainer's decision. A build-profile Python directory may use mypy as its only CI type checker, and whichever checker CI runs is held to strict. The change landed in #2005 and #2007, promoted in #2006, and was released as 2.0.737.

Next steps, in priority order

Re-read each issue rather than trusting these summaries.

  1. PlexCleaner adopts the gate. This happens in PlexCleaner's own session and is unchanged from earlier links. It is first in the adoption order the maintainer set on Gate Every Repository's Python on Its Code, Not on Its Config #1800. Pin the validator to 2.0.737 or later and pass python-directories: RegressionTests on both callers. RegressionTests/ needs a tests/ suite and a mypy config first, and that config now owes mypy's strict flags if mypy is its only CI checker (python.pyright.config). Done looks like: CI is green and the (python.directories.declared) driftNote is deleted.
  2. Name the Mypy Suppression Mechanisms Beside Pyright's in python-codestyle #2004: name the mypy suppression mechanisms ([[tool.mypy.overrides]], # type: ignore[code]) beside the pyright ones in python-codestyle. This touches the same SKILL.md the auto-1947 lane is editing, so check that lane's state first.
  3. Remaining deferred edge cases: Read a with: Input Past a Deeper-Indented Comment in the Audit #1916 and Count a setup.cfg [mypy] Section as a Declared Directory's Type Checker #1915, then configure.sh Resolves a Registry Entry by Name Rather Than by owner/repo Identity #1894 and Three Test Harnesses Build a Stand-In PATH With an Empty Fallback When PATH Is Unset #1862.

External blockers

  • Each adoption runs in another repository's session.

Internal dependencies

State

Re-derive each of these at resume.

The parked decision queue

No open issue carries decision. Both questions this round raised were asked and answered in-session: mypy strict for a mypy-only build directory, and fixing one more open finding after the review budget ran out.

What the last round did

What not to repeat

  • Missing a surface that states the rule. The first diff edited the spec alone. Local review then found the skill, README.md, and finally AUDIT.md each still stating the old rule, one round per surface. Grep every surface for the rule's claim, AUDIT.md included, before the first push.
  • Writing a strictness demand without its profile scope. The first AUDIT.md wording demanded strict of lint-only directories too, which the spec does not. Copy the scope from the spec rule (minProfile) along with its text.
  • Naming strict = true for mypy. That key is global, so a test tree can't be relaxed with it the way pyright's path-scoped strict = ["src"] allows. Say "mypy's strict flags".
  • Scripted multi-line replacements ending mid-line. Twice, an old string that stopped before the end of a source line glued the rest of that line onto the new text's last line. End a replaced span at a newline.

New learnings

None beyond the entries above, which describe this round's attempts rather than general lessons.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    handoffA link in the session handoff chain, one open issue per track

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions