:meth:`__exit__` methods should avoid raising exceptions, and in particular they
should not re-raise a passed-in exception.
+ .. deprecated:: 2.7
+ The with-statement now supports this functionality directly.
.. function:: closing(thing)
import sys
from functools import wraps
+from warnings import warn
__all__ = ["contextmanager", "nested", "closing"]
<body>
"""
+ warn("With-statements now directly support multiple context managers",
+ DeprecationWarning, 2)
exits = []
vars = []
exc = (None, None, None)
import threading
from contextlib import * # Tests __all__
from test import test_support
+import warnings
class ContextManagerTestCase(unittest.TestCase):
# This is needed to make the test actually run under regrtest.py!
def test_main():
- test_support.run_unittest(__name__)
+ with warnings.catch_warnings():
+ warnings.simplefilter('ignore')
+ test_support.run_unittest(__name__)
if __name__ == "__main__":
test_main()
Core and Builtins
-----------------
-- Added support for multiple context managers in the same with statement.
+- Added support for multiple context managers in the same with-statement.
+ Deprecated contextlib.nested() which is no longer needed.
- Issue #6101: A new opcode, SETUP_WITH, has been added to speed up the with
statement and correctly lookup the __enter__ and __exit__ special methods.