From 7b6889abfcecb36a817f1f83ef26ff1872e0cd0c Mon Sep 17 00:00:00 2001 From: Carlton Gibson Date: Wed, 11 Jan 2023 10:56:59 +0100 Subject: [PATCH] gh-94912: Adjusted check for non-standard coroutine function marker. The initial implementation did not correctly identify explicitly marked class instances. Follow up to 532aa4e4e019812d0388920768ede7c04232ebe1 --- Lib/inspect.py | 2 -- Lib/test/test_inspect.py | 8 ++++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Lib/inspect.py b/Lib/inspect.py index 3db7745e8a5eeb..8bb3a375735af6 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 aa757241aca9e1..92aba519d28a08 100644 --- a/Lib/test/test_inspect.py +++ b/Lib/test/test_inspect.py @@ -223,6 +223,10 @@ async def __call__(self): 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 @@ def __call__(self): 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 pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy