Компилировать исходники Python без постоянной оптимизации сворачивания
У меня есть фрагмент Python следующим образом
5 + 6 * 8
Компиляция этого в AST дает:
>>> ast.dump(compile('5+6*8', '', 'eval', ast.PyCF_ONLY_AST))
Expression(body=BinOp(left=Num(n=5), op=Add(), right=BinOp(left=Num(n=6), op=Mult(), right=Num(n=8))))
Обратите внимание, что в сгенерированном AST 6 * 8
не оптимизирован в 48.
Тем не менее, если я скомпилирую этот сгенерированный AST и разобрать 6 * 8
заменяется 48
,
>>> astree = compile('5+6*8', '', 'eval', ast.PyCF_ONLY_AST)
>>> dis.disco(compile(astree, '', 'eval'))
1 0 LOAD_CONST 0 (5)
3 LOAD_CONST 3 (48)
6 BINARY_ADD
7 RETURN_VALUE
Мой вопрос
Как скомпилировать код в байт-код без постоянной оптимизации свертывания? Мне нужно сделать это для разработки обфускатора.