Python: Split type checkers by target (pyright source, 5 checkers on tests/samples)#6443
Draft
eavanvalkenburg wants to merge 1 commit into
Draft
Python: Split type checkers by target (pyright source, 5 checkers on tests/samples)#6443eavanvalkenburg wants to merge 1 commit into
eavanvalkenburg wants to merge 1 commit into
Conversation
…tests/samples) Rework the typing setup along the lines of the 'too many type checkers' approach: - Pyright (strict) is now the sole source-code type checker; mypy is removed from source and its [tool.mypy] block becomes a relaxed profile used only for tests/samples. - Tests are checked by all five checkers (pyright relaxed, mypy, pyrefly, ty, zuban); samples by pyright, pyrefly, and ty. All run in a relaxed/ basic profile so authors aren't forced into over-annotation. - Add pyrightconfig.tests.json and bump sample pyright configs to basic. - Unify test/sample typing onto the same parallel fan-out used by source pyright via run_command_items in task_runner.py. - Make version-conditional imports symmetric: keep or drop the '# type: ignore' on both branches so results match across interpreter versions (local vs CI). - Update SKILL.md, DEV_SETUP.md, and CODING_STANDARD.md for the five gating checkers and pyright on source+tests+samples. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
f2be487 to
31c4b66
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation and Context
Following the "too many type checkers"
approach, this reworks our typing setup so that each target is checked by the
right tool(s):
annotation burden and producing checker-specific friction on internal code.
actually call the public API only surfaced downstream.
The goal: make source development easier (one source checker) while giving
customers more confidence that running any of the five common type checkers
against their own code will surface fewer surprises.
Description
MyPy is removed from source; its
[tool.mypy]block becomes a relaxedprofile used only for tests/samples.
ty, and zuban.
script-style sample layouts).
not-required
TypedDictaccess, untyped test bodies) so test/sample authorsaren't forced into ugly over-annotation. Narrow, rule-specific ignores
(
# pyright: ignore[rule],# type: ignore[code]) are used only where achecker is pedantic.
pyrightconfig.tests.json; bumped sample pyright configs tobasic.pyrefly.toml,pyrefly.samples.toml,ty.samples.toml.pyright (
run_command_itemsinscripts/task_runner.py) for consistentexecution.
# type: ignoreis now keptor dropped on both branches, so results match across interpreter versions
(local vs CI) instead of only matching the current venv.
SKILL.md,DEV_SETUP.md, andCODING_STANDARD.mdfor the fivegating checkers and pyright over source + tests + samples.
Contribution Checklist