progressbar label should not be shown when the output is not a tty #401
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.
If you pass a label to a progressbar, the label is incorrectly included when you redirect the command output to a file.
The docstring states: "By default, this progress bar will not be rendered if the file is not a terminal."
However, the label is always displayed even when the output is not a tty.
The
render_finish
function does this correctly:https://github.com/mitsuhiko/click/blob/36f83d91e27b5b88ee806cb40f284658e2f9cdb5/click/_termui_impl.py#L106
In contrast
render_progress
always prints a label even ifself.is_hidden
, and should just return instead without any echo:https://github.com/mitsuhiko/click/blob/36f83d91e27b5b88ee806cb40f284658e2f9cdb5/click/_termui_impl.py#L183
This simple command shows the issue:
This is correct:
This is not:
I would expect the redirected stdout to be empty in this case.
This commit fixes this.