summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsylvain thenault <sylvain.thenault@logilab.fr>2009-01-26 13:13:32 +0100
committersylvain thenault <sylvain.thenault@logilab.fr>2009-01-26 13:13:32 +0100
commit85357ee284a99b2af1a90630f5b2e0f5822ec9dc (patch)
tree1feab40720130ca4d20d2f9cce9812557801a94c
parentea415842bdb25cc9d4f1c3dbc779def0f027ed93 (diff)
downloadlogilab-common-85357ee284a99b2af1a90630f5b2e0f5822ec9dc.tar.gz
new pushd context manager
-rw-r--r--contexts.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/contexts.py b/contexts.py
index a1ade00..d88abfb 100644
--- a/contexts.py
+++ b/contexts.py
@@ -11,6 +11,7 @@ import sys
if sys.version_info < (2, 5):
raise ImportError("python >= 2.5 is required to import logilab.common.contexts")
+import os
import tempfile
import shutil
@@ -24,4 +25,17 @@ class tempdir(object):
# rmtree in all cases
shutil.rmtree(self.path)
return traceback is None
-
+
+
+class pushd(object):
+ def __init__(self, directory):
+ self.directory = directory
+
+ def __enter__(self):
+ self.cwd = os.getcwd()
+ os.chdir(self.directory)
+ return self.directory
+
+ def __exit__(self, exctype, value, traceback):
+ os.chdir(self.cwd)
+