# # \file lazy_file.py # # \brief LazyFile updates the target file only when the content is changed # in order to avoid generating new cutlass kimpls each time cmake is called # import io import os class LazyFile: def __init__(self, filename): self.filename = filename self.buffer = io.StringIO() def write(self, data): self.buffer.write(str(data)) def close(self): if os.path.isfile(self.filename): old_data = open(self.filename).read() else: old_data = "" new_data = self.buffer.getvalue() if old_data != new_data: with open(self.filename, "w") as f: f.write(new_data)