classification
Title: missing first argument on subprocess.Popen w/ executable
Type: behavior Stage: resolved
Components: Documentation, Library (Lib) Versions: Python 3.0, Python 3.1, Python 3.2, Python 2.7, Python 2.6
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: georg.brandl Nosy List: georg.brandl, lieryan, r.david.murray
Priority: normal Keywords: patch

Created on 2009-05-29 10:06 by lieryan, last changed 2009-05-29 19:31 by r.david.murray. This issue is now closed.

Files
File name Uploaded Description Edit
issue6141-doc.patch r.david.murray, 2009-05-29 15:17
Messages (4)
msg88504 - (view) Author: Lie Ryan (lieryan) Date: 2009-05-29 10:06
Following from http://comments.gmane.org/gmane.comp.python.tutor/55576

>>> import subprocess
>>> subprocess.Popen(['a', 'b', 'c', 'd'], executable='echo')
<subprocess.Popen object at 0x7fdf7bb2bd50>
b c d

instead of the (what I) expected result
a b c d

I suggests two possible change:
1. add another optional argument called displayed_executable (or
something similar) and make the arg argument contains only arguments
2. it is made clear in the documentation that the first argument is used
as executable display name

Since the first alternative is behavioral change, it couldn't possibly
go through already released version; therefore if it is the chosen
solution it would have to go to Python 2.7 and Python 3.2. 

Changing the documentation should be easier, although the problem will
persist for unsuspecting users; and even if the first alternative is
taken, perhaps documentation change should still be done retrospectively
(I don't know the policy on doc change on old python version)

It should be noted that I tested this only with Python 2.5 on Gentoo
(although from the discussion, I presumed this is considered a feature
and would have persisted in later versions). And at the time of this
writing, I have no idea how it behaves in Windows.
msg88510 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2009-05-29 15:17
The way it works is the way most programmers expect it to work, even
though most get bitten by it more than once.  So the behavior isn't
going to change.  I've attached a doc fix, but I'm not sure whether or
not the 'diplay name' piece applies only to unix, although I've
documented it that way.  The windows documentation I found for
CreateProcess does not mention it, though it does note that "most C
programmers" treat argv[0] as the process name, consistent with the way
subprocess handles the argument string.

The Windows documentation I consulted is here:

http://msdn.microsoft.com/en-us/library/ms682425.aspx
msg88522 - (view) Author: Georg Brandl (georg.brandl) * (Python committer) Date: 2009-05-29 18:58
Patch looks good, just replace `ps` by :program:`ps` please.
msg88525 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2009-05-29 19:31
Fixed in r73026, thanks.
History
Date User Action Args
2009-05-29 19:31:07r.david.murraysetstatus: open -> closed
resolution: fixed
messages: + msg88525

stage: resolved
2009-05-29 18:58:10georg.brandlsetmessages: + msg88522
2009-05-29 15:17:39r.david.murraysetfiles: + issue6141-doc.patch
priority: normal

versions: - Python 2.5
keywords: + patch
nosy: + r.david.murray

messages: + msg88510
2009-05-29 10:06:49lieryancreate