https://github.com/python/cpython/commit/7363476b6405e3d288a61282aa7bc6aca9c2114d
commit: 7363476b6405e3d288a61282aa7bc6aca9c2114d
branch: main
author: Michael H <[email protected]>
committer: hauntsaninja <[email protected]>
date: 2025-01-06T15:03:27-08:00
summary:
gh-128559: Remove typing import from asyncio.timeouts (#128560)
files:
A Misc/NEWS.d/next/Library/2025-01-06-21-35-00.gh-issue-128559.6fxcDM.rst
M Lib/asyncio/timeouts.py
diff --git a/Lib/asyncio/timeouts.py b/Lib/asyncio/timeouts.py
index e6f5100691d362..09342dc7c1310b 100644
--- a/Lib/asyncio/timeouts.py
+++ b/Lib/asyncio/timeouts.py
@@ -1,7 +1,6 @@
import enum
from types import TracebackType
-from typing import final, Optional, Type
from . import events
from . import exceptions
@@ -23,14 +22,13 @@ class _State(enum.Enum):
EXITED = "finished"
-@final
class Timeout:
"""Asynchronous context manager for cancelling overdue coroutines.
Use `timeout()` or `timeout_at()` rather than instantiating this class
directly.
"""
- def __init__(self, when: Optional[float]) -> None:
+ def __init__(self, when: float | None) -> None:
"""Schedule a timeout that will trigger at a given loop time.
- If `when` is `None`, the timeout will never trigger.
@@ -39,15 +37,15 @@ def __init__(self, when: Optional[float]) -> None:
"""
self._state = _State.CREATED
- self._timeout_handler: Optional[events.TimerHandle] = None
- self._task: Optional[tasks.Task] = None
+ self._timeout_handler: events.TimerHandle | None = None
+ self._task: tasks.Task | None = None
self._when = when
- def when(self) -> Optional[float]:
+ def when(self) -> float | None:
"""Return the current deadline."""
return self._when
- def reschedule(self, when: Optional[float]) -> None:
+ def reschedule(self, when: float | None) -> None:
"""Reschedule the timeout."""
if self._state is not _State.ENTERED:
if self._state is _State.CREATED:
@@ -96,10 +94,10 @@ async def __aenter__(self) -> "Timeout":
async def __aexit__(
self,
- exc_type: Optional[Type[BaseException]],
- exc_val: Optional[BaseException],
- exc_tb: Optional[TracebackType],
- ) -> Optional[bool]:
+ exc_type: type[BaseException] | None,
+ exc_val: BaseException | None,
+ exc_tb: TracebackType | None,
+ ) -> bool | None:
assert self._state in (_State.ENTERED, _State.EXPIRING)
if self._timeout_handler is not None:
@@ -142,7 +140,7 @@ def _insert_timeout_error(exc_val: BaseException) -> None:
exc_val = exc_val.__context__
-def timeout(delay: Optional[float]) -> Timeout:
+def timeout(delay: float | None) -> Timeout:
"""Timeout async context manager.
Useful in cases when you want to apply timeout logic around block
@@ -162,7 +160,7 @@ def timeout(delay: Optional[float]) -> Timeout:
return Timeout(loop.time() + delay if delay is not None else None)
-def timeout_at(when: Optional[float]) -> Timeout:
+def timeout_at(when: float | None) -> Timeout:
"""Schedule the timeout at absolute time.
Like timeout() but argument gives absolute time in the same clock system
diff --git
a/Misc/NEWS.d/next/Library/2025-01-06-21-35-00.gh-issue-128559.6fxcDM.rst
b/Misc/NEWS.d/next/Library/2025-01-06-21-35-00.gh-issue-128559.6fxcDM.rst
new file mode 100644
index 00000000000000..7f9380de17761b
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2025-01-06-21-35-00.gh-issue-128559.6fxcDM.rst
@@ -0,0 +1 @@
+Improved import time of :mod:`asyncio`.
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]