New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
regression with tty detection #1459
Comments
I cannot reproduce, what is your terminal emulator, shell, etc. no-color.org is flawed in that |
I can't reproduce in zsh either |
The terminal is irrelevant (same with iTerm or native Terminal) but the shell type and configuration is relevant: it will reproduce with zsh only if you add the mentioned script for colorizing the stderr console. That snippet is a subset of https://github.com/cehoffman/dotfiles/blob/master/zsh/config#L171-L193 which I adopted long time ago. If the A simple test of ``pre-commit 1>/dev/null` demonstrates that default stream is stdout, so we cannot really blame stderr stream for breaking stdout output. In fact there is an even easier way to reproduce wrong assumption:
Once you redirect stderr to a file, it looses the tty properly, which is fine. Still, what is not fine is that the app stops producing ANSI only stdout. |
well we can't pick stdout because it breaks windows, stderr works fine without your configuration so I'd say that's a your-configuration problem |
I (effectively) beg to differ as this can easily happen with redirection anywhere. At the same time I do understand that you do no want to break the Windows hack too, so I will try to investigate the subject more in order too see how others sorted the issue. |
could maybe use one on one and one on the other? |
I've created an issue on git-for-windows: git-for-windows/git#2914 |
that looks like file output which wouldn't be in color anyway |
Is there any way to get the output from pre-commit written to the terminal or somewhere that would preserve the coloration? It's a shame that all the colorization of the output gets lost if committing with the GUI rather than on the command line |
pre-commit can't control how external tools render things -- perhaps report your bug against them? |
Ah shoot, I was just following a chain of github issues and didn't notice I'd slipped out of VSCode repos and into the pre-commit repo. I'm not quite sure where to mention this but I'll find a better place. Thanks for all your work on pre-commit! It's a fantastic tool. |
A recent regression was introduced via #1382 which broke detection on various conditions.
For example, on my MacOS host, only
stdout
andstdin
report True onisatty()
whilestderr
reports False, even if in reality there is no problem with sending ANSI to stderr.Probably we should rely solely on
stdout
for the test or to assure that we respect it for each tty.This issue is not happening with lots of people because only few of them use a method to colorize stderr, which apparently is what has a side-effect of marking it as a non tty.
Example of zsh snippet from
~/.zshrc
that does this:Once this runs you no longer gave a tty-enabled stderr.
Vast majority of CLI tools I know are using
sys.stdout.isatty()
, the only other exception I know ismypy
. https://bixense.com/clicolors/ seems to support that approach too.Regarding the never-ending struggle to control ANSI on/off behavior where each tool invented its own implementation and variables to configure behavior, it seems that someone realized that maybe is time to do something about it https://no-color.org/ :)
The text was updated successfully, but these errors were encountered: