diff options
author | Nick Coghlan <ncoghlan@gmail.com> | 2012-06-23 09:52:05 (GMT) |
---|---|---|
committer | Nick Coghlan <ncoghlan@gmail.com> | 2012-06-23 09:52:05 (GMT) |
commit | 04e2e3f2310964bb353cc85e4ebedf2391109118 (patch) | |
tree | 9fa80195784e0db02237898ebc272c5d23971a69 /Doc | |
parent | 766e62266e72d7586e8cbf74213a3935a974ef14 (diff) | |
download | cpython-04e2e3f2310964bb353cc85e4ebedf2391109118.zip cpython-04e2e3f2310964bb353cc85e4ebedf2391109118.tar.gz cpython-04e2e3f2310964bb353cc85e4ebedf2391109118.tar.bz2 |
Close #15153: Added inspect.getgeneratorlocals to simplify whitebox testing of generator state updates
Diffstat (limited to 'Doc')
-rw-r--r-- | Doc/library/inspect.rst | 24 | ||||
-rw-r--r-- | Doc/whatsnew/3.3.rst | 7 |
2 files changed, 31 insertions, 0 deletions
diff --git a/Doc/library/inspect.rst b/Doc/library/inspect.rst index 04b724b..6568e94 100644 --- a/Doc/library/inspect.rst +++ b/Doc/library/inspect.rst @@ -676,3 +676,27 @@ generator to be determined easily. * GEN_CLOSED: Execution has completed. .. versionadded:: 3.2 + +The current internal state of the generator can also be queried. This is +mostly useful for testing purposes, to ensure that internal state is being +updated as expected: + +.. function:: getgeneratorlocals(generator) + + Get the mapping of live local variables in *generator* to their current + values. A dictionary is returned that maps from variable names to values. + This is the equivalent of calling :func:`locals` in the body of the + generator, and all the same caveats apply. + + If *generator* is a :term:`generator` with no currently associated frame, + then an empty dictionary is returned. :exc:`TypeError` is raised if + *generator* is not a Python generator object. + + .. impl-detail:: + + This function relies on the generator exposing a Python stack frame + for introspection, which isn't guaranteed to be the case in all + implementations of Python. In such cases, this function will always + return an empty dictionary. + + .. versionadded:: 3.3 diff --git a/Doc/whatsnew/3.3.rst b/Doc/whatsnew/3.3.rst index 592f9c9..c6225c3 100644 --- a/Doc/whatsnew/3.3.rst +++ b/Doc/whatsnew/3.3.rst @@ -1037,6 +1037,13 @@ state when testing code that relies on stateful closures. (Contributed by Meador Inge and Nick Coghlan in :issue:`13062`) +A new :func:`~inspect.getgeneratorlocals` function has been added. This +function reports the current binding of local variables in the generator's +stack frame, making it easier to verify correct internal state when testing +generators. + +(Contributed by Meador Inge in :issue:`15153`) + io -- |