Use contextlib.contextmanager.