1234567891011121314151617181920212223 |
- # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
- # For details: https://bitbucket.org/ned/coveragepy/src/default/NOTICE.txt
- """Bytecode manipulation for coverage.py"""
- import types
- class CodeObjects(object):
- """Iterate over all the code objects in `code`."""
- def __init__(self, code):
- self.stack = [code]
- def __iter__(self):
- while self.stack:
- # We're going to return the code object on the stack, but first
- # push its children for later returning.
- code = self.stack.pop()
- for c in code.co_consts:
- if isinstance(c, types.CodeType):
- self.stack.append(c)
- yield code
|