From e5345bd6140483b469f22dcc2544b5f7c66b7ed2 Mon Sep 17 00:00:00 2001 From: Nikita Sobolev Date: Fri, 7 Jun 2024 18:48:31 +0300 Subject: [PATCH 1/2] [3.12] gh-120200: Fix `inspect.iscoroutinefunction(inspect) is True` corner case (GH-120214) (cherry picked from commit 10fb1b8f36ab2fc3d2fe7392d5735dd19c5e2365) Co-authored-by: Nikita Sobolev --- Lib/inspect.py | 6 +++--- Lib/test/test_inspect/test_inspect.py | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Lib/inspect.py b/Lib/inspect.py index 497169dacb52e1..c93d0a5ae40f43 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -401,13 +401,13 @@ def isgeneratorfunction(obj): return _has_code_flag(obj, CO_GENERATOR) # A marker for markcoroutinefunction and iscoroutinefunction. -_is_coroutine_marker = object() +_is_coroutine_mark = object() def _has_coroutine_mark(f): while ismethod(f): f = f.__func__ f = functools._unwrap_partial(f) - return getattr(f, "_is_coroutine_marker", None) is _is_coroutine_marker + return getattr(f, "_is_coroutine_marker", None) is _is_coroutine_mark def markcoroutinefunction(func): """ @@ -415,7 +415,7 @@ def markcoroutinefunction(func): """ if hasattr(func, '__func__'): func = func.__func__ - func._is_coroutine_marker = _is_coroutine_marker + func._is_coroutine_marker = _is_coroutine_mark return func def iscoroutinefunction(obj): diff --git a/Lib/test/test_inspect/test_inspect.py b/Lib/test/test_inspect/test_inspect.py index 4a6d2b3e366ce0..f44063eed9b813 100644 --- a/Lib/test/test_inspect/test_inspect.py +++ b/Lib/test/test_inspect/test_inspect.py @@ -199,6 +199,9 @@ def test_iscoroutine(self): inspect.iscoroutinefunction( functools.partial(functools.partial( gen_coroutine_function_example)))) + self.assertFalse(inspect.iscoroutinefunction(gen_coro_pmi)) + self.assertFalse(inspect.iscoroutinefunction(gen_coro_pmc)) + self.assertFalse(inspect.iscoroutinefunction(inspect)) self.assertFalse(inspect.iscoroutine(gen_coro)) self.assertTrue( From e70566809a71195e9450b04958e43e205c63b928 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Fri, 7 Jun 2024 19:26:01 +0300 Subject: [PATCH 2/2] Fix backport --- Lib/test/test_inspect/test_inspect.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/Lib/test/test_inspect/test_inspect.py b/Lib/test/test_inspect/test_inspect.py index f44063eed9b813..1302f962856f75 100644 --- a/Lib/test/test_inspect/test_inspect.py +++ b/Lib/test/test_inspect/test_inspect.py @@ -199,8 +199,6 @@ def test_iscoroutine(self): inspect.iscoroutinefunction( functools.partial(functools.partial( gen_coroutine_function_example)))) - self.assertFalse(inspect.iscoroutinefunction(gen_coro_pmi)) - self.assertFalse(inspect.iscoroutinefunction(gen_coro_pmc)) self.assertFalse(inspect.iscoroutinefunction(inspect)) self.assertFalse(inspect.iscoroutine(gen_coro))