from __future__ import annotations from datetime import datetime from typing import Any, Optional class Application: def __init__(self, id: str, name: str, secret: str, tenant_id: str, expires_at: datetime | str | None, created_at: datetime | str, updated_at: datetime | str, deleted_at: datetime | str | None) -> None: self.id = id self.name = name self.secret = secret self.tenant_id = tenant_id self.expires_at = expires_at 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.secret} - {self.tenant_id} - {self.expires_at} - {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