[Python-checkins] r81345 - in python/branches/release26-maint: Doc/library/warnings.rst

georg.brandl python-checkins at python.org
Wed May 19 16:25:58 CEST 2010


Author: georg.brandl
Date: Wed May 19 16:25:58 2010
New Revision: 81345

Log:
Merged revisions 79607-79608 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r79607 | andrew.kuchling | 2010-04-02 19:48:23 +0200 (Fr, 02 Apr 2010) | 1 line
  
  #6647: document that catch_warnings is not thread-safe
........
  r79608 | andrew.kuchling | 2010-04-02 19:54:26 +0200 (Fr, 02 Apr 2010) | 1 line
  
  #6647: add note to two examples
........


Modified:
   python/branches/release26-maint/   (props changed)
   python/branches/release26-maint/Doc/library/warnings.rst

Modified: python/branches/release26-maint/Doc/library/warnings.rst
==============================================================================
--- python/branches/release26-maint/Doc/library/warnings.rst	(original)
+++ python/branches/release26-maint/Doc/library/warnings.rst	Wed May 19 16:25:58 2010
@@ -178,7 +178,10 @@
 While within the context manager all warnings will simply be ignored. This
 allows you to use known-deprecated code without having to see the warning while
 not suppressing the warning for other code that might not be aware of its use
-of deprecated code.
+of deprecated code.  Note: this can only be guaranteed in a single-threaded
+application. If two or more threads use the :class:`catch_warnings` context
+manager at the same time, the behavior is undefined.
+
 
 
 .. _warning-testing:
@@ -216,7 +219,9 @@
 when the context was entered. This prevents tests from changing the warnings
 filter in unexpected ways between tests and leading to indeterminate test
 results. The :func:`showwarning` function in the module is also restored to
-its original value.
+its original value.  Note: this can only be guaranteed in a single-threaded
+application. If two or more threads use the :class:`catch_warnings` context
+manager at the same time, the behavior is undefined.
 
 When testing multiple operations that raise the same kind of warning, it
 is important to test them in a manner that confirms each operation is raising
@@ -358,6 +363,14 @@
 
     .. note::
 
+        The :class:`catch_warnings` manager works by replacing and
+        then later restoring the module's
+        :func:`showwarning` function and internal list of filter
+        specifications.  This means the context manager is modifying
+        global state and therefore is not thread-safe.
+
+    .. note::
+
         In Python 3.0, the arguments to the constructor for
         :class:`catch_warnings` are keyword-only arguments.
 


More information about the Python-checkins mailing list