from __future__ import annotations from datetime import datetime from typing import Any, Optional class User: def __init__( self, id: str, first_name: str, last_name: str, username: str, email: str, password: str, verified: bool, external_id: Optional[str], tenant_id: Optional[str], created_at: datetime | str, updated_at: datetime | str, deleted_at: datetime | str | None, ) -> None: self.id = id self.first_name = first_name self.last_name = last_name self.username = username self.email = email self.password = password self.verified = verified self.external_id = external_id self.tenant_id = tenant_id self.created_at = self._parse_datetime(created_at) self.updated_at = self._parse_datetime(updated_at) self.deleted_at = self._parse_datetime(deleted_at) if deleted_at is not None else None def __str__(self) -> str: return f"{self.first_name} {self.last_name} - {self.email} - {self.id} - {self.tenant_id} - {self.created_at} - {self.updated_at} - {self.deleted_at}" @staticmethod def _parse_datetime(value: Any) -> Any: if isinstance(value, datetime): return value if isinstance(value, str): try: return datetime.fromisoformat(value) except ValueError: return value return value