Vega strike Python Modules doc  0.5.1
Documentation of the " Modules " folder of Vega strike
 All Data Structures Namespaces Files Functions Variables
ModuleImporter Class Reference
Inheritance diagram for ModuleImporter:
BasicModuleImporter _Verbose

Public Member Functions

def import_module
 
def determine_parent
 
def find_head_package
 
def load_tail
 
def ensure_fromlist
 
def import_it
 
def reload
 
- Public Member Functions inherited from BasicModuleImporter
def __init__
 
def get_loader
 
def set_loader
 
def get_hooks
 
def set_hooks
 
def import_module
 
def reload
 
def unload
 
def install
 
def uninstall
 
- Public Member Functions inherited from _Verbose
def __init__
 
def get_verbose
 
def set_verbose
 
def note
 
def message
 

Additional Inherited Members

- Data Fields inherited from BasicModuleImporter
 loader
 
 modules
 
 save_import_module
 
 save_reload
 
 save_unload
 

Detailed Description

A module importer that supports packages.

Definition at line 391 of file ihooks.py.

Member Function Documentation

def determine_parent (   self,
  globals 
)

Definition at line 405 of file ihooks.py.

References BasicModuleImporter.modules.

406  def determine_parent(self, globals):
407  if not globals or not globals.has_key("__name__"):
408  return None
409  pname = globals['__name__']
410  if globals.has_key("__path__"):
411  parent = self.modules[pname]
412  assert globals is parent.__dict__
413  return parent
414  if '.' in pname:
415  i = pname.rfind('.')
416  pname = pname[:i]
417  parent = self.modules[pname]
418  assert parent.__name__ == pname
419  return parent
420  return None
def ensure_fromlist (   self,
  m,
  fromlist,
  recursive = 0 
)

Definition at line 454 of file ihooks.py.

References ModuleImporter.ensure_fromlist(), and ModuleImporter.import_it().

455  def ensure_fromlist(self, m, fromlist, recursive=0):
456  for sub in fromlist:
457  if sub == "*":
458  if not recursive:
459  try:
460  all = m.__all__
461  except AttributeError:
462  pass
463  else:
464  self.ensure_fromlist(m, all, 1)
465  continue
466  if sub != "*" and not hasattr(m, sub):
467  subname = "%s.%s" % (m.__name__, sub)
468  submod = self.import_it(sub, subname, m)
469  if not submod:
470  raise ImportError, "No module named " + subname
def find_head_package (   self,
  parent,
  name 
)

Definition at line 421 of file ihooks.py.

References ModuleImporter.import_it().

422  def find_head_package(self, parent, name):
423  if '.' in name:
424  i = name.find('.')
425  head = name[:i]
426  tail = name[i+1:]
427  else:
428  head = name
429  tail = ""
430  if parent:
431  qname = "%s.%s" % (parent.__name__, head)
432  else:
433  qname = head
434  q = self.import_it(head, qname, parent)
435  if q: return q, tail
436  if parent:
437  qname = head
438  parent = None
439  q = self.import_it(head, qname, parent)
440  if q: return q, tail
441  raise ImportError, "No module named " + qname
def import_it (   self,
  partname,
  fqname,
  parent,
  force_load = 0 
)

Definition at line 471 of file ihooks.py.

References BasicModuleImporter.modules.

472  def import_it(self, partname, fqname, parent, force_load=0):
473  if not partname:
474  raise ValueError, "Empty module name"
475  if not force_load:
476  try:
477  return self.modules[fqname]
478  except KeyError:
479  pass
480  try:
481  path = parent and parent.__path__
482  except AttributeError:
483  return None
484  stuff = self.loader.find_module(partname, path)
485  if not stuff:
486  return None
487  m = self.loader.load_module(fqname, stuff)
488  if parent:
489  setattr(parent, partname, m)
490  return m
def import_module (   self,
  name,
  globals = None,
  locals = None,
  fromlist = None 
)

Definition at line 395 of file ihooks.py.

References ModuleImporter.determine_parent(), ModuleImporter.ensure_fromlist(), ModuleImporter.find_head_package(), and ModuleImporter.load_tail().

396  def import_module(self, name, globals=None, locals=None, fromlist=None):
397  parent = self.determine_parent(globals)
398  q, tail = self.find_head_package(parent, name)
399  m = self.load_tail(q, tail)
400  if not fromlist:
401  return q
402  if hasattr(m, "__path__"):
403  self.ensure_fromlist(m, fromlist)
404  return m
def load_tail (   self,
  q,
  tail 
)

Definition at line 442 of file ihooks.py.

References ModuleImporter.import_it().

443  def load_tail(self, q, tail):
444  m = q
445  while tail:
446  i = tail.find('.')
447  if i < 0: i = len(tail)
448  head, tail = tail[:i], tail[i+1:]
449  mname = "%s.%s" % (m.__name__, head)
450  m = self.import_it(head, mname, m)
451  if not m:
452  raise ImportError, "No module named " + mname
453  return m
def reload (   self,
  module 
)

Definition at line 491 of file ihooks.py.

References ModuleImporter.import_it(), and BasicModuleImporter.modules.

492  def reload(self, module):
493  name = module.__name__
494  if '.' not in name:
495  return self.import_it(name, name, None, force_load=1)
496  i = name.rfind('.')
497  pname = name[:i]
498  parent = self.modules[pname]
499  return self.import_it(name[i+1:], name, parent, force_load=1)
500 

The documentation for this class was generated from the following file: