diff options
author | Pablo Galindo <Pablogsal@gmail.com> | 2018-10-26 11:19:14 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-10-26 11:19:14 (GMT) |
commit | 7cd25434164882c2093ea41ccfc7b95a05cd5cbd (patch) | |
tree | 76c33543b495e78b0e520dd4914da68dcf616dae /Lib/functools.py | |
parent | e483f02423917dc4dfd25f46e5b9e6fce304777d (diff) | |
download | cpython-7cd25434164882c2093ea41ccfc7b95a05cd5cbd.zip cpython-7cd25434164882c2093ea41ccfc7b95a05cd5cbd.tar.gz cpython-7cd25434164882c2093ea41ccfc7b95a05cd5cbd.tar.bz2 |
bpo-34890: Make iscoroutinefunction, isgeneratorfunction and isasyncgenfunction work with functools.partial (GH-9903)
inspect.isfunction() processes both inspect.isfunction(func) and
inspect.isfunction(partial(func, arg)) correctly but some other functions in the
inspect module (iscoroutinefunction, isgeneratorfunction and isasyncgenfunction)
lack this functionality. This commits adds a new check in the mentioned functions
in the inspect module so they can work correctly with arbitrarily nested partial
functions.
Diffstat (limited to 'Lib/functools.py')
-rw-r--r-- | Lib/functools.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/Lib/functools.py b/Lib/functools.py index 39a4af8..ab7d71e 100644 --- a/Lib/functools.py +++ b/Lib/functools.py @@ -423,6 +423,12 @@ class partialmethod(object): def __isabstractmethod__(self): return getattr(self.func, "__isabstractmethod__", False) +# Helper functions + +def _unwrap_partial(func): + while isinstance(func, partial): + func = func.func + return func ################################################################################ ### LRU Cache function decorator |