[mypy]
# Here some paths are excluded from even being parsed, working around cases of
# invalid syntax we can't fix (yet) or where the code isn't in a package and
# there's no good place to add __init__.py files. The following are excluded:
# - tools/third_party/ (vendored dependencies)
# - All setup.py files (avoiding duplicate module named "setup")
# - tools/wptserve/docs/conf.py (generated code)
# - tools/wptserve/tests/ (deliberately invalid syntax)
exclude = (^tools/third_party/|/setup\.py$|^tools/wptserve/docs/conf.py|^tools/wptserve/tests/|^tools/third_party_modified/mozlog/|^tools/wptserve/wptserve/cgi/test_cgi\.py$)
mypy_path = tools/wptrunner:tools/wptserve:tools/webdriver:tools/webtransport:tools/third_party/h2/src:tools/third_party/hpack/src:tools/third_party/hyperframe/src:tools/third_party/pywebsocket3:tools/third_party/websockets/src
#check_untyped_defs = True
disallow_any_generics = True
disallow_incomplete_defs = True
disallow_subclassing_any = True
disallow_untyped_calls = True
disallow_untyped_decorators = True
disallow_untyped_defs = True
no_implicit_optional = True
strict_equality = True
warn_redundant_casts = True
warn_return_any = True
warn_unused_configs = True
warn_unused_ignores = True
warn_unreachable = True

show_error_codes = True

# Don't type check third_party things
[mypy-h2.*]
follow_imports = silent

[mypy-hpack.*]
follow_imports = silent

[mypy-hyperframe.*]
follow_imports = silent

[mypy-pywebsocket3.*]
follow_imports = silent

[mypy-websockets.*]
follow_imports = silent

# Ignore missing or untyped libraries.
[mypy-Cocoa.*]
ignore_missing_imports = True

[mypy-ColorSync.*]
ignore_missing_imports = True

[mypy-Quartz.*]
ignore_missing_imports = True

[mypy-marionette_driver.*]
ignore_missing_imports = True

[mypy-mozcrash.*]
ignore_missing_imports = True

[mypy-mozdebug.*]
ignore_missing_imports = True

[mypy-mozdevice.*]
ignore_missing_imports = True

[mypy-mozinfo.*]
ignore_missing_imports = True

[mypy-mozinstall.*]
ignore_missing_imports = True

[mypy-mozleak.*]
ignore_missing_imports = True

[mypy-mozlog.*]
ignore_missing_imports = True

[mypy-mozprocess.*]
ignore_missing_imports = True

[mypy-mozprofile.*]
ignore_missing_imports = True

[mypy-mozrunner.*]
ignore_missing_imports = True

[mypy-mozversion.*]
ignore_missing_imports = True

[mypy-taskcluster.*]
ignore_missing_imports = True

[mypy-ua_parser.*]
ignore_missing_imports = True
