-
Notifications
You must be signed in to change notification settings - Fork 1
/
pyproject.toml
137 lines (120 loc) · 4.87 KB
/
pyproject.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
[tool.black]
include = ".*pyi?$"
line-length = 120
skip-magic-trailing-comma = true
target-version = ["py311"]
[tool.coverage.run]
concurrency = ["multiprocessing"]
parallel = true
branch = true
timid = false
source = ["tanjun"]
[tool.coverage.report]
precision = 2
show_missing = true
skip_covered = false
exclude_lines = [
"^\\s*\\.\\.\\.$",
"^\\s*@abc.abstractmethod$",
"^if typing.TYPE_CHECKING:$"
]
[tool.flake8]
accept-encodings = "utf-8"
count = true
docstring-convention = "numpy"
eradicate-aggressive = true
extend-select = ["TC100", "TC101"]
ignore-decorators = "overload"
max-complexity = 20
max-function-length = 100
# Technically this is 120, but black has a policy of "1 or 2 over is fine if it is tidier", so we have to raise this.
max-line-length = 130
show_source = false
statistics = false
ignore = [
"A003", # class attribute is shadowing a builtin
"CFQ004", # Function has too many returns.
"CFQ002", # Function has too many arguments.
"E402", # Module level import not at top of file (isn't compatible with our import style).
"IFS001", # "use a oneliner here".
"N818", # Exceptions should have an "Error" suffix in their name
"SIM105", # Use contextlib.suppress
"TRY003", # Avoid specifying long messages outside the exception class (this hits way too many std exceptions rn)
"T101", # TO-DO comment detection (T102 is FIX-ME and T103 is XXX).
"W503", # line break before binary operator.
"W504", # line break before binary operator (again, I guess).
"S101", # Use of assert detected. The enclosed code will be removed when compiling to optimised byte code.
"E203", # whitespace before ':'
"E231", # missing whitespace after ','
"S113", # Call to httpx without timeout (this defaults to 5 seconds which is fine)
]
per-file-ignores = [
"noxfile.py: F401, F403",
"python/*.py: UNT001",
"python/noxfile.template.py: F401, F403"
]
[tool.isort]
profile = "black"
py_version = "311"
force_single_line = true
[tool.mypy]
# some good strict settings
python_version = 3.8
strict = true
warn_unreachable = true
# more narrow type ignores
show_error_codes = true
# these are used by pyright
warn_unused_ignores = false
warn_redundant_casts = false
# compatibility with pyright
allow_redefinition = true
disable_error_code = ["type-abstract"]
[tool.piped]
codespell_ignore = "PullRequest"
default_sessions = ["reformat", "verify-markup", "flake8", "spell-check", "type-check"]
hide = ["build", "fetch-piped", "publish", "slot-check", "test", "test-publish", "test-coverage"]
dep_locks = ["./bot/requirements.in", "./dev-requirements", "./python/base-requirements/"]
path_ignore = "github\\/actions\\/.+.yml" # TODO: only ignore for verify-markup
top_level_targets = ["./bot", "./noxfile.py", "./python"]
version_constraint = "3.9"
[tool.piped.github_actions."*"]
default_py_ver = "3.11"
nox_dep_path = "./python/base-requirements/nox.txt"
[tool.piped.github_actions.docker_publish]
[tool.piped.github_actions.freeze_for_pr]
[tool.piped.github_actions.lint]
[tool.piped.github_actions.reformat]
[tool.piped.github_actions.resync_piped]
FILTERS = ["github/actions/*", "pyproject.toml"]
[tool.piped.github_actions.type_check]
[tool.piped.github_actions.update_licence]
[tool.piped.github_actions.upgrade_locks]
[tool.piped.github_actions.verify_locks]
[tool.pyright]
include = ["bot/main.py", "noxfile.py", "python"]
# TODO: only the bot logic is 3.11+, everything else is 3.8+
pythonVersion = "3.11"
typeCheckingMode = "strict"
reportMissingModuleSource = "error" # Is only "warning" on strict mode.
# Error code which are disabled even when general strict.
reportShadowedImports = "error"
reportCallInDefaultInitializer = "none" # Ended up just complaining about cases where this was fine (e.g. timedeltas).
reportImplicitStringConcatenation = "none" # Conflicts with flake8 config.
reportMissingSuperCall = "none" # Way too strict (requires calls to `object.__init__`).
reportPropertyTypeMismatch = "error"
reportUninitializedInstanceVariable = "error"
reportUnnecessaryTypeIgnoreComment = "error"
reportUnusedCallResult = "none" # Enforces doing `_ = ...`.
# Error codes which lead to too many false-positives.
reportIncompatibleMethodOverride = "warning" # This relies on ordering for key-word only arguments
# which is more annoying than it's worth
reportUnknownMemberType = "warning" # This messes with instance checking generic objects
reportUnknownArgumentType = "warning" # Pretty much the same as reportUnknownMemberType
reportUnknownLambdaType = "warning"
reportImportCycles = "warning" # This isn't necessarily an issue if it's type checking only.
reportUnknownVariableType = "warning" # Lotta false-positives, might fix/change later.
[tool.slotscheck]
strict-imports = true
require-superclass = true
require-subclass = true