'Get a value for a namespaced key.
@param namespace: The namespace in the message for this key
@type namespace: str
@param key: The key to get within this namespace
@type key: str
@param default: The value to use if this key is absent from
this message. Using the special value
openid.message.no_default will result in this method
raising a KeyError instead of returning the default.
@rtype: str or the type of default
@raises KeyError: if default is no_default
@raises UndefinedOpenIDNamespace: if the message has not yet
had an OpenID namespace set'

def getArg(self, namespace, key, default=None):

    namespace = self._fixNS(namespace)
    args_key = (namespace, key)
    try:
        return self.args[args_key]
    except KeyError:
        if (default is no_default):
            raise KeyError((namespace, key))
        else:
            return default
