mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-20 21:14:14 +08:00
Refactor mypy configs list into editor-friendly wrapper (#50826)
Summary: Closes https://github.com/pytorch/pytorch/issues/50513 by resolving the first three checkboxes. If this PR is merged, I will also modify one or both of the following wiki pages to add instructions on how to use this `mypy` wrapper for VS Code editor integration: - [Guide for adding type annotations to PyTorch](https://github.com/pytorch/pytorch/wiki/Guide-for-adding-type-annotations-to-PyTorch) - [Lint as you type](https://github.com/pytorch/pytorch/wiki/Lint-as-you-type) The test plan below is fairly manual, so let me know if I should add more automated tests to this PR. Pull Request resolved: https://github.com/pytorch/pytorch/pull/50826 Test Plan: Unit tests for globbing function: ``` python test/test_testing.py TestMypyWrapper -v ``` Manual checks: - Uninstall `mypy` and run `python test/test_type_hints.py` to verify that it still works when `mypy` is absent. - Reinstall `mypy` and run `python test/test_type_hints.py` to verify that this didn't break the `TestTypeHints` suite. - Run `python test/test_type_hints.py` again (should finish quickly) to verify that this didn't break `mypy` caching. - Run `torch/testing/_internal/mypy_wrapper.py` on a few Python files in this repo to verify that it doesn't give any additional warnings when the `TestTypeHints` suite passes. Some examples (compare with the behavior of just running `mypy` on these files): ```sh torch/testing/_internal/mypy_wrapper.py README.md torch/testing/_internal/mypy_wrapper.py tools/fast_nvcc/fast_nvcc.py torch/testing/_internal/mypy_wrapper.py test/test_type_hints.py torch/testing/_internal/mypy_wrapper.py torch/random.py torch/testing/_internal/mypy_wrapper.py torch/testing/_internal/mypy_wrapper.py ``` - Remove type hints from `torch.testing._internal.mypy_wrapper` and verify that running `mypy_wrapper.py` on that file gives type errors. - Remove the path to `mypy_wrapper.py` from the `files` setting in `mypy-strict.ini` and verify that running it again on itself no longer gives type errors. - Add `test/test_type_hints.py` to the `files` setting in `mypy-strict.ini` and verify that running the `mypy` wrapper on it again now gives type errors. - Remove type hints from `torch/random.py` and verify that running the `mypy` wrapper on it again now gives type errors. - Add the suggested JSON from the docstring of `torch.testing._internal.mypy_wrapper.main` to your `.vscode/settings.json` and verify that VS Code gives the same results (inline, while editing any Python file in the repo) as running the `mypy` wrapper on the command line, in all the above cases. Reviewed By: glaringlee, walterddr Differential Revision: D25977352 Pulled By: samestep fbshipit-source-id: 4b3a5e8a9071fcad65a19f193bf3dc7dc3ba1b96
This commit is contained in:
committed by
Facebook GitHub Bot
parent
7e10fbfb71
commit
73dffc8452
@ -1,7 +1,10 @@
|
||||
# This is a MyPy config file but unlike mypy.ini, it enforces very strict typing
|
||||
# rules. The intention is for this config file to be used to ENFORCE that
|
||||
# people are using mypy on codegen files.
|
||||
#
|
||||
# This is the PyTorch mypy-strict.ini file (note: don't change this line! -
|
||||
# test_run_mypy in test/test_type_hints.py uses this string)
|
||||
|
||||
# Unlike mypy.ini, it enforces very strict typing rules. The intention is for
|
||||
# this config file to be used to ENFORCE that people are using mypy on codegen
|
||||
# files.
|
||||
|
||||
# For now, only code_template.py and benchmark utils Timer are covered this way
|
||||
|
||||
[mypy]
|
||||
@ -33,6 +36,7 @@ strict_equality = True
|
||||
files = tools/codegen/gen.py,
|
||||
tools/autograd/*.py,
|
||||
tools/pyi/*.py,
|
||||
torch/testing/_internal/mypy_wrapper.py,
|
||||
torch/utils/benchmark/utils/common.py,
|
||||
torch/utils/benchmark/utils/timer.py,
|
||||
torch/utils/benchmark/utils/valgrind_wrapper/*.py,
|
||||
@ -50,6 +54,10 @@ follow_imports = skip
|
||||
[mypy-torch.*]
|
||||
follow_imports = skip
|
||||
|
||||
# Missing stub.
|
||||
# Missing stubs.
|
||||
|
||||
[mypy-numpy]
|
||||
ignore_missing_imports = True
|
||||
|
||||
[mypy-mypy.*]
|
||||
ignore_missing_imports = True
|
||||
|
Reference in New Issue
Block a user