nomenclatura - Python: error de sangría de Pep8 E128... ¿cómo puede esto por estilo?
nomenclatura python (3)
¿Alguna vez has intentado con django-annoying ?
Puedes hacerlo...
@render_to(''foo/page.html'')
def bar(request):
return {''situations'': situations,
''active'': active_req,}
Creo que esto es más limpio y puede ayudarte con el estilo PEP8 ...
Tengo esta declaración como algunas líneas:
return render_to_response(''foo/page.html'',
{
''situations'': situations,
''active'': active_req,
},
context_instance=RequestContext(request))
Tal como está, usando el script PEP8, me da un error "E128: línea de continuación con sangría inferior para sangría visual" en la segunda línea.
He probado muchas formas diferentes de formatear, y la única forma en que puedo hacer que PEP8 deje de quejarme es:
return render_to_response(''foo/page.html'', {
''situations'': situations,
''active'': active_req,
},
context_instance=RequestContext(request))
Pero esto parece basura.
Sugerencias? ¡E124, E126 y E128 parecen ser un gran dolor!
No me importan las soluciones que tienen la {
en la primera línea (o la propia), pero espero que haya una solución donde la },
y la context_instance...
estén en el mismo nivel de sangría.
El problema es que se supone que todos los parámetros están sangrados al mismo nivel. Eso incluye cualquier parámetro (s) en la línea de llamada de la función inicial.
Entonces, mientras puedas arreglarlo así:
return render_to_response(''foo/page.html'',
{
''situations'': situations,
''active'': active_req,
},
context_instance=RequestContext(request))
... eso generalmente lo hará en conflicto con la regla de las 80 columnas, y ciertamente hará que su código sea más feo incluso si pep8
no se queja. Lo que probablemente quieras es esto:
return render_to_response(
''foo/page.html'',
{
''situations'': situations,
''active'': active_req,
},
context_instance=RequestContext(request))
O, por supuesto, puedes romper tu expresión gigante:
d = {
''situations'': situations,
''active'': active_req,
}
context = RequestContext(request)
return render_to_response(''foo/page.html'', d, context_instance=context)
Estoy bastante seguro de que quiere que le hagas sangrado todo a los parens de apertura (si necesitas un parámetro allí), es decir,
return render_to_response(''foo/page.html'',
{
''situations'': situations,
''active'': active_req,
},
context_instance=RequestContext(request))
de otra manera,
return render_to_response(
''foo/page.html'',
{
''situations'': situations,
''active'': active_req,
},
context_instance=RequestContext(request))
También debe ser legal.
O algo así. Ver los documentos pep sobre prácticas de sangría adecuadas
Aquí están los ejemplos relevantes de la especificación, para un vagabundo que pasa:
Yes: # Aligned with opening delimiter foo = long_function_name(var_one, var_two, var_three, var_four) # More indentation included to distinguish this from the rest. def long_function_name( var_one, var_two, var_three, var_four): print(var_one) No: # Arguments on first line forbidden when not using vertical alignment foo = long_function_name(var_one, var_two, var_three, var_four) # Further indentation required as indentation is not distinguishable def long_function_name( var_one, var_two, var_three, var_four): print(var_one) Optional: # Extra indentation is not necessary. foo = long_function_name( var_one, var_two, var_three, var_four)