Package logilab-common-0 :: Package 39 :: Package 0 :: Module contexts
[frames] | no frames]

Source Code for Module logilab-common-0.39.0.contexts

 1  """A few useful context managers  
 2   
 3  :copyright: 2008 LOGILAB S.A. (Paris, FRANCE), all rights reserved. 
 4  :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr 
 5  :license: General Public License version 2 - http://www.gnu.org/licenses 
 6  """ 
 7  __docformat__ = "restructuredtext en" 
 8   
 9  import sys 
10   
11  if sys.version_info < (2, 5): 
12      raise ImportError("python >= 2.5 is required to import logilab.common.contexts") 
13   
14  import os 
15  import tempfile 
16  import shutil 
17   
18 -class tempdir(object):
19
20 - def __enter__(self):
21 self.path = tempfile.mkdtemp() 22 return self.path
23
24 - def __exit__(self, exctype, value, traceback):
25 # rmtree in all cases 26 shutil.rmtree(self.path) 27 return traceback is None
28 29
30 -class pushd(object):
31 - def __init__(self, directory):
32 self.directory = directory
33
34 - def __enter__(self):
35 self.cwd = os.getcwd() 36 os.chdir(self.directory) 37 return self.directory
38
39 - def __exit__(self, exctype, value, traceback):
40 os.chdir(self.cwd)
41