summaryrefslogtreecommitdiffstats
path: root/Lib/code.py
diff options
context:
space:
mode:
authorCF Bolz-Tereick <cfbolz@gmx.de>2024-08-23 11:59:08 (GMT)
committerGitHub <noreply@github.com>2024-08-23 11:59:08 (GMT)
commit0955db1bd80edf8e20788b95dcfe8580aa0ade19 (patch)
tree485812e0a0656f1b9d7998e46f052761c0e75147 /Lib/code.py
parent95b4f9c9ad3d7a13442a6874bbcf3683d17723dc (diff)
downloadcpython-0955db1bd80edf8e20788b95dcfe8580aa0ade19.zip
cpython-0955db1bd80edf8e20788b95dcfe8580aa0ade19.tar.gz
cpython-0955db1bd80edf8e20788b95dcfe8580aa0ade19.tar.bz2
[3.13] gh-82378 fix sys.tracebacklimit in pyrepl, approach 2 (GH-123062) (#123252)
Make sure that pyrepl uses the same logic for sys.tracebacklimit as both the basic repl and the standard sys.excepthook (cherry picked from commit 63603bca35798c166e1b8e0be76aef69217f8b1b)
Diffstat (limited to 'Lib/code.py')
-rw-r--r--Lib/code.py20
1 files changed, 11 insertions, 9 deletions
diff --git a/Lib/code.py b/Lib/code.py
index 25f5b6a..a70d8cc 100644
--- a/Lib/code.py
+++ b/Lib/code.py
@@ -107,17 +107,16 @@ class InteractiveInterpreter:
The output is written by self.write(), below.
"""
- colorize = kwargs.pop('colorize', False)
try:
typ, value, tb = sys.exc_info()
if filename and issubclass(typ, SyntaxError):
value.filename = filename
source = kwargs.pop('source', "")
- self._showtraceback(typ, value, None, colorize, source)
+ self._showtraceback(typ, value, None, source)
finally:
typ = value = tb = None
- def showtraceback(self, **kwargs):
+ def showtraceback(self):
"""Display the exception that just occurred.
We remove the first stack item because it is our own code.
@@ -125,14 +124,13 @@ class InteractiveInterpreter:
The output is written by self.write(), below.
"""
- colorize = kwargs.pop('colorize', False)
try:
typ, value, tb = sys.exc_info()
- self._showtraceback(typ, value, tb.tb_next, colorize, '')
+ self._showtraceback(typ, value, tb.tb_next, '')
finally:
typ = value = tb = None
- def _showtraceback(self, typ, value, tb, colorize, source):
+ def _showtraceback(self, typ, value, tb, source):
sys.last_type = typ
sys.last_traceback = tb
value = value.with_traceback(tb)
@@ -143,9 +141,7 @@ class InteractiveInterpreter:
value.text = lines[value.lineno - 1]
sys.last_exc = sys.last_value = value = value.with_traceback(tb)
if sys.excepthook is sys.__excepthook__:
- lines = traceback.format_exception(typ, value, tb,
- colorize=colorize)
- self.write(''.join(lines))
+ self._excepthook(typ, value, tb)
else:
# If someone has set sys.excepthook, we let that take precedence
# over self.write
@@ -162,6 +158,12 @@ class InteractiveInterpreter:
print('Original exception was:', file=sys.stderr)
sys.__excepthook__(typ, value, tb)
+ def _excepthook(self, typ, value, tb):
+ # This method is being overwritten in
+ # _pyrepl.console.InteractiveColoredConsole
+ lines = traceback.format_exception(typ, value, tb)
+ self.write(''.join(lines))
+
def write(self, data):
"""Write a string.