home *** CD-ROM | disk | FTP | other *** search
/ Chip 2011 November / CHIP_2011_11.iso / Programy / Narzedzia / Calibre / calibre-0.8.18.msi / file_262 / py_compile.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2011-09-09  |  3.0 KB  |  130 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.7)
  3.  
  4. import __builtin__
  5. import imp
  6. import marshal
  7. import os
  8. import sys
  9. import traceback
  10. MAGIC = imp.get_magic()
  11. __all__ = [
  12.     'compile',
  13.     'main',
  14.     'PyCompileError']
  15.  
  16. class PyCompileError(Exception):
  17.     
  18.     def __init__(self, exc_type, exc_value, file, msg = ''):
  19.         exc_type_name = exc_type.__name__
  20.         if exc_type is SyntaxError:
  21.             tbtext = ''.join(traceback.format_exception_only(exc_type, exc_value))
  22.             errmsg = tbtext.replace('File "<string>"', 'File "%s"' % file)
  23.         else:
  24.             errmsg = 'Sorry: %s: %s' % (exc_type_name, exc_value)
  25.         if not msg:
  26.             pass
  27.         Exception.__init__(self, errmsg, exc_type_name, exc_value, file)
  28.         self.exc_type_name = exc_type_name
  29.         self.exc_value = exc_value
  30.         self.file = file
  31.         if not msg:
  32.             pass
  33.         self.msg = errmsg
  34.  
  35.     
  36.     def __str__(self):
  37.         return self.msg
  38.  
  39.  
  40.  
  41. def wr_long(f, x):
  42.     f.write(chr(x & 255))
  43.     f.write(chr(x >> 8 & 255))
  44.     f.write(chr(x >> 16 & 255))
  45.     f.write(chr(x >> 24 & 255))
  46.  
  47.  
  48. def compile(file, cfile = None, dfile = None, doraise = False):
  49.     with open(file, 'U') as f:
  50.         
  51.         try:
  52.             timestamp = long(os.fstat(f.fileno()).st_mtime)
  53.         except AttributeError:
  54.             timestamp = long(os.stat(file).st_mtime)
  55.  
  56.         codestring = f.read()
  57.     
  58.     try:
  59.         if not dfile:
  60.             pass
  61.         codeobject = __builtin__.compile(codestring, file, 'exec')
  62.     except Exception:
  63.         err = None
  64.         if not dfile:
  65.             pass
  66.         py_exc = PyCompileError(err.__class__, err.args, file)
  67.         if doraise:
  68.             raise py_exc
  69.         sys.stderr.write(py_exc.msg + '\n')
  70.         return None
  71.  
  72.     if cfile is None:
  73.         if not __debug__ or 'c':
  74.             pass
  75.         cfile = file + 'o'
  76.     with open(cfile, 'wb') as fc:
  77.         fc.write('\x00\x00\x00\x00')
  78.         wr_long(fc, timestamp)
  79.         marshal.dump(codeobject, fc)
  80.         fc.flush()
  81.         fc.seek(0, 0)
  82.         fc.write(MAGIC)
  83.  
  84.  
  85. def main(args = None):
  86.     if args is None:
  87.         args = sys.argv[1:]
  88.     rv = 0
  89.     if args == [
  90.         '-']:
  91.         while True:
  92.             filename = sys.stdin.readline()
  93.             if not filename:
  94.                 break
  95.             filename = filename.rstrip('\n')
  96.             
  97.             try:
  98.                 compile(filename, doraise = True)
  99.             continue
  100.             except PyCompileError:
  101.                 error = None
  102.                 rv = 1
  103.                 sys.stderr.write('%s\n' % error.msg)
  104.                 continue
  105.                 except IOError:
  106.                     error = None
  107.                     rv = 1
  108.                     sys.stderr.write('%s\n' % error)
  109.                     continue
  110.                 
  111.             except:
  112.                 for filename in args:
  113.                     
  114.                     try:
  115.                         compile(filename, doraise = True)
  116.                     continue
  117.                     except PyCompileError:
  118.                         error = None
  119.                         rv = 1
  120.                         sys.stderr.write(error.msg)
  121.                         continue
  122.                     
  123.  
  124.                 
  125.  
  126.     return rv
  127.  
  128. if __name__ == '__main__':
  129.     sys.exit(main())
  130.