summaryrefslogtreecommitdiffstats
path: root/Lib/inspect.py
diff options
context:
space:
mode:
authorTal Einat <taleinat+github@gmail.com>2018-08-26 08:44:53 (GMT)
committerGitHub <noreply@github.com>2018-08-26 08:44:53 (GMT)
commit491740f116755e220135e596ec802ea3a0f65596 (patch)
tree8e3054260962955ca6947e026b82a8787aad6214 /Lib/inspect.py
parent032e85f3fb6d2e6668d4e860b40525ed6cb8dd69 (diff)
downloadcpython-491740f116755e220135e596ec802ea3a0f65596.zip
cpython-491740f116755e220135e596ec802ea3a0f65596.tar.gz
cpython-491740f116755e220135e596ec802ea3a0f65596.tar.bz2
[2.7] bpo-6700: Fix inspect.getsourcelines for module level frames/tracebacks (GH-8864)
(cherry picked from commit 91cb298f811961277fd4cc4a32211899d48bedcb) Co-authored-by: Vladimir Matveev <v2matveev@outlook.com>
Diffstat (limited to 'Lib/inspect.py')
-rw-r--r--Lib/inspect.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/Lib/inspect.py b/Lib/inspect.py
index 0a6cfd7..cbced17 100644
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -688,8 +688,15 @@ def getsourcelines(object):
raised if the source code cannot be retrieved."""
lines, lnum = findsource(object)
- if ismodule(object): return lines, 0
- else: return getblock(lines[lnum:]), lnum + 1
+ if istraceback(object):
+ object = object.tb_frame
+
+ # for module or frame that corresponds to module, return all source lines
+ if (ismodule(object) or
+ (isframe(object) and object.f_code.co_name == "<module>")):
+ return lines, 0
+ else:
+ return getblock(lines[lnum:]), lnum + 1
def getsource(object):
"""Return the text of the source code for an object.