Index: Lib/concurrent/futures/_base.py =================================================================== --- Lib/concurrent/futures/_base.py (revision 87476) +++ Lib/concurrent/futures/_base.py (working copy) @@ -41,8 +41,6 @@ # Logger for internal use by the futures package. LOGGER = logging.getLogger("concurrent.futures") -STDERR_HANDLER = logging.StreamHandler() -LOGGER.addHandler(STDERR_HANDLER) class Error(Exception): """Base class for all future-related exceptions.""" Index: Lib/test/test_concurrent_futures.py =================================================================== --- Lib/test/test_concurrent_futures.py (revision 87476) +++ Lib/test/test_concurrent_futures.py (working copy) @@ -24,7 +24,7 @@ from concurrent import futures from concurrent.futures._base import ( PENDING, RUNNING, CANCELLED, CANCELLED_AND_NOTIFIED, FINISHED, Future, - LOGGER, STDERR_HANDLER, wait) + LOGGER, wait) import concurrent.futures.process def create_future(state=PENDING, exception=None, result=None): @@ -620,11 +620,7 @@ self.assertTrue(was_cancelled) def test_done_callback_raises(self): - LOGGER.removeHandler(STDERR_HANDLER) - logging_stream = io.StringIO() - handler = logging.StreamHandler(logging_stream) - LOGGER.addHandler(handler) - try: + with test.support.captured_stderr() as stderr: raising_was_called = False fn_was_called = False @@ -643,10 +639,7 @@ f.set_result(5) self.assertTrue(raising_was_called) self.assertTrue(fn_was_called) - self.assertIn('Exception: doh!', logging_stream.getvalue()) - finally: - LOGGER.removeHandler(handler) - LOGGER.addHandler(STDERR_HANDLER) + self.assertIn('Exception: doh!', stderr.getvalue()) def test_done_callback_already_successful(self): callback_result = None