WrappedJoin adds an empty line before an oversized first item
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 76/100
Direção de pesquisa
Comece localizando formatting.WrappedJoin e inspecionando seus ramos de overflow; depois, verifique como helptext._CreateAvailabilityLine combina sua saída com o fatiamento do header. Reproduza os três exemplos na issue e adicione cobertura de regressão para um único item grande demais, um primeiro item grande demais e um separador mais largo que a largura disponível; o trabalho estará concluído quando não houver uma linha vazia inicial e houver o wrapping e a indentação esperados.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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.
- Linguagem predominante
- Python
- Estrelas
- 28.2k
- Forks
- 1.5k
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de google/python-fire
-
Brace-based template arguments crash literal parsing with TypeErrorTalvez já em andamento @codewithfourtix assumiu há 4 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
google/python-fire#703 ·
-
Test suite fails on Windows: unescaped path regex in testArgPassing, NamedTemporaryFile reopen in testFileNameFireTalvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
google/python-fire#693 ·
-
Release 0.7.2?Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 38/100
google/python-fire#698 ·
-
Uncaught exception when a component has a property whose getter raises (intended?)Talvez já em andamento @rootkiller6788 assumiu há 30 dias. Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 58/100
google/python-fire#672 · 5 comentários ·
-
python-fire: (1) PAGER+shell=True RCE in console_io.More (2) bash $(...) runs when sourcing --completion from maliciously named .py file. PoC verified.Talvez já em andamento @ojassharma7 assumiu há 66 dias. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 45/100
google/python-fire#665 · 2 comentários ·
Todas as issues de google/python-fire
Issues semelhantes
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 85/100
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 75/100
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 85/100
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 85/100
data-umbrella/du-event-board#225 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100