Lines Matching +full:parent +full:- +full:module
50 # test_modulefinder.py changes file tree contents in a cache-breaking way:
57 raise ImportError("No module named {name!r}".format(name=name), name=name)
85 suffix = os.path.splitext(file_path)[-1]
90 class Module: class
97 # The set of global names that are assigned to in the module.
101 # The set of starimports this module did that could not be
102 # resolved, ie. a starimport from a non-Python module.
106 s = "Module(%r" % (self.__name__,)
146 self.indent = self.indent - 1
162 def import_hook(self, name, caller=None, fromlist=None, level=-1):
164 parent = self.determine_parent(caller, level=level)
165 q, tail = self.find_head_package(parent, name)
173 def determine_parent(self, caller, level=-1):
176 self.msgout(4, "determine_parent -> None")
181 level -= 1
183 parent = self.modules[pname]
184 assert parent is caller
185 self.msgout(4, "determine_parent ->", parent)
186 return parent
189 pname = ".".join(pname.split(".")[:-level])
190 parent = self.modules[pname]
191 self.msgout(4, "determine_parent ->", parent)
192 return parent
194 parent = self.modules[pname]
195 assert caller is parent
196 self.msgout(4, "determine_parent ->", parent)
197 return parent
201 parent = self.modules[pname]
202 assert parent.__name__ == pname
203 self.msgout(4, "determine_parent ->", parent)
204 return parent
205 self.msgout(4, "determine_parent -> None")
208 def find_head_package(self, parent, name): argument
209 self.msgin(4, "find_head_package", parent, name)
217 if parent:
218 qname = "%s.%s" % (parent.__name__, head)
221 q = self.import_module(head, qname, parent)
223 self.msgout(4, "find_head_package ->", (q, tail))
225 if parent:
227 parent = None
228 q = self.import_module(head, qname, parent)
230 self.msgout(4, "find_head_package ->", (q, tail))
232 self.msgout(4, "raise ImportError: No module named", qname)
233 raise ImportError("No module named " + qname)
245 self.msgout(4, "raise ImportError: No module named", mname)
246 raise ImportError("No module named " + mname)
247 self.msgout(4, "load_tail ->", m)
262 raise ImportError("No module named " + subname)
269 # But we must also collect Python extension modules - although
285 if name[-n:] == suff:
286 mod = name[:-n]
292 def import_module(self, partname, fqname, parent): argument
293 self.msgin(3, "import_module", partname, fqname, parent)
299 self.msgout(3, "import_module ->", m)
302 self.msgout(3, "import_module -> None")
304 if parent and parent.__path__ is None:
305 self.msgout(3, "import_module -> None")
309 parent and parent.__path__, parent)
311 self.msgout(3, "import_module ->", None)
319 if parent:
320 setattr(parent, partname, m)
321 self.msgout(3, "import_module ->", m)
329 self.msgout(2, "load_module ->", m)
350 self.msgout(2, "load_module ->", m)
359 self.badmodules[name]["-"] = 1
361 def _safe_import_hook(self, name, caller, fromlist, level=-1):
413 # We've encountered an "import *". If it is a Python module,
419 # submodule of 'm' or a global module. Let's just try
436 parent = self.determine_parent(m, level=level)
437 self._safe_import_hook(parent.__name__, None, fromlist, level=0)
461 self.msgout(2, "load_package ->", m)
470 self.modules[fqname] = m = Module(fqname)
473 def find_module(self, name, path, parent=None): argument
474 if parent is not None:
476 fullname = parent.__name__+'.'+name
480 self.msgout(3, "find_module -> Excluded", fullname)
496 print(" %-25s %s" % ("Name", "File"))
497 print(" %-25s %s" % ("----", "----"))
506 print("%-25s" % key, m.__file__ or "")
520 print("global names in the parent package:")
539 tell which names are imported when "from module import *" is done
540 with an extension module, short of actually importing it.
556 # The package tried to import this module itself and
564 # from a non-Python module, so we simply can't be sure.
618 if o == '-d':
620 if o == '-m':
622 if o == '-p':
624 if o == '-q':
626 if o == '-x':
644 # Create the module finder and turn its crank
647 if arg == '-m':
651 if arg[-2:] == '.*':
652 mf.import_hook(arg[:-2], None, ["*"])
659 return mf # for -i debugging