home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2012 January / maximum-cd-2012-01.iso / DiscContents / digsby_setup.exe / lib / warnings.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2011-10-05  |  9.7 KB  |  389 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. import linecache
  5. import sys
  6. import types
  7. __all__ = [
  8.     'warn',
  9.     'showwarning',
  10.     'formatwarning',
  11.     'filterwarnings',
  12.     'resetwarnings',
  13.     'catch_warnings']
  14.  
  15. def warnpy3k(message, category = None, stacklevel = 1):
  16.     if sys.py3kwarning:
  17.         if category is None:
  18.             category = DeprecationWarning
  19.         
  20.         warn(message, category, stacklevel + 1)
  21.     
  22.  
  23.  
  24. def _show_warning(message, category, filename, lineno, file = None, line = None):
  25.     if file is None:
  26.         file = sys.stderr
  27.     
  28.     
  29.     try:
  30.         file.write(formatwarning(message, category, filename, lineno, line))
  31.     except IOError:
  32.         pass
  33.  
  34.  
  35. showwarning = _show_warning
  36.  
  37. def formatwarning(message, category, filename, lineno, line = None):
  38.     s = '%s:%s: %s: %s\n' % (filename, lineno, category.__name__, message)
  39.     line = None if line is None else line
  40.     if line:
  41.         line = line.strip()
  42.         s += '  %s\n' % line
  43.     
  44.     return s
  45.  
  46.  
  47. def filterwarnings(action, message = '', category = Warning, module = '', lineno = 0, append = 0):
  48.     import re
  49.     item = (action, re.compile(message, re.I), category, re.compile(module), lineno)
  50.     if append:
  51.         filters.append(item)
  52.     else:
  53.         filters.insert(0, item)
  54.  
  55.  
  56. def simplefilter(action, category = Warning, lineno = 0, append = 0):
  57.     item = (action, None, category, None, lineno)
  58.     if append:
  59.         filters.append(item)
  60.     else:
  61.         filters.insert(0, item)
  62.  
  63.  
  64. def resetwarnings():
  65.     filters[:] = []
  66.  
  67.  
  68. class _OptionError(Exception):
  69.     pass
  70.  
  71.  
  72. def _processoptions(args):
  73.     for arg in args:
  74.         
  75.         try:
  76.             _setoption(arg)
  77.         continue
  78.         except _OptionError:
  79.             msg = None
  80.             print >>sys.stderr, 'Invalid -W option ignored:', msg
  81.             continue
  82.         
  83.  
  84.     
  85.  
  86.  
  87. def _setoption(arg):
  88.     import re
  89.     parts = arg.split(':')
  90.     if len(parts) > 5:
  91.         raise _OptionError('too many fields (max 5): %r' % (arg,))
  92.     len(parts) > 5
  93.     while len(parts) < 5:
  94.         parts.append('')
  95.     (action, message, category, module, lineno) = [ s.strip() for s in parts ]
  96.     action = _getaction(action)
  97.     message = re.escape(message)
  98.     category = _getcategory(category)
  99.     module = re.escape(module)
  100.     if lineno:
  101.         
  102.         try:
  103.             lineno = int(lineno)
  104.             if lineno < 0:
  105.                 raise ValueError
  106.             lineno < 0
  107.         except (ValueError, OverflowError):
  108.             None if module else []
  109.             None if module else []
  110.             raise _OptionError('invalid lineno %r' % (lineno,))
  111.         except:
  112.             None if module else []<EXCEPTION MATCH>(ValueError, OverflowError)
  113.         
  114.  
  115.     None if module else []
  116.     lineno = 0
  117.     filterwarnings(action, message, category, module, lineno)
  118.  
  119.  
  120. def _getaction(action):
  121.     if not action:
  122.         return 'default'
  123.     if action == 'all':
  124.         return 'always'
  125.     for a in ('default', 'always', 'ignore', 'module', 'once', 'error'):
  126.         if a.startswith(action):
  127.             return a
  128.     
  129.     raise _OptionError('invalid action: %r' % (action,))
  130.  
  131.  
  132. def _getcategory(category):
  133.     import re
  134.     if not category:
  135.         return Warning
  136.     if re.match('^[a-zA-Z0-9_]+$', category):
  137.         
  138.         try:
  139.             cat = eval(category)
  140.         except NameError:
  141.             category
  142.             category
  143.             raise _OptionError('unknown warning category: %r' % (category,))
  144.         except:
  145.             category<EXCEPTION MATCH>NameError
  146.         
  147.  
  148.     category
  149.     i = category.rfind('.')
  150.     module = category[:i]
  151.     klass = category[i + 1:]
  152.     
  153.     try:
  154.         m = __import__(module, None, None, [
  155.             klass])
  156.     except ImportError:
  157.         category
  158.         category
  159.         raise _OptionError('invalid module name: %r' % (module,))
  160.     except:
  161.         category
  162.  
  163.     
  164.     try:
  165.         cat = getattr(m, klass)
  166.     except AttributeError:
  167.         category
  168.         category
  169.         raise _OptionError('unknown warning category: %r' % (category,))
  170.     except:
  171.         category
  172.  
  173.     if not issubclass(cat, Warning):
  174.         raise _OptionError('invalid warning category: %r' % (category,))
  175.     issubclass(cat, Warning)
  176.     return cat
  177.  
  178.  
  179. def warn(message, category = None, stacklevel = 1):
  180.     if isinstance(message, Warning):
  181.         category = message.__class__
  182.     
  183.     if category is None:
  184.         category = UserWarning
  185.     
  186.     
  187.     try:
  188.         caller = sys._getframe(stacklevel)
  189.     except ValueError:
  190.         globals = sys.__dict__
  191.         lineno = 1
  192.  
  193.     globals = caller.f_globals
  194.     lineno = caller.f_lineno
  195.     if '__name__' in globals:
  196.         module = globals['__name__']
  197.     else:
  198.         module = '<string>'
  199.     filename = globals.get('__file__')
  200.     if filename:
  201.         fnl = filename.lower()
  202.         if fnl.endswith(('.pyc', '.pyo')):
  203.             filename = filename[:-1]
  204.         
  205.     elif module == '__main__':
  206.         
  207.         try:
  208.             filename = sys.argv[0]
  209.         except AttributeError:
  210.             filename = '__main__'
  211.         except:
  212.             None<EXCEPTION MATCH>AttributeError
  213.         
  214.  
  215.     None<EXCEPTION MATCH>AttributeError
  216.     if not filename:
  217.         filename = module
  218.     
  219.     registry = globals.setdefault('__warningregistry__', { })
  220.     warn_explicit(message, category, filename, lineno, module, registry, globals)
  221.  
  222.  
  223. def warn_explicit(message, category, filename, lineno, module = None, registry = None, module_globals = None):
  224.     lineno = int(lineno)
  225.     if module is None:
  226.         if not filename:
  227.             pass
  228.         module = '<unknown>'
  229.         if module[-3:].lower() == '.py':
  230.             module = module[:-3]
  231.         
  232.     
  233.     if registry is None:
  234.         registry = { }
  235.     
  236.     if isinstance(message, Warning):
  237.         text = str(message)
  238.         category = message.__class__
  239.     else:
  240.         text = message
  241.         message = category(message)
  242.     key = (text, category, lineno)
  243.     if registry.get(key):
  244.         return None
  245.     for item in filters:
  246.         (action, msg, cat, mod, ln) = item
  247.         if (msg is None or msg.match(text)) and issubclass(category, cat):
  248.             if mod is None or mod.match(module):
  249.                 if ln == 0 or lineno == ln:
  250.                     break
  251.                     continue
  252.         registry.get(key)
  253.     else:
  254.         action = defaultaction
  255.     if action == 'ignore':
  256.         registry[key] = 1
  257.         return None
  258.     linecache.getlines(filename, module_globals)
  259.     if action == 'error':
  260.         raise message
  261.     action == 'error'
  262.     if action == 'once':
  263.         registry[key] = 1
  264.         oncekey = (text, category)
  265.         if onceregistry.get(oncekey):
  266.             return None
  267.         onceregistry[oncekey] = 1
  268.     elif action == 'always':
  269.         pass
  270.     elif action == 'module':
  271.         registry[key] = 1
  272.         altkey = (text, category, 0)
  273.         if registry.get(altkey):
  274.             return None
  275.         registry[altkey] = 1
  276.     elif action == 'default':
  277.         registry[key] = 1
  278.     else:
  279.         raise RuntimeError('Unrecognized action (%r) in warnings.filters:\n %s' % (action, item))
  280.     fxn_code = registry.get(altkey)
  281.     if hasattr(showwarning, 'func_code'):
  282.         fxn_code = showwarning.func_code
  283.     elif hasattr(showwarning, '__func__'):
  284.         fxn_code = showwarning.__func__.func_code
  285.     
  286.     if fxn_code:
  287.         args = fxn_code.co_varnames[:fxn_code.co_argcount]
  288.         CO_VARARGS = 4
  289.         if 'line' not in args and not (fxn_code.co_flags & CO_VARARGS):
  290.             showwarning_msg = "functions overriding warnings.showwarning() must support the 'line' argument"
  291.             if message == showwarning_msg:
  292.                 _show_warning(message, category, filename, lineno)
  293.             else:
  294.                 warn(showwarning_msg, DeprecationWarning)
  295.         
  296.     
  297.     showwarning(message, category, filename, lineno)
  298.  
  299.  
  300. class WarningMessage(object):
  301.     _WARNING_DETAILS = ('message', 'category', 'filename', 'lineno', 'file', 'line')
  302.     
  303.     def __init__(self, message, category, filename, lineno, file = None, line = None):
  304.         local_values = locals()
  305.         for attr in self._WARNING_DETAILS:
  306.             setattr(self, attr, local_values[attr])
  307.         
  308.         self._category_name = None if category else None
  309.  
  310.     
  311.     def __str__(self):
  312.         return '{message : %r, category : %r, filename : %r, lineno : %s, line : %r}' % (self.message, self._category_name, self.filename, self.lineno, self.line)
  313.  
  314.  
  315.  
  316. class catch_warnings(object):
  317.     
  318.     def __init__(self, record = False, module = None):
  319.         self._record = record
  320.         self._module = None if module is None else module
  321.         self._entered = False
  322.  
  323.     
  324.     def __repr__(self):
  325.         args = []
  326.         if self._record:
  327.             args.append('record=True')
  328.         
  329.         if self._module is not sys.modules['warnings']:
  330.             args.append('module=%r' % self._module)
  331.         
  332.         name = type(self).__name__
  333.         return '%s(%s)' % (name, ', '.join(args))
  334.  
  335.     
  336.     def __enter__(self):
  337.         if self._entered:
  338.             raise RuntimeError('Cannot enter %r twice' % self)
  339.         self._entered
  340.         self._entered = True
  341.         self._filters = self._module.filters
  342.         self._module.filters = self._filters[:]
  343.         self._showwarning = self._module.showwarning
  344.         if self._record:
  345.             log = []
  346.             
  347.             def showwarning(*args, **kwargs):
  348.                 log.append(WarningMessage(*args, **kwargs))
  349.  
  350.             self._module.showwarning = showwarning
  351.             return log
  352.         return None
  353.  
  354.     
  355.     def __exit__(self, *exc_info):
  356.         if not self._entered:
  357.             raise RuntimeError('Cannot exit %r without entering first' % self)
  358.         self._entered
  359.         self._module.filters = self._filters
  360.         self._module.showwarning = self._showwarning
  361.  
  362.  
  363. _warnings_defaults = False
  364.  
  365. try:
  366.     from _warnings import filters, default_action, once_registry, warn, warn_explicit
  367.     defaultaction = default_action
  368.     onceregistry = once_registry
  369.     _warnings_defaults = True
  370. except ImportError:
  371.     filters = []
  372.     defaultaction = 'default'
  373.     onceregistry = { }
  374.  
  375. _processoptions(sys.warnoptions)
  376. if not _warnings_defaults:
  377.     simplefilter('ignore', category = PendingDeprecationWarning, append = 1)
  378.     simplefilter('ignore', category = ImportWarning, append = 1)
  379.     bytes_warning = sys.flags.bytes_warning
  380.     if bytes_warning > 1:
  381.         bytes_action = 'error'
  382.     elif bytes_warning:
  383.         bytes_action = 'default'
  384.     else:
  385.         bytes_action = 'ignore'
  386.     simplefilter(bytes_action, category = BytesWarning, append = 1)
  387.  
  388. del _warnings_defaults
  389.