1[tool.mypy]
2# Ensure we know what we do
3warn_redundant_casts = true
4warn_unused_ignores = true
5warn_unused_configs = true
6
7# Imports management
8ignore_missing_imports = true
9follow_imports = "skip"
10
11# Ensure full coverage
12disallow_untyped_defs = true
13disallow_incomplete_defs = true
14disallow_untyped_calls = true
15
16# Restrict dynamic typing (a little)
17# e.g. `x: List[Any]` or x: List`
18# disallow_any_generics = true
19
20strict_equality = true
21
22[tool.pytest.ini_options]
23pythonpath = "src"
24addopts = """
25    --showlocals
26    -vvv
27    --cov=watchdog
28    --cov-report=term-missing:skip-covered
29"""
30
31[tool.ruff]
32line-length = 120
33indent-width = 4
34target-version = "py39"
35
36[tool.ruff.lint]
37extend-select = ["ALL"]
38ignore = [
39    "ARG",
40    "ANN",  # TODO
41    "B023",  # TODO
42    "BLE001",
43    "C90",
44    "COM812",
45    "D",
46    "EM101",
47    "EM102",
48    "FIX",
49    "ISC001",
50    "PERF203",
51    "PL",
52    "PTH",  # TODO?
53    "S",
54    "TD",
55]
56fixable = ["ALL"]
57
58[tool.ruff.format]
59quote-style = "double"
60indent-style = "space"
61skip-magic-trailing-comma = false
62line-ending = "auto"
63docstring-code-format = true
64