summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/inspect.py2
-rw-r--r--Lib/test/test_inspect.py8
2 files changed, 8 insertions, 2 deletions
diff --git a/Lib/inspect.py b/Lib/inspect.py
index 3db7745..8bb3a37 100644
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -399,8 +399,6 @@ def _has_coroutine_mark(f):
while ismethod(f):
f = f.__func__
f = functools._unwrap_partial(f)
- if not (isfunction(f) or _signature_is_functionlike(f)):
- return False
return getattr(f, "_is_coroutine_marker", None) is _is_coroutine_marker
def markcoroutinefunction(func):
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
index aa75724..92aba51 100644
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -223,6 +223,10 @@ class TestPredicates(IsTestBase):
self.assertFalse(inspect.iscoroutinefunction(Cl))
# instances with async def __call__ are NOT recognised.
self.assertFalse(inspect.iscoroutinefunction(Cl()))
+ # unless explicitly marked.
+ self.assertTrue(inspect.iscoroutinefunction(
+ inspect.markcoroutinefunction(Cl())
+ ))
class Cl2:
@inspect.markcoroutinefunction
@@ -232,6 +236,10 @@ class TestPredicates(IsTestBase):
self.assertFalse(inspect.iscoroutinefunction(Cl2))
# instances with marked __call__ are NOT recognised.
self.assertFalse(inspect.iscoroutinefunction(Cl2()))
+ # unless explicitly marked.
+ self.assertTrue(inspect.iscoroutinefunction(
+ inspect.markcoroutinefunction(Cl2())
+ ))
class Cl3:
@inspect.markcoroutinefunction