您可以使用 Tox 中的文件列表循环执行命令吗

Can you loop through commands with a list of files in Tox

在我正在处理的 python 项目的 tox.ini 文件中,我有一个格式化步骤,如下所示:

[testenv:formatting]
    deps =
    isort
    black
    flake8
    flake8-quotes
    pep8-naming
commands =
    # Check source code
    isort {toxinidir}/project --check-only  --recursive
    black {toxinidir}/project --check --diff  --py36
    flake8 {toxinidir}/project

    # Check tests
    isort {toxinidir}/tests --check-only  --recursive
    black {toxinidir}/tests --check --diff  --py36
    flake8 {toxinidir}/tests

    # Check setup.py
    isort {toxinidir}/setup.py --check-only  --recursive
    black {toxinidir}/setup.py --check --diff  --py36
    flake8 {toxinidir}/setup.py

    # Check docs/conf.py
    isort {toxinidir}/docs/conf.py --check-only  --recursive
    black {toxinidir}/docs/conf.py --check --diff  --py36
    flake8 {toxinidir}/docs/conf.py

有没有什么方法可以在文件列表中删除这个和 运行 那 3 个命令(isortblackflake8)的冗长?

类似于:

commands =
    isort {toxinidir}/{list_of_files} --check-only --recursive
    black {toxinidir}/{list_of_files} --check --diff  --py36
    flake8 {toxinidir}/{list_of_files}

其中 {list_of_files} 类似于 ["project", "tests", "setup.py", "docs/conf.py"]?

我试过 shell for 循环,但这在命令中似乎不起作用。

我是否遗漏了什么,或者这是不可能的?

我从未使用过 isortblack,但我希望所有这三个命令都能同时接受多个参数,因此您应该能够编写:

isort {toxinidir}/project {toxinidir}/tests {toxinidir}/setup.py {toxinidir}/docs/conf.py --check-only  --recursive
black {toxinidir}/project  {toxinidir}/tests {toxinidir}/setup.py {toxinidir}/docs/conf.py --check --diff  --py36
flake8 {toxinidir}/project {toxinidir}/tests {toxinidir}/setup.py {toxinidir}/docs/conf.py

PS:默认情况下,tox{toxinidir} 作为当前目录运行命令,因此为了简洁起见,您可以将该部分关闭:

isort project tests setup.py docs/conf.py --check-only  --recursive
# etc.