blob: 75a1d42dbf61dd5f131816a4885d7b51a6c17581 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
"""Utilities for with-statement contexts. See PEP 343."""
import abc
import _collections_abc
try:
from contextlib import AbstractContextManager
except ImportError:
# Copied from python3.7 library as "backport"
class AbstractContextManager(abc.ABC):
"""An abstract base class for context managers."""
def __enter__(self):
"""Return `self` upon entering the runtime context."""
return self
@abc.abstractmethod
def __exit__(self, exc_type, exc_value, traceback):
"""Raise any exception triggered within the runtime context."""
return None
@classmethod
def __subclasshook__(cls, C):
"""Check whether subclass is considered a subclass of this ABC."""
if cls is AbstractContextManager:
return _collections_abc._check_methods(C, "__enter__",
"__exit__")
return NotImplemented
|