Skip to content
Permalink
master
Go to file
 
 
Cannot retrieve contributors at this time
44 lines (31 sloc) 1.24 KB
from astmonkey.transformers import ParentNodeTransformer
from inliner.searcher import InlineMethodLocator
from inliner.transformer import FunctionInliner
import sys
import imp
import ast
class InlineLoader(object):
def __init__(self, module):
self.module = module
def load_module(self, fullname):
return self.module
class InlineImporter(object):
def find_module(self, fullname, path):
file, pathname, description = imp.find_module(
fullname.split(".")[-1], path)
src = file.read()
tree = ast.parse(src)
tree = ParentNodeTransformer().visit(tree)
function_disoverer = InlineMethodLocator()
function_disoverer.visit(tree)
print "found funcs: %s" % function_disoverer.functions
tree = FunctionInliner(function_disoverer.functions).visit(tree)
module = sys.modules.setdefault(fullname,
imp.new_module(fullname))
module.__package__ = fullname.rpartition('.')[0]
module.__file__ = file.name
tree = ast.fix_missing_locations(tree)
code = compile(tree, file.name, "exec")
exec code in module.__dict__
return InlineLoader(module)
sys.meta_path.append(InlineImporter())
You can’t perform that action at this time.