[Python-checkins] gh-102799: replace internal sys.exc_info() call by sys.exception() (#106746)

iritkatriel webhook-mailer at python.org
Fri Jul 14 15:41:27 EDT 2023


https://github.com/python/cpython/commit/fb32f35c0585b1dbb87b6f254818e1f485a50f65
commit: fb32f35c0585b1dbb87b6f254818e1f485a50f65
branch: main
author: Irit Katriel <1055913+iritkatriel at users.noreply.github.com>
committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com>
date: 2023-07-14T20:41:24+01:00
summary:

gh-102799: replace internal sys.exc_info() call by sys.exception() (#106746)

files:
M Lib/logging/__init__.py

diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py
index 2a011b6d2ff15..46e86cb87ecfc 100644
--- a/Lib/logging/__init__.py
+++ b/Lib/logging/__init__.py
@@ -662,7 +662,7 @@ def formatException(self, ei):
         # See issues #9427, #1553375. Commented out for now.
         #if getattr(self, 'fullstack', False):
         #    traceback.print_stack(tb.tb_frame.f_back, file=sio)
-        traceback.print_exception(ei[0], ei[1], tb, None, sio)
+        traceback.print_exception(ei[0], ei[1], tb, limit=None, file=sio)
         s = sio.getvalue()
         sio.close()
         if s[-1:] == "\n":
@@ -1080,14 +1080,14 @@ def handleError(self, record):
         The record which was being processed is passed in to this method.
         """
         if raiseExceptions and sys.stderr:  # see issue 13807
-            t, v, tb = sys.exc_info()
+            exc = sys.exception()
             try:
                 sys.stderr.write('--- Logging error ---\n')
-                traceback.print_exception(t, v, tb, None, sys.stderr)
+                traceback.print_exception(exc, limit=None, file=sys.stderr)
                 sys.stderr.write('Call stack:\n')
                 # Walk the stack frame up until we're out of logging,
                 # so as to print the calling context.
-                frame = tb.tb_frame
+                frame = exc.__traceback__.tb_frame
                 while (frame and os.path.dirname(frame.f_code.co_filename) ==
                        __path__[0]):
                     frame = frame.f_back
@@ -1112,7 +1112,7 @@ def handleError(self, record):
             except OSError: #pragma: no cover
                 pass    # see issue 5971
             finally:
-                del t, v, tb
+                del exc
 
     def __repr__(self):
         level = getLevelName(self.level)



More information about the Python-checkins mailing list