i read "rewriter.py" source code, "builtins.compile" confused me
@functools.wraps(original_compile)
def rewriting_compile(*args, **kwargs):
...
builtins.compile = rewriting_compile
what i understand at first is "compile function has been hooked, when run 'python xxxx.py' and compile the code, builtins.compile will be called first, so rewriting_compile function will be called".
but after i run test code as below, i am confused.
import dis
import functools
import random
import os
import _frozen_importlib_external
import builtins
from sys import version_info
from ast import PyCF_ONLY_AST
original_compile = builtins.compile
@functools.wraps(original_compile)
def rewriting_compile(*args, **kwargs):
flags = (len(args) >= 4 and args[3]) or kwargs.get("flags") or 0
print("rewriting_compile")
return False
builtins.compile = rewriting_compile
print("end")
"rewriting_compile" will not be printed.
so my question is " when and how 'rewriting_compile' function is called".
i read "rewriter.py" source code, "builtins.compile" confused me
what i understand at first is "compile function has been hooked, when run 'python xxxx.py' and compile the code, builtins.compile will be called first, so rewriting_compile function will be called".
but after i run test code as below, i am confused.
"rewriting_compile" will not be printed.
so my question is " when and how 'rewriting_compile' function is called".