This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2013年01月09日 09:28 by serhiy.storchaka, last changed 2022年04月11日 14:57 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| subprocess_communicate_string-3.2.patch | serhiy.storchaka, 2013年01月26日 21:05 | review | ||
| subprocess_communicate_string-3.2_2.patch | serhiy.storchaka, 2013年01月30日 14:06 | review | ||
| Messages (6) | |||
|---|---|---|---|
| msg179425 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2013年01月09日 09:28 | |
On 3.2 subprocess.Popen.communicate with universal_newlines=True accepts bytes and doesn't accept strings.
$ ./python -c "import subprocess; subprocess.Popen(['cat'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, universal_newlines=True).communicate('qwerty')"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/home/serhiy/py/cpython3.2/Lib/subprocess.py", line 833, in communicate
return self._communicate(input)
File "/home/serhiy/py/cpython3.2/Lib/subprocess.py", line 1470, in _communicate
stdout, stderr = self._communicate_with_poll(input)
File "/home/serhiy/py/cpython3.2/Lib/subprocess.py", line 1537, in _communicate_with_poll
input_offset += os.write(fd, chunk)
TypeError: 'str' does not support the buffer interface
On 3.3+ it accepts strings and doesn't accept bytes.
|
|||
| msg179427 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2013年01月09日 09:33 | |
As quick fix I propose add support of strings (in additional to bytes) in 3.2. Perhaps we must also add support of bytes with warning in 3.3. |
|||
| msg180712 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2013年01月26日 21:05 | |
Here is a patch which adds support of strings in communicate(). It also contains a backported test from changeset 4af2c0687970 which tests this behavior. |
|||
| msg180974 - (view) | Author: Jeremy Kloth (jkloth) * | Date: 2013年01月30日 11:03 | |
I would suggest that this be bumped to release blocker as currently passing bytes to communicate with universal_newlines=True on Windows causes the process to hang (see issue17077). The backported test case passes on Windows without any changes to subprocess.py so this is a POSIX-only bug. |
|||
| msg180975 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2013年01月30日 14:06 | |
Indeed, Popen.communicate() is incompatible not only between 3.2 and 3.3, but between Windows and POSIX too. Documentation says the input argument should be a bytes string and 3.2 on POSIX works only with bytes strings. 3.2 on Windows and 3.3 on both platforms require an unicode string, as 3.3 documentation says. 3.2 on Windows hangs with a bytes string. Patch updated with the documentation change (copied from 3.3). |
|||
| msg181330 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2013年02月04日 14:52 | |
New changeset 4206f91c974c by Serhiy Storchaka in branch '3.2': Issue #16903: Popen.communicate() on Unix now accepts strings when http://hg.python.org/cpython/rev/4206f91c974c |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:57:40 | admin | set | github: 61107 |
| 2016年06月12日 07:54:21 | martin.panter | link | issue12623 superseder |
| 2013年02月04日 14:59:50 | serhiy.storchaka | set | status: open -> closed resolution: fixed stage: patch review -> resolved |
| 2013年02月04日 14:52:14 | python-dev | set | nosy:
+ python-dev messages: + msg181330 |
| 2013年01月30日 14:06:58 | serhiy.storchaka | set | priority: normal -> critical files: + subprocess_communicate_string-3.2_2.patch messages: + msg180975 |
| 2013年01月30日 13:31:46 | serhiy.storchaka | link | issue17077 dependencies |
| 2013年01月30日 12:28:28 | vstinner | set | nosy:
+ vstinner |
| 2013年01月30日 11:03:12 | jkloth | set | nosy:
+ jkloth messages: + msg180974 |
| 2013年01月26日 21:05:05 | serhiy.storchaka | set | files:
+ subprocess_communicate_string-3.2.patch assignee: serhiy.storchaka keywords: + patch nosy: + asvetlov messages: + msg180712 stage: needs patch -> patch review |
| 2013年01月14日 11:09:17 | serhiy.storchaka | set | stage: needs patch |
| 2013年01月09日 10:10:47 | chris.jerdonek | set | nosy:
+ chris.jerdonek |
| 2013年01月09日 09:33:24 | serhiy.storchaka | set | messages: + msg179427 |
| 2013年01月09日 09:28:57 | serhiy.storchaka | create | |