Exemplo n.º 1
0
 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")
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
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
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
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")
Exemplo n.º 7
0
 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)))