File size: 609 Bytes
d1ceb73 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
"""Backport of Python 3.11's contextlib.chdir."""
import os
from contextlib import AbstractContextManager
class chdir(AbstractContextManager): # type:ignore[type-arg]
"""Non thread-safe context manager to change the current working directory."""
def __init__(self, path):
"""Initialize the manager."""
self.path = path
self._old_cwd = []
def __enter__(self):
"""Enter the context."""
self._old_cwd.append(os.getcwd())
os.chdir(self.path)
def __exit__(self, *excinfo):
"""Exit the context."""
os.chdir(self._old_cwd.pop())
|