Игнорирование миграции Django в файле pyproject.toml для Black Formatter
Я только что настроил Black и Pre-Commit для моего репозитория Django.
Я использовал конфигурацию по умолчанию для Black из учебника, за которым следил, и он отлично работает, но у меня возникли проблемы с исключением из него файлов миграции.
Вот конфигурация по умолчанию, которую я использовал:
pyproject.toml
[tool.black]
line-length = 79
include = '\.pyi?$'
exclude = '''
/(
\.git
| \.hg
| \.mypy_cache
| \.tox
| \.venv
| _build
| buck-out
| build
| dist
)/
'''
Я использовал https://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
папку, но по-прежнему форматирует файлы миграции.
5 ответов
Добавьте исключение миграции в свой
.pre-commit-config.yaml
файл
- id: black
exclude: ^.*\b(migrations)\b.*$
Это решение проблемы:
pyproject.toml
[tool.black]
exclude = '''
/(
| migrations
)/
'''
Поддержание двух разных мест для
exclude
config не выглядит хорошо, если его можно избежать, и не будет работать и для CI (если вы хотите, чтобы пробный прогон был черным при проверках PR). Добавление следующих работ для
pyproject.toml
а затем вы можете запустить то же самое в хуке предварительной фиксации и CI:
[tool.black]
...
exclude = '''
(
/(
...
| .+/migrations
)/
)
'''
Попробуйте это (обратите внимание на последнюю строку):
[tool.black]
line-length = 79
include = '\.pyi?$'
exclude = '''
/(
\.git
| \.hg
| \.mypy_cache
| \.tox
| \.venv
| _build
| buck-out
| build
| dist
| migrations
)/
'''
чтобы просто расширить исключения по умолчанию (без добавления всего списка), вы можете просто сделать:
[tool.black]
extend-exclude = '''
/(
| migrations
)/
'''