Source code for snakemake.ioutils.evaluate
from snakemake.logging import format_dict
from snakemake_interface_common.exceptions import WorkflowError
[docs]
def evaluate(expr: str):
"""Evaluate a python expression while replacing any wildcards given as
{wildcardname} with the wildcard value represented as a string."""
def inner(wildcards):
formatted = expr.format(**{w: repr(v) for w, v in wildcards.items()})
try:
return eval(formatted, globals())
except Exception as e:
raise WorkflowError(
f"Failed to evaluate expression {expr} with wildcards {format_dict(wildcards)}. "
f"Formatted expression: {formatted}",
e,
)
return inner