TabError and IndentationError from line continuation
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Python
- Estrellas
- 77.2k
- Forks
- 35.9k
- Métricas de merge de PR
- Métricas de PR pendientes
Descripción
Bug report
Bug description:
The documentation states:
Indentation cannot be split over multiple physical lines using backslashes; the whitespace up to the first backslash determines the indentation.
When this rule applies to some, but not all, lines in a block, a TabError is sometimes unexpectedly raised:
L1 = 'if 1:\n'
L2 = ' 1\n'
L3 = ' \\\n'
L4 = ' 1\n'
exec(L1 + L2 + L3 + L4)
# works as expected
L1 = 'if 1:\n'
L2 = '\t1\n'
L3 = '\t\\\n'
L4 = '\t\t1\n'
exec(L1 + L2 + L3 + L4)
# TabError: inconsistent use of tabs and spaces in indentation
Also, when a line containing only a backslash is explicitly joined with an indented line, an IndentationError is unexpectedly raised:
exec('\\\n 1')
# IndentationError: unexpected indent
CPython versions tested on:
3.10, 3.11, 3.12, 3.13, 3.14
Operating systems tested on:
macOS
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.
Línea de trabajo
Empieza ejecutando los dos reproductores de exec() en las versiones de CPython indicadas y, después, sigue el procesamiento de la indentación y la continuación de línea implicado en ambos casos. Añade cobertura de regresión para el comportamiento notificado de TabError e IndentationError y confirma que las pruebas capturan los resultados previstos sin cambiar otros errores de indentación no relacionados.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- python
- Área
- compilers
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 38/100