code: def get_attributes(self):
          
          attributes = {}
          attribute_nodes = self.__query_assertion('/saml:AttributeStatement/saml:Attribute')
          for attribute_node in attribute_nodes:
              attr_name = attribute_node.get('Name')
              if attr_name in attributes.keys():
                  raise OneLogin_Saml2_ValidationError(
                      'Found an Attribute element with duplicated Name',
                      OneLogin_Saml2_ValidationError.DUPLICATED_ATTRIBUTE_NAME_FOUND
                  )
  
              values = []
              for attr in attribute_node.iterchildren('{%s}AttributeValue' % OneLogin_Saml2_Constants.NSMAP['saml']):
                  attr_text = OneLogin_Saml2_XML.element_text(attr)
                  if attr_text:
                      attr_text = attr_text.strip()
                      if attr_text:
                          values.append(attr_text)
  
                  # Parse any nested NameID children
                  for nameid in attr.iterchildren('{%s}NameID' % OneLogin_Saml2_Constants.NSMAP['saml']):
                      values.append({
                          'NameID': {
                              'Format': nameid.get('Format'),
                              'NameQualifier': nameid.get('NameQualifier'),
                              'value': nameid.text
                          }
                      })
              attributes[attr_name] = values
          return attributes
docs: Gets the Attributes from the AttributeStatement element.
          EncryptedAttributes are not supported