docs: def user(self, base_dn, samaccountname, attributes=(), explicit_membership_only=False):
          """Produces a single, populated ADUser object through the object factory.
          Does not populate attributes for the caller instance.
  
          :param str base_dn: The base DN to search within
          :param str samaccountname: The user's sAMAccountName
          :param list attributes: Object attributes to populate, defaults to all
          :param bool explicit_membership_only: If set True, memberof will only
              list groups for which the user is a directly referenced member
  
          :return: A populated ADUser object
          :rtype: ADUser
          """
  
          users = self.users(base_dn, samaccountnames=[samaccountname],
                             attributes=attributes, explicit_membership_only=explicit_membership_only)
  
          try:
              # Usually we will find a match, but perhaps not always
              return users[0]
          except IndexError:
              logging.info("%s - unable to retrieve object from AD by sAMAccountName", samaccountname)