"""Title value object.""" from dataclasses import dataclass from app.domain.value_objects.base import ValueObject @dataclass(frozen=True, slots=True) class Title(ValueObject[str]): """Blog post title value object.""" MIN_LENGTH: int = 3 MAX_LENGTH: int = 200 def _validate(self) -> None: if not isinstance(self.value, str): raise ValueError("Title must be a string") if len(self.value) < self.MIN_LENGTH: raise ValueError(f"Title must be at least {self.MIN_LENGTH} characters") if len(self.value) > self.MAX_LENGTH: raise ValueError(f"Title must be at most {self.MAX_LENGTH} characters") if not self.value.strip(): raise ValueError("Title cannot be empty or whitespace")