From 21ca52e78cea4a0056fc03f594547ae1edb539d2 Mon Sep 17 00:00:00 2001 From: Tom Kuson Date: Fri, 20 Mar 2026 23:53:57 +0000 Subject: [PATCH 1/5] Fix missing names for asyncio in 3.14 --- stdlib/@tests/stubtest_allowlists/py314.txt | 3 +++ stdlib/asyncio/__init__.pyi | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/stdlib/@tests/stubtest_allowlists/py314.txt b/stdlib/@tests/stubtest_allowlists/py314.txt index 7dd1d1779eaf..74a45d32b72b 100644 --- a/stdlib/@tests/stubtest_allowlists/py314.txt +++ b/stdlib/@tests/stubtest_allowlists/py314.txt @@ -35,6 +35,9 @@ mmap.mmap.flush mmap.mmap.rfind multiprocessing.process.BaseProcess.__init__ +# Some names are exported via __getattr__ instead of __all__. +asyncio.__all__ + # ==================================== # Pre-existing errors from Python 3.13 # ==================================== diff --git a/stdlib/asyncio/__init__.pyi b/stdlib/asyncio/__init__.pyi index 23cf57aaac33..dc0fd1bbeb75 100644 --- a/stdlib/asyncio/__init__.pyi +++ b/stdlib/asyncio/__init__.pyi @@ -33,6 +33,20 @@ if sys.platform == "win32": else: from .unix_events import * +if sys.version_info >= (3, 14): + from .events import _AbstractEventLoopPolicy as AbstractEventLoopPolicy + +if sys.platform == "win32": + if sys.version_info >= (3, 14): + from .windows_events import ( + _DefaultEventLoopPolicy as DefaultEventLoopPolicy, + _WindowsProactorEventLoopPolicy as WindowsProactorEventLoopPolicy, + _WindowsSelectorEventLoopPolicy as WindowsSelectorEventLoopPolicy, + ) +else: + if sys.version_info >= (3, 14): + from .unix_events import _DefaultEventLoopPolicy as DefaultEventLoopPolicy + if sys.platform == "win32": if sys.version_info >= (3, 14): @@ -41,6 +55,7 @@ if sys.platform == "win32": "Server", # from base_events "iscoroutinefunction", # from coroutines "iscoroutine", # from coroutines + "AbstractEventLoopPolicy", # from events "AbstractEventLoop", # from events "AbstractServer", # from events "Handle", # from events @@ -131,8 +146,11 @@ if sys.platform == "win32": "SelectorEventLoop", # from windows_events "ProactorEventLoop", # from windows_events "IocpProactor", # from windows_events + "DefaultEventLoopPolicy", # from windows_events "_DefaultEventLoopPolicy", # from windows_events + "WindowsSelectorEventLoopPolicy", # from windows_events "_WindowsSelectorEventLoopPolicy", # from windows_events + "WindowsProactorEventLoopPolicy", # from windows_events "_WindowsProactorEventLoopPolicy", # from windows_events "EventLoop", # from windows_events ) @@ -514,6 +532,7 @@ else: "Server", # from base_events "iscoroutinefunction", # from coroutines "iscoroutine", # from coroutines + "AbstractEventLoopPolicy", # from events "AbstractEventLoop", # from events "AbstractServer", # from events "Handle", # from events @@ -604,6 +623,7 @@ else: "DatagramTransport", # from transports "SubprocessTransport", # from transports "SelectorEventLoop", # from unix_events + "DefaultEventLoopPolicy", # from unix_events "EventLoop", # from unix_events ) elif sys.version_info >= (3, 13): From a3fc282d840facde7d9e5692ee14640cb71f46d6 Mon Sep 17 00:00:00 2001 From: Tom Kuson Date: Sat, 21 Mar 2026 14:00:28 +0000 Subject: [PATCH 2/5] Exclude from __all__ --- stdlib/@tests/stubtest_allowlists/py314.txt | 3 --- stdlib/asyncio/__init__.pyi | 5 ----- 2 files changed, 8 deletions(-) diff --git a/stdlib/@tests/stubtest_allowlists/py314.txt b/stdlib/@tests/stubtest_allowlists/py314.txt index 74a45d32b72b..7dd1d1779eaf 100644 --- a/stdlib/@tests/stubtest_allowlists/py314.txt +++ b/stdlib/@tests/stubtest_allowlists/py314.txt @@ -35,9 +35,6 @@ mmap.mmap.flush mmap.mmap.rfind multiprocessing.process.BaseProcess.__init__ -# Some names are exported via __getattr__ instead of __all__. -asyncio.__all__ - # ==================================== # Pre-existing errors from Python 3.13 # ==================================== diff --git a/stdlib/asyncio/__init__.pyi b/stdlib/asyncio/__init__.pyi index dc0fd1bbeb75..a37701ac7f76 100644 --- a/stdlib/asyncio/__init__.pyi +++ b/stdlib/asyncio/__init__.pyi @@ -146,11 +146,8 @@ if sys.platform == "win32": "SelectorEventLoop", # from windows_events "ProactorEventLoop", # from windows_events "IocpProactor", # from windows_events - "DefaultEventLoopPolicy", # from windows_events "_DefaultEventLoopPolicy", # from windows_events - "WindowsSelectorEventLoopPolicy", # from windows_events "_WindowsSelectorEventLoopPolicy", # from windows_events - "WindowsProactorEventLoopPolicy", # from windows_events "_WindowsProactorEventLoopPolicy", # from windows_events "EventLoop", # from windows_events ) @@ -532,7 +529,6 @@ else: "Server", # from base_events "iscoroutinefunction", # from coroutines "iscoroutine", # from coroutines - "AbstractEventLoopPolicy", # from events "AbstractEventLoop", # from events "AbstractServer", # from events "Handle", # from events @@ -623,7 +619,6 @@ else: "DatagramTransport", # from transports "SubprocessTransport", # from transports "SelectorEventLoop", # from unix_events - "DefaultEventLoopPolicy", # from unix_events "EventLoop", # from unix_events ) elif sys.version_info >= (3, 13): From c9c122c1cc8e1536c34cf345dec46be3611a05e5 Mon Sep 17 00:00:00 2001 From: Tom Kuson Date: Sat, 21 Mar 2026 14:03:12 +0000 Subject: [PATCH 3/5] Exclude from __all__ --- stdlib/asyncio/__init__.pyi | 1 - 1 file changed, 1 deletion(-) diff --git a/stdlib/asyncio/__init__.pyi b/stdlib/asyncio/__init__.pyi index a37701ac7f76..0ddb6117ae96 100644 --- a/stdlib/asyncio/__init__.pyi +++ b/stdlib/asyncio/__init__.pyi @@ -55,7 +55,6 @@ if sys.platform == "win32": "Server", # from base_events "iscoroutinefunction", # from coroutines "iscoroutine", # from coroutines - "AbstractEventLoopPolicy", # from events "AbstractEventLoop", # from events "AbstractServer", # from events "Handle", # from events From a7dea073aa2667d2856469e8ea392e90221d59f7 Mon Sep 17 00:00:00 2001 From: Tom Kuson Date: Sat, 21 Mar 2026 14:06:43 +0000 Subject: [PATCH 4/5] Add pyright ignore --- stdlib/asyncio/__init__.pyi | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/stdlib/asyncio/__init__.pyi b/stdlib/asyncio/__init__.pyi index 0ddb6117ae96..41b96bf25439 100644 --- a/stdlib/asyncio/__init__.pyi +++ b/stdlib/asyncio/__init__.pyi @@ -34,18 +34,18 @@ else: from .unix_events import * if sys.version_info >= (3, 14): - from .events import _AbstractEventLoopPolicy as AbstractEventLoopPolicy + from .events import _AbstractEventLoopPolicy as AbstractEventLoopPolicy # pyright: ignore[reportUnusedImport] if sys.platform == "win32": if sys.version_info >= (3, 14): from .windows_events import ( - _DefaultEventLoopPolicy as DefaultEventLoopPolicy, - _WindowsProactorEventLoopPolicy as WindowsProactorEventLoopPolicy, - _WindowsSelectorEventLoopPolicy as WindowsSelectorEventLoopPolicy, + _DefaultEventLoopPolicy as DefaultEventLoopPolicy, # pyright: ignore[reportUnusedImport] + _WindowsProactorEventLoopPolicy as WindowsProactorEventLoopPolicy, # pyright: ignore[reportUnusedImport] + _WindowsSelectorEventLoopPolicy as WindowsSelectorEventLoopPolicy, # pyright: ignore[reportUnusedImport] ) else: if sys.version_info >= (3, 14): - from .unix_events import _DefaultEventLoopPolicy as DefaultEventLoopPolicy + from .unix_events import _DefaultEventLoopPolicy as DefaultEventLoopPolicy # pyright: ignore[reportUnusedImport] if sys.platform == "win32": if sys.version_info >= (3, 14): From 92b356d897a06d1d8602339f0d48945c0b542a1d Mon Sep 17 00:00:00 2001 From: Tom Kuson Date: Sat, 21 Mar 2026 15:23:33 +0000 Subject: [PATCH 5/5] Fix on mypy --- stdlib/asyncio/__init__.pyi | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/stdlib/asyncio/__init__.pyi b/stdlib/asyncio/__init__.pyi index 41b96bf25439..5b574b95d260 100644 --- a/stdlib/asyncio/__init__.pyi +++ b/stdlib/asyncio/__init__.pyi @@ -34,18 +34,22 @@ else: from .unix_events import * if sys.version_info >= (3, 14): - from .events import _AbstractEventLoopPolicy as AbstractEventLoopPolicy # pyright: ignore[reportUnusedImport] + from .events import _AbstractEventLoopPolicy + + AbstractEventLoopPolicy = _AbstractEventLoopPolicy if sys.platform == "win32": if sys.version_info >= (3, 14): - from .windows_events import ( - _DefaultEventLoopPolicy as DefaultEventLoopPolicy, # pyright: ignore[reportUnusedImport] - _WindowsProactorEventLoopPolicy as WindowsProactorEventLoopPolicy, # pyright: ignore[reportUnusedImport] - _WindowsSelectorEventLoopPolicy as WindowsSelectorEventLoopPolicy, # pyright: ignore[reportUnusedImport] - ) + from .windows_events import _DefaultEventLoopPolicy, _WindowsProactorEventLoopPolicy, _WindowsSelectorEventLoopPolicy + + DefaultEventLoopPolicy = _DefaultEventLoopPolicy + WindowsProactorEventLoopPolicy = _WindowsProactorEventLoopPolicy + WindowsSelectorEventLoopPolicy = _WindowsSelectorEventLoopPolicy else: if sys.version_info >= (3, 14): - from .unix_events import _DefaultEventLoopPolicy as DefaultEventLoopPolicy # pyright: ignore[reportUnusedImport] + from .unix_events import _DefaultEventLoopPolicy + + DefaultEventLoopPolicy = _DefaultEventLoopPolicy if sys.platform == "win32": if sys.version_info >= (3, 14):