[Python-Dev] r87010 - in python/branches/py3k: Doc/library/subprocess.rst Lib/subprocess.py Lib/test/test_subprocess.py

Paul Moore p.f.moore at gmail.com
Sat Dec 4 20:28:34 CET 2010

On 4 December 2010 18:14, Gregory P. Smith <greg at krypto.org> wrote:
> On Sat, Dec 4, 2010 at 3:45 AM, Antoine Pitrou <solipsis at pitrou.net> wrote:
>> On Sat,  4 Dec 2010 10:10:44 +0100 (CET)
>> gregory.p.smith <python-checkins at python.org> wrote:
>> > Author: gregory.p.smith
>> > Date: Sat Dec  4 10:10:44 2010
>> > New Revision: 87010
>> >
>> > Log:
>> > issue7213 + issue2320: Cause a DeprecationWarning if the close_fds
>> > argument is
>> > not passed to subprocess.Popen as the default value will be changing in
>> > a
>> > future Python to the safer and more often desired value of True.
>> That doesn't seem to be a good idea under Windows, is it?
>> (“Note that on Windows, you cannot set *close_fds* to true and
>> also redirect the standard handles by setting *stdin*, *stdout* or
>> *stderr*.”)
> Regardless of what platform you are on I think the warning makes sense, it
> was just worded too strongly.  It is asking people to be explicit with
> close_fds.  Explicitly setting close_fds=False when that is desired is good.
> I modified the docs and warning message to just say that the default
> close_fds behavior will change in the future without specifying exactly what
> it will be.  It could make sense for the default to be a soft-True on
> windows that changes behavior if any of the std handles are set if that
> matches what users expect and find easiest.  We may want to reconsider its
> entire future in the face of the new pass_fds parameter, etc.  Those are 3.3
> decisions.

This sounds like omitting the close_fds parameter is now considered
ill-advised, if not outright wrong. That's silly - I certainly never
specify close_fds, expecting the module to do the correct thing if I
don't know/care enough to say. I use Popen as a convenience function,
so ignoring low-level details is the whole point in my opinion (and
close_fds *is* a low-level detail for what I do, on Windows).

At the very least, the whole of the section "Replacing Older Functions
with the subprocess Module" (with a couple of small exceptions) is in
need of updating, as it is recommending bad practice (not specifying
close_fds) at the moment...

OK, I'm exaggerating a touch here. But can someone point me at the
discussion of this change? Or if there hasn't been one, can we have
one (i.e., to start the ball rolling, can someone justify the change,


More information about the Python-Dev mailing list