def test_rename(self): """Renames file as expected """ # create temp file directory with tempfile.TemporaryDirectory(".") as dirname: # create temp filepath dirname = pathlib.Path(dirname) test_filepath = dirname / "Atomic_write_test" # touch the filepath so it exists f = open(test_filepath, "w").close() self.assertTrue(exists(test_filepath)) # file should overwrite file if file already exists with atomic_write(test_filepath, mode="w") as f: f.write("abc")
def write(self, identifier, data): relative_id = self.get_relative_identifier(identifier) absolute_id = self.get_absolute_identifier(relative_id, from_relative=True) if self._md5: self._checksums[absolute_id] = get_text_hexdigest(data) with atomic_write(str(relative_id), in_zip=self.source) as out: out.write(data) member = DataStoreMember(relative_id, self) if relative_id not in self and relative_id.endswith(self.suffix): self._members.append(member) return member
def write(self, path, format="tsv", sep="\t"): """writes a flattened version to path Parameters ---------- path : str format possible formats are 'rest'/'rst', 'markdown'/'md', 'latex', 'html', 'phylip', 'bedgraph', 'csv', 'tsv', or 'simple' (default). sep : str used to split fields, will be inferred from path suffix if not provided """ data = self.to_string(format=format, sep=sep) with atomic_write(path, mode="wt") as outfile: outfile.write(data)
def save_to_filename(alignment, filename, format, **kw): """Arguments: - alignment: to be written - filename: name of the sequence alignment file - format: the multiple sequence file format """ if format is None: raise FileFormatError("format not known") with atomic_write(filename, mode="wt") as f: try: write_alignment_to_file(f, alignment, format, **kw) except Exception: try: os.unlink(filename) except Exception: pass raise
def write(self, identifier, data): super().write(identifier, data) id_suffix = identifier.split(".")[-1] if id_suffix not in (self.suffix, "log"): raise ValueError( f"identifier does not end with required suffix {self.suffix}" ) relative_id = self.get_relative_identifier(identifier) absolute_id = self.get_absolute_identifier(relative_id, from_relative=True) if self._md5: self._checksums[absolute_id] = get_text_hexdigest(data) with atomic_write(str(absolute_id), in_zip=False) as out: out.write(data) member = DataStoreMember(relative_id, self) if relative_id not in self and relative_id.endswith(self.suffix): self._members.append(member) return member
def execute_ipynb(file_paths, exit_on_first, verbose): failed = False for test in file_paths: path = pathlib.Path(test) print() print("=" * 40) print(test) with open(test) as f: nb = nbformat.read(f, as_version=4) ep = ExecutePreprocessor(timeout=600, kernel_name="python3", store_widget_state=True) try: ep.preprocess(nb, {"metadata": {"path": path.parent}}) except CellExecutionError: failed = True with atomic_write(test, mode="w") as f: nbformat.write(nb, f) if failed and exit_on_first: raise SystemExit( f"notebook execution failed in {test}, error saved " "in notebook")
def write(self, filename): with atomic_write(filename, mode="wt") as f: for (score, tree) in self: f.writelines( self.scored_tree_format( tree.get_newick(with_distances=True), str(score)))