blob: b08f23242d7080720257d36f37e89cc7f0eb0477 [file] [edit]
# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
# For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt
[build-system]
requires = ['setuptools']
build-backend = 'setuptools.build_meta'
## MYPY
[tool.mypy]
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
follow_imports = "silent"
ignore_missing_imports = true
no_implicit_optional = true
show_error_codes = true
warn_redundant_casts = true
warn_return_any = true
warn_unreachable = true
warn_unused_configs = true
warn_unused_ignores = true
exclude = """(?x)(
^tests/.*_plugin\\.py$ # not part of our test suite.
)"""
## PYLINT
[tool.pylint.basic]
no-docstring-rgx = "__.*__|test[A-Z_].*|setUp|_decorator|_wrapper|_.*__.*"
[tool.pylint.classes]
defining-attr-methods = [
"__init__",
"__new__",
"__post_init__",
"setUp",
"reset",
"_reset",
]
[tool.pylint.design]
max-args = 15
max-attributes = 40
max-bool-expr = 5
max-branches = 50
max-locals = 50
max-parents = 12
max-public-methods = 500
max-returns = 20
max-statements = 150
min-public-methods = 0
[tool.pylint.main]
extension-pkg-whitelist = ["greenlet"]
[tool.pylint."messages control"]
enable = [
"useless-suppression",
]
disable = [
"spelling",
# Messages that are just silly:
"locally-disabled",
"exec-used",
"global-statement",
"broad-except",
"no-else-return",
"subprocess-run-check",
"use-dict-literal",
# Messages that may be silly:
"no-member",
"using-constant-test",
"too-many-nested-blocks",
"too-many-ancestors",
"unnecessary-pass",
"no-else-break",
"no-else-continue",
# Questionable things, but it's ok, I don't need to be told:
"import-outside-toplevel",
"self-assigning-variable",
"consider-using-with",
"missing-timeout",
"too-many-lines",
"use-implicit-booleaness-not-comparison",
"too-many-positional-arguments",
# Formatting stuff
"superfluous-parens",
# Messages that are noisy for now, eventually maybe we'll turn them on:
"invalid-name",
"protected-access",
"unspecified-encoding",
"consider-using-f-string",
"duplicate-code",
"cyclic-import",
]
[tool.pylint.reports]
score = false
[tool.pylint.variables]
dummy-variables-rgx = "_|unused|.*_unused"
ignored-argument-names = "_|unused|.*_unused"
## PYTEST
[tool.pytest.ini_options]
addopts = "-q -n auto -p no:legacypath --strict-markers --no-flaky-report -rfEX --failed-first"
python_classes = "*Test"
markers = [
"expensive: too slow to run during \"make smoke\"",
]
# How come these warnings are suppressed successfully here, but not in conftest.py??
filterwarnings = [
# Sample 'ignore':
#"ignore:the imp module is deprecated in favour of importlib:DeprecationWarning",
## Pytest warns if it can't collect things that seem to be tests. This should be an error.
"error::pytest.PytestCollectionWarning",
]
# xfail tests that pass should fail the test suite
xfail_strict = true
# https://docs.pytest.org/en/stable/reference/reference.html#confval-verbosity_assertions
verbosity_assertions = 5
balanced_clumps = [
# Because of expensive session-scoped fixture:
"VirtualenvTest",
# Because of shared-file manipulations (~/tests/actual/testing):
"CompareTest",
# No idea why this one fails if run on separate workers:
"GetZipBytesTest",
]
## RUFF
# We aren't using ruff for real yet...
[tool.ruff]
target-version = "py38" # Can't use [project]
line-length = 100
[tool.ruff.lint]
select = ["ALL"]
ignore = [
"ANN101", # Missing type annotation for `self` in method
"ERA001", # Found commented-out code
]