From: Georg Brandl Date: Tue, 1 Jul 2008 19:28:43 +0000 (+0000) Subject: #2683: Popen.communicate() argument must be bytes. X-Git-Tag: v3.0b2~131 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1abcbf8e193019b16f5a7e71c176667fb679baab;p=python #2683: Popen.communicate() argument must be bytes. --- diff --git a/Lib/subprocess.py b/Lib/subprocess.py index d9c76d8ad5..8df10344cb 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -883,8 +883,6 @@ class Popen(object): if self.stdin: if input is not None: - if isinstance(input, str): - input = input.encode() self.stdin.write(input) self.stdin.close() @@ -1129,10 +1127,6 @@ class Popen(object): def _communicate(self, input): - if self.stdin: - if isinstance(input, str): # Unicode - input = input.encode("utf-8") # XXX What else? - input = bytes(input) read_set = [] write_set = [] stdout = None # Return diff --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index 71ae0db291..fe916c2a85 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -302,7 +302,7 @@ class ProcessTestCase(unittest.TestCase): stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - (stdout, stderr) = p.communicate("banana") + (stdout, stderr) = p.communicate(b"banana") self.assertEqual(stdout, b"banana") self.assertEqual(remove_stderr_debug_decorations(stderr), b"pineapple") @@ -420,7 +420,7 @@ class ProcessTestCase(unittest.TestCase): stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - data = p.communicate("lime")[0] + data = p.communicate(b"lime")[0] self.assertEqual(data, b"lime") diff --git a/Misc/NEWS b/Misc/NEWS index 9914858c17..87f7c6bf77 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -17,6 +17,9 @@ Core and Builtins Library ------- +- Issue #2683: Fix inconsistency in subprocess.Popen.communicate(): the + argument now must be a bytes object in any case. + - Issue #3145: help("modules whatever") failed when trying to load the source code of every single module of the standard library, including invalid files used in the test suite.