Source code for ase2sprkkr.bindings.tests.directory

import contextlib
import tempfile
import os

[docs] class Directory:
[docs] def new(dir, default): if isinstance(dir, Directory): return dir return Directory(dir, default)
[docs] def __init__(self, dir, default): if dir is None: dir = default if dir is None: raise ValueError('No directory has been specified') self.enters = 0 self.dir = dir if self.dir == '.': self.chdir=contextlib.suppress
def __str__(self): return str(self.dir) if self.dir is not False else self.path def __repr__(self): return f"<Directory {str(self)}>" def __enter__(self): self.enters += 1 if self.enters == 1: if self.dir is False: self.handler = tempfile.TemporaryDirectory() self.path = self.handler.name else: self.handler = None self.path = self.dir if self.handler: self.handler.__enter__() return self def __exit__(self, type, value, traceback): self.enters -= 1 if self.enters == 0 and self.handler: self.handler.__exit__(type, value, traceback)
[docs] @contextlib.contextmanager def chdir(self): try: cwd=os.getcwd() os.chdir(self.path) yield self.path finally: os.chdir(cwd)