]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-102799: use exception instance instead of sys.exc_info() (#102885)
authorIrit Katriel <1055913+iritkatriel@users.noreply.github.com>
Fri, 31 Mar 2023 10:23:02 +0000 (11:23 +0100)
committerGitHub <noreply@github.com>
Fri, 31 Mar 2023 10:23:02 +0000 (11:23 +0100)
Lib/logging/__init__.py
Lib/pickle.py
Lib/site.py
Lib/test/inspect_fodder.py
Lib/test/test_inspect.py
Lib/test/test_with.py
Lib/tkinter/filedialog.py

index 9241d73d0fd03c110b5f767a2d4ed806b4f9f263..056380fb2287afcae936144819834a2bc05d099f 100644 (file)
@@ -173,8 +173,8 @@ else: #pragma: no cover
         """Return the frame object for the caller's stack frame."""
         try:
             raise Exception
-        except Exception:
-            return sys.exc_info()[2].tb_frame.f_back
+        except Exception as exc:
+            return exc.__traceback__.tb_frame.f_back
 
 #
 # _srcfile is used when walking the stack to check when we've got the first
index 15fa5f6e5799321add3e1b154dad164ad5ea8759..fe86f80f51d3b99b195f9971726250d4b472898f 100644 (file)
@@ -1481,7 +1481,7 @@ class _Unpickler:
                 value = klass(*args)
             except TypeError as err:
                 raise TypeError("in constructor for %s: %s" %
-                                (klass.__name__, str(err)), sys.exc_info()[2])
+                                (klass.__name__, str(err)), err.__traceback__)
         else:
             value = klass.__new__(klass)
         self.append(value)
index 7faf1c6f6af22315dc875c816bb2fe0b05525db8..5c1ff31f4e0f9ee6592bf0913f2a7ff3f1e752a4 100644 (file)
@@ -190,11 +190,11 @@ def addpackage(sitedir, name, known_paths):
                 if not dircase in known_paths and os.path.exists(dir):
                     sys.path.append(dir)
                     known_paths.add(dircase)
-            except Exception:
+            except Exception as exc:
                 print("Error processing line {:d} of {}:\n".format(n+1, fullname),
                       file=sys.stderr)
                 import traceback
-                for record in traceback.format_exception(*sys.exc_info()):
+                for record in traceback.format_exception(exc):
                     for line in record.splitlines():
                         print('  '+line, file=sys.stderr)
                 print("\nRemainder of file ignored", file=sys.stderr)
index e1287a315901cf6b0249b452393eab32281dd97b..567dfbab804867a36205a98c15d8a2e30b892108 100644 (file)
@@ -1,7 +1,7 @@
 # line 1
 'A module docstring.'
 
-import sys, inspect
+import inspect
 # line 5
 
 # line 7
@@ -41,8 +41,8 @@ class StupidGit:
     def argue(self, a, b, c):
         try:
             spam(a, b, c)
-        except:
-            self.ex = sys.exc_info()
+        except BaseException as e:
+            self.ex = e
             self.tr = inspect.trace()
 
     @property
@@ -78,8 +78,8 @@ async def lobbest(grenade):
 currentframe = inspect.currentframe()
 try:
     raise Exception()
-except:
-    tb = sys.exc_info()[2]
+except BaseException as e:
+    tb = e.__traceback__
 
 class Callable:
     def __call__(self, *args):
index 803b259d961f540bc086cf09ea4715fa38a1fc78..3a3646f1861e8070a184984412a903fd29d8d2ec 100644 (file)
@@ -430,7 +430,7 @@ class TestInterpreterStack(IsTestBase):
         git.abuse(7, 8, 9)
 
     def test_abuse_done(self):
-        self.istest(inspect.istraceback, 'git.ex[2]')
+        self.istest(inspect.istraceback, 'git.ex.__traceback__')
         self.istest(inspect.isframe, 'mod.fr')
 
     def test_stack(self):
index 07522bda6a55839c1c9962530b9c93787e375208..d81902327a7e0a549379d420150f43cebd5ee108 100644 (file)
@@ -79,11 +79,11 @@ class Nested(object):
             try:
                 if mgr.__exit__(*ex):
                     ex = (None, None, None)
-            except:
-                ex = sys.exc_info()
+            except BaseException as e:
+                ex = (type(e), e, e.__traceback__)
         self.entered = None
         if ex is not exc_info:
-            raise ex[0](ex[1]).with_traceback(ex[2])
+            raise ex
 
 
 class MockNested(Nested):
index 600d0bd49fe2cf6095511a889db6477ad3bfa321..e2eff98e601c07c00baf66a4797915c47866acc3 100644 (file)
@@ -461,7 +461,6 @@ def test():
 
     # Start off with UTF-8
     enc = "utf-8"
-    import sys
 
     # See whether CODESET is defined
     try:
@@ -477,9 +476,9 @@ def test():
     try:
         fp=open(openfilename,"r")
         fp.close()
-    except:
+    except BaseException as exc:
         print("Could not open File: ")
-        print(sys.exc_info()[1])
+        print(exc)
 
     print("open", openfilename.encode(enc))