E131 applies inconsistently with nested calls
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 35/100
Línea de trabajo
Empieza reproduciendo los dos ejemplos de asignación con pycodestyle 2.6.0 y compara los resultados de E131 a medida que cambia el nombre de la variable. Rastrea cómo la comprobación E131 gestiona las llamadas a métodos anidadas y la indentación colgante; se considera terminado cuando un formato válido equivalente ya no cambia su comportamiento en función de la longitud del destino de la asignación, con cobertura de regresión para los ejemplos.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
I often use an indentation format like this for long method chains with something like SQLAlchemy, which seems to be acceptable according to my reading of PEP8 and doesn't raise any errors when pycodestyle is run:
rows = db.engine.execute(
table.select()
.where(table.c.column1 == 'something')
.where(table.c.column2.is_(None))
.order_by(table.c.column3)
.limit(5)
)
However, if the name of the variable being assigned to is a particular length, E131 - continuation line unaligned for hanging indent is raised:
aaaaaaaa = db.engine.execute(
table.select()
.where(table.c.column1 == 'something') # E131
.where(table.c.column2.is_(None)) # E131
.order_by(table.c.column3) # E131
.limit(5) # E131
)
It seems to be related to having the = operator aligned with the indented lines? Adding just a single character to the left side of the assignment will remove the E131.
aaaaaaaab = db.engine.execute(
table.select()
.where(table.c.column1 == 'something')
.where(table.c.column2.is_(None))
.order_by(table.c.column3)
.limit(5)
)
Is this an issue in pycodestyle, or do I just not understand what's going on here?
$ pycodestyle --version
2.6.0
- Lenguaje dominante
- Python
- Estrellas
- 5.2k
- Forks
- 756
- Merge medio
- 5 h 56 min
- PR fusionados (30 d)
- 3
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de PyCQA/pycodestyle
-
DOC: E252 is not documentedAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
PyCQA/pycodestyle#1294 · 1 comentario ·
-
Typing and formattingAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
PyCQA/pycodestyle#1302 · 3 comentarios ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 42/100
PyCQA/pycodestyle#1242 · 2 comentarios ·
-
Spurious E231 for nested format substitutionsQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
PyCQA/pycodestyle#1241 · 2 comentarios · 4 reacciones ·
-
`exclude` is applied to `.`Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
PyCQA/pycodestyle#1217 ·
Todos los issues de PyCQA/pycodestyle
Issues similares
-
Consolidate the now-identical CLI-native and composed tasks_packages guards (#5945 follow-up)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
spec-kitty/spec-kitty#6112 ·
Los mantenedores suelen responder en 1 día
-
[Bug]: OpenRouter streaming chunks report the requested router name instead of the model OpenRouter servedPosiblemente ocupada @Mrun25 la tomó hoy. Abiertobug llm translation
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
BerriAI/litellm#46095 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
uberdeveloper/fastbt#29 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
andrew-blake/melcloudhome#368 ·
Los mantenedores suelen responder en 1 día
-
lane:discover
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
SPARDiffData/differential-data-collection#33 ·
Los mantenedores suelen responder en 1 día