from typing import List, Dict, Union from .utils import bytes_to_strings class UWLDAPRecord: """Represents a record from the UW LDAP.""" def __init__( self, uid: str, program: Union[str, None], mail_local_addresses: List[str], ): self.uid = uid self.program = program self.mail_local_addresses = mail_local_addresses @staticmethod def deserialize_from_ldap(self, data: Dict[str, List[bytes]]): """ Deserializes a dict returned from ldap.search_s() into a UWLDAPRecord. """ data = bytes_to_strings(data) return UWLDAPRecord( uid=data['uid'][0], program=data.get('ou', [None])[0], mail_local_addresses=data['mailLocalAddress'], )