inspect: Fix getsource() to support decorated functions.
Issue #1764286. Patch by Claudiu Popa.
This commit is contained in:
parent
2c0a916061
commit
081bbf6b28
|
@ -817,6 +817,7 @@ def getsourcelines(object):
|
||||||
corresponding to the object and the line number indicates where in the
|
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
|
original source file the first line of code was found. An OSError is
|
||||||
raised if the source code cannot be retrieved."""
|
raised if the source code cannot be retrieved."""
|
||||||
|
object = unwrap(object)
|
||||||
lines, lnum = findsource(object)
|
lines, lnum = findsource(object)
|
||||||
|
|
||||||
if ismodule(object): return lines, 0
|
if ismodule(object): return lines, 0
|
||||||
|
|
|
@ -109,3 +109,16 @@ def annotated(arg1: list):
|
||||||
#line 109
|
#line 109
|
||||||
def keyword_only_arg(*, arg):
|
def keyword_only_arg(*, arg):
|
||||||
pass
|
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):
|
def test_replacing_decorator(self):
|
||||||
self.assertSourceEqual(mod2.gone, 9, 10)
|
self.assertSourceEqual(mod2.gone, 9, 10)
|
||||||
|
|
||||||
|
def test_getsource_unwrap(self):
|
||||||
|
self.assertSourceEqual(mod2.real, 122, 124)
|
||||||
|
|
||||||
class TestOneliners(GetSourceBase):
|
class TestOneliners(GetSourceBase):
|
||||||
fodderModule = mod2
|
fodderModule = mod2
|
||||||
def test_oneline_lambda(self):
|
def test_oneline_lambda(self):
|
||||||
|
|
|
@ -10,6 +10,9 @@ Release date: TBA
|
||||||
Core and Builtins
|
Core and Builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Issue #1764286: Fix inspect.getsource() to support decorated functions.
|
||||||
|
Patch by Claudiu Popa.
|
||||||
|
|
||||||
- Issue #18554: os.__all__ includes posix functions.
|
- Issue #18554: os.__all__ includes posix functions.
|
||||||
|
|
||||||
- Issue #21391: Use os.path.abspath in the shutil module.
|
- Issue #21391: Use os.path.abspath in the shutil module.
|
||||||
|
|
Loading…
Reference in New Issue