Kaydet (Commit) 081bbf6b authored tarafından Yury Selivanov's avatar Yury Selivanov

inspect: Fix getsource() to support decorated functions.

Issue #1764286. Patch by Claudiu Popa.
üst 2c0a9160
......@@ -817,6 +817,7 @@ def getsourcelines(object):
corresponding to the object and the line number indicates where in the
original source file the first line of code was found. An OSError is
raised if the source code cannot be retrieved."""
object = unwrap(object)
lines, lnum = findsource(object)
if ismodule(object): return lines, 0
......
......@@ -109,3 +109,16 @@ def annotated(arg1: list):
#line 109
def keyword_only_arg(*, arg):
pass
from functools import wraps
def decorator(func):
@wraps(func)
def fake():
return 42
return fake
#line 121
@decorator
def real():
return 20
......@@ -377,6 +377,9 @@ class TestDecorators(GetSourceBase):
def test_replacing_decorator(self):
self.assertSourceEqual(mod2.gone, 9, 10)
def test_getsource_unwrap(self):
self.assertSourceEqual(mod2.real, 122, 124)
class TestOneliners(GetSourceBase):
fodderModule = mod2
def test_oneline_lambda(self):
......
......@@ -10,6 +10,9 @@ Release date: TBA
Core and Builtins
-----------------
- Issue #1764286: Fix inspect.getsource() to support decorated functions.
Patch by Claudiu Popa.
- Issue #18554: os.__all__ includes posix functions.
- Issue #21391: Use os.path.abspath in the shutil module.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment