diff options
-rw-r--r-- | Lib/inspect.py | 2 | ||||
-rw-r--r-- | Lib/test/test_inspect.py | 8 |
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 |