1.1 --- a/micropython/__init__.py Tue Oct 16 01:29:33 2007 +0200
1.2 +++ b/micropython/__init__.py Wed Oct 17 01:00:30 2007 +0200
1.3 @@ -168,6 +168,8 @@
1.4 if len(path) > 1:
1.5 if not d:
1.6 return None # NOTE: Import error (package not found).
1.7 + else:
1.8 + self.add_submodules(d, module)
1.9
1.10 path_so_far = path[:1]
1.11 for p in path[1:]:
1.12 @@ -188,6 +190,9 @@
1.13 else:
1.14 submodule = self.load_from_file(filename, module_name)
1.15
1.16 + if d:
1.17 + self.add_submodules(d, module)
1.18 +
1.19 # Store the submodule within its parent module.
1.20
1.21 module.namespace[p] = submodule
1.22 @@ -209,10 +214,7 @@
1.23 if module_name is None:
1.24 module_name = "__main__"
1.25
1.26 - if not self.modules.has_key(module_name):
1.27 - self.modules[module_name] = module = micropython.inspect.Module(self)
1.28 - else:
1.29 - module = self.modules[module_name]
1.30 + module = self.add_module(module_name)
1.31
1.32 print "Parsing", name
1.33 module.parse(name)
1.34 @@ -224,4 +226,28 @@
1.35 #print "Loaded", module_name, "with namespace", module.namespace.keys()
1.36 return module
1.37
1.38 + def add_module(self, module_name):
1.39 +
1.40 + """
1.41 + Return the module with the given 'module_name', adding a new module
1.42 + object if one does not already exist.
1.43 + """
1.44 +
1.45 + if not self.modules.has_key(module_name):
1.46 + self.modules[module_name] = module = micropython.inspect.Module(module_name, self)
1.47 + else:
1.48 + module = self.modules[module_name]
1.49 + return module
1.50 +
1.51 + def add_submodules(self, pathname, module):
1.52 +
1.53 + """
1.54 + Work around insufficient __all__ declarations and examine the directory
1.55 + with the given 'pathname', adding submodules to the given 'module'.
1.56 + """
1.57 +
1.58 + for filename in os.listdir(pathname):
1.59 + submodule = os.path.splitext(filename)[0]
1.60 + module.namespace[submodule] = self.add_module(module.name + "." + submodule)
1.61 +
1.62 # vim: tabstop=4 expandtab shiftwidth=4