summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Lapeyre <remi.lapeyre@henki.fr>2019-06-08 14:56:24 (GMT)
committerGregory P. Smith <greg@krypto.org>2019-06-08 14:56:24 (GMT)
commit8cc605acdda5aff250ab4c9b524a7560f90ca9f3 (patch)
tree289a9ad54d3c8005f3149eab5e373c45c8500577
parenta15a7bcaea54e1845ab2abe27e6f583294cd715b (diff)
downloadcpython-8cc605acdda5aff250ab4c9b524a7560f90ca9f3.zip
cpython-8cc605acdda5aff250ab4c9b524a7560f90ca9f3.tar.gz
cpython-8cc605acdda5aff250ab4c9b524a7560f90ca9f3.tar.bz2
bpo-34886: Fix subprocess.run handling of exclusive arguments (GH-11727)
Fix an unintended ValueError from :func:`subprocess.run` when checking for conflicting `input` and `stdin` or `capture_output` and `stdout` or `stderr` args when they were explicitly provided but with `None` values within a passed in `**kwargs` dict rather than as passed directly by name.
-rw-r--r--Lib/subprocess.py4
-rw-r--r--Misc/NEWS.d/next/Library/2019-06-08-16-03-19.bpo-34886.Ov-pc9.rst5
2 files changed, 7 insertions, 2 deletions
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index 9e36b9d..d34c578 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -459,12 +459,12 @@ def run(*popenargs,
The other arguments are the same as for the Popen constructor.
"""
if input is not None:
- if 'stdin' in kwargs:
+ if kwargs.get('stdin') is not None:
raise ValueError('stdin and input arguments may not both be used.')
kwargs['stdin'] = PIPE
if capture_output:
- if ('stdout' in kwargs) or ('stderr' in kwargs):
+ if kwargs.get('stdout') is not None or kwargs.get('stderr') is not None:
raise ValueError('stdout and stderr arguments may not be used '
'with capture_output.')
kwargs['stdout'] = PIPE
diff --git a/Misc/NEWS.d/next/Library/2019-06-08-16-03-19.bpo-34886.Ov-pc9.rst b/Misc/NEWS.d/next/Library/2019-06-08-16-03-19.bpo-34886.Ov-pc9.rst
new file mode 100644
index 0000000..1b5fc37
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2019-06-08-16-03-19.bpo-34886.Ov-pc9.rst
@@ -0,0 +1,5 @@
+Fix an unintended ValueError from :func:`subprocess.run` when checking for
+conflicting `input` and `stdin` or `capture_output` and `stdout` or `stderr`
+args when they were explicitly provided but with `None` values within a
+passed in `**kwargs` dict rather than as passed directly by name. Patch
+contributed by Rémi Lapeyre.