]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-44446: support lineno being None in traceback.FrameSummary (GH-26781)
authorFilipe Laíns <lains@riseup.net>
Thu, 8 Jul 2021 16:28:01 +0000 (17:28 +0100)
committerGitHub <noreply@github.com>
Thu, 8 Jul 2021 16:28:01 +0000 (17:28 +0100)
As of 088a15c49d99ecb4c3bef93f8f40dd513c6cae3b, lineno is None instead
of -1 if there is no line number.

Signed-off-by: Filipe Laíns <lains@riseup.net>
Lib/test/test_traceback.py
Lib/traceback.py
Misc/NEWS.d/next/Library/2021-06-17-22-39-34.bpo-44446.qwdRic.rst [new file with mode: 0644]

index 5681dfa7753f3fd3fe571c6974fcaff1cdae0a57..50ebccef82a3fa05603667d25ec639c325120b22 100644 (file)
@@ -1204,6 +1204,10 @@ class TestFrame(unittest.TestCase):
             '"""Test cases for traceback module"""',
             f.line)
 
+    def test_no_line(self):
+        f = traceback.FrameSummary("f", None, "dummy")
+        self.assertEqual(f.line, None)
+
     def test_explicit_line(self):
         f = traceback.FrameSummary("f", 1, "dummy", line="line")
         self.assertEqual("line", f.line)
index cf1ba2a1a49ac9d99d065813a5ebac1512d0158b..7cb124188aca8a5ea390a96603f439bcb88f81cb 100644 (file)
@@ -310,6 +310,8 @@ class FrameSummary:
     @property
     def line(self):
         if self._line is None:
+            if self.lineno is None:
+                return None
             self._line = linecache.getline(self.filename, self.lineno)
         return self._line.strip()
 
diff --git a/Misc/NEWS.d/next/Library/2021-06-17-22-39-34.bpo-44446.qwdRic.rst b/Misc/NEWS.d/next/Library/2021-06-17-22-39-34.bpo-44446.qwdRic.rst
new file mode 100644 (file)
index 0000000..6d9758f
--- /dev/null
@@ -0,0 +1 @@
+Take into account that ``lineno`` might be ``None`` in :class:`traceback.FrameSummary`.