Issue #15812: inspect.getframeinfo() now correctly shows the first line of a context

Patch by Sam Breese.
This commit is contained in:
Berker Peksag 2017-01-02 06:57:43 +03:00
parent 4950ae1491
commit ff0e3b7a54
3 changed files with 9 additions and 1 deletions

View file

@ -1416,7 +1416,7 @@ def getframeinfo(frame, context=1):
except OSError: except OSError:
lines = index = None lines = index = None
else: else:
start = max(start, 1) start = max(start, 0)
start = max(0, min(start, len(lines) - context)) start = max(0, min(start, len(lines) - context))
lines = lines[start:start+context] lines = lines[start:start+context]
index = lineno - 1 - start index = lineno - 1 - start

View file

@ -391,6 +391,11 @@ class TestRetrievingSourceCode(GetSourceBase):
# Check filename override # Check filename override
self.assertEqual(inspect.getmodule(None, modfile), mod) self.assertEqual(inspect.getmodule(None, modfile), mod)
def test_getframeinfo_get_first_line(self):
frame_info = inspect.getframeinfo(self.fodderModule.fr, 50)
self.assertEqual(frame_info.code_context[0], "# line 1\n")
self.assertEqual(frame_info.code_context[1], "'A module docstring.'\n")
def test_getsource(self): def test_getsource(self):
self.assertSourceEqual(git.abuse, 29, 39) self.assertSourceEqual(git.abuse, 29, 39)
self.assertSourceEqual(mod.StupidGit, 21, 51) self.assertSourceEqual(mod.StupidGit, 21, 51)

View file

@ -140,6 +140,9 @@ Core and Builtins
Library Library
------- -------
- Issue #15812: inspect.getframeinfo() now correctly shows the first line of
a context. Patch by Sam Breese.
- Issue #29094: Offsets in a ZIP file created with extern file object and modes - Issue #29094: Offsets in a ZIP file created with extern file object and modes
"w" and "x" now are relative to the start of the file. "w" and "x" now are relative to the start of the file.