diff --git a/src/xfel_calibrate/calibrate.py b/src/xfel_calibrate/calibrate.py index 8ffcc29aa14a3763ca110b56298c908b62ada903..fa14605bf1068aa43b0e512332b607ed0afb0b74 100755 --- a/src/xfel_calibrate/calibrate.py +++ b/src/xfel_calibrate/calibrate.py @@ -11,7 +11,7 @@ import stat import sys import textwrap import warnings -from datetime import datetime +from datetime import datetime, timezone from pathlib import Path from subprocess import DEVNULL, call, check_call, check_output from typing import List, Union @@ -610,7 +610,7 @@ def run(argv=None): # request_time is in local timezone if args["request_time"] == "Now": - request_time = datetime.now() + request_time = datetime.now(tz=timezone.utc) else: request_time = datetime.fromisoformat(args["request_time"]) @@ -819,7 +819,7 @@ def run(argv=None): print("Calibration work directory (including Slurm .out files):") print(" ", cal_work_dir) - submission_time = datetime.now().strftime('%Y-%m-%dT%H:%M:%S') + submission_time = datetime.now(tz=timezone.utc) # Launch the calibration work if args["no_cluster_job"]: @@ -845,8 +845,8 @@ def run(argv=None): 'author': author, 'report_to': report_to, 'in_folder': folder, - 'request_time': request_time.strftime("%Y-%m-%dT%H:%M:%S"), - 'submission_time': submission_time, + 'request_time': request_time.isoformat(), + 'submission_time': submission_time.isoformat(), } joblist.append(run_finalize( diff --git a/src/xfel_calibrate/finalize.py b/src/xfel_calibrate/finalize.py index 41b3f9dd4b84f61a666647064959b966ba915543..94343c45ea1d0947f933635a60fedb4bc06870ba 100644 --- a/src/xfel_calibrate/finalize.py +++ b/src/xfel_calibrate/finalize.py @@ -1,6 +1,6 @@ import re import sys -from datetime import datetime +from datetime import datetime, timezone from importlib.machinery import SourceFileLoader from os import chdir, listdir, path from pathlib import Path @@ -145,7 +145,7 @@ def get_job_info(jobs: List[str], fmt: List[str]) -> List[List[str]]: def make_timing_summary(cal_work_dir: Path, job_times: List[List[str]], - job_time_fmt: List[str], pipeline_times: Dict[str, str]): + job_time_fmt: List[str], pipeline_times: Dict[str, datetime]): """ Create an rst file with timing summary of executed notebooks @@ -160,6 +160,8 @@ def make_timing_summary(cal_work_dir: Path, job_times: List[List[str]], Runtime summary =============== + All timestamps are shown in local (Hamburg) time. + .. math:: {% for line in time_table %} {{ line }} @@ -176,10 +178,12 @@ def make_timing_summary(cal_work_dir: Path, job_times: List[List[str]], ''') time_vals = [ - ["Time of Request", pipeline_times["request-time"]], - ["Job submission", pipeline_times["submission-time"]], - ["Report compilation", pipeline_times["report-compilation-time"]], - ] + [title, pipeline_times[k].astimezone(None).strftime("%Y-%m-%d %H:%M:%S")] + for (title, k) in [ + ["Time of Request", "request-time"], + ["Job submission", "submission-time"], + ["Report compilation", "report-compilation-time"], + ]] with (cal_work_dir / "timing_summary.rst").open("w+") as fd: time_table = tabulate.tabulate(time_vals, tablefmt="latex", @@ -384,9 +388,9 @@ def finalize(joblist, finaljob, cal_work_dir, out_path, version, title, author, job_time_fmt = 'JobID,Start,End,Elapsed,Suspended,State'.split(',') job_time_summary = get_job_info(joblist, job_time_fmt) pipeline_time_summary = { - "request-time": request_time, - "submission-time": submission_time, - "report-compilation-time": datetime.now().strftime("%Y-%m-%dT%H:%M:%S"), + "request-time": datetime.fromisoformat(request_time), + "submission-time": datetime.fromisoformat(submission_time), + "report-compilation-time": datetime.now(timezone.utc), } make_timing_summary(cal_work_dir, job_time_summary, job_time_fmt, pipeline_time_summary) metadata.update(