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

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __all__ = [
  5.     'ErrorHandler']
  6. __docformat__ = 'restructuredtext'
  7. __version__ = '$Id: errorhandler.py 1812 2009-07-29 13:11:49Z cthedot $'
  8. from helper import Deprecated
  9. import logging
  10. import urllib2
  11. import xml.dom as xml
  12.  
  13. class _ErrorHandler(object):
  14.     
  15.     def __init__(self, log, defaultloglevel = logging.INFO, raiseExceptions = True):
  16.         self.enabled = True
  17.         if log:
  18.             self._log = log
  19.         else:
  20.             import sys
  21.             self._log = logging.getLogger('CSSUTILS')
  22.             hdlr = logging.StreamHandler(sys.stderr)
  23.             formatter = logging.Formatter('%(levelname)s\t%(message)s')
  24.             hdlr.setFormatter(formatter)
  25.             self._log.addHandler(hdlr)
  26.             self._log.setLevel(defaultloglevel)
  27.         self.raiseExceptions = raiseExceptions
  28.  
  29.     
  30.     def __getattr__(self, name):
  31.         calls = ('debug', 'info', 'warn', 'error', 'critical', 'fatal')
  32.         other = ('setLevel', 'getEffectiveLevel', 'addHandler', 'removeHandler')
  33.         if name in calls:
  34.             self._logcall = getattr(self._log, name)
  35.             return self._ErrorHandler__handle
  36.         if name in other:
  37.             return getattr(self._log, name)
  38.         raise AttributeError('(errorhandler) No Attribute %r found' % name)
  39.  
  40.     
  41.     def _ErrorHandler__handle(self, msg = u'', token = None, error = xml.dom.SyntaxErr, neverraise = False, args = None):
  42.         if self.enabled:
  43.             (line, col) = (None, None)
  44.             if token:
  45.                 if isinstance(token, tuple):
  46.                     value = token[1]
  47.                     line = token[2]
  48.                     col = token[3]
  49.                 else:
  50.                     value = token.value
  51.                     line = token.line
  52.                     col = token.col
  53.                 msg = u'%s [%s:%s: %s]' % (msg, line, col, value)
  54.             
  55.             if error and self.raiseExceptions and not neverraise:
  56.                 if isinstance(error, urllib2.HTTPError) or isinstance(error, urllib2.URLError):
  57.                     raise 
  58.                 isinstance(error, urllib2.URLError)
  59.                 if issubclass(error, xml.dom.DOMException):
  60.                     error.line = line
  61.                     error.col = col
  62.                 
  63.                 raise error(msg)
  64.             not neverraise
  65.             self._logcall(msg)
  66.         
  67.  
  68.     
  69.     def setLog(self, log):
  70.         self._log = log
  71.  
  72.     
  73.     def setlog(self, log):
  74.         self.setLog(log)
  75.  
  76.     setlog = Deprecated('Use setLog() instead.')(setlog)
  77.     
  78.     def setloglevel(self, level):
  79.         self.setLevel(level)
  80.  
  81.     setloglevel = Deprecated('Use setLevel() instead.')(setloglevel)
  82.  
  83.  
  84. class ErrorHandler(_ErrorHandler):
  85.     instance = None
  86.     
  87.     def __init__(self, log = None, defaultloglevel = logging.INFO, raiseExceptions = True):
  88.         if ErrorHandler.instance is None:
  89.             ErrorHandler.instance = _ErrorHandler(log = log, defaultloglevel = defaultloglevel, raiseExceptions = raiseExceptions)
  90.         
  91.         self.__dict__ = ErrorHandler.instance.__dict__
  92.  
  93.  
  94.