Skip to content

Commit b005038

Browse files
committed
Add gi_suspended to inspect comments and generator/coroutine tests
1 parent 27a7160 commit b005038

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
@@ -2294,8 +2294,8 @@ def foo(): return gen
22942294
self.assertIs(wrapper.__name__, gen.__name__)
22952295

22962296
# Test AttributeErrors
2297-
for name in {'gi_running', 'gi_frame', 'gi_code', 'gi_yieldfrom',
2298-
'cr_running', 'cr_frame', 'cr_code', 'cr_await'}:
2297+
for name in {'gi_running', 'gi_frame', 'gi_code', 'gi_yieldfrom', 'gi_suspended',
2298+
'cr_running', 'cr_frame', 'cr_code', 'cr_await', 'cr_suspended'}:
22992299
with self.assertRaises(AttributeError):
23002300
getattr(wrapper, name)
23012301

@@ -2304,14 +2304,17 @@ def foo(): return gen
23042304
gen.gi_frame = object()
23052305
gen.gi_code = object()
23062306
gen.gi_yieldfrom = object()
2307+
gen.gi_suspended = object()
23072308
self.assertIs(wrapper.gi_running, gen.gi_running)
23082309
self.assertIs(wrapper.gi_frame, gen.gi_frame)
23092310
self.assertIs(wrapper.gi_code, gen.gi_code)
23102311
self.assertIs(wrapper.gi_yieldfrom, gen.gi_yieldfrom)
2312+
self.assertIs(wrapper.gi_suspended, gen.gi_suspended)
23112313
self.assertIs(wrapper.cr_running, gen.gi_running)
23122314
self.assertIs(wrapper.cr_frame, gen.gi_frame)
23132315
self.assertIs(wrapper.cr_code, gen.gi_code)
23142316
self.assertIs(wrapper.cr_await, gen.gi_yieldfrom)
2317+
self.assertIs(wrapper.cr_suspended, gen.gi_suspended)
23152318

23162319
wrapper.close()
23172320
gen.close.assert_called_once_with()
@@ -2430,7 +2433,7 @@ def foo(): return gen
24302433
self.assertIs(wrapper.__await__(), gen)
24312434

24322435
for name in ('__name__', '__qualname__', 'gi_code',
2433-
'gi_running', 'gi_frame'):
2436+
'gi_running', 'gi_frame', 'gi_suspended'):
24342437
self.assertIs(getattr(foo(), name),
24352438
getattr(gen, name))
24362439
self.assertIs(foo().cr_code, gen.gi_code)
@@ -2493,8 +2496,8 @@ def coro():
24932496
self.assertEqual(repr(wrapper), str(wrapper))
24942497
self.assertTrue(set(dir(wrapper)).issuperset({
24952498
'__await__', '__iter__', '__next__', 'cr_code', 'cr_running',
2496-
'cr_frame', 'gi_code', 'gi_frame', 'gi_running', 'send',
2497-
'close', 'throw'}))
2499+
'cr_frame', 'cr_suspended', 'gi_code', 'gi_frame', 'gi_running',
2500+
'gi_suspended', 'send', 'close', 'throw'}))
24982501

24992502

25002503
class FunctionTests(unittest.TestCase):

0 commit comments

Comments
 (0)