home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import exceptions
- import sys
- from cStringIO import StringIO
-
- class OutputTrapError(exceptions.Exception):
-
- def __init__(self, args = None):
- exceptions.Exception.__init__(self)
- self.args = args
-
-
-
- class OutputTrap:
-
- def __init__(self, name = 'Generic Output Trap', out_head = 'Standard Output. ', err_head = 'Standard Error. ', sum_sep = '\n', debug = 0, trap_out = 0, trap_err = 0, quiet_out = 0, quiet_err = 0):
- self.name = name
- self.out_head = out_head
- self.err_head = err_head
- self.sum_sep = sum_sep
- self.out = StringIO()
- self.err = StringIO()
- self.out_save = None
- self.err_save = None
- self.debug = debug
- self.quiet_out = quiet_out
- self.quiet_err = quiet_err
- if trap_out:
- self.trap_out()
-
- if trap_err:
- self.trap_err()
-
-
-
- def trap_out(self):
- if sys.stdout is self.out:
- raise OutputTrapError, 'You are already trapping stdout.'
- sys.stdout is self.out
- if not self.debug:
- self._out_save = sys.stdout
- sys.stdout = self.out
-
-
-
- def release_out(self):
- if not self.debug:
- if sys.stdout is not self.out:
- raise OutputTrapError, 'You are not trapping stdout.'
- sys.stdout is not self.out
- sys.stdout = self._out_save
- self.out_save = None
-
-
-
- def summary_out(self):
- out = self.out.getvalue()
- if out:
- if self.quiet_out:
- return out
- return self.out_head + 'Log by ' + self.name + ':\n' + out
- out
- return ''
-
-
- def flush_out(self):
- self.out.close()
- self.out = StringIO()
-
-
- def trap_err(self):
- if sys.stderr is self.err:
- raise OutputTrapError, 'You are already trapping stderr.'
- sys.stderr is self.err
- if not self.debug:
- self._err_save = sys.stderr
- sys.stderr = self.err
-
-
-
- def release_err(self):
- if not self.debug:
- if sys.stderr is not self.err:
- raise OutputTrapError, 'You are not trapping stderr.'
- sys.stderr is not self.err
- sys.stderr = self._err_save
- self.err_save = None
-
-
-
- def summary_err(self):
- err = self.err.getvalue()
- if err:
- if self.quiet_err:
- return err
- return self.err_head + 'Log by ' + self.name + ':\n' + err
- err
- return ''
-
-
- def flush_err(self):
- self.err.close()
- self.err = StringIO()
-
-
- def trap_all(self):
-
- try:
- self.trap_out()
- except OutputTrapError:
- pass
-
-
- try:
- self.trap_err()
- except OutputTrapError:
- pass
-
-
-
- def release_all(self):
-
- try:
- self.release_out()
- except OutputTrapError:
- pass
-
-
- try:
- self.release_err()
- except OutputTrapError:
- pass
-
-
-
- def summary_all(self):
- sum = ''
- sout = self.summary_out()
- if sout:
- sum += self.sum_sep + sout
-
- serr = self.summary_err()
- if serr:
- sum += '\n' + self.sum_sep + serr
-
- return sum
-
-
- def flush_all(self):
- self.flush_out()
- self.flush_err()
-
- trap = trap_all
- release = release_all
- summary = summary_all
- flush = flush_all
-
-
- def _test_all():
-
- def _test_():
- name = ''
- print '#' * 50 + '\nRunning test for ' + name
- print 'Finished test for ' + name + '\n' + '#' * 50
-
-
- def _test_OutputTrap():
- trap = OutputTrap(name = 'Test Trap', sum_sep = '.' * 50 + '\n', out_head = 'SOut. ', err_head = 'SErr. ')
- name = 'OutputTrap class'
- print '#' * 50 + '\nRunning test for ' + name
- print 'Trapping out'
- trap.trap_out()
- print >>sys.stdout, '>>stdout. stdout is trapped.'
- print >>sys.stderr, '>>stderr. stdout is trapped.'
- trap.release_out()
- print trap.summary_out()
- print 'Trapping err'
- trap.trap_err()
- print >>sys.stdout, '>>stdout. stderr is trapped.'
- print >>sys.stderr, '>>stderr. stderr is trapped.'
- trap.release_err()
- print trap.summary_err()
- print 'Trapping all (no flushing)'
- trap.trap_all()
- print >>sys.stdout, '>>stdout. stdout/err is trapped.'
- print >>sys.stderr, '>>stderr. stdout/err is trapped.'
- trap.release_all()
- print trap.summary_all()
- print 'Trapping all (flushing first)'
- trap.flush()
- trap.trap_all()
- print >>sys.stdout, '>>stdout. stdout/err is trapped.'
- print >>sys.stderr, '>>stderr. stdout/err is trapped.'
- trap.release_all()
- print trap.summary_all()
- print 'Finished test for ' + name + '\n' + '#' * 50
-
- _test_OutputTrap()
-
- if __name__ == '__main__':
- pass
-
-