class EmailAddress: """Represents an email address, optionally with the person's name.""" email_validator = EmailValidator() def __init__(self, email: str, name: str = ''): """Validate *email* and instantiate.""" self.email_validator.validate_or_raise(email) self.email = email self.name = name def to_mailer(self) -> Union[str, Tuple[str, str]]: """Return either email or a 2-tuple (name, email).""" return (self.name, self.email) if self.name else self.email def __str__(self) -> str: return f'"{self.name}" <{self.email}>' if self.name else self.email
class EmailAddress: """Represents an email address, optionally with the person's name.""" email_validator = EmailValidator() email: TEmailAddress name: TPersonsName def __init__(self, email: TEmailAddress, name: TPersonsName = TPersonsName("")): """Validate *email* and instantiate.""" self.email_validator.validate_or_raise(email) self.__dict__["email"] = email # avoid frozen dataclass error self.__dict__["name"] = name # avoid frozen dataclass error def to_mailer(self) -> Union[str, Tuple[str, str]]: """Return either email or a 2-tuple (name, email).""" return (self.name, self.email) if self.name else self.email def __str__(self) -> str: return f'"{self.name}" <{self.email}>' if self.name else self.email