docs: def getArg(self, namespace, key, default=None):
          """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
          """
          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