[tool.pytest.ini_options] # Note this only works under python3. Pytest 6.0+ supports # pyproject.toml and is not available for python 2. These settings can # be adapted for pytest.ini if you are running under python2. # For use with packages: # python -m pip install pytest-cov pytest-env pytest-randomly pytest-testmon minversion = "6.0" # Disable randomly by default. There are still a few tests that are # order dependent. Enable on cli for python3 only using: # "-p randomly" addopts = "-p no:randomly --durations=10 --strict-markers -r a -v" # Set the redis password to nothing. Can be overridden on cli using: # "-e pytest_redis_pw=mySecretPassword" env = [ "D:pytest_redis_pw=" ] # Don't search random directories to find tests. testpaths = [ "test", ] [tool.ruff] line-length = 128 output-format = "full" exclude = [ # ignore code imported/sourced from other places "roundup/cgi/PageTemplates/*.py", "roundup/cgi/TAL/*.py", "roundup/cgi/ZTUtils/*.py", "roundup/anypy/vendored/*.py", "dicttoxml.py" ] [tool.ruff.lint] preview = true explicit-preview-rules = true select = [ "A", # flake-8-builtins shadowing a builtin "ARG", # flake8-unused-arguments "B", # flake8-bugbear "C4", # flake8-comprehensions "C901", # McCabe complexity "COM", # flake8-commas "E", # errors # enable preview rules: # Error rules indentation "E111", "E112", "E113", # Error whitespace in brackets/around punctuation # around params, tabs/space around operators "E201", "E202", "E203", "E211", "E222", "E223", "E224", "E225", "E226", "E227", "E228", "E231", "E241", "E242", "E251", "E252", "E271", "E272", "E275", # Error blank lines between methods, classes etc. "E301", "E302", "E303", "E304", "E305", "E306", "F", # pyflakes "G", # logging format _(.... % ...) bad use _(...) % ... "I", # imports "INT", # check gettext "Q", # quoting consistancy "PERF", # performance lint "PIE794", # duplicate class field definition "PL", # pylint "PLW", # warnings "RET", # check for inconistent returns "RUF", # ruff "S", # bandit - security "SIM", # simplify code "T10", # flake8-debugger "W", # pycode whitespace warnings ] ignore = [ # raise from except hander with none or chaining; only python3 "B904", # trailing commas are getting a bit excessive "COM812", # ### before comments is fine "E266", # ignore double vs. single quotes "Q000", "Q001", "Q002", # do not replace x in (a,b) with x in {a,b} (set). python 3.2 # got a speedup in this; only python 3 "PLR6201", # 505: allow use of else/elif even if it could be removed. # if X: return; elif Z: return; else v -> # if X: return; if Z: return; v # 506: same but with a raise rather than return #"RET505", #"RET506", # use *list to expand; only python 3 "RUF005", # not using typing, so not marking mutable class values "RUF012", # do not use contextlib.suppress rather than except: pass to suppress # exception. contextlib doesn't work in python2 and is slower "SIM105", ] [tool.ruff.lint.mccabe] max-complexity = 50 [tool.ruff.lint.per-file-ignores] "roundup/anypy/*.py" = ["RET505", "RET506"] "roundup/dehtml.py" = ["E501"] # ruff is reporting unused parameters. Standard calling sequence # for all methods means some won't be used. Suppress alert ARG002. "roundup/rest.py" = ["ARG002", "E501"] "roundup/support.py" = ["E401"] "roundup/security.py" = ["E701"] "roundup/date.py" = ["E231", "E701"] "roundup/backends/back_sqlite.py" = ["E203"] [tool.ruff.lint.pylint] max-args = 6 max-branches = 20 max-statements = 100