mysterious-painter-66441
09/18/2024, 5:06 PMproud-answer-87162
09/18/2024, 8:21 PMdynamic
mysterious-painter-66441
09/19/2024, 2:04 PMfrom flytekit import task, dynamic, workflow
from typing import Dict
@task
def get_image(pandas_version: str) -> str:
return f"repo/pandas:{pandas_version}"
@task
def check_pandas_version(image: str) -> Dict[str, str]:
import pandas as pd
return {"image": image, "installed_pandas_version": pd.__version__}
@dynamic
def wf(pandas_version: str):
image_str = get_image(pandas_version=pandas_version)
check_pandas_version(image=image_str).with_overrides(container_image=image_str)
if __name__ == "__main__":
# Execute the workflow by invoking it like a function and passing in
# the necessary parameters
print(f"Running wf() {wf(pandas_version='2.1.0')}")
proud-answer-87162
09/19/2024, 4:08 PMdynamic
workflows, but i think i found a workaround.
root cause: as the error stated, you can't use a promise
for most types of overrides
. there are some exceptions, but many need to be resolved values, including container_image
.
workaround: call the get_image
task and (what you call) wf
from a parent workflow. this will force the result of get_image
to get resolved before being processed by the dynamic
wf.
I updated the example to use python version instead of pandas because I don't have pandas repo setup like yours. e.g.:
from flytekit import task, dynamic, workflow
@task
def get_image(python_version: str) -> str:
return f"<http://ghcr.io/flyteorg/flytekit:py{python_version}-latest|ghcr.io/flyteorg/flytekit:py{python_version}-latest>"
@task
def check_python_version(image: str) -> str:
return f"image: {image}"
@dynamic
def use_dynamic_image(imagename: str) -> str:
return check_python_version(image=imagename).with_overrides(container_image=imagename)
@workflow
def dynamic_image_wf(python_version: str) -> str:
imagename = get_image(python_version=python_version)
return use_dynamic_image(imagename=imagename)
if __name__ == "__main__":
print(f"Running wf() {dynamic_image_wf(python_version='3.11')}")
proud-answer-87162
09/19/2024, 4:09 PMmysterious-painter-66441
09/19/2024, 4:17 PMmysterious-painter-66441
09/19/2024, 6:13 PM