gh-141571: argparse: avoid redundant early _set_color() call in HelpFormatter.__… #141609
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes: #141571
argparse currently initializes color twice when constructing a
HelpFormatter:
using the default value color=True.
calls formatter._set_color(self.color) again.
The first initialization is redundant and causes duplicate environment
lookups and repeated calls to colorize.can_colorize(), especially when
color=False. The actual color configuration only needs to happen once,
and the correct location is inside _get_formatter(), where formatter
instances are created.
This patch removes the early invocation of _set_color() in
HelpFormatter.init and simply stores the requested color preference:
self._color = colorThe color initialization continues to happen once in
_get_formatter():
formatter._set_color(self.color)This preserves the existing behavior for all consumers while avoiding
unnecessary work during HelpFormatter construction.