Repository navigation
Fix: mypy in a pixi/conda dependency manifest is not a type-check failure - #390
Merged
Merged
Conversation
…lure A pixi/rattler env resolve prints one bill-of-materials line per environment (`Dependencies: python, numpy, ..., mypy, scipy-stubs, ...`) before any job runs. On pandas-dev/pandas's `Pyarrow Nightly` update (run 29719453153) — which died inside pixi with a 404 fetching a nightly wheel — that manifest line was `\bmypy\b`'s only witness, so the log came out `python_type_check` at 0.53 and pointed a maintainer at `mypy . || pyright` for a dependency download. Discount the pixi/rattler `Dependencies:` / `PyPI Dependencies:` listing the same way the conda `- mypy=1.17.1` env.yml spec and package table are already discounted, matched only when the whole tail is a comma-separated list of package tokens. A real resolver error (prose / path / code) is untouched, and a mypy that actually ran and failed still trips python_type_check. The run now declines to `unknown`. Regression test + committed excerpt from the real run. Full suite green (989 passed, 742 subtests), ruff clean, no benchmark regression.
Merged
PabloCodes7
added a commit
that referenced
this pull request
Jul 21, 2026
Cut 0.7.4 from main. The last release, 0.7.3 (2026-07-16), predates ten false-positive fixes that are sitting on main and not on PyPI: an installed pytest read as a failing test run (#376), a passing test's title read as a secrets failure (#380), a PHPUnit assertion read as a Composer failure (#378), Flutter's cached Gradle Wrapper (#382), Cabal's dependency resolution read as Maven (#383), Crystal and dune's make targets read as C/C++ (#384, #385), a parenthesized 504 (#391), mypy in a pixi manifest (#390), an unset TERM read as a missing secret (#392), a warning-only yarn install and a recovered checkout (#393), and a verdict held up by invocations alone reporting diagnosis-level confidence (#395). Every one of those is a wrong answer a maintainer gets today from pip install patchrail. Version bumped in the four places that spell it out (pyproject, __init__, README quickstart, uv.lock), CHANGELOG's Unreleased section dated, and the real-world benchmark's release-status paragraph corrected: it no longer claims six fixes are unreleased. Co-authored-by: PabloCodes7 <[email protected]>
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.
What
A real failed run of pandas-dev/pandas (
Unit Tests / Pyarrow Nightly, run 29719453153) was misclassified aspython_type_check(0.53), pointing a maintainer atmypy . || pyright.The actual failure was the
pixienv update itself:mypynever ran. It appears only in the per-environment bill-of-materialspixiprints before any job:That single manifest line was
\bmypy\b's only witness.Fix
The classifier already discounts conda's
- mypy=1.17.1env.yml spec and its package table as bills of materials. This adds the pixi/rattlerDependencies:/PyPI Dependencies:listing to the same mention-only guard — matched only when the whole tail is a comma-separated list of package tokens, so a real resolver error (which carries prose, a path, or a code) is untouched. Withmypyonly ever declared, the run now settles onunknown(decline to auto-repair).A
mypythat actually ran and failed still tripspython_type_checkon its real diagnostic (covered by tests).Verification
examples/real-world/pandas-29719453153-excerpt.log—python_type_check0.53 before,unknown0.15 after.tests/test_pixi_dependencies_not_typecheck.py(manifest is discounted; a real mypy error, and a manifest line next to a real failure, still classify aspython_type_check).ruff check+ruff format --checkclean; no change to any existing fixture's class (benchmark top-1 across the 40 classes intact).