I'm trying to write a context manager with contextlib.contextmanager
. The following works as expected:
from pathlib import Path
from contextlib import contextmanager
@contextmanager
def Dir(path):
path = Path(path).expanduser().resolve()
try:
path.mkdir(parents=True, exist_ok=True)
yield path
except PermissionError as err:
print(err)
raise err
However if I want it to log and suppress the exception by removing the raise err
line, I get the following error:
/usr/lib64/python3.7/contextlib.py in __enter__(self)
112 return next(self.gen)
113 except StopIteration:
--> 114 raise RuntimeError("generator didn't yield") from None
115
116 def __exit__(self, type, value, traceback):
RuntimeError: generator didn't yield
What am I missing?
PS: I am aware of this old question, but it does not resolve my issue.