from __future__ import annotations from datetime import datetime from typing import Any, Optional class Tenant: def __init__( self, id: str, name: str, enabled: bool, allow_self_registration: bool, allow_self_registration_domains: Optional[list[str]], created_at: datetime | str, updated_at: datetime | str, deleted_at: datetime | str | None, ) -> None: self.id = id self.name = name self.enabled = enabled self.allow_self_registration = allow_self_registration self.allow_self_registration_domains = allow_self_registration_domains or [] 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.name} - {self.id} - {self.enabled} - {self.allow_self_registration} - {self.allow_self_registration_domains} - {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