Skip to content

Session Handoff [python-contract]: Escaped and Folded python-directories Values Refused, Released as 2.0.738 #2014

Description

@ptr727

This round finished #1916 and found #1915 already done. The audit now refuses an escaped double-quoted or folded python-directories value wherever the value starts. The change landed in #2010, was promoted in #2011, and was released as 2.0.738.

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 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 beside the pyright ones in python-codestyle. It is still blocked on the auto-1947 lane (see Internal dependencies).
  3. Refuse a Commented or Multi-Line python-directories Value in the Audit #2013: refuse a commented or multi-line python-directories value in the audit. This is the pre-existing gap the Refuse an Escaped or Folded python-directories Value Wherever It Starts #2010 review found in the non-raw reader. It is small and in the same function Refuse an Escaped or Folded python-directories Value Wherever It Starts #2010 touched.
  4. Three Test Harnesses Build a Stand-In PATH With an Empty Fallback When PATH Is Unset #1862, then configure.sh Resolves a Registry Entry by Name Rather Than by owner/repo Identity #1894. Neither is Python-contract work. Three Test Harnesses Build a Stand-In PATH With an Empty Fallback When PATH Is Unset #1862 is three test harnesses building a child PATH with an empty fallback. configure.sh Resolves a Registry Entry by Name Rather Than by owner/repo Identity #1894 is configure.sh matching a registry entry by name rather than by owner/repo. Either could move to its own track.

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. The one question this round raised was asked and answered in-session: merge and release #2011.

What the last round did

What not to repeat

  • Starting an open issue without checking whether it already landed. Count a setup.cfg [mypy] Section as a Declared Directory's Type Checker #1915 was fully fixed in Settle the Python Gate's Behavior-Changing Edge Cases From #1936 #1942 and never closed. git log -S '<the fix's key string>' found it in one command before any edit. Run it on each deferred edge case before opening a worktree.
  • Matching an input's shape on the key's own line. The first cut of the escape refusal used a key-line regex and missed every form that puts something between the key and the value. Read the value's text through the same indentation walk that finds the key.
  • A regression case that passes by accident. The first next-line test put a comment before the value, and the old code still produced a finding, by misreading the comment as a directory. Mutation-test each new case against the old code and read the finding it produces, not only the count.

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