3
0
Fork 0
mirror of https://github.com/YosysHQ/sby.git synced 2025-08-24 13:47:54 +00:00

statusfmt: Skip missing fields in jsonl output

This commit is contained in:
Jannis Harder 2025-07-29 17:30:10 +02:00
parent 344236af41
commit 190ef86916

View file

@ -525,19 +525,10 @@ def format_status_data_fmtline(row: dict|None, fmt: str = "csv") -> str:
data = None data = None
else: else:
engine = row['data'].get('engine', row['data'].get('source')) engine = row['data'].get('engine', row['data'].get('source'))
try:
time = row['status_created'] - row['created']
except TypeError:
time = 0
name = row['hdlname'] name = row['hdlname']
depth = row['data'].get('step') depth = row['data'].get('step')
try:
trace_path = Path(row['workdir']) / row['path']
except TypeError:
trace_path = None
data = { data = {
"time": round(time, 2),
"task_name": row['task_name'], "task_name": row['task_name'],
"mode": row['mode'], "mode": row['mode'],
"engine": engine, "engine": engine,
@ -545,14 +536,21 @@ def format_status_data_fmtline(row: dict|None, fmt: str = "csv") -> str:
"location": row['location'], "location": row['location'],
"kind": row['kind'], "kind": row['kind'],
"status": row['status'] or "UNKNOWN", "status": row['status'] or "UNKNOWN",
"trace": trace_path,
"depth": depth, "depth": depth,
} }
try:
data["trace"] = str(Path(row['workdir']) / row['path'])
except TypeError:
pass
try:
data['time'] = round(row['status_created'] - row['created'], 2)
except TypeError:
pass
if fmt == "csv": if fmt == "csv":
if data is None: if data is None:
csv_line = fmtline_columns csv_line = fmtline_columns
else: else:
csv_line = [data[column] for column in fmtline_columns] csv_line = [data.get(column) for column in fmtline_columns]
def csv_field(value): def csv_field(value):
if value is None: if value is None:
return "" return ""
@ -564,6 +562,8 @@ def format_status_data_fmtline(row: dict|None, fmt: str = "csv") -> str:
elif fmt == "jsonl": elif fmt == "jsonl":
if data is None: if data is None:
return "" return ""
# field order
data = {column: data[column] for column in fmtline_columns if column in data}
return json.dumps(data) return json.dumps(data)
def filter_latest_task_ids(all_tasks: dict[int, dict[str]]): def filter_latest_task_ids(all_tasks: dict[int, dict[str]]):