# 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.

[mypy]
python_version = 3.10
plugins = mypy_plugins/check_mypy_version.py, numpy.typing.mypy_plugin

cache_dir = .mypy_cache/strict
allow_redefinition = True
strict_optional = True
show_error_codes = True
show_column_numbers = True
warn_no_return = True
disallow_any_unimported = True

strict = True
implicit_reexport = False

# do not re-enable this:
# https://github.com/pytorch/pytorch/pull/60006#issuecomment-866130657
warn_unused_ignores = False

files =
    .github,
    benchmarks/instruction_counts,
    tools,
    torch/profiler/_memory_profiler.py,
    torch/utils/_pytree.py,
    torch/utils/_cxx_pytree.py,
    torch/utils/benchmark/utils/common.py,
    torch/utils/benchmark/utils/timer.py,
    torch/utils/benchmark/utils/valgrind_wrapper

# Specifically enable imports of benchmark utils. As more of `torch` becomes
# strict compliant, those modules can be enabled as well.
[mypy-torch.utils.benchmark.utils.*]
follow_imports = normal

# Don't follow imports as much of `torch` is not strict compliant.
[mypy-torch]
follow_imports = skip

[mypy-torch.*]
follow_imports = skip

# Missing stubs.

[mypy-numpy]
ignore_missing_imports = True

[mypy-sympy]
ignore_missing_imports = True

[mypy-sympy.*]
ignore_missing_imports = True

[mypy-mypy.*]
ignore_missing_imports = True

[mypy-usort.*]
ignore_missing_imports = True