def test_make_output(_format): """ test make output :param _format: (str) output format """ writer = make_output_format(_format, LOG_DIR) writer.writekvs(KEY_VALUES) if _format == "csv": read_csv(LOG_DIR + 'progress.csv') elif _format == 'json': read_json(LOG_DIR + 'progress.json') writer.close()
def read_fn(_format): if _format == "csv": try: df = read_csv(tmp_path / "progress.csv") except EmptyDataError: return LogContent(_format, []) return LogContent(_format, [r for _, r in df.iterrows() if not r.empty]) elif _format == "json": try: df = read_json(tmp_path / "progress.json") except EmptyDataError: return LogContent(_format, []) return LogContent(_format, [r for _, r in df.iterrows() if not r.empty]) elif _format == "stdout": captured = capsys.readouterr() return LogContent(_format, captured.out.splitlines()) elif _format == "log": return LogContent(_format, (tmp_path / "log.txt").read_text().splitlines()) elif _format == "tensorboard": from tensorboard.backend.event_processing.event_accumulator import EventAccumulator acc = EventAccumulator(str(tmp_path)) acc.Reload() tb_values_logged = [] for reservoir in [acc.scalars, acc.tensors, acc.images, acc.histograms, acc.compressed_histograms]: for k in reservoir.Keys(): tb_values_logged.append(f"{k}: {str(reservoir.Items(k))}") content = LogContent(_format, tb_values_logged) return content
def test_make_output(tmp_path, _format): """ test make output :param _format: (str) output format """ if _format == 'tensorboard': # Skip if no tensorboard installed pytest.importorskip("tensorboard") writer = make_output_format(_format, tmp_path) writer.write(KEY_VALUES, KEY_EXCLUDED) if _format == "csv": read_csv(tmp_path / 'progress.csv') elif _format == 'json': read_json(tmp_path / 'progress.json') writer.close()