From: Nikita Sobolev Date: Fri, 7 Jun 2024 15:48:31 +0000 (+0300) Subject: gh-120200: Fix `inspect.iscoroutinefunction(inspect) is True` corner case (#120214) X-Git-Tag: v3.14.0a1~1564 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=10fb1b8f36ab2fc3d2fe7392d5735dd19c5e2365;p=thirdparty%2FPython%2Fcpython.git gh-120200: Fix `inspect.iscoroutinefunction(inspect) is True` corner case (#120214) --- diff --git a/Lib/inspect.py b/Lib/inspect.py index e6e49a4ffa67..2b7f8bec482f 100644 --- a/Lib/inspect.py +++ b/Lib/inspect.py @@ -403,13 +403,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): """ @@ -417,7 +417,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 65007c16203c..0a4fa9343f15 100644 --- a/Lib/test/test_inspect/test_inspect.py +++ b/Lib/test/test_inspect/test_inspect.py @@ -235,6 +235,7 @@ class TestPredicates(IsTestBase): 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(