Игнорирование миграции 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
)/

'''

Поддержание двух разных мест для excludeconfig не выглядит хорошо, если его можно избежать, и не будет работать и для 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
)/
'''
Другие вопросы по тегам