Commit ae160bba authored by Subhendu Ghosh's avatar Subhendu Ghosh Committed by Nick Coghlan

bpo-26128: Added __init__to subprocess.STARTUPINFO (#171)

The Windows-specific subprocess.STARTUPINFO class now accepts
keyword-only arguments to its constructor to set the various
data attributes.

Patch by Subhendu Ghosh.
parent 21024f06
......@@ -746,7 +746,8 @@ on Windows.
Partial support of the Windows
`STARTUPINFO <https://msdn.microsoft.com/en-us/library/ms686331(v=vs.85).aspx>`__
structure is used for :class:`Popen` creation.
structure is used for :class:`Popen` creation. The following attributes can be set
by passing them as keyword-only arguments.
.. attribute:: dwFlags
......@@ -788,6 +789,8 @@ on Windows.
:data:`SW_HIDE` is provided for this attribute. It is used when
:class:`Popen` is called with ``shell=True``.
.. versionchanged:: 3.7
*Keyword-only argument* support was added.
Constants
^^^^^^^^^
......
......@@ -127,11 +127,13 @@ if _mswindows:
import msvcrt
import _winapi
class STARTUPINFO:
dwFlags = 0
hStdInput = None
hStdOutput = None
hStdError = None
wShowWindow = 0
def __init__(self, *, dwFlags=0, hStdInput=None, hStdOutput=None,
hStdError=None, wShowWindow=0):
self.dwFlags = dwFlags
self.hStdInput = hStdInput
self.hStdOutput = hStdOutput
self.hStdError = hStdError
self.wShowWindow = wShowWindow
else:
import _posixsubprocess
import select
......
......@@ -2550,6 +2550,22 @@ class Win32ProcessTestCase(BaseTestCase):
subprocess.call([sys.executable, "-c", "import sys; sys.exit(0)"],
startupinfo=startupinfo)
def test_startupinfo_keywords(self):
# startupinfo argument
# We use hardcoded constants, because we do not want to
# depend on win32all.
STARTF_USERSHOWWINDOW = 1
SW_MAXIMIZE = 3
startupinfo = subprocess.STARTUPINFO(
dwFlags=STARTF_USERSHOWWINDOW,
wShowWindow=SW_MAXIMIZE
)
# Since Python is a console process, it won't be affected
# by wShowWindow, but the argument should be silently
# ignored
subprocess.call([sys.executable, "-c", "import sys; sys.exit(0)"],
startupinfo=startupinfo)
def test_creationflags(self):
# creationflags argument
CREATE_NEW_CONSOLE = 16
......
No preview for this file type
......@@ -13,7 +13,7 @@ Core and Builtins
- bpo-28598: Support __rmod__ for subclasses of str being called before
str.__mod__. Patch by Martijn Pieters.
- bpo-29607: Fix stack_effect computation for CALL_FUNCTION_EX.
- bpo-29607: Fix stack_effect computation for CALL_FUNCTION_EX.
Patch by Matthieu Dartiailh.
- bpo-29602: Fix incorrect handling of signed zeros in complex constructor for
......@@ -1243,6 +1243,9 @@ Core and Builtins
Library
-------
- Issue #26128: Added keyword-only arguments support for
subprocess.STARTUPINFO
- Issue #27517: LZMA compressor and decompressor no longer raise exceptions if
given empty data twice. Patch by Benjamin Fogle.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment