From: Rémi Lapeyre Date: Sat, 8 Jun 2019 14:56:24 +0000 (+0200) Subject: bpo-34886: Fix subprocess.run handling of exclusive arguments (GH-11727) X-Git-Tag: v3.9.0a1~1338 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8cc605acdda5aff250ab4c9b524a7560f90ca9f3;p=thirdparty%2FPython%2Fcpython.git 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. --- diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 9e36b9de6b34..d34c57828b48 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 000000000000..1b5fc3702521 --- /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.