使用预提交排除一些运行黑色的文件

Suy*_*ria 14 pre-commit python-black pre-commit.com

我想在预提交中配置黑色并从检查任何迁移文件夹中排除预提交。

我的 pyproject.toml 看起来像这样

[tool.black]
line-length = 79
target-version = ['py37']
include = '\.pyi?$'
exclude = '''

(
  /(
      \.eggs
    | \.git
    | \.hg
    | \.mypy_cache
    | \.tox
    | \.venv
    | _build
    | buck-out
    | build
    | dist
  )/
  | ^migrations/
'''
Run Code Online (Sandbox Code Playgroud)

我还配置了预提交。但是在运行pre-commit run --all-files 黑色格式迁移文件夹时,我如何配置黑色

Ant*_*ile 40

这个问题black问题跟踪概括您的具体问题

pre-commit找到所有 python 文件,然后应用pre-commit的排除,然后将该文件列表传递给底层工具(在这种情况下black

black当前(在撰写本文时)将格式化命令行上列出的所有文件——独立于blackexclude模式

建议是使用pre-commit's 排除(通过您的.pre-commit-config.yaml),以便这些文件永远不会传递给黑色:

-   id: black
    exclude: ^migrations/
Run Code Online (Sandbox Code Playgroud)

:不像黑,预先承诺其签入到您的git仓库将只皮棉文件,因此排除在清单上没有必要在这里(.git/ .mypy_cache/等)


免责声明:我是作者 pre-commit

  • @JamM.HernandezQuiceno `exclude` 是一个正则表达式,因此您可以使用 `|` - 例如:`exclude: ^(migrations/|other/folder/)` - 有关此的更多信息 [在文档中]( https://pre-commit.com/#regular-expressions) (12认同)
  • 愚蠢的问题但是,如何排除多个目录 (9认同)
  • 它位于文档中:https://pre-commit.com/#regular-expressions (2认同)

小智 11

目前,您可以使用black选项--force-exclude。如文档中所示:

--force-exclude TEXT 与 --exclude 类似,但匹配此正则表达式的文件和目录将被排除,即使它们作为参数显式传递也是如此。

因此,在您pyproject.toml更改excludeforce-exclude.