Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bpo-26128: Added __init__to STARTUPINFO #171

Merged
merged 1 commit into from Feb 25, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 4 additions & 1 deletion Doc/library/subprocess.rst
Expand Up @@ -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

Expand Down Expand Up @@ -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
^^^^^^^^^
Expand Down
12 changes: 7 additions & 5 deletions Lib/subprocess.py
Expand Up @@ -127,11 +127,13 @@ def stdout(self, value):
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
Expand Down
16 changes: 16 additions & 0 deletions Lib/test/test_subprocess.py
Expand Up @@ -2550,6 +2550,22 @@ def test_startupinfo(self):
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
Expand Down
1 change: 1 addition & 0 deletions Misc/ACKS
Expand Up @@ -1726,3 +1726,4 @@ Doug Zongker
Peter Åstrand
evilzero
Dhushyanth Ramasamy
Subhendu Ghosh
5 changes: 4 additions & 1 deletion Misc/NEWS
Expand Up @@ -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
Expand Down Expand Up @@ -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.

Expand Down