Source code for latch.resources.launch_plan
import inspect
from typing import Any, Callable, Dict
from flytekit import LaunchPlan as _LaunchPlan
[docs]class LaunchPlan:
"""Construct named groups of default parameters for your workflows.
Pass a workflow function and a dictionary of parameter names mapped to
default python values and a set of "test data" will be populated on the
console upon registration.
Args:
workflow: The workflow function to which the values apply.
name: A semantic identifier to the parameter values (eg. 'Small Data')
default_params: A mapping of paramter names to values
..
from latch.resources.launch_plan import LaunchPlan
LaunchPlan(
assemble_and_sort,
"foo",
{"read1": LatchFile("latch:///foobar"), "read2": LatchFile("latch:///foobar")},
)
"""
def __init__(self, workflow: Callable, name: str, default_params: Dict[str, Any]):
# This constructor is invoked twice when task code is executed.
# 1. When the pyflyte-execute entrypoint is invoked to start task.
# `mod.__name__` of caller is `wf`
# 2. When the PythonAutoContainer loads our module to call our task.
# `mod.__name__` of caller is `wf.__init__`
# LaunchPlans are stored in a global array and redundant additions will
# throw an exception, so we want to create on the first constructor
# call only.
frame = inspect.stack()[1]
mod = inspect.getmodule(frame[0])
if mod.__name__ == "wf":
str_repr = f"wf.__init__.{workflow.__name__}.{name}"
_LaunchPlan.create(str_repr, workflow, default_params)