KiBot/kibot/mcpy/activate.py

25 lines
658 B
Python

"""Install mcpy hooks to preprocess source files.
Actually, the library monkey-patches SourceFileLoader to compile the code
in a different way, providing the macro-expansion for the AST before compiling
into real code.
"""
from .importhooks import source_to_xcode, nop
from importlib.machinery import SourceFileLoader
old_source_to_code = SourceFileLoader.source_to_code
old_set_data = SourceFileLoader.set_data
def activate():
SourceFileLoader.source_to_code = source_to_xcode
SourceFileLoader.set_data = nop
def de_activate():
SourceFileLoader.source_to_code = old_source_to_code
SourceFileLoader.set_data = old_set_data
activate()