Mercurial > p > roundup > code
diff pyproject.toml @ 7822:1b7162938988
test: add pyproject.toml: set pytest and ruff project defaults
Pytest 6 is required to use this. This means it works only for python3.
It includes a dummy setting for redis password assuming redis is
running at the default port. This requires pytest-env be installed.
At some point I expect to add project and build-system tables to allow
building using the build package. The version and long_description
specifiers in the project table will be dynamic since the version is
from roundup/__init__.py and description from doc/announcement.txt.
One open issue is how to support the equivalent of:
python setup.py build_doc
to run sphinx over the docs and include them in the share directory
bundled with the distributions.
Modified test_redis_session.py to better handle empty password.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Sat, 23 Mar 2024 02:56:01 -0400 |
| parents | |
| children | 9c58f5940c20 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pyproject.toml Sat Mar 23 02:56:01 2024 -0400 @@ -0,0 +1,111 @@ +[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 + +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] +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", + "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 + "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", + # ### 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", + # 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.per-file-ignores] +"roundup/anypy/*.py" = ["RET505", "RET506"] +"roundup/dehtml.py" = ["E501"] +"roundup/rest.py" = ["E501"] +"roundup/support.py" = ["E401"] +"roundup/security.py" = ["E701"] +"roundup/date.py" = ["E231", "E701"] +"roundup/backends/back_sqlite.py" = [ "E203" ] + +[too.ruff.lint.pylint] +max-args = 6 +max-branches=20 +max-statements = 100 + +[tool.ruff.lint.mccabe] +max-complexity = 50 + +# +#skip= +# C901 +# E228 +# E302 +# E401
