Skip to content

Commit aa223bd

Browse files
[3.14] gh-144085: Add {gi,cr}_suspended to inspect comments and generator/coroutine tests (GH-144086) (#144104)
gh-144085: Add `{gi,cr}_suspended` to `inspect` comments and `generator/coroutine` tests (GH-144086) (cherry picked from commit 4ef30a5) Co-authored-by: Yongtao Huang <yongtaoh2022@gmail.com>
1 parent 482a253 commit aa223bd

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

Lib/inspect.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,7 @@ def isgenerator(object):
348348
gi_frame frame object or possibly None once the generator has
349349
been exhausted
350350
gi_running set to 1 when generator is executing, 0 otherwise
351+
gi_suspended set to 1 when the generator is suspended at a yield point, 0 otherwise
351352
gi_yieldfrom object being iterated by yield from or None
352353
353354
__iter__() defined to support iteration over container

Lib/test/test_types.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2240,8 +2240,8 @@ def foo(): return gen
22402240
self.assertIs(wrapper.__name__, gen.__name__)
22412241

22422242
# Test AttributeErrors
2243-
for name in {'gi_running', 'gi_frame', 'gi_code', 'gi_yieldfrom',
2244-
'cr_running', 'cr_frame', 'cr_code', 'cr_await'}:
2243+
for name in {'gi_running', 'gi_frame', 'gi_code', 'gi_yieldfrom', 'gi_suspended',
2244+
'cr_running', 'cr_frame', 'cr_code', 'cr_await', 'cr_suspended'}:
22452245
with self.assertRaises(AttributeError):
22462246
getattr(wrapper, name)
22472247

@@ -2250,14 +2250,17 @@ def foo(): return gen
22502250
gen.gi_frame = object()
22512251
gen.gi_code = object()
22522252
gen.gi_yieldfrom = object()
2253+
gen.gi_suspended = object()
22532254
self.assertIs(wrapper.gi_running, gen.gi_running)
22542255
self.assertIs(wrapper.gi_frame, gen.gi_frame)
22552256
self.assertIs(wrapper.gi_code, gen.gi_code)
22562257
self.assertIs(wrapper.gi_yieldfrom, gen.gi_yieldfrom)
2258+
self.assertIs(wrapper.gi_suspended, gen.gi_suspended)
22572259
self.assertIs(wrapper.cr_running, gen.gi_running)
22582260
self.assertIs(wrapper.cr_frame, gen.gi_frame)
22592261
self.assertIs(wrapper.cr_code, gen.gi_code)
22602262
self.assertIs(wrapper.cr_await, gen.gi_yieldfrom)
2263+
self.assertIs(wrapper.cr_suspended, gen.gi_suspended)
22612264

22622265
wrapper.close()
22632266
gen.close.assert_called_once_with()
@@ -2376,7 +2379,7 @@ def foo(): return gen
23762379
self.assertIs(wrapper.__await__(), gen)
23772380

23782381
for name in ('__name__', '__qualname__', 'gi_code',
2379-
'gi_running', 'gi_frame'):
2382+
'gi_running', 'gi_frame', 'gi_suspended'):
23802383
self.assertIs(getattr(foo(), name),
23812384
getattr(gen, name))
23822385
self.assertIs(foo().cr_code, gen.gi_code)
@@ -2439,8 +2442,8 @@ def coro():
24392442
self.assertEqual(repr(wrapper), str(wrapper))
24402443
self.assertTrue(set(dir(wrapper)).issuperset({
24412444
'__await__', '__iter__', '__next__', 'cr_code', 'cr_running',
2442-
'cr_frame', 'gi_code', 'gi_frame', 'gi_running', 'send',
2443-
'close', 'throw'}))
2445+
'cr_frame', 'cr_suspended', 'gi_code', 'gi_frame', 'gi_running',
2446+
'gi_suspended', 'send', 'close', 'throw'}))
24442447

24452448

24462449
class FunctionTests(unittest.TestCase):

0 commit comments

Comments
 (0)