home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / MacHacksBug / Python 1.5.2c1 / Mac / Tools / IDE / PyInteractive.pyc (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2000-06-23  |  3.0 KB  |  121 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 1.5)
  3.  
  4. import string
  5. import sys
  6. import traceback
  7.  
  8. try:
  9.     sys.ps1
  10. except AttributeError:
  11.     sys.ps1 = '>>> '
  12.  
  13.  
  14. try:
  15.     sys.ps2
  16. except AttributeError:
  17.     sys.ps2 = '... '
  18.  
  19.  
  20. def print_exc(limit = None, file = None):
  21.     if not file:
  22.         file = sys.stderr
  23.     
  24.     tb = sys.exc_traceback
  25.     if tb:
  26.         tb = tb.tb_next
  27.     
  28.     
  29.     try:
  30.         sys.last_type = sys.exc_type
  31.         sys.last_value = sys.exc_value
  32.         sys.last_traceback = tb
  33.         traceback.print_exception(sys.last_type, sys.last_value, sys.last_traceback, limit, file)
  34.     except:
  35.         print '--- hola! ---'
  36.         traceback.print_exception(sys.exc_type, sys.exc_value, sys.exc_traceback, limit, file)
  37.  
  38.  
  39.  
  40. class PyInteractive:
  41.     
  42.     def __init__(self):
  43.         self._pybuf = ''
  44.  
  45.     
  46.     def executeline(self, stuff, out = None, env = None):
  47.         if env is None:
  48.             import __main__
  49.             env = __main__.__dict__
  50.         
  51.         if out:
  52.             (saveerr, saveout) = (sys.stderr, sys.stdout)
  53.             sys.stderr = sys.stdout = out
  54.         
  55.         
  56.         try:
  57.             if self._pybuf:
  58.                 self._pybuf = self._pybuf + '\n' + stuff
  59.             else:
  60.                 self._pybuf = stuff
  61.             err = err1 = err2 = None
  62.             code = code1 = code2 = None
  63.             stripped = string.strip(self._pybuf)
  64.             if not stripped or stripped[0] == '#':
  65.                 self._pybuf = ''
  66.                 sys.stdout.write(sys.ps1)
  67.                 sys.stdout.flush()
  68.                 return None
  69.             
  70.             
  71.             try:
  72.                 code = compile(self._pybuf, '<input>', 'single')
  73.             except SyntaxError:
  74.                 err = None
  75.             except:
  76.                 print_exc()
  77.                 self._pybuf = ''
  78.                 sys.stdout.write(sys.ps1)
  79.                 sys.stdout.flush()
  80.                 return None
  81.  
  82.             
  83.             try:
  84.                 code1 = compile(self._pybuf + '\n', '<input>', 'single')
  85.             except SyntaxError:
  86.                 err1 = None
  87.  
  88.             
  89.             try:
  90.                 code2 = compile(self._pybuf + '\n\n', '<input>', 'single')
  91.             except SyntaxError:
  92.                 err2 = None
  93.  
  94.             if code:
  95.                 
  96.                 try:
  97.                     exec code in env
  98.                 except:
  99.                     print_exc()
  100.  
  101.                 self._pybuf = ''
  102.             elif code1:
  103.                 pass
  104.             elif err1 == err2 and not stuff and self._pybuf:
  105.                 print_exc()
  106.                 self._pybuf = ''
  107.             
  108.             if self._pybuf:
  109.                 sys.stdout.write(sys.ps2)
  110.                 sys.stdout.flush()
  111.             else:
  112.                 sys.stdout.write(sys.ps1)
  113.                 sys.stdout.flush()
  114.         finally:
  115.             if out:
  116.                 (sys.stderr, sys.stdout) = (saveerr, saveout)
  117.             
  118.  
  119.  
  120.  
  121.