1# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 2# For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt 3 4"""Bytecode manipulation for coverage.py""" 5 6import types 7 8 9def code_objects(code): 10 """Iterate over all the code objects in `code`.""" 11 stack = [code] 12 while stack: 13 # We're going to return the code object on the stack, but first 14 # push its children for later returning. 15 code = stack.pop() 16 for c in code.co_consts: 17 if isinstance(c, types.CodeType): 18 stack.append(c) 19 yield code 20