Source code for src.share_kernel.domain.value_objects.email

from dataclasses import dataclass

from src.share_kernel.domain.base_value_object import ValueObject
from src.share_kernel.domain.exceptions import InvalidValueObjectException
from src.share_kernel.utils.validators import is_valid_email


[docs] @dataclass(frozen=True) class Email(ValueObject): value: str def __post_init__(self): # Normalisation avant validation object.__setattr__(self, "value", self.value.strip().lower()) super().__post_init__() def _validate(self): if not is_valid_email(self.value): raise InvalidValueObjectException(f"Email invalide : '{self.value}'") @property def domain(self) -> str: return self.value.split("@")[1] def __str__(self) -> str: return self.value