From 1abcbf8e193019b16f5a7e71c176667fb679baab Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Tue, 1 Jul 2008 19:28:43 +0000 Subject: [PATCH] #2683: Popen.communicate() argument must be bytes. --- Lib/subprocess.py | 6 ------ Lib/test/test_subprocess.py | 4 ++-- Misc/NEWS | 3 +++ 3 files changed, 5 insertions(+), 8 deletions(-) diff --git a/Lib/subprocess.py b/Lib/subprocess.py index d9c76d8ad58..8df10344cbc 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 71ae0db291f..fe916c2a851 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 9914858c17f..87f7c6bf77e 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.