gh-144085: Add {gi,cr}_suspended to inspect comments and generator/coroutine tests (#144086)

This commit is contained in:
Yongtao Huang 2026-01-21 18:33:56 +08:00 committed by GitHub
parent 9060b4abbe
commit 4ef30a5871
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 5 deletions

View File

@ -348,6 +348,7 @@ def isgenerator(object):
gi_frame frame object or possibly None once the generator has
been exhausted
gi_running set to 1 when generator is executing, 0 otherwise
gi_suspended set to 1 when the generator is suspended at a yield point, 0 otherwise
gi_yieldfrom object being iterated by yield from or None
__iter__() defined to support iteration over container

View File

@ -2294,8 +2294,8 @@ class CoroutineTests(unittest.TestCase):
self.assertIs(wrapper.__name__, gen.__name__)
# Test AttributeErrors
for name in {'gi_running', 'gi_frame', 'gi_code', 'gi_yieldfrom',
'cr_running', 'cr_frame', 'cr_code', 'cr_await'}:
for name in {'gi_running', 'gi_frame', 'gi_code', 'gi_yieldfrom', 'gi_suspended',
'cr_running', 'cr_frame', 'cr_code', 'cr_await', 'cr_suspended'}:
with self.assertRaises(AttributeError):
getattr(wrapper, name)
@ -2304,14 +2304,17 @@ class CoroutineTests(unittest.TestCase):
gen.gi_frame = object()
gen.gi_code = object()
gen.gi_yieldfrom = object()
gen.gi_suspended = object()
self.assertIs(wrapper.gi_running, gen.gi_running)
self.assertIs(wrapper.gi_frame, gen.gi_frame)
self.assertIs(wrapper.gi_code, gen.gi_code)
self.assertIs(wrapper.gi_yieldfrom, gen.gi_yieldfrom)
self.assertIs(wrapper.gi_suspended, gen.gi_suspended)
self.assertIs(wrapper.cr_running, gen.gi_running)
self.assertIs(wrapper.cr_frame, gen.gi_frame)
self.assertIs(wrapper.cr_code, gen.gi_code)
self.assertIs(wrapper.cr_await, gen.gi_yieldfrom)
self.assertIs(wrapper.cr_suspended, gen.gi_suspended)
wrapper.close()
gen.close.assert_called_once_with()
@ -2430,7 +2433,7 @@ class CoroutineTests(unittest.TestCase):
self.assertIs(wrapper.__await__(), gen)
for name in ('__name__', '__qualname__', 'gi_code',
'gi_running', 'gi_frame'):
'gi_running', 'gi_frame', 'gi_suspended'):
self.assertIs(getattr(foo(), name),
getattr(gen, name))
self.assertIs(foo().cr_code, gen.gi_code)
@ -2493,8 +2496,8 @@ class CoroutineTests(unittest.TestCase):
self.assertEqual(repr(wrapper), str(wrapper))
self.assertTrue(set(dir(wrapper)).issuperset({
'__await__', '__iter__', '__next__', 'cr_code', 'cr_running',
'cr_frame', 'gi_code', 'gi_frame', 'gi_running', 'send',
'close', 'throw'}))
'cr_frame', 'cr_suspended', 'gi_code', 'gi_frame', 'gi_running',
'gi_suspended', 'send', 'close', 'throw'}))
class FunctionTests(unittest.TestCase):