[mypy]
scripts_are_modules = True
show_traceback = True

# Options to make the checking stricter.
check_untyped_defs = True
disallow_any_unimported = True
disallow_untyped_defs = True
disallow_any_generics = True
warn_no_return = True
no_implicit_optional = True
warn_return_any = True
disallow_untyped_calls = True
disallow_incomplete_defs = True
warn_redundant_casts = True

# Display the codes needed for # type: ignore[code] annotations.
show_error_codes = True

# It's useful to try this occasionally, and keep it clean; but when
# someone fixes a type error we don't want to add a burden for them.
warn_unused_ignores = True

# We use a lot of third-party libraries we don't have stubs for, as
# well as a handful of our own modules that we haven't told mypy how
# to find.  Ignore them.  (For some details, see:
# `git log -p -S ignore_missing_imports mypy.ini`.)
#
# This doesn't get in the way of using the stubs we *do* have.
ignore_missing_imports = True

# Warn of unreachable or redundant code.
warn_unreachable = False
# was True

strict_optional = True

