Add comprehensive type annotations and mypy infrastructure#1285
Open
brianegge wants to merge 5 commits intomorganstanley:mainfrom
Open
Add comprehensive type annotations and mypy infrastructure#1285brianegge wants to merge 5 commits intomorganstanley:mainfrom
brianegge wants to merge 5 commits intomorganstanley:mainfrom
Conversation
Add type annotations across the entire testplan codebase (109 files, 218 checked modules) with zero mypy errors. Infrastructure: - Add mypy configuration in pyproject.toml with per-module strict overrides - Add py.typed marker for PEP 561 compliance - Add types-paramiko and types-requests stub packages - Add doit task for running mypy Key patterns: - TypeVar-typed `emphasized` decorator to preserve property types - Targeted `# type: ignore[error-code]` for framework meta-programming - isinstance/assert narrowing to replace union-attr suppressions - Python 3.9 compatible (Optional[X] not X | None) Co-Authored-By: Claude Opus 4.6 <[email protected]>
- Fix 17 mypy errors for compatibility with mypy 1.19: - Add type: ignore[no-any-return] for functions returning Any - Add type: ignore[import-untyped] for paramiko/requests imports - Remove unused type: ignore comments - Fix displaced type: ignore comments after ruff reformatting - Apply ruff formatting across all files - Update constraints.txt via uv export https://claude.ai/code/session_018SqKHFDkaRQHVnZUKukBSe
- Restore pylint disable comment on opentelemetry import - Revert vendor/tempita formatting (vendored code should not be modified) - Remove stale import-untyped ignores now resolved by type stub packages - Remove stale no-any-return ignores resolved by stubs (orjson, click) - Add type: ignore for marshmallow schema field assignment mismatches - Fix type: ignore placement on correct lines Co-Authored-By: Claude Opus 4.6 <[email protected]>
The updated constraints bumped pylint 4.0.4 -> 4.0.5 which treats pre-existing vendor import errors as fatal. Revert to main's constraints to fix CI lint failures. Co-Authored-By: Claude Opus 4.6 <[email protected]>
ExceptionGroup is properly typed when exceptiongroup backport is installed (CI Python 3.10), making the no-any-return ignore unused. Co-Authored-By: Claude Opus 4.6 <[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.
Summary
pyproject.tomlwith per-module strict overrides for 47 modulespy.typedmarker for PEP 561 compliance andtypes-paramiko/types-requestsstub packagesdoit mypytask for running type checksemphasizeddecorator withTypeVarto preserve decorated property typesassert/isinstancenarrowing instead of blanket# type: ignoresuppressions where possibleAll 446 remaining
# type: ignorecomments use specific error codes. The majority are structural to the framework's Config__getattr__pattern (attr-defined,no-any-return) and mypy'sprop-decoratorlimitation.Test plan
mypy testplan/ --config-file pyproject.tomlpasses with zero errors (218 source files)🤖 Generated with Claude Code