summaryrefslogtreecommitdiff
path: root/Lib/asyncio/base_subprocess.py
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2015-01-15 00:04:21 +0100
committerVictor Stinner <victor.stinner@gmail.com>2015-01-15 00:04:21 +0100
commit29ad0111bd8c7edd049c964c66cfb9e9114c99d2 (patch)
tree9fee6570ed8b11b78e9159153a7d241e1c212e21 /Lib/asyncio/base_subprocess.py
parentb92626df5ca72d25236404a0a62cf47279c4e503 (diff)
downloadcpython-git-29ad0111bd8c7edd049c964c66cfb9e9114c99d2.tar.gz
asyncio: sync with Tulip
* PipeHandle now uses None instead of -1 for a closed handle * Sort imports in windows_utils. * Fix test_events on Python older than 3.5. Skip SSL tests on the ProactorEventLoop if ssl.MemoryIO is missing * Fix BaseEventLoop._create_connection_transport(). Close the transport if the creation of the transport (if the waiter) gets an exception. * _ProactorBasePipeTransport now sets _sock to None when the transport is closed. * Fix BaseSubprocessTransport.close(). Ignore pipes for which the protocol is not set yet (still equal to None). * TestLoop.close() now calls the close() method of the parent class (BaseEventLoop). * Cleanup BaseSelectorEventLoop: create the protocol on a separated line for readability and ease debugging. * Fix BaseSubprocessTransport._kill_wait(). Set the _returncode attribute, so close() doesn't try to terminate the process. * Tests: explicitly close event loops and transports * UNIX pipe transports: add closed/closing in repr(). Add "closed" or "closing" state in the __repr__() method of _UnixReadPipeTransport and _UnixWritePipeTransport classes.
Diffstat (limited to 'Lib/asyncio/base_subprocess.py')
-rw-r--r--Lib/asyncio/base_subprocess.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/Lib/asyncio/base_subprocess.py b/Lib/asyncio/base_subprocess.py
index 0787ad7037..f5e7dfec13 100644
--- a/Lib/asyncio/base_subprocess.py
+++ b/Lib/asyncio/base_subprocess.py
@@ -71,6 +71,8 @@ class BaseSubprocessTransport(transports.SubprocessTransport):
def close(self):
for proto in self._pipes.values():
+ if proto is None:
+ continue
proto.pipe.close()
if self._returncode is None:
self.terminate()
@@ -119,7 +121,7 @@ class BaseSubprocessTransport(transports.SubprocessTransport):
proc.kill()
except ProcessLookupError:
pass
- proc.wait()
+ self._returncode = proc.wait()
@coroutine
def _post_init(self):