Issue
Let us say I have a lot of commands inside my tox.ini
commands =
poetry install -v
poetry run pytest --typeguard-packages=news --xdoctest --cov -vv
poetry run flake8 --verbose
poetry run black src tests --verbose
poetry run isort . --verbose
poetry run bandit src --recursive --verbose
poetry run mypy src --verbose
poetry run darglint src --verbosity=2
poetry run darglint tests --verbosity=2
Instead of repeating verbose everywhere, is there a way I can make all of them run with/without verbose in a simpler way?
For example, if I ran
poetry run tox
it runs everything without verbose, if I remove the --verbose flag from everywhere but how do I make tox run all commands with verbose without hardcoding the verbose flag?
Solution
No, there is no simpler way, as you can see that the commands take different arguments to run in verbose mode.
If all commands would take the same arguments, e.g. --verbose
, you could do something like...
commands =
poetry install {posargs}
poetry run pytest --typeguard-packages=news --xdoctest --cov {posargs}
poetry run flake8 {posargs}
poetry run black src tests {posargs}
...
and then run
tox -e lint -- --verbose
That said... "there is no way" is a lie.
You could create a bash script and run that as a tox command instead of your current list.
P.S.: I am one of the tox maintainers, but not a bash guy :-) So good luck with that.
P.P.S.: Out of scope of this question, but you could have a look at https://pre-commit.com/ - this is the way most Python projects I know run linters nowadays.
P.P.P.S.: You could copy/paste your env, one time with and one time without the verbose mode.
Answered By - Jürgen Gmach
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.