From ace55865c5a528d4d2711c468c5da649fa20c4b1 Mon Sep 17 00:00:00 2001 From: "Gregory P. Smith" Date: Tue, 7 Apr 2015 15:57:54 -0700 Subject: [PATCH] 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! --- Lib/subprocess.py | 5 ++++- Lib/test/test_subprocess.py | 15 +++++++++++++++ Misc/NEWS | 4 ++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 6d2c4f5587..1c7eb9e552 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -433,7 +433,10 @@ else: __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 --git a/Lib/test/test_subprocess.py b/Lib/test/test_subprocess.py index e25cccdbad..71481bc796 100644 --- a/Lib/test/test_subprocess.py +++ b/Lib/test/test_subprocess.py @@ -2420,6 +2420,21 @@ class ProcessTestCaseNoPoll(ProcessTestCase): 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 --git a/Misc/NEWS b/Misc/NEWS index 91cc87c074..6c7c26364f 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -19,6 +19,10 @@ Core and Builtins 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. -- 2.50.1