Skip to content

Commit 1dab483

Browse files
committed
argparse: add colour to defaults in help
1 parent 274a26c commit 1dab483

File tree

3 files changed

+19
-8
lines changed

3 files changed

+19
-8
lines changed

Lib/_colorize.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,8 @@ class Argparse(ThemeSection):
169169
short_option: str = ANSIColors.BOLD_GREEN
170170
label: str = ANSIColors.BOLD_YELLOW
171171
action: str = ANSIColors.BOLD_GREEN
172+
default: str = ANSIColors.GREY
173+
default_value: str = ANSIColors.YELLOW
172174
reset: str = ANSIColors.RESET
173175
error: str = ANSIColors.BOLD_MAGENTA
174176
warning: str = ANSIColors.BOLD_YELLOW

Lib/argparse.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -748,7 +748,14 @@ def _get_help_string(self, action):
748748
if action.default is not SUPPRESS:
749749
defaulting_nargs = [OPTIONAL, ZERO_OR_MORE]
750750
if action.option_strings or action.nargs in defaulting_nargs:
751-
help += _(' (default: %(default)s)')
751+
t = self._theme
752+
default_str = _(" (default: %(default)s)")
753+
prefix, suffix = default_str.split("%(default)s")
754+
help += (
755+
f" {t.default}{prefix.lstrip()}"
756+
f"{t.default_value}%(default)s"
757+
f"{t.default}{suffix}{t.reset}"
758+
)
752759
return help
753760

754761

Lib/test/test_argparse.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7207,6 +7207,8 @@ def test_argparse_color(self):
72077207
short_b = self.theme.short_option
72087208
label_b = self.theme.label
72097209
pos_b = self.theme.action
7210+
default = self.theme.default
7211+
default_value = self.theme.default_value
72107212
reset = self.theme.reset
72117213

72127214
# Act
@@ -7233,17 +7235,17 @@ def test_argparse_color(self):
72337235
72347236
{heading}options:{reset}
72357237
{short_b}-h{reset}, {long_b}--help{reset} show this help message and exit
7236-
{short_b}-v{reset}, {long_b}--verbose{reset} more spam (default: False)
7237-
{short_b}-q{reset}, {long_b}--quiet{reset} less spam (default: False)
7238+
{short_b}-v{reset}, {long_b}--verbose{reset} more spam {default}(default: {default_value}False{default}){reset}
7239+
{short_b}-q{reset}, {long_b}--quiet{reset} less spam {default}(default: {default_value}False{default}){reset}
72387240
{short_b}-o{reset}, {long_b}--optional1{reset}
72397241
{long_b}--optional2{reset} {label_b}OPTIONAL2{reset}
7240-
pick one (default: None)
7242+
pick one {default}(default: {default_value}None{default}){reset}
72417243
{long_b}--optional3{reset} {label_b}{{X,Y,Z}}{reset}
7242-
{long_b}--optional4{reset} {label_b}{{X,Y,Z}}{reset} pick one (default: None)
7243-
{long_b}--optional5{reset} {label_b}{{X,Y,Z}}{reset} pick one (default: None)
7244-
{long_b}--optional6{reset} {label_b}{{X,Y,Z}}{reset} pick one (default: None)
7244+
{long_b}--optional4{reset} {label_b}{{X,Y,Z}}{reset} pick one {default}(default: {default_value}None{default}){reset}
7245+
{long_b}--optional5{reset} {label_b}{{X,Y,Z}}{reset} pick one {default}(default: {default_value}None{default}){reset}
7246+
{long_b}--optional6{reset} {label_b}{{X,Y,Z}}{reset} pick one {default}(default: {default_value}None{default}){reset}
72457247
{short_b}-p{reset}, {long_b}--optional7{reset} {label_b}{{Aaaaa,Bbbbb,Ccccc,Ddddd}}{reset}
7246-
pick one (default: None)
7248+
pick one {default}(default: {default_value}None{default}){reset}
72477249
{short_b}+f{reset} {label_b}F{reset}
72487250
{long_b}++bar{reset} {label_b}BAR{reset}
72497251
{long_b}-+baz{reset} {label_b}BAZ{reset}

0 commit comments

Comments
 (0)