Lines Matching refs:self
33 def __init__(self, when: Optional[float]) -> None:
40 self._state = _State.CREATED
42 self._timeout_handler: Optional[events.TimerHandle] = None
43 self._task: Optional[tasks.Task] = None
44 self._when = when
46 def when(self) -> Optional[float]:
48 return self._when
50 def reschedule(self, when: Optional[float]) -> None:
52 assert self._state is not _State.CREATED
53 if self._state is not _State.ENTERED:
55 f"Cannot change state of {self._state.value} Timeout",
58 self._when = when
60 if self._timeout_handler is not None:
61 self._timeout_handler.cancel()
64 self._timeout_handler = None
68 self._timeout_handler = loop.call_soon(self._on_timeout)
70 self._timeout_handler = loop.call_at(when, self._on_timeout)
72 def expired(self) -> bool:
74 return self._state in (_State.EXPIRING, _State.EXPIRED)
76 def __repr__(self) -> str:
78 if self._state is _State.ENTERED:
79 when = round(self._when, 3) if self._when is not None else None
82 return f"<Timeout [{self._state.value}]{info_str}>"
84 async def __aenter__(self) -> "Timeout":
85 self._state = _State.ENTERED
86 self._task = tasks.current_task()
87 self._cancelling = self._task.cancelling()
88 if self._task is None:
90 self.reschedule(self._when)
91 return self
94 self,
99 assert self._state in (_State.ENTERED, _State.EXPIRING)
101 if self._timeout_handler is not None:
102 self._timeout_handler.cancel()
103 self._timeout_handler = None
105 if self._state is _State.EXPIRING:
106 self._state = _State.EXPIRED
108 if self._task.uncancel() <= self._cancelling and exc_type is exceptions.CancelledError:
112 elif self._state is _State.ENTERED:
113 self._state = _State.EXITED
117 def _on_timeout(self) -> None:
118 assert self._state is _State.ENTERED
119 self._task.cancel()
120 self._state = _State.EXPIRING
122 self._timeout_handler = None