Proposed change in python binding's signal handlers

John (J5) Palmieri johnp at
Thu Feb 3 14:42:57 PST 2005

I want to get input on an idea I had for revamping how we do signal
handlers as I am not sure the reason why we do them the way we do now.
Basically the signature for signal handlers are not very descriptive and
cause questions like "how do I extract arguments from a signal?".
Currently a signal handler function would look like this:

def foobar (interface, signal_name, service, path, message):
        args = message.get_args_list()
        #get the arguments in the order they were sent
        album_name = args[0]
        band_name = args[1]
	#or (album_name, band_name) = args
	print band_name + ": " + album_name

Why not do something more like this:

class Source:
	def __init__(self, interface, signal_name, 
                     service, path, message):
		self.interface = interface
		self.signal_name = signal_name
		self.service = service
		self.path = path
		self.message = message

def foobar (source, album_name, band_name):
	print band_name + ": " + album_name

I think this helps signal handlers be a bit more self documenting as the
signature for the handler would be the same (excluding source) as the D-
BUS signal's signature.  It also feels more natural.  Anyway if no one
objects I will go ahead and implement this.

John (J5) Palmieri
Associate Software Engineer
Desktop Group
Red Hat, Inc.

More information about the dbus mailing list