`HelpFormatter.write_usage` breaks options at a hyphen
I maintainer di solito rispondono entro 1 giorno
@kdeldycke ci sta già lavorando.
Dal 2/11/2026.
- #3385 di @cyphercodes — chiusa senza merge
- #3388 di @charlieleith — chiusa senza merge
- #3399 di @MackDing — chiusa senza merge
- #3411 di @lihan3238 — chiusa senza merge
- #3414 di @kimjune01 — chiusa senza merge
- #3425 di @RajvardhanPatil07 — chiusa senza merge
- #3437 di @c-tonneslan — chiusa senza merge
- #3441 di @goutamadwant — chiusa senza merge
- #3518 di @thakoreh — chiusa senza merge
- #3902 di @kdeldycke — aperta
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 76/100
Direzione di ricerca
Inizia da click.HelpFormatter.write_usage e dal relativo percorso wrap_text, quindi esegui la riproduzione Python fornita con width 65. Verifica l’output rispetto al testo di utilizzo previsto e aggiungi una copertura che dimostri che le opzioni con trattini rimangono intere ai limiti di riga, mentre il ritorno a capo continua a rispettare la larghezza configurata.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
If an option containing a hyphen in its name is printed at the line break limit, it’s broken at the hyphen.
Reproduction
import click
options = [
"--enable-verbose-logging",
"--output-file-path",
"--max-retry-count",
"--disable-cache-mode",
"--config-file-location",
"--user-auth-token",
"--auto-update-interval",
"--force-overwrite-existing",
"--network-timeout-seconds",
"--debug-trace-enabled",
]
f = click.HelpFormatter(width=65)
f.write_usage("program", " ".join(options))
print(f.getvalue())
Expected output
Usage: program --enable-verbose-logging --output-file-path
--max-retry-count --disable-cache-mode
--config-file-location --user-auth-token
--auto-update-interval --force-overwrite-existing
--network-timeout-seconds --debug-trace-enabled
Actual output
Usage: program --enable-verbose-logging --output-file-path --max-
retry-count --disable-cache-mode --config-file-
location --user-auth-token --auto-update-interval
--force-overwrite-existing --network-timeout-
seconds --debug-trace-enabled
Environment
- Python version: 3.12.3
- Click version: 8.3.1
Additional information
width option
This also happens without specifying width. The width option is altered in the example to make the issue more frequent.
Relevance to other use cases
This may likely only affect:
- direct users of
click.HelpFormatter, - users of
click.argumentwith custommetavarcontaining hyphens.
On the other hand, click prints [OPTIONS] instead of listing individual options on the usage line and uses underscores instead of hyphens in argument names (unless specifying metavar).
Cause
I looked into the code and found that textwrap.TextWrapper is used under the hood, which has the break_on_hyphens option. However, there is no option for the click user to influence this, apart from reimplementing HelpFormatter.write_usage (in a subclass) and wrap_text.
- Lingua principale
- Python
- Stelle
- 17.8k
- Fork
- 3.3k
- Merge medio
- 3g 3h
- PR unite (30g)
- 13
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di pallets/click
-
`show_envvar=True` Drops Environment Variable from Error Messages When Using `auto_envvar_prefix`Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 1 giorno
-
More private utilities that need to be marked and public api deprecatedForse di nuovo libera Una pull request per questa issue è stata chiusa senza essere unita. Apertatyping
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
pallets/click#3847 · 9 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Automatically append ellipsis (`...`) to metavars when `multiple=True` in optionsForse già presa @SparshGarg999 l’ha presa 89 giorni fa. Apertahelp output
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
pallets/click#3652 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Add glossary of terms to click reference docsForse già presa @rohitbarhate111-commits l’ha presa 55 giorni fa. Apertadocs
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
pallets/click#3077 · 5 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 58/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di pallets/click
Issue simili
-
needs-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
gke-labs/kube-agents#5671 ·
I maintainer di solito rispondono entro 1 giorno
-
docs(auth): Method B step 4 should tell users to tick "Use this client for an AI-powered agent"Apertadocumentation next-release v0.9.6
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
khuisman/mcp-gee-sweet#1446 ·
I maintainer di solito rispondono entro 1 giorno
-
In-box secret files written before their chmod: lc-creds, stacks tee, and the workspace tokenApertamodel:sonnet runtime:claude security size:S
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
FootprintAI/Containarium#3671 ·
I maintainer di solito rispondono entro 1 giorno
-
HolidayBase: reassigning `language` does not re-initialize translations or re-populate holidaysForse già presa @shikhabhadoria l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
vacanza/holidays#4116 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug CLI exec
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno