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

This commit is contained in:
Christian Heimes 2022-01-17 08:23:36 +02:00 committed by GitHub
parent 91e33ac3d0
commit 7f4b69b907
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 8 deletions

View File

@ -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.

View File

@ -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.