changeset: 95480:10b0a8076be8 user: Gregory P. Smith date: Tue Apr 07 15:57:54 2015 -0700 files: Lib/subprocess.py Lib/test/test_subprocess.py Misc/NEWS description: Addresses Issue #10838: The subprocess now module includes SubprocessError and TimeoutError in its list of exported names for the users wild enough to use "from subprocess import *". MAXFD, mswindows and list2cmdline should be dealt with (renamed or moved) in separate commits. Committed at 35,000ft. Thanks chromebook free gogo wifi passes! diff -r 85a5265909cb -r 10b0a8076be8 Lib/subprocess.py --- a/Lib/subprocess.py Tue Apr 07 21:38:36 2015 +0200 +++ b/Lib/subprocess.py Tue Apr 07 15:57:54 2015 -0700 @@ -433,7 +433,10 @@ __all__ = ["Popen", "PIPE", "STDOUT", "call", "check_call", "getstatusoutput", - "getoutput", "check_output", "CalledProcessError", "DEVNULL"] + "getoutput", "check_output", "CalledProcessError", "DEVNULL", + "SubprocessError", "TimeoutExpired"] + # NOTE: We intentionally exclude list2cmdline as it is + # considered an internal implementation detail. issue10838. if mswindows: from _winapi import (CREATE_NEW_CONSOLE, CREATE_NEW_PROCESS_GROUP, diff -r 85a5265909cb -r 10b0a8076be8 Lib/test/test_subprocess.py --- a/Lib/test/test_subprocess.py Tue Apr 07 21:38:36 2015 +0200 +++ b/Lib/test/test_subprocess.py Tue Apr 07 15:57:54 2015 -0700 @@ -2420,6 +2420,21 @@ subprocess._PopenSelector = self.orig_selector ProcessTestCase.tearDown(self) + def test__all__(self): + """Ensure that __all__ is populated properly.""" + intentionally_excluded = set(("list2cmdline", "mswindows", "MAXFD")) + exported = set(subprocess.__all__) + possible_exports = set() + import types + for name, value in subprocess.__dict__.items(): + if name.startswith('_'): + continue + if isinstance(value, (types.ModuleType,)): + continue + possible_exports.add(name) + self.assertEqual(exported, possible_exports - intentionally_excluded) + + @unittest.skipUnless(mswindows, "Windows-specific tests") class CommandsWithSpaces (BaseTestCase): diff -r 85a5265909cb -r 10b0a8076be8 Misc/NEWS --- a/Misc/NEWS Tue Apr 07 21:38:36 2015 +0200 +++ b/Misc/NEWS Tue Apr 07 15:57:54 2015 -0700 @@ -19,6 +19,10 @@ Library ------- +- Issue #10838: The subprocess now module includes SubprocessError and + TimeoutError in its list of exported names for the users wild enough + to use "from subprocess import *". + - Issue #23411: Added DefragResult, ParseResult, SplitResult, DefragResultBytes, ParseResultBytes, and SplitResultBytes to urllib.parse.__all__. Patch by Martin Panter.