Package dbus :: Module exceptions
[hide private]
[frames] | no frames]

Source Code for Module dbus.exceptions

  1  """D-Bus exceptions.""" 
  2   
  3  # Copyright (C) 2007 Collabora Ltd. <http://www.collabora.co.uk/> 
  4  # 
  5  # Permission is hereby granted, free of charge, to any person 
  6  # obtaining a copy of this software and associated documentation 
  7  # files (the "Software"), to deal in the Software without 
  8  # restriction, including without limitation the rights to use, copy, 
  9  # modify, merge, publish, distribute, sublicense, and/or sell copies 
 10  # of the Software, and to permit persons to whom the Software is 
 11  # furnished to do so, subject to the following conditions: 
 12  # 
 13  # The above copyright notice and this permission notice shall be 
 14  # included in all copies or substantial portions of the Software. 
 15  # 
 16  # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
 17  # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
 18  # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
 19  # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 
 20  # HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
 21  # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
 22  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
 23  # DEALINGS IN THE SOFTWARE. 
 24   
 25  __all__ = ('DBusException', 'MissingErrorHandlerException', 
 26             'MissingReplyHandlerException', 'ValidationException', 
 27             'IntrospectionParserException', 'UnknownMethodException', 
 28             'NameExistsException') 
 29   
 30   
31 -class DBusException(Exception):
32 33 include_traceback = False 34 """If True, tracebacks will be included in the exception message sent to 35 D-Bus clients. 36 37 Exceptions that are not DBusException subclasses always behave 38 as though this is True. Set this to True on DBusException subclasses 39 that represent a programming error, and leave it False on subclasses that 40 represent an expected failure condition (e.g. a network server not 41 responding).""" 42
43 - def __init__(self, *args, **kwargs):
44 name = kwargs.pop('name', None) 45 if name is not None or getattr(self, '_dbus_error_name', None) is None: 46 self._dbus_error_name = name 47 if kwargs: 48 raise TypeError('DBusException does not take keyword arguments: %s' 49 % ', '.join(kwargs.keys())) 50 Exception.__init__(self, *args)
51
52 - def __str__(self):
53 s = Exception.__str__(self) 54 if self._dbus_error_name is not None: 55 return '%s: %s' % (self._dbus_error_name, s) 56 else: 57 return s
58
59 - def get_dbus_message(self):
60 s = Exception.__str__(self) 61 if isinstance(s, bytes): 62 return s.decode('utf-8', 'replace') 63 return s
64
65 - def get_dbus_name(self):
66 return self._dbus_error_name
67
68 -class MissingErrorHandlerException(DBusException):
69 70 include_traceback = True 71
72 - def __init__(self):
73 DBusException.__init__(self, "error_handler not defined: if you define a reply_handler you must also define an error_handler")
74
75 -class MissingReplyHandlerException(DBusException):
76 77 include_traceback = True 78
79 - def __init__(self):
80 DBusException.__init__(self, "reply_handler not defined: if you define an error_handler you must also define a reply_handler")
81
82 -class ValidationException(DBusException):
83 84 include_traceback = True 85
86 - def __init__(self, msg=''):
87 DBusException.__init__(self, "Error validating string: %s"%msg)
88
89 -class IntrospectionParserException(DBusException):
90 91 include_traceback = True 92
93 - def __init__(self, msg=''):
94 DBusException.__init__(self, "Error parsing introspect data: %s"%msg)
95
96 -class UnknownMethodException(DBusException):
97 98 include_traceback = True 99 _dbus_error_name = 'org.freedesktop.DBus.Error.UnknownMethod' 100
101 - def __init__(self, method):
102 DBusException.__init__(self, "Unknown method: %s"%method)
103
104 -class NameExistsException(DBusException):
105 106 include_traceback = True 107
108 - def __init__(self, name):
109 DBusException.__init__(self, "Bus name already exists: %s"%name)
110