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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. import exceptions
  5. import sys
  6. from cStringIO import StringIO
  7.  
  8. class OutputTrapError(exceptions.Exception):
  9.     
  10.     def __init__(self, args = None):
  11.         exceptions.Exception.__init__(self)
  12.         self.args = args
  13.  
  14.  
  15.  
  16. class OutputTrap:
  17.     
  18.     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):
  19.         self.name = name
  20.         self.out_head = out_head
  21.         self.err_head = err_head
  22.         self.sum_sep = sum_sep
  23.         self.out = StringIO()
  24.         self.err = StringIO()
  25.         self.out_save = None
  26.         self.err_save = None
  27.         self.debug = debug
  28.         self.quiet_out = quiet_out
  29.         self.quiet_err = quiet_err
  30.         if trap_out:
  31.             self.trap_out()
  32.         
  33.         if trap_err:
  34.             self.trap_err()
  35.         
  36.  
  37.     
  38.     def trap_out(self):
  39.         if sys.stdout is self.out:
  40.             raise OutputTrapError, 'You are already trapping stdout.'
  41.         sys.stdout is self.out
  42.         if not self.debug:
  43.             self._out_save = sys.stdout
  44.             sys.stdout = self.out
  45.         
  46.  
  47.     
  48.     def release_out(self):
  49.         if not self.debug:
  50.             if sys.stdout is not self.out:
  51.                 raise OutputTrapError, 'You are not trapping stdout.'
  52.             sys.stdout is not self.out
  53.             sys.stdout = self._out_save
  54.             self.out_save = None
  55.         
  56.  
  57.     
  58.     def summary_out(self):
  59.         out = self.out.getvalue()
  60.         if out:
  61.             if self.quiet_out:
  62.                 return out
  63.             return self.out_head + 'Log by ' + self.name + ':\n' + out
  64.         out
  65.         return ''
  66.  
  67.     
  68.     def flush_out(self):
  69.         self.out.close()
  70.         self.out = StringIO()
  71.  
  72.     
  73.     def trap_err(self):
  74.         if sys.stderr is self.err:
  75.             raise OutputTrapError, 'You are already trapping stderr.'
  76.         sys.stderr is self.err
  77.         if not self.debug:
  78.             self._err_save = sys.stderr
  79.             sys.stderr = self.err
  80.         
  81.  
  82.     
  83.     def release_err(self):
  84.         if not self.debug:
  85.             if sys.stderr is not self.err:
  86.                 raise OutputTrapError, 'You are not trapping stderr.'
  87.             sys.stderr is not self.err
  88.             sys.stderr = self._err_save
  89.             self.err_save = None
  90.         
  91.  
  92.     
  93.     def summary_err(self):
  94.         err = self.err.getvalue()
  95.         if err:
  96.             if self.quiet_err:
  97.                 return err
  98.             return self.err_head + 'Log by ' + self.name + ':\n' + err
  99.         err
  100.         return ''
  101.  
  102.     
  103.     def flush_err(self):
  104.         self.err.close()
  105.         self.err = StringIO()
  106.  
  107.     
  108.     def trap_all(self):
  109.         
  110.         try:
  111.             self.trap_out()
  112.         except OutputTrapError:
  113.             pass
  114.  
  115.         
  116.         try:
  117.             self.trap_err()
  118.         except OutputTrapError:
  119.             pass
  120.  
  121.  
  122.     
  123.     def release_all(self):
  124.         
  125.         try:
  126.             self.release_out()
  127.         except OutputTrapError:
  128.             pass
  129.  
  130.         
  131.         try:
  132.             self.release_err()
  133.         except OutputTrapError:
  134.             pass
  135.  
  136.  
  137.     
  138.     def summary_all(self):
  139.         sum = ''
  140.         sout = self.summary_out()
  141.         if sout:
  142.             sum += self.sum_sep + sout
  143.         
  144.         serr = self.summary_err()
  145.         if serr:
  146.             sum += '\n' + self.sum_sep + serr
  147.         
  148.         return sum
  149.  
  150.     
  151.     def flush_all(self):
  152.         self.flush_out()
  153.         self.flush_err()
  154.  
  155.     trap = trap_all
  156.     release = release_all
  157.     summary = summary_all
  158.     flush = flush_all
  159.  
  160.  
  161. def _test_all():
  162.     
  163.     def _test_():
  164.         name = ''
  165.         print '#' * 50 + '\nRunning test for ' + name
  166.         print 'Finished test for ' + name + '\n' + '#' * 50
  167.  
  168.     
  169.     def _test_OutputTrap():
  170.         trap = OutputTrap(name = 'Test Trap', sum_sep = '.' * 50 + '\n', out_head = 'SOut. ', err_head = 'SErr. ')
  171.         name = 'OutputTrap class'
  172.         print '#' * 50 + '\nRunning test for ' + name
  173.         print 'Trapping out'
  174.         trap.trap_out()
  175.         print >>sys.stdout, '>>stdout. stdout is trapped.'
  176.         print >>sys.stderr, '>>stderr. stdout is trapped.'
  177.         trap.release_out()
  178.         print trap.summary_out()
  179.         print 'Trapping err'
  180.         trap.trap_err()
  181.         print >>sys.stdout, '>>stdout. stderr is trapped.'
  182.         print >>sys.stderr, '>>stderr. stderr is trapped.'
  183.         trap.release_err()
  184.         print trap.summary_err()
  185.         print 'Trapping all (no flushing)'
  186.         trap.trap_all()
  187.         print >>sys.stdout, '>>stdout. stdout/err is trapped.'
  188.         print >>sys.stderr, '>>stderr. stdout/err is trapped.'
  189.         trap.release_all()
  190.         print trap.summary_all()
  191.         print 'Trapping all (flushing first)'
  192.         trap.flush()
  193.         trap.trap_all()
  194.         print >>sys.stdout, '>>stdout. stdout/err is trapped.'
  195.         print >>sys.stderr, '>>stderr. stdout/err is trapped.'
  196.         trap.release_all()
  197.         print trap.summary_all()
  198.         print 'Finished test for ' + name + '\n' + '#' * 50
  199.  
  200.     _test_OutputTrap()
  201.  
  202. if __name__ == '__main__':
  203.     pass
  204.  
  205.