from dataclasses import dataclass @dataclass class Result[T, E]: value: T | None = None error: E | None = None @property def is_ok(self) -> bool: return self.error is None @property def is_err(self) -> bool: return self.error is not None @staticmethod def ok(value: T) -> "Result[T, E]": return Result(value=value) @staticmethod def err(error: E) -> "Result[T, E]": return Result(error=error)