summaryrefslogtreecommitdiffstats
path: root/Lib/subprocess.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2014-02-10 17:21:25 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2014-02-10 17:21:25 (GMT)
commit580e007860e0142c9ea0eabec49560ca515e8476 (patch)
tree9f3ed5964055e43ffa0b405177dad1ca0774635a /Lib/subprocess.py
parentd667d72cb75c41f3045d00945ee4652a8b814418 (diff)
parent72e7761301febe026536e7a2a444269698dcf156 (diff)
downloadcpython-580e007860e0142c9ea0eabec49560ca515e8476.zip
cpython-580e007860e0142c9ea0eabec49560ca515e8476.tar.gz
cpython-580e007860e0142c9ea0eabec49560ca515e8476.tar.bz2
issue12085: Use more Pythonic way to check _child_created.
_active shouldn't be cached, it set to None on shutdown.
Diffstat (limited to 'Lib/subprocess.py')
-rw-r--r--Lib/subprocess.py13
1 files changed, 6 insertions, 7 deletions
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index e79e5fd..f47f5ab 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -738,6 +738,9 @@ _PLATFORM_DEFAULT_CLOSE_FDS = object()
class Popen(object):
+
+ _child_created = False # Set here since __del__ checks it
+
def __init__(self, args, bufsize=-1, executable=None,
stdin=None, stdout=None, stderr=None,
preexec_fn=None, close_fds=_PLATFORM_DEFAULT_CLOSE_FDS,
@@ -748,7 +751,6 @@ class Popen(object):
"""Create new Popen instance."""
_cleanup()
- self._child_created = False
self._input = None
self._communication_started = False
if bufsize is None:
@@ -890,11 +892,8 @@ class Popen(object):
# Wait for the process to terminate, to avoid zombies.
self.wait()
- def __del__(self, _maxsize=sys.maxsize, _active=_active):
- # If __init__ hasn't had a chance to execute (e.g. if it
- # was passed an undeclared keyword argument), we don't
- # have a _child_created attribute at all.
- if not getattr(self, '_child_created', False):
+ def __del__(self, _maxsize=sys.maxsize):
+ if not self._child_created:
# We didn't get to successfully create a child process.
return
# In case the child hasn't been waited on, check if it's done.
@@ -1446,7 +1445,7 @@ class Popen(object):
_WTERMSIG=os.WTERMSIG, _WIFEXITED=os.WIFEXITED,
_WEXITSTATUS=os.WEXITSTATUS):
# This method is called (indirectly) by __del__, so it cannot
- # refer to anything outside of its local scope."""
+ # refer to anything outside of its local scope.
if _WIFSIGNALED(sts):
self.returncode = -_WTERMSIG(sts)
elif _WIFEXITED(sts):