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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __docformat__ = 'restructuredtext en'
  5. import linecache
  6. import sys
  7. from twisted.internet.error import ConnectionRefusedError
  8. from IPython.ultraTB import _fixed_getinnerframes, findsource
  9. from IPython import ipapi
  10. from IPython.kernel import error
  11.  
  12. def remote():
  13.     m = 'Special exception to stop local execution of parallel code.'
  14.     raise error.StopLocalExecution(m)
  15.  
  16.  
  17. def strip_whitespace(source, require_remote = True):
  18.     remote_mark = 'remote()'
  19.     wsource = [ l.expandtabs(4) for l in source ]
  20.     done = False
  21.     for line in wsource:
  22.         for col, char in enumerate(line):
  23.             if char != ' ':
  24.                 done = True
  25.                 break
  26.                 continue
  27.             None if line.isspace() else []
  28.         
  29.         if done:
  30.             break
  31.             continue
  32.     
  33.     for lno, line in enumerate(wsource):
  34.         lead = line[:col]
  35.         if lead.isspace():
  36.             continue
  37.             continue
  38.         if not lead.lstrip().startswith('#'):
  39.             break
  40.             continue
  41.     
  42.     src_lines = [ l[col:] for l in wsource[:lno + 1] ]
  43.     return ''.join(out_lines)
  44.  
  45.  
  46. class RemoteContextBase(object):
  47.     
  48.     def __init__(self):
  49.         self.ip = ipapi.get()
  50.  
  51.     
  52.     def _findsource_file(self, f):
  53.         linecache.checkcache()
  54.         s = findsource(f.f_code)
  55.         lnum = f.f_lineno
  56.         wsource = s[0][f.f_lineno:]
  57.         return strip_whitespace(wsource)
  58.  
  59.     
  60.     def _findsource_ipython(self, f):
  61.         ipapi = ipapi
  62.         import IPython
  63.         self.ip = ipapi.get()
  64.         buf = self.ip.IP.input_hist_raw[-1].splitlines()[1:]
  65.         wsource = [ l + '\n' for l in buf ]
  66.         return strip_whitespace(wsource)
  67.  
  68.     
  69.     def findsource(self, frame):
  70.         local_ns = frame.f_locals
  71.         global_ns = frame.f_globals
  72.         if frame.f_code.co_filename == '<ipython console>':
  73.             src = self._findsource_ipython(frame)
  74.         else:
  75.             src = self._findsource_file(frame)
  76.         return src
  77.  
  78.     
  79.     def __enter__(self):
  80.         raise NotImplementedError
  81.  
  82.     
  83.     def __exit__(self, etype, value, tb):
  84.         if issubclass(etype, error.StopLocalExecution):
  85.             return True
  86.  
  87.  
  88.  
  89. class RemoteMultiEngine(RemoteContextBase):
  90.     
  91.     def __init__(self, mec):
  92.         self.mec = mec
  93.         RemoteContextBase.__init__(self)
  94.  
  95.     
  96.     def __enter__(self):
  97.         src = self.findsource(sys._getframe(1))
  98.         return self.mec.execute(src)
  99.  
  100.  
  101.