From 257db3b74afaf25e0383a8ec03069d5a4a4e8f50 Mon Sep 17 00:00:00 2001 From: Henri Casanova Date: Thu, 21 May 2026 08:04:15 -1000 Subject: [PATCH 1/2] Using shlex to split task's command-line into arguments --- wfcommons/wfinstances/logs/snakemake.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/wfcommons/wfinstances/logs/snakemake.py b/wfcommons/wfinstances/logs/snakemake.py index 41d0d52c..b04c807a 100644 --- a/wfcommons/wfinstances/logs/snakemake.py +++ b/wfcommons/wfinstances/logs/snakemake.py @@ -13,6 +13,7 @@ import math import os import pathlib +import shlex from datetime import datetime, timezone from logging import Logger @@ -213,7 +214,8 @@ def _create_tasks(self): if self.task_shell[idx]: program_name = self.task_shell[idx].split(' ')[0] - program_args = self.task_shell[idx].split(' ')[0:] + # program_args = self.task_shell[idx].split(' ')[0:] + program_args = shlex.split(self.task_shell[idx], posix=False) else: program_name = "n/a" program_args = [] From df7a707275adf7f4bbee783c6041b1f3f29a41cf Mon Sep 17 00:00:00 2001 From: Henri Casanova Date: Thu, 21 May 2026 08:28:32 -1000 Subject: [PATCH 2/2] Bug fix (in case of unknown program/args for a task) --- wfcommons/wfinstances/logs/snakemake.py | 36 ++++++++++++++----------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/wfcommons/wfinstances/logs/snakemake.py b/wfcommons/wfinstances/logs/snakemake.py index b04c807a..ad858c13 100644 --- a/wfcommons/wfinstances/logs/snakemake.py +++ b/wfcommons/wfinstances/logs/snakemake.py @@ -214,23 +214,29 @@ def _create_tasks(self): if self.task_shell[idx]: program_name = self.task_shell[idx].split(' ')[0] - # program_args = self.task_shell[idx].split(' ')[0:] program_args = shlex.split(self.task_shell[idx], posix=False) + task = Task(name=self.task_map[idx], + task_id=self.task_map[idx], + task_type=TaskType.COMPUTE, + runtime=elapsed, + executed_at=start_date, + input_files=input_files, + output_files=output_files, + program=program_name, + cores=self.task_threads[idx], + args=program_args, + logger=self.logger) else: - program_name = "n/a" - program_args = [] - - task = Task(name=self.task_map[idx], - task_id=self.task_map[idx], - task_type=TaskType.COMPUTE, - runtime=elapsed, - executed_at=start_date, - input_files=input_files, - output_files=output_files, - program=program_name, - cores=self.task_threads[idx], - args=program_args, - logger=self.logger) + task = Task(name=self.task_map[idx], + task_id=self.task_map[idx], + task_type=TaskType.COMPUTE, + runtime=elapsed, + executed_at=start_date, + input_files=input_files, + output_files=output_files, + cores=self.task_threads[idx], + logger=self.logger) + self.workflow.add_task(task) # File dependencies