忽略黑色格式化程序的 pyproject.toml 文件中的 Django 迁移
Posted
技术标签:
【中文标题】忽略黑色格式化程序的 pyproject.toml 文件中的 Django 迁移【英文标题】:Ignoring Django Migrations in pyproject.toml file for Black formatter 【发布时间】:2020-06-08 09:29:29 【问题描述】:我刚刚为我的 Django 存储库设置了 Black 和 Pre-Commit。
我使用了我遵循的教程中的 Black 的默认配置,它运行良好,但我无法从中排除我的迁移文件。
这是我一直使用的默认配置:
pyproject.toml
[tool.black]
line-length = 79
include = '\.pyi?$'
exclude = '''
/(
\.git
| \.hg
| \.mypy_cache
| \.tox
| \.venv
| _build
| buck-out
| build
| dist
)/
'''
我使用Regex101.com 来确保^.*\b(migrations)\b.*$
匹配apps/examples/migrations/test.py
。
[tool.black]
line-length = 79
include = '\.pyi?$'
exclude = '''
/(
\.git
| \.hg
| \.mypy_cache
| \.tox
| \.venv
| _build
| buck-out
| build
| dist
| ^.*\b(migrations)\b.*$
)/
'''
当我将该正则表达式行添加到我的配置文件并运行 pre-commit run --all-files
时,它会忽略 .git
文件夹,但仍会格式化迁移文件。
【问题讨论】:
您找到解决方案了吗? @ClarkSandholtz 你为什么不接受任何答案,或者解释为什么它们不适合你? @sinoroc 迁移的格式最终并不是什么大问题,所以我暂时不用担心修复它。很抱歉这件事做得很慢。 【参考方案1】:为exclude
配置维护两个不同的位置如果可以避免的话看起来并不好,并且对于 CI 也不起作用(如果您想在 PR 检查中干运行黑色)。
为 pyproject.toml
添加以下工作,然后您可以在预提交挂钩和 CI 中运行相同的工作:
[tool.black]
...
exclude = '''
(
/(
...
| .+/migrations
)/
)
'''
【讨论】:
【参考方案2】:将迁移排除添加到您的 .pre-commit-config.yaml
文件中
- id: black
exclude: ^.*\b(migrations)\b.*$
【讨论】:
【参考方案3】:这就是问题的解决方案:pyproject.toml
[tool.black]
exclude = '''
/(
| migrations
)/
'''
【讨论】:
您能否传递有关在排除选项下使用此语法的文档?这部分是 TOML 语言还是黑色的?在黑色文档中找不到它... 对不起,我不记得我从哪里得到的,它已经在我的项目中了:(【参考方案4】:试试这个(注意最后一行):
[tool.black]
line-length = 79
include = '\.pyi?$'
exclude = '''
/(
\.git
| \.hg
| \.mypy_cache
| \.tox
| \.venv
| _build
| buck-out
| build
| dist
| migrations
)/
'''
【讨论】:
以上是关于忽略黑色格式化程序的 pyproject.toml 文件中的 Django 迁移的主要内容,如果未能解决你的问题,请参考以下文章
如何编写可以安装包的最小工作 pyproject.toml 文件?
Scikit-learn 安装 - 准备元数据 (pyproject.toml) ... 错误
错误:无法为 gevent 构建***,这是安装基于 pyproject.toml 的项目所必需的
错误:无法为 pymssql 构建***,这是在 Mac M1 中安装基于 pyproject.toml 的项目所必需的
MacOS Python安装which is required to install pyproject.toml-based projects解决办法