def __call__( self, *arguments, **named ):
		set = {}
		for argument,value in zip(arguments,self.arguments):
			set[argument.name] = (argument,value)
		# XXX potentially there are missing positional arguments!
		if named:
			nameSet = dict([(arg.name,arg) for arg in self.arguments])
			for key,value in named.items():
				if set.has_key( key ):
					raise ValueError("""Redefinition of argument order for argument %s"""%(set.get(key)))
				else:
					# note that argument may be None
					set [key] = nameSet.get(key), value
		for key,(argument,value) in set.items():
			if self.coerce and argument and argument.baseType and hasattr(argument.baseType, "coerce"):
				value = argument.baseType.coerce(argument)
			set[key] = value
		# XXX Should keep arguments in order to allow for *args set :(
		return self.implementation( **set )
Do the actual calling of the callable object
dataset/ETHPy150Open correl/Transmission-XBMC/resources/lib/basictypes/callable.py/Callable.__call__