Add stubtest to CI for type annotation validation #11124
+1,410
−26
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.
whats-new.rstapi.rst(N/A - no new public API)Summary
This PR integrates mypy's stubtest tool into xarray's CI pipeline to validate that type annotations match runtime behavior.
What's included
CI Integration:
stubtestjob in.github/workflows/ci-additional.yamlcontinue-on-error: true(Phase 1: informational)dataarray,dataset,variableInfrastructure:
_stubtest/allowlist.txt- Comprehensive allowlist for TYPE_CHECKING imports and intentional stub/runtime differences_stubtest/run_stubtest.py- Runner script with reportingci_tests/- Pytest-based tests for stubtest compliance and type regressionsCode cleanup:
# type: ignorecomments revealed byscipy-stubsandpandas-stubsPhased rollout
The stubtest job is currently non-blocking (
continue-on-error: true). Once maintainers are confident it's stable, it can be made required by changing tocontinue-on-error: false.Verification
Stubtest errors reduced from 1,084 → 0 with the allowlist.