Acabo de configurar Black y Pre-Commit para mi repositorio de Django.
Usé la configuración predeterminada para Black del tutorial que seguí y ha funcionado muy bien, pero tengo problemas para excluir mis archivos de migración.
Aquí está la configuración predeterminada que he estado usando:
pyproject.toml
[tool.black] line-length = 79 include = '\.pyi?$' exclude = ''' /( \.git | \.hg | \.mypy_cache | \.tox | \.venv | _build | buck-out | build | dist )/ ''' Usé Regex101.com para asegurarme de que ^.*\b(migrations)\b.*$ coincidiera con 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.*$ )/ ''' Cuando agrego esa línea regex a mi archivo de configuración y ejecuto pre-commit run --all-files , ignora la carpeta .git pero aún formatea los archivos de migraciones.
Prueba esto (observa la última línea):
[tool.black] line-length = 79 include = '\.pyi?$' exclude = ''' /( \.git | \.hg | \.mypy_cache | \.tox | \.venv | _build | buck-out | build | dist | migrations )/ '''Agregue la exclusión de migración a su .pre-commit-config.yaml
- id: black exclude: ^.*\b(migrations)\b.*$Esa es la solución al problema: pyproject.toml
[tool.black] exclude = ''' /( | migrations )/ '''Mantener dos lugares diferentes para la configuración de exclude no se ve bien si es evitable y tampoco funcionará bien para el CI (si desea realizar una ejecución en seco en negro en las comprobaciones de relaciones públicas). Agregar los siguientes trabajos para pyproject.toml y luego puede ejecutar lo mismo en el gancho de confirmación previa y CI:
[tool.black] ... exclude = ''' ( /( ... | .+/migrations )/ ) '''