From 1b7fc8ab8bd4c29e55caaaaeb013890d288b2b6f Mon Sep 17 00:00:00 2001 From: mvdbeek Date: Mon, 2 Oct 2023 22:29:56 +0200 Subject: [PATCH] Create simplified do_eval wrapper --- lib/galaxy/tools/expressions/__init__.py | 6 +++++- lib/galaxy/tools/expressions/evaluation.py | 15 +++++++++++++++ lib/galaxy/tools/parameters/dynamic_options.py | 8 +------- lib/galaxy/workflow/modules.py | 6 +----- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/lib/galaxy/tools/expressions/__init__.py b/lib/galaxy/tools/expressions/__init__.py index 7509b33b947..1f0a0a5aa0a 100644 --- a/lib/galaxy/tools/expressions/__init__.py +++ b/lib/galaxy/tools/expressions/__init__.py @@ -1,4 +1,7 @@ -from .evaluation import evaluate +from .evaluation import ( + do_eval, + evaluate, +) from .script import ( EXPRESSION_SCRIPT_CALL, EXPRESSION_SCRIPT_NAME, @@ -7,6 +10,7 @@ from .script import ( from .util import find_engine __all__ = ( + "do_eval", "evaluate", "EXPRESSION_SCRIPT_CALL", "EXPRESSION_SCRIPT_NAME", diff --git a/lib/galaxy/tools/expressions/evaluation.py b/lib/galaxy/tools/expressions/evaluation.py index 373c6de312b..e6334111c84 100644 --- a/lib/galaxy/tools/expressions/evaluation.py +++ b/lib/galaxy/tools/expressions/evaluation.py @@ -1,6 +1,9 @@ import json import os import subprocess +from typing import MutableMapping + +from cwl_utils.expression import do_eval as _do_eval from .util import find_engine @@ -8,6 +11,18 @@ FILE_DIRECTORY = os.path.normpath(os.path.dirname(os.path.join(__file__))) NODE_ENGINE = os.path.join(FILE_DIRECTORY, "cwlNodeEngine.js") +def do_eval(expression: str, context: MutableMapping): + return _do_eval( + expression, + context, + [{"class": "InlineJavascriptRequirement"}], + None, + None, + {}, + cwlVersion="v1.2.1", + ) + + def evaluate(config, input): application = find_engine(config) diff --git a/lib/galaxy/tools/parameters/dynamic_options.py b/lib/galaxy/tools/parameters/dynamic_options.py index 9999087fb62..253988a5a3b 100644 --- a/lib/galaxy/tools/parameters/dynamic_options.py +++ b/lib/galaxy/tools/parameters/dynamic_options.py @@ -9,8 +9,6 @@ import os import re from io import StringIO -from cwl_utils.expression import do_eval - from galaxy.model import ( DatasetCollectionElement, HistoryDatasetAssociation, @@ -18,6 +16,7 @@ from galaxy.model import ( MetadataFile, User, ) +from galaxy.tools.expressions import do_eval from galaxy.util import string_as_bool from galaxy.util.template import fill_template from . import validation @@ -792,11 +791,6 @@ class DynamicOptions: data = do_eval( self.from_url_postprocess, data, - [{"class": "InlineJavascriptRequirement"}], - None, - None, - {}, - cwlVersion="v1.2.1", ) # We only support the very specific ["name", "value", "selected"] format for now. diff --git a/lib/galaxy/workflow/modules.py b/lib/galaxy/workflow/modules.py index 4682a88fa14..b823ce3d592 100644 --- a/lib/galaxy/workflow/modules.py +++ b/lib/galaxy/workflow/modules.py @@ -18,7 +18,6 @@ from typing import ( Union, ) -from cwl_utils.expression import do_eval from typing_extensions import TypedDict from galaxy import ( @@ -59,6 +58,7 @@ from galaxy.tools.execute import ( MappingParameters, PartialJobExecution, ) +from galaxy.tools.expressions import do_eval from galaxy.tools.parameters import ( check_param, params_to_incoming, @@ -226,10 +226,6 @@ def evaluate_value_from_expressions(progress, step, execution_state, extra_step_ as_cwl_value = do_eval( when_expression, step_state, - [{"class": "InlineJavascriptRequirement"}], - None, - None, - {}, ) except Exception: # Exception contains script and traceback, which could be helpful for debugging workflows,