I'm using Ldaptor for LDAP access because it fits in with Twisted, and the results are a bit mystifying. The results that come back from a search are a list of LDAPEntryWithClient. Indexing this, e.g. entry['cn'], gives an object of type JournaledLDAPAttributeSet, which is a subclass of set. It contains the name of the attribute and a list containing the value:
JournaledLDAPAttributeSet(b'cn', [b'Peter Westlake'])
Getting the value out of that isn't straightforward: I'd have to check the elements of the set for a list. Is there a better way?
I've also found that the items() method gives something more tractable:
(b'cn', b'Peter Westlake'),
so I can turn that into a dict and index that. But again, this seems like an odd design for an API. Is there a better way to extract the value of an attribute from an entry?