From 7f4b69b9076bdbcea31f6ad16eb125ee99cf0175 Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Mon, 17 Jan 2022 08:23:36 +0200 Subject: bpo-40280: Change subprocess imports for cleaner error on wasm32 (GH-30620) --- Lib/subprocess.py | 15 +++++++-------- .../next/Library/2022-01-16-14-07-14.bpo-40280.LtFHfF.rst | 4 ++++ 2 files changed, 11 insertions(+), 8 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2022-01-16-14-07-14.bpo-40280.LtFHfF.rst diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 33f022f..358f49a 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -65,16 +65,11 @@ __all__ = ["Popen", "PIPE", "STDOUT", "call", "check_call", "getstatusoutput", # NOTE: We intentionally exclude list2cmdline as it is # considered an internal implementation detail. issue10838. -try: +_mswindows = sys.platform == "win32" + +if _mswindows: import msvcrt import _winapi - _mswindows = True -except ModuleNotFoundError: - _mswindows = False - import _posixsubprocess - import select - import selectors -else: from _winapi import (CREATE_NEW_CONSOLE, CREATE_NEW_PROCESS_GROUP, STD_INPUT_HANDLE, STD_OUTPUT_HANDLE, STD_ERROR_HANDLE, SW_HIDE, @@ -95,6 +90,10 @@ else: "NORMAL_PRIORITY_CLASS", "REALTIME_PRIORITY_CLASS", "CREATE_NO_WINDOW", "DETACHED_PROCESS", "CREATE_DEFAULT_ERROR_MODE", "CREATE_BREAKAWAY_FROM_JOB"]) +else: + import _posixsubprocess + import select + import selectors # Exception classes used by this module. diff --git a/Misc/NEWS.d/next/Library/2022-01-16-14-07-14.bpo-40280.LtFHfF.rst b/Misc/NEWS.d/next/Library/2022-01-16-14-07-14.bpo-40280.LtFHfF.rst new file mode 100644 index 0000000..b7bd7ab --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-01-16-14-07-14.bpo-40280.LtFHfF.rst @@ -0,0 +1,4 @@ +:mod:`subprocess` now imports Windows-specific imports when +``sys.platform == "win32"`` and POSIX-specific imports on all other +platforms. This gives a clean exception when ``_posixsubprocess`` is not +available (e.g. Emscripten browser target) and it's slightly faster, too. -- cgit v0.12