[Python-checkins] bpo-40280: Change subprocess imports for cleaner error on wasm32 (GH-30620)

tiran webhook-mailer at python.org
Mon Jan 17 01:23:54 EST 2022


https://github.com/python/cpython/commit/7f4b69b9076bdbcea31f6ad16eb125ee99cf0175
commit: 7f4b69b9076bdbcea31f6ad16eb125ee99cf0175
branch: main
author: Christian Heimes <christian at python.org>
committer: tiran <christian at python.org>
date: 2022-01-17T07:23:36+01:00
summary:

bpo-40280: Change subprocess imports for cleaner error on wasm32 (GH-30620)

files:
A Misc/NEWS.d/next/Library/2022-01-16-14-07-14.bpo-40280.LtFHfF.rst
M Lib/subprocess.py

diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index 33f022f8fced6..358f49a5f8cd8 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -65,16 +65,11 @@
            # 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 @@
                     "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 0000000000000..b7bd7abd80c42
--- /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.



More information about the Python-checkins mailing list