Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork32.4k
gh-112730: Use color to highlight error locations#112732
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Uh oh!
There was an error while loading.Please reload this page.
Conversation
182fae6
to9c7387e
CompareUh oh!
There was an error while loading.Please reload this page.
Signed-off-by: Pablo Galindo <pablogsal@gmail.com>
On Windows in both CommandPrompt and PowerShell, |
pablogsal commentedDec 5, 2023 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
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 |
pablogsal commentedDec 5, 2023 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
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 tohttps://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. |
aroberge commentedDec 5, 2023
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 |
Uh oh!
There was an error while loading.Please reload this page.
Signed-off-by: Pablo Galindo <pablogsal@gmail.com>
58ce57a
to9ae4c77
CompareSome Python programs usehttps://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 |
pablogsal commentedDec 5, 2023 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
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 callcomplicated 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 <pablogsal@gmail.com>
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). |
Uh oh!
There was an error while loading.Please reload this page.
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 noticewe 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 :) |
@@ -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
?
Uh oh!
There was an error while loading.Please reload this page.