From: Victor Stinner Date: Sun, 9 Feb 2014 01:51:40 +0000 (+0100) Subject: asyncio: Remove Process.subprocess attribute; it's too easy to get inconsistent X-Git-Tag: v3.4.0rc1~17 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0c3949c963c9f39095f85c5ec24d0f958e915ae9;p=thirdparty%2FPython%2Fcpython.git asyncio: Remove Process.subprocess attribute; it's too easy to get inconsistent Process and Popen objects --- diff --git a/Doc/library/asyncio-subprocess.rst b/Doc/library/asyncio-subprocess.rst index a2c46dc372a6..5e6e657e3e49 100644 --- a/Doc/library/asyncio-subprocess.rst +++ b/Doc/library/asyncio-subprocess.rst @@ -87,10 +87,6 @@ Process Standard error stream (read), ``None`` if the process was created with ``stderr=None``. - .. attribute:: subprocess - - Underlying :class:`subprocess.Popen` object. - .. method:: communicate(input=None) Interact with process: Send data to stdin. Read data from stdout and @@ -102,7 +98,7 @@ Process :meth:`communicate` returns a tuple ``(stdoutdata, stderrdata)``. Note that if you want to send data to the process's stdin, you need to - create the Popen object with ``stdin=PIPE``. Similarly, to get anything + create the Process object with ``stdin=PIPE``. Similarly, to get anything other than ``None`` in the result tuple, you need to give ``stdout=PIPE`` and/or ``stderr=PIPE`` too. diff --git a/Lib/asyncio/subprocess.py b/Lib/asyncio/subprocess.py index 3047894b3808..848d64f97012 100644 --- a/Lib/asyncio/subprocess.py +++ b/Lib/asyncio/subprocess.py @@ -106,10 +106,6 @@ class Process: yield from waiter return waiter.result() - @property - def subprocess(self): - return self._transport.get_extra_info('subprocess') - def _check_alive(self): if self._transport.get_returncode() is not None: raise ProcessLookupError() diff --git a/Lib/test/test_asyncio/test_subprocess.py b/Lib/test/test_asyncio/test_subprocess.py index 785156c77fb2..1b2f05bef284 100644 --- a/Lib/test/test_asyncio/test_subprocess.py +++ b/Lib/test/test_asyncio/test_subprocess.py @@ -7,9 +7,6 @@ from test import support if sys.platform != 'win32': from asyncio import unix_events -# Program exiting quickly -PROGRAM_EXIT_FAST = [sys.executable, '-c', 'pass'] - # Program blocking PROGRAM_BLOCKED = [sys.executable, '-c', 'import time; time.sleep(3600)'] @@ -119,23 +116,6 @@ class SubprocessMixin: returncode = self.loop.run_until_complete(proc.wait()) self.assertEqual(-signal.SIGHUP, returncode) - def test_subprocess(self): - args = PROGRAM_EXIT_FAST - - @asyncio.coroutine - def run(): - proc = yield from asyncio.create_subprocess_exec(*args, - loop=self.loop) - yield from proc.wait() - # need to poll subprocess.Popen, otherwise the returncode - # attribute is not set - proc.subprocess.wait() - return proc - - proc = self.loop.run_until_complete(run()) - self.assertEqual(proc.subprocess.returncode, proc.returncode) - self.assertEqual(proc.subprocess.pid, proc.pid) - def test_broken_pipe(self): large_data = b'x' * support.PIPE_MAX_SIZE