'Constructs an AttributeQuery
:param destination: To whom the query should be sent
:param name_id: The identifier of the subject
:param attribute: A dictionary of attributes and values that is
asked for. The key are one of 4 variants:
3-tuple of name_format,name and friendly_name,
2-tuple of name_format and name,
1-tuple with name or
just the name as a string.
:param sp_name_qualifier: The unique identifier of the
service provider or affiliation of providers for whom the
identifier was generated.
:param name_qualifier: The unique identifier of the identity
provider that generated the identifier.
:param format: The format of the name ID
:param message_id: The identifier of the session
:param consent: Whether the principal have given her consent
:param extensions: Possible extensions
:param sign: Whether the query should be signed or not.
:param sign_prepare: Whether the Signature element should be added.
:return: Tuple of request ID and an AttributeQuery instance'

def create_attribute_query(self, destination, name_id=None, attribute=None, message_id=0, consent=None, extensions=None, sign=False, sign_prepare=False, **kwargs):

    if (name_id is None):
        if ('subject_id' in kwargs):
            name_id = saml.NameID(text=kwargs['subject_id'])
            for key in ['sp_name_qualifier', 'name_qualifier', 'format']:
                try:
                    setattr(name_id, key, kwargs[key])
                except KeyError:
                    pass
        else:
            raise AttributeError('Missing    required    parameter')
    elif isinstance(name_id, basestring):
        name_id = saml.NameID(text=name_id)
        for key in ['sp_name_qualifier', 'name_qualifier', 'format']:
            try:
                setattr(name_id, key, kwargs[key])
            except KeyError:
                pass
    subject = saml.Subject(name_id=name_id)
    if attribute:
        attribute = do_attributes(attribute)
    try:
        nsprefix = kwargs['nsprefix']
    except KeyError:
        nsprefix = None
    return self._message(AttributeQuery, destination, message_id, consent, extensions, sign, sign_prepare, subject=subject, attribute=attribute, nsprefix=nsprefix)
