Skip to content

Commit a6acb16

Browse files
[3.13] gh-144085: Add {gi,cr}_suspended to inspect comments and generator/coroutine tests (GH-144086) (#144134)
(cherry picked from commit 4ef30a5)
1 parent 740db90 commit a6acb16

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

Lib/inspect.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -465,6 +465,8 @@ def isgenerator(object):
465465
gi_frame frame object or possibly None once the generator has
466466
been exhausted
467467
gi_running set to 1 when generator is executing, 0 otherwise
468+
gi_suspended set to 1 when the generator is suspended at a yield point, 0 otherwise
469+
gi_yieldfrom object being iterated by yield from or None
468470
next return the next item from the container
469471
send resumes the generator and "sends" a value that becomes
470472
the result of the current yield-expression

Lib/test/test_types.py

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

21662166
# Test AttributeErrors
2167-
for name in {'gi_running', 'gi_frame', 'gi_code', 'gi_yieldfrom',
2168-
'cr_running', 'cr_frame', 'cr_code', 'cr_await'}:
2167+
for name in {'gi_running', 'gi_frame', 'gi_code', 'gi_yieldfrom', 'gi_suspended',
2168+
'cr_running', 'cr_frame', 'cr_code', 'cr_await', 'cr_suspended'}:
21692169
with self.assertRaises(AttributeError):
21702170
getattr(wrapper, name)
21712171

@@ -2174,14 +2174,17 @@ def foo(): return gen
21742174
gen.gi_frame = object()
21752175
gen.gi_code = object()
21762176
gen.gi_yieldfrom = object()
2177+
gen.gi_suspended = object()
21772178
self.assertIs(wrapper.gi_running, gen.gi_running)
21782179
self.assertIs(wrapper.gi_frame, gen.gi_frame)
21792180
self.assertIs(wrapper.gi_code, gen.gi_code)
21802181
self.assertIs(wrapper.gi_yieldfrom, gen.gi_yieldfrom)
2182+
self.assertIs(wrapper.gi_suspended, gen.gi_suspended)
21812183
self.assertIs(wrapper.cr_running, gen.gi_running)
21822184
self.assertIs(wrapper.cr_frame, gen.gi_frame)
21832185
self.assertIs(wrapper.cr_code, gen.gi_code)
21842186
self.assertIs(wrapper.cr_await, gen.gi_yieldfrom)
2187+
self.assertIs(wrapper.cr_suspended, gen.gi_suspended)
21852188

21862189
wrapper.close()
21872190
gen.close.assert_called_once_with()
@@ -2300,7 +2303,7 @@ def foo(): return gen
23002303
self.assertIs(wrapper.__await__(), gen)
23012304

23022305
for name in ('__name__', '__qualname__', 'gi_code',
2303-
'gi_running', 'gi_frame'):
2306+
'gi_running', 'gi_frame', 'gi_suspended'):
23042307
self.assertIs(getattr(foo(), name),
23052308
getattr(gen, name))
23062309
self.assertIs(foo().cr_code, gen.gi_code)
@@ -2363,8 +2366,8 @@ def coro():
23632366
self.assertEqual(repr(wrapper), str(wrapper))
23642367
self.assertTrue(set(dir(wrapper)).issuperset({
23652368
'__await__', '__iter__', '__next__', 'cr_code', 'cr_running',
2366-
'cr_frame', 'gi_code', 'gi_frame', 'gi_running', 'send',
2367-
'close', 'throw'}))
2369+
'cr_frame', 'cr_suspended', 'gi_code', 'gi_frame', 'gi_running',
2370+
'gi_suspended', 'send', 'close', 'throw'}))
23682371

23692372

23702373
class FunctionTests(unittest.TestCase):

0 commit comments

Comments
 (0)