code_str = """if if1: if1_entered = 1 if if2: if subif1: subif1_entered = 1 elif subif2: subif2_entered = 1 subif_ended = 1 """ import compiler import dis tree_set = set() lnotab_code_dict = {} for _ in range(1000): gen = compiler.pycodegen.Module(code_str, "") tree_set.add(repr(gen._get_tree())) gen.compile() l = [] for t in dis.findlinestarts(gen.code): l.append(t) lnotab_code_dict[tuple(l)] = gen.code if len(tree_set) != 1: import pprint pprint.pprint(tree_set) if len(lnotab_code_dict) != 1: for lnotab, code in lnotab_code_dict.iteritems(): print "====================================" dis.dis(code)