diff options
author | Pablo Galindo <Pablogsal@gmail.com> | 2021-07-08 16:47:12 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-08 16:47:12 (GMT) |
commit | 61eb9b5dfd919ba5d1ec9f7df0137f2e6d196972 (patch) | |
tree | fa805daccaad03d52a4de936921f585520aabb93 | |
parent | 08697ac5d1543fca3629c719ab43e50d73021631 (diff) | |
download | cpython-61eb9b5dfd919ba5d1ec9f7df0137f2e6d196972.zip cpython-61eb9b5dfd919ba5d1ec9f7df0137f2e6d196972.tar.gz cpython-61eb9b5dfd919ba5d1ec9f7df0137f2e6d196972.tar.bz2 |
[3.10] bpo-44446: support lineno being None in traceback.FrameSummary (GH-26781) (GH-27072)
As of 088a15c49d99ecb4c3bef93f8f40dd513c6cae3b, lineno is None instead
of -1 if there is no line number.
Signed-off-by: Filipe Laíns <lains@riseup.net>.
(cherry picked from commit 91a8f8c16ca9a7e2466a8241d9b41769ef97d094)
Co-authored-by: Filipe Laíns <lains@riseup.net>
Co-authored-by: Filipe Laíns <lains@riseup.net>
-rw-r--r-- | Lib/test/test_traceback.py | 4 | ||||
-rw-r--r-- | Lib/traceback.py | 7 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2021-06-17-22-39-34.bpo-44446.qwdRic.rst | 1 |
3 files changed, 9 insertions, 3 deletions
diff --git a/Lib/test/test_traceback.py b/Lib/test/test_traceback.py index dd94590..61d86a1 100644 --- a/Lib/test/test_traceback.py +++ b/Lib/test/test_traceback.py @@ -1001,6 +1001,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) diff --git a/Lib/traceback.py b/Lib/traceback.py index 7a7cca1..463cb22 100644 --- a/Lib/traceback.py +++ b/Lib/traceback.py @@ -301,9 +301,10 @@ class FrameSummary: @property def line(self): if self._line is None: - self._line = linecache.getline(self.filename, self.lineno).strip() - return self._line - + if self.lineno is None: + return None + self._line = linecache.getline(self.filename, self.lineno) + return self._line.strip() def walk_stack(f): """Walk a stack yielding the frame and line number for each frame. 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 index 0000000..6d9758f --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-17-22-39-34.bpo-44446.qwdRic.rst @@ -0,0 +1 @@ +Take into account that ``lineno`` might be ``None`` in :class:`traceback.FrameSummary`. |