Estoy un poco obsesionado con formatear mi código python con flake8. Sin embargo, no puedo encontrar una buena manera de resolver E501 (línea demasiado larga x> 79 caracteres) en el archivo de configuración de Django.
Primero fue así (4xE501):
AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ]y luego se me ocurrió esto:
AUTH_PASSWORD_VALIDATORS = [{ 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] Pero aún 'NAME':django.contrib.auth.password_validation.UserAttributeSimilarityValidator', es demasiado largo. ¿Hay alguna manera de formatear esto o debería ignorarlo?
Si está obsesionado con no recibir esta advertencia más que la apariencia real de su código, entonces puede romper una línea de código Python (sin romper su continuidad) agregando un carácter \ en el punto de ruptura:
Ejemplos:
# 1 from some_module import some_method, some_other_method, \ a_third_method # 2 s = "A really very long string, which exist to mesh with your pep8" \ " warning free obsession. Well, not anymore!!!" Atención: el carácter \ genera un error cuando la línea que va a dividir está dentro de {}, [] or () , por lo que simplemente puede hacer:
AUTH_PASSWORD_VALIDATORS = [{ 'NAME': 'django.contrib.auth.password_validation.' 'UserAttributeSimilarityValidator' }, ...lo cual no es tan feo considerando...
Si no desea la advertencia y le gusta su código tal como está, puede agregar:
# nopep8al final de cada línea que desee eximir del análisis pep8.
Como alternativa (la siguiente reescritura pasa PEP8):
[{"NAME": f"django.contrib.auth.password_validation.{name}"} for name in [ "UserAttributeSimilarityValidator", "MinimumLengthValidator", "CommonPasswordValidator", "NumericPasswordValidator"]] En python 2 puede usar {}".format(name) en lugar de f"" .
Estaba mirando el estilo de codificación | Django docs y encontré esto:
Una excepción a PEP 8 son nuestras reglas sobre la longitud de las líneas. No limite las líneas de código a 79 caracteres si eso significa que el código se ve significativamente más feo o es más difícil de leer. Permitimos hasta 119 caracteres, ya que este es el ancho de la revisión del código de GitHub.
Incluso la gente de Django lo evita (también prefieren flake8 para comprobar PEP8). Por lo tanto, será mejor si crea un archivo .flake8 o setup.cfg y escribe:
[flake8] max-line-length = 119