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

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.7)
  3.  
  4. import __future__
  5. _features = [ getattr(__future__, fname) for fname in __future__.all_feature_names ]
  6. __all__ = [
  7.     'compile_command',
  8.     'Compile',
  9.     'CommandCompiler']
  10. PyCF_DONT_IMPLY_DEDENT = 512
  11.  
  12. def _maybe_compile(compiler, source, filename, symbol):
  13.     for line in source.split('\n'):
  14.         line = line.strip()
  15.         if line and line[0] != '#':
  16.             break
  17.             continue
  18.         if symbol != 'eval':
  19.             source = 'pass'
  20.         err = None
  21.         err1 = None
  22.         err2 = None
  23.         code = None
  24.         code1 = None
  25.         code2 = None
  26.         
  27.         try:
  28.             code = compiler(source, filename, symbol)
  29.         except SyntaxError:
  30.             err = None
  31.  
  32.         
  33.         try:
  34.             code1 = compiler(source + '\n', filename, symbol)
  35.         except SyntaxError:
  36.             err1 = None
  37.  
  38.         
  39.         try:
  40.             code2 = compiler(source + '\n\n', filename, symbol)
  41.         except SyntaxError:
  42.             err2 = None
  43.  
  44.         if code:
  45.             return code
  46.         if not None and repr(err1) == repr(err2):
  47.             raise SyntaxError, err1
  48.         return None
  49.  
  50.  
  51. def _compile(source, filename, symbol):
  52.     return compile(source, filename, symbol, PyCF_DONT_IMPLY_DEDENT)
  53.  
  54.  
  55. def compile_command(source, filename = '<input>', symbol = 'single'):
  56.     return _maybe_compile(_compile, source, filename, symbol)
  57.  
  58.  
  59. class Compile:
  60.     
  61.     def __init__(self):
  62.         self.flags = PyCF_DONT_IMPLY_DEDENT
  63.  
  64.     
  65.     def __call__(self, source, filename, symbol):
  66.         codeob = compile(source, filename, symbol, self.flags, 1)
  67.         for feature in _features:
  68.             if codeob.co_flags & feature.compiler_flag:
  69.                 self.flags |= feature.compiler_flag
  70.                 continue
  71.         return codeob
  72.  
  73.  
  74.  
  75. class CommandCompiler:
  76.     
  77.     def __init__(self):
  78.         self.compiler = Compile()
  79.  
  80.     
  81.     def __call__(self, source, filename = '<input>', symbol = 'single'):
  82.         return _maybe_compile(self.compiler, source, filename, symbol)
  83.  
  84.  
  85.