Server IP : 92.204.138.22 / Your IP : 3.137.184.228 Web Server : Apache System : Linux ns1009439.ip-92-204-138.us 4.18.0-553.8.1.el8_10.x86_64 #1 SMP Tue Jul 2 07:26:33 EDT 2024 x86_64 User : internationaljou ( 1019) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /usr/lib/python3.6/site-packages/pydbus/ |
Upload File : |
from gi.repository import GLib, Gio def register_error(name, domain, code): """Register and map decorated exception class to a DBus error.""" def decorated(cls): error_registration.register_error(cls, name, domain, code) return cls return decorated def map_error(error_name): """Map decorated exception class to a DBus error.""" def decorated(cls): error_registration.map_error(cls, error_name) return cls return decorated def map_by_default(cls): """Map decorated exception class to all unknown DBus errors.""" error_registration.map_by_default(cls) return cls class ErrorRegistration(object): """Class for mapping exceptions to DBus errors.""" _default = None _map = dict() _reversed_map = dict() def map_by_default(self, exception_cls): """Set the exception class as a default.""" self._default = exception_cls def map_error(self, exception_cls, name): """Map the exception class to a DBus name.""" self._map[name] = exception_cls self._reversed_map[exception_cls] = name def register_error(self, exception_cls, name, domain, code): """Map and register the exception class to a DBus name.""" self.map_error(exception_cls, name) return Gio.DBusError.register_error(domain, code, name) def is_registered_exception(self, obj): """Is the exception registered?""" return obj.__class__ in self._reversed_map def get_dbus_name(self, obj): """Get the DBus name of the exception.""" return self._reversed_map.get(obj.__class__) def get_exception_class(self, name): """Get the exception class mapped to the DBus name.""" return self._map.get(name, self._default) def transform_message(self, name, message): """Transform the message of the exception.""" prefix = "{}:{}: ".format("GDBus.Error", name) if message.startswith(prefix): return message[len(prefix):] return message def transform_exception(self, e): """Transform the remote error to the exception.""" if not isinstance(e, GLib.Error): return e if not Gio.DBusError.is_remote_error(e): return e # Get DBus name of the error. name = Gio.DBusError.get_remote_error(e) # Get the exception class. exception_cls = self.get_exception_class(name) # Return the original exception. if not exception_cls: return e # Return new exception. message = self.transform_message(name, e.message) exception = exception_cls(message) exception.dbus_name = name exception.dbus_domain = e.domain exception.dbus_code = e.code return exception # Default error registration. error_registration = ErrorRegistration()