Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Indentation characters of the original code are not preserved

Abierto
#379 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
72/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
python
Área
tooling

Línea de trabajo

Comience con _do_add_formatted_docstring y _do_add_unformatted_docstring, y después inspeccione _do_format_code y su uso de tokenize.untokenize. Ejecute con docformatter el reproductor proporcionado con sangría mediante tabulaciones y verifique que las tabulaciones dentro de los docstrings y en las líneas de continuación de código sigan siendo tabulaciones mientras el formateo continúa funcionando.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

fresh

docformatter unnecessarily replaces tab characters with spaces. When a file
uses tabs, running docformatter on it changes indentation characters both
inside docstrings and in code outside the docstring.

Reproducer

def some_function(
	a_parameter
):
	"""Important documentation.

	with an indented item
	"""
	...
$ docformatter file.py
--- before/file.py
+++ after/file.py
@@ -1,8 +1,8 @@
 def some_function(
-	a_parameter
+ a_parameter
 ):
 	"""Important documentation.
 
-	with an indented item
-	"""
+ with an indented item
+ """
 	...

Cause

Two independent code paths substitute spaces for the original indentation
characters:

  1. _do_add_formatted_docstring and _do_add_unformatted_docstring build
    the indent for the docstring's internal lines as " " * token.start[1],
    based on the docstring's opening line. When the opening line is indented with
    a tab, each tab inside the docstring is replaced by a single space.

  2. _do_format_code runs the whole file through tokenize.untokenize,
    which reconstructs inter-token whitespace as " " * col_offset. This means
    that tabs on continuation lines are also replaced by a single space.

Lenguaje dominante
Python
Estrellas
598
Forks
93
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Aún no hemos revisado los archivos de configuración de este proyecto. Empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de PyCQA/docformatter

Todos los issues de PyCQA/docformatter

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.