home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_692 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  3.1 KB  |  109 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import sys
  5. import imp
  6.  
  7. try:
  8.     from imp import get_loader
  9. except ImportError:
  10.     from pkgutil import get_loader
  11.  
  12. __all__ = [
  13.     'run_module']
  14.  
  15. def _run_code(code, run_globals, init_globals = None, mod_name = None, mod_fname = None, mod_loader = None, pkg_name = None):
  16.     if init_globals is not None:
  17.         run_globals.update(init_globals)
  18.     
  19.     run_globals.update(__name__ = mod_name, __file__ = mod_fname, __loader__ = mod_loader, __package__ = pkg_name)
  20.     exec code in run_globals
  21.     return run_globals
  22.  
  23.  
  24. def _run_module_code(code, init_globals = None, mod_name = None, mod_fname = None, mod_loader = None, pkg_name = None):
  25.     temp_module = imp.new_module(mod_name)
  26.     mod_globals = temp_module.__dict__
  27.     saved_argv0 = sys.argv[0]
  28.     restore_module = mod_name in sys.modules
  29.     if restore_module:
  30.         saved_module = sys.modules[mod_name]
  31.     
  32.     sys.argv[0] = mod_fname
  33.     sys.modules[mod_name] = temp_module
  34.     
  35.     try:
  36.         _run_code(code, mod_globals, init_globals, mod_name, mod_fname, mod_loader, pkg_name)
  37.     finally:
  38.         sys.argv[0] = saved_argv0
  39.         if restore_module:
  40.             sys.modules[mod_name] = saved_module
  41.         else:
  42.             del sys.modules[mod_name]
  43.  
  44.     return mod_globals.copy()
  45.  
  46.  
  47. def _get_filename(loader, mod_name):
  48.     for attr in ('get_filename', '_get_filename'):
  49.         meth = getattr(loader, attr, None)
  50.         if meth is not None:
  51.             return meth(mod_name)
  52.     
  53.  
  54.  
  55. def _get_module_details(mod_name):
  56.     loader = get_loader(mod_name)
  57.     if loader is None:
  58.         raise ImportError('No module named %s' % mod_name)
  59.     loader is None
  60.     if loader.is_package(mod_name):
  61.         raise ImportError(('%s is a package and cannot ' + 'be directly executed') % mod_name)
  62.     loader.is_package(mod_name)
  63.     code = loader.get_code(mod_name)
  64.     if code is None:
  65.         raise ImportError('No code object available for %s' % mod_name)
  66.     code is None
  67.     filename = _get_filename(loader, mod_name)
  68.     return (loader, code, filename)
  69.  
  70.  
  71. def _run_module_as_main(mod_name, set_argv0 = True):
  72.     
  73.     try:
  74.         (loader, code, fname) = _get_module_details(mod_name)
  75.     except ImportError:
  76.         exc = None
  77.         if set_argv0:
  78.             info = str(exc)
  79.         else:
  80.             info = "can't find '__main__.py' in %r" % sys.argv[0]
  81.         msg = '%s: %s' % (sys.executable, info)
  82.         sys.exit(msg)
  83.  
  84.     pkg_name = mod_name.rpartition('.')[0]
  85.     main_globals = sys.modules['__main__'].__dict__
  86.     if set_argv0:
  87.         sys.argv[0] = fname
  88.     
  89.     return _run_code(code, main_globals, None, '__main__', fname, loader, pkg_name)
  90.  
  91.  
  92. def run_module(mod_name, init_globals = None, run_name = None, alter_sys = False):
  93.     (loader, code, fname) = _get_module_details(mod_name)
  94.     if run_name is None:
  95.         run_name = mod_name
  96.     
  97.     pkg_name = mod_name.rpartition('.')[0]
  98.     if alter_sys:
  99.         return _run_module_code(code, init_globals, run_name, fname, loader, pkg_name)
  100.     return _run_code(code, { }, init_globals, run_name, fname, loader, pkg_name)
  101.  
  102. if __name__ == '__main__':
  103.     if len(sys.argv) < 2:
  104.         print >>sys.stderr, 'No module specified for execution'
  105.     else:
  106.         del sys.argv[0]
  107.         _run_module_as_main(sys.argv[0])
  108.  
  109.