-
-
Notifications
You must be signed in to change notification settings - Fork 31k
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
gh-112730: Use color to highlight error locations #112732
Conversation
pablogsal
commented
Dec 4, 2023
•
edited by bedevere-app
bot
Loading
edited by bedevere-app
bot
- Issue: Use color to highlight error locations #112730
182fae6
to
9c7387e
Compare
Signed-off-by: Pablo Galindo <[email protected]>
On Windows in both CommandPrompt and PowerShell, |
Will investigate how to properly set this up for windows. I know the more modern Windows terminal (https://apps.microsoft.com/detail/9N0DX20HK701?hl=en-gb&gl=US) handles this correctly. We may need to deactivate this unless that new terminal is detected |
I think for the start I will look at We can iterate afterwards if someone want to add support to detecting other (working) environments. Or maybe we can expose some C calls to windows and check for |
According to https://en.wikipedia.org/wiki/Windows_Terminal, the first stable release of Windows Terminal was 18 days ago. It can run Command Prompt, Powershell, WSL Bash, and more. It is becoming default on Win 11 and can be installed on up-to-date Win 10. I will see if either an option 'cumulative update preview' or the next monthly update (in a week) installs it. |
Excellent idea. Based on my experience in trying to support this type of feature in various terminal themes for friendly-traceback, I think it would be helpful if the colors in
could also be user-configurable via environment variables or some other method. |
Thanks a lot for the suggestion. I will consider it, but for the first version, I am going to center on getting the defaults right for most environments and then we can iterate to improve the situation in different systems. |
@terryjreedy I have exposed a call to powershellwindows terminal |
Signed-off-by: Pablo Galindo <[email protected]>
58ce57a
to
9ae4c77
Compare
Some Python programs use https://github.com/tartley/colorama for colour, and some others do the colour themselves but still depend on colorama just to call their https://github.com/tartley/colorama#initialisation You could check what that does, or their newer |
That seems to wrap stderr and stdout to translate between ANSI and whatever windows uses. Given that this is critical code (we are printing errors) I don't want to mess with the standard streams not call complicated code. Also, it is not clear to me what will happen if the interpreter does this wrapping and then something else does it on top (notice the only reason they claim is safe to call multiple times is because they record global state). As mentioned before, I want to leave this as dumb as possible and the current solution that detects if is possible to use ANSI sequences seems to work nicely to detect when is safe to do. Edit: Also seems that the future for Windows is the "Windows terminal" that supports this out of the box. |
Signed-off-by: Pablo Galindo <[email protected]>
With fresh update, after "Fix multiline output", tracebacks look normal (b/w, not ansi) in Python started in CommandPrompt and in Windows Console (when started from icon or Explorer). |
Python-specific environment variables usually don't include underscores in their names (e.g. we have |
@barneygale, if you look at the current makeup of PYTHON env variables, you'll notice we are currently changing this naming scheme. New variables have an underscore to improve readability. We leave old ones as is for backwards compatibility. |
Ah ha! Thanks :) |
) Signed-off-by: Pablo Galindo <[email protected]> Co-authored-by: Łukasz Langa <[email protected]>
@@ -1118,7 +1203,7 @@ def __eq__(self, other): | |||
def __str__(self): | |||
return self._str | |||
|
|||
def format_exception_only(self, *, show_group=False, _depth=0): | |||
def format_exception_only(self, *, show_group=False, _depth=0, **kwargs): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is there any reason to use **kwargs
instead of *, colorlize=False
?
) Signed-off-by: Pablo Galindo <[email protected]> Co-authored-by: Łukasz Langa <[email protected]>