"""This script is a workaround as we didn't manage to install papermill as script in the Jenkins pipeline""" from pathlib import Path import pandas as pd import argparse import nbformat from lhcsmapi import Time from lhcsmnb import outputs, parameters def _get_arg_parser(): """Specifies script arguments. Returns parser. """ parser = argparse.ArgumentParser(description='Runs notebook with papermill.') parser.add_argument('notebook') parser.add_argument('circuit_name') parser.add_argument('discharge_level') parser.add_argument('start_time') parser.add_argument('end_time') return parser def get_result(): result_path = Path("./output/result.ipynb") result_nb = nbformat.read(result_path, as_version=4) nb = outputs.NotebookOutput(result_nb) try: summary = nb.get_cells_by_tag('result')[0].get_cell_output(outputs.CellOutputType.STDOUT)[0] result_flag = nb.get_cells_by_tag('result')[1].get_cell_output(outputs.CellOutputType.STDOUT)[0] except IndexError: return 'FAILED', '' return result_flag, summary def save_json_to_file(args, flag, comment): file_path = '/eos/home-m/mpesoft/' + ':'.join(args.notebook, args.circuit_name, args.discharge_level, Time.to_unix_timestamp(args.start_time), Time.to_unix_timestamp(args.end_time), flag) + '.csv' df = pd.DataFrame(eval(comment)) with open(file_path, 'a') as f: df.to_csv(f, mode='a', header=f.tell() == 0) if __name__ == '__main__': args = _get_arg_parser().parse_args() print('args: ') print(args) flag, text = get_result() save_json_to_file(args, flag, text)