Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Lib/inspect.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
13 changes: 8 additions & 5 deletions Lib/test/test_types.py
Original file line number Diff line number Diff line change
Expand Up @@ -2240,8 +2240,8 @@ def foo(): return gen
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)

Expand All @@ -2250,14 +2250,17 @@ def foo(): return gen
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()
Expand Down Expand Up @@ -2376,7 +2379,7 @@ def foo(): return gen
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)
Expand Down Expand Up @@ -2439,8 +2442,8 @@ def coro():
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):
Expand Down
Loading