summaryrefslogtreecommitdiffstats
path: root/Lib/contextlib.py
diff options
context:
space:
mode:
authorRaymond Hettinger <python@rcn.com>2013-03-11 05:26:51 (GMT)
committerRaymond Hettinger <python@rcn.com>2013-03-11 05:26:51 (GMT)
commite318a883fece5d9a45165670b5f995886f524820 (patch)
treebc9a655a3d7c0636940f6decf9b1f73f5bb97856 /Lib/contextlib.py
parentc0417357d14b72763ba919728a1449373d122647 (diff)
downloadcpython-e318a883fece5d9a45165670b5f995886f524820.zip
cpython-e318a883fece5d9a45165670b5f995886f524820.tar.gz
cpython-e318a883fece5d9a45165670b5f995886f524820.tar.bz2
Issue #15806: Add contextlib.ignored().
Diffstat (limited to 'Lib/contextlib.py')
-rw-r--r--Lib/contextlib.py14
1 files changed, 13 insertions, 1 deletions
diff --git a/Lib/contextlib.py b/Lib/contextlib.py
index 0b6bf71..03c56da 100644
--- a/Lib/contextlib.py
+++ b/Lib/contextlib.py
@@ -4,7 +4,7 @@ import sys
from collections import deque
from functools import wraps
-__all__ = ["contextmanager", "closing", "ContextDecorator", "ExitStack"]
+__all__ = ["contextmanager", "closing", "ContextDecorator", "ExitStack", "ignored"]
class ContextDecorator(object):
@@ -140,6 +140,18 @@ class closing(object):
def __exit__(self, *exc_info):
self.thing.close()
+@contextmanager
+def ignored(*exceptions):
+ """Context manager to ignore specifed exceptions
+
+ with ignored(OSError):
+ os.remove(somefile)
+
+ """
+ try:
+ yield
+ except exceptions:
+ pass
# Inspired by discussions on http://bugs.python.org/issue13585
class ExitStack(object):