From: Vinay Sajip Date: Thu, 4 Dec 2008 20:32:18 +0000 (+0000) Subject: Took Nick Coghlan's advice about importing warnings globally in logging, to avoid... X-Git-Tag: v2.7a1~2589 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6831d6bc7f4ee97ee854ddaa50f47ec4fb781cd2;p=thirdparty%2FPython%2Fcpython.git Took Nick Coghlan's advice about importing warnings globally in logging, to avoid the possibility of race conditions: "This could deadlock if a thread spawned as a side effect of importing a module happens to trigger a warning. warnings is pulled into sys.modules as part of the interpreter startup - having a global 'import warnings' shouldn't have any real effect on logging's import time." --- diff --git a/Lib/logging/__init__.py b/Lib/logging/__init__.py index c28d7c8650d9..bd1a49d62648 100644 --- a/Lib/logging/__init__.py +++ b/Lib/logging/__init__.py @@ -31,7 +31,7 @@ __all__ = ['BASIC_FORMAT', 'BufferingFormatter', 'CRITICAL', 'DEBUG', 'ERROR', 'INFO', 'LogRecord', 'Logger', 'Manager', 'NOTSET', 'PlaceHolder', 'RootLogger', 'StreamHandler', 'WARN', 'WARNING'] -import sys, os, types, time, string, cStringIO, traceback +import sys, os, types, time, string, cStringIO, traceback, warnings try: import codecs @@ -1520,7 +1520,6 @@ def _showwarning(message, category, filename, lineno, file=None, line=None): if _warnings_showwarning is not None: _warnings_showwarning(message, category, filename, lineno, file, line) else: - import warnings s = warnings.formatwarning(message, category, filename, lineno, line) logger = getLogger("py.warnings") if not logger.handlers: @@ -1533,7 +1532,6 @@ def captureWarnings(capture): If capture is False, ensure that warnings are not redirected to logging but to their original destinations. """ - import warnings global _warnings_showwarning if capture: if _warnings_showwarning is None: diff --git a/Misc/NEWS b/Misc/NEWS index 790579554222..c4b020762ed6 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -67,11 +67,11 @@ Library support unusual filenames (such as those containing semi-colons) in Content-Disposition headers. -- Issue #4384: Added integration with warnings module using captureWarnings(). - This change includes a NullHandler which does nothing; it will be of use to - library developers who want to avoid the "No handlers could be found for - logger XXX" message which can appear if the library user doesn't configure - logging. +- Issue #4384: Added logging integration with warnings module using + captureWarnings(). This change includes a NullHandler which does nothing; + it will be of use to library developers who want to avoid the "No handlers + could be found for logger XXX" message which can appear if the library user + doesn't configure logging. - Issue #3741: DISTUTILS_USE_SDK set causes msvc9compiler.py to raise an exception.