def _decode_header_randomness(addr): """ This fixes the given address so that it is *always* a set() of just email addresses suitable for routing. """ if not addr: return set() elif isinstance(addr, list): return set(parseaddr(a.lower())[1] for a in addr) elif isinstance(addr, basestring): return set([parseaddr(addr.lower())[1]]) else: raise encoding.EncodingError("Address must be a string or a list not: %r", type(addr))
def _decode_header_randomness(addr): """ This fixes the given address so that it is *always* a set() of just email addresses suitable for routing. """ if not addr: return set() elif isinstance(addr, (list, tuple)): addr_set = set() for a in addr: for returned_addr in _decode_header_randomness(a): addr_set.add(returned_addr) return addr_set elif isinstance(addr, six.string_types): return set([parseaddr(addr.lower())[1]]) elif isinstance(addr, six.binary_type): addr = addr.decode() return set([parseaddr(addr.lower())[1]]) else: raise encoding.EncodingError("Address must be a string or a list not: %r", type(addr))