Estamos aplicando el estilo de código negro a un proyecto Django.
En todos los tutoriales/ejemplos que encuentro (como en django cookiecutter y este blog ), sigo viendo los archivos de migración de django excluidos del linter.
Pero en mi opinión, estos siguen siendo archivos de python. Claro, es posible que Django no los genere automáticamente para cumplir con la especificación Black. Pero no es que los desarrolladores siempre escriban su código para cumplir con las especificaciones de Black... ¡para eso está el linting!
¿Por qué los archivos de migración se considerarían diferentes a cualquier otro archivo de Python?
NB: soy consciente de la posibilidad de cambiar una migración ya aplicada si tiene migraciones preexistentes; esto requiere cuidado en la primera aplicación (al igual que la primera aplicación para el resto de la base de código, francamente) pero seguramente no lo es una razón para no hacerlo?
EDITAR - @torxed pidió un ejemplo de un archivo de migración de django
No estoy seguro de cuán útil será esto tbh, pero un archivo de migración de django típico podría verse así (en este caso, agregar un campo char a una tabla):
# Generated by Django 2.2.3 on 2019-10-28 09:45 from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ ('api', '0009_figures_notes_tables'), ] operations = [ migrations.AlterField( model_name='project', name='processed_kmz_sha', field=models.CharField(max_length=255), ), ]
Me mordí la bala y apliqué Black a mis archivos de migraciones, progresivamente en media docena de proyectos de django.
Ningún problema en absoluto, todo implementado en producción desde hace meses.
Así que la respuesta es: no hay ninguna razón por la que no hacer esto, y creo que los archivos de migración deberían incluirse, para que leerlos sea una experiencia coherente con el resto del proyecto.
Rara vez, si alguna vez, necesita editar archivos de migración. Por eso, tiene sentido excluir del diseño de código ya acordado de los archivos.