[Python-3000-checkins] r64621 - in python/branches/py3k: Lib/subprocess.py Lib/test/test_subprocess.py Misc/NEWS

georg.brandl python-3000-checkins at python.org
Tue Jul 1 21:28:43 CEST 2008


Author: georg.brandl
Date: Tue Jul  1 21:28:43 2008
New Revision: 64621

Log:
#2683: Popen.communicate() argument must be bytes.


Modified:
   python/branches/py3k/Lib/subprocess.py
   python/branches/py3k/Lib/test/test_subprocess.py
   python/branches/py3k/Misc/NEWS

Modified: python/branches/py3k/Lib/subprocess.py
==============================================================================
--- python/branches/py3k/Lib/subprocess.py	(original)
+++ python/branches/py3k/Lib/subprocess.py	Tue Jul  1 21:28:43 2008
@@ -883,8 +883,6 @@
 
             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 @@
 
 
         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

Modified: python/branches/py3k/Lib/test/test_subprocess.py
==============================================================================
--- python/branches/py3k/Lib/test/test_subprocess.py	(original)
+++ python/branches/py3k/Lib/test/test_subprocess.py	Tue Jul  1 21:28:43 2008
@@ -302,7 +302,7 @@
                              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 @@
                                  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")
 
 

Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS	(original)
+++ python/branches/py3k/Misc/NEWS	Tue Jul  1 21:28:43 2008
@@ -17,6 +17,9 @@
 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.


More information about the Python-3000-checkins mailing list