mirror of
https://github.com/python/cpython.git
synced 2024-11-27 11:55:13 +08:00
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
|
||||
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.
|
||||
|
Loading…
Reference in New Issue
Block a user