aboutsummaryrefslogtreecommitdiff
path: root/interpreter.py
diff options
context:
space:
mode:
Diffstat (limited to 'interpreter.py')
-rw-r--r--interpreter.py16
1 files changed, 7 insertions, 9 deletions
diff --git a/interpreter.py b/interpreter.py
index 37b37bb..bda466d 100644
--- a/interpreter.py
+++ b/interpreter.py
@@ -600,15 +600,15 @@ class ModuleState:
pass
class ModuleHolder(InterpreterObject):
- def __init__(self, modname, interpreter):
+ def __init__(self, modname, module, interpreter):
InterpreterObject.__init__(self)
self.modname = modname
- self.m = importlib.import_module('modules.' + modname).initialize()
+ self.held_object = module
self.interpreter = interpreter
def method_call(self, method_name, args, kwargs):
try:
- fn = getattr(self.m, method_name)
+ fn = getattr(self.held_object, method_name)
except AttributeError:
raise InvalidArguments('Module %s does not have method %s.' % (self.modname, method_name))
state = ModuleState()
@@ -735,7 +735,6 @@ class Interpreter():
self.global_args_frozen = False
self.subprojects = {}
self.subproject_stack = []
- self.modules = {}
def build_func_dict(self):
self.funcs = {'project' : self.func_project,
@@ -865,11 +864,10 @@ class Interpreter():
modname = args[0]
if not isinstance(modname, str):
raise InvalidCode('Argument to import was not a string')
- if not modname in self.modules:
- mh = mh = ModuleHolder(modname, self)
- self.modules[modname] = mh
- self.build.modules[modname] = mh.m
- return self.modules[modname]
+ if not modname in self.environment.coredata.modules:
+ module = importlib.import_module('modules.' + modname).initialize()
+ self.environment.coredata.modules[modname] = module
+ return ModuleHolder(modname, self.environment.coredata.modules[modname], self)
def set_variable(self, varname, variable):
if variable is None: