from dataclasses import dataclass, field from datetime import datetime, timedelta from typing import Optional @dataclass(frozen=True) class WaitParam: DEFAULT_TIMEOUT: timedelta = field(default=timedelta(seconds=120), init=False) DEFAULT_POLL_INTERVAL: timedelta = field(default=timedelta(seconds=5), init=False) timeout: timedelta = DEFAULT_TIMEOUT poll_interval: timedelta = DEFAULT_POLL_INTERVAL def __post_init__(self): if self.timeout is None: object.__setattr__(self, 'timeout', self.DEFAULT_TIMEOUT) if self.poll_interval is None: object.__setattr__(self, 'poll_interval', self.DEFAULT_POLL_INTERVAL) def get_deadline(self) -> datetime: return datetime.now() + self.timeout