home *** CD-ROM | disk | FTP | other *** search
/ Freelog 116 / FreelogNo116-JuilletSeptembre2013.iso / Bureautique / gImageReader / gimagereader_0.9-1_win32.exe / bin / gtk / _lazyutils.pyc (.txt) < prev    next >
Python Compiled Bytecode  |  2011-03-24  |  3KB  |  76 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.7)
  3.  
  4. import sys
  5. from types import ModuleType
  6.  
  7. class LazyModule(object):
  8.     
  9.     def __init__(self, name, locals):
  10.         self._name = name
  11.         self._locals = locals
  12.         self._modname = '%s.%s' % (self._locals.get('__name__'), self._name)
  13.  
  14.     
  15.     def __getattr__(self, attr):
  16.         module = __import__(self._name, self._locals, { }, ' ')
  17.         sys.modules[self._modname] = module
  18.         if attr == '__members__':
  19.             return dir(module)
  20.         return None(module, attr)
  21.  
  22.  
  23.  
  24. class _NotLoadedMarker:
  25.     pass
  26.  
  27. _marker = _NotLoadedMarker()
  28.  
  29. class LazyDict(dict):
  30.     
  31.     def __init__(self, module):
  32.         self._module = module
  33.         dict.__init__(self)
  34.  
  35.     
  36.     def __getitem__(self, name):
  37.         print name
  38.         return getattr(self._module, name)
  39.  
  40.  
  41.  
  42. class LazyNamespace(ModuleType):
  43.     
  44.     def __init__(self, module, locals):
  45.         ModuleType.__init__(self, locals['__name__'])
  46.         self._imports = { }
  47.         ns = self.__dict__
  48.         ns.update(locals)
  49.         ns['__module__'] = self
  50.         lazy_symbols = { }
  51.         for symbol in module._get_symbol_names():
  52.             lazy_symbols[symbol] = ns[symbol] = _marker
  53.         
  54.         ns.update(__dict__ = LazyDict(self), __bases__ = (ModuleType,), add_submodule = self.add_submodule)
  55.         
  56.         def __getattribute__(_, name):
  57.             v = ns.get(name, _marker)
  58.             if v is not _marker:
  59.                 return v
  60.             if None in lazy_symbols:
  61.                 s = module._get_symbol(ns, name)
  62.                 return s
  63.             if None in self._imports:
  64.                 m = __import__(self._imports[name], { }, { }, ' ')
  65.                 ns[name] = m
  66.                 return m
  67.             raise None(name)
  68.  
  69.         LazyNamespace.__getattribute__ = __getattribute__
  70.  
  71.     
  72.     def add_submodule(self, name, importname):
  73.         self._imports[name] = importname
  74.  
  75.  
  76.