WrappedJoin adds an empty line before an oversized first item
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 76/100
Línea de trabajo
Empieza localizando formatting.WrappedJoin e inspecciona sus ramas de desbordamiento; después comprueba cómo helptext._CreateAvailabilityLine combina su salida con el recorte del encabezado. Reproduce los tres ejemplos del issue y añade cobertura de regresión para un único elemento sobredimensionado, un primer elemento sobredimensionado y un separador más ancho que el ancho disponible; se considera terminado cuando no haya una línea vacía inicial y se produzcan el wrapping y la indentación esperados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
When the first item is longer than the available width, WrappedJoin starts its output with an empty line. Its caller _CreateAvailabilityLine then combines that extra newline with the header slicing, shifting the first command one column to the right.
from fire import formatting, helptext
print(formatting.WrappedJoin(['long_command'], width=5))
# ['', 'long_command']; expected ['long_command']
print(formatting.WrappedJoin(['first', 'next'], width=5))
# ['', 'first |', 'next']; expected ['first |', 'next']
print(helptext._CreateAvailabilityLine('COMMANDS', ['long_command'], line_length=30))
# The command starts at column 26 rather than the requested items_indent=25.
The overflow branches append current_line even when it is still empty. I plan to only append a non-empty current line, keeping long items intact and preserving subsequent wrapping. Regression tests for a single long item, a long first item among multiple commands and an item whose separator exceeds the width fail on main.
Reproduced on macOS / Python 3.12.13. Checked existing issues and PRs for an overlapping WrappedJoin fix.
Investigated with Codex assistance.
- Lenguaje dominante
- Python
- Estrellas
- 28.2k
- Forks
- 1.5k
- Métricas de merge de PR
- Sin PR fusionados en 30 d
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 google/python-fire
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
google/python-fire#703 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
google/python-fire#693 ·
-
Release 0.7.2?Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 38/100
google/python-fire#698 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 58/100
google/python-fire#672 · 5 comentarios ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
google/python-fire#665 · 2 comentarios ·
Todos los issues de google/python-fire
Issues similares
-
[request] poppler-data/0.4.12Abiertoupstream update
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
conan-io/conan-center-index#31098 ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
john-kurkowski/tldextract#382 ·
-
comp/tools duplicate P2 sweeper:risk-compatibility tool/mcp type/bug
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
NousResearch/hermes-agent#132042 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
deepset-ai/haystack#13092 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 85/100
feder-cr/invisible_playwright_mcp#1408 ·
Los mantenedores suelen responder en 1 día