flytekit.extend.Promise

class flytekit.extend.Promise(var: str, val: Union[flytekit.core.promise.NodeOutput, flytekit.models.literals.Literal])[source]

This object is a wrapper and exists for three main reasons. Let’s assume we’re dealing with a task like

@task
def t1() -> (int, str): ...
  1. Handling the duality between compilation and local execution - when the task function is run in a local execution mode inside a workflow function, a Python integer and string are produced. When the task is being compiled as part of the workflow, the task call creates a Node instead, and the task returns two Promise objects that point to that Node.

  2. One needs to be able to call

    x = t1().with_overrides(...)
    

    If the task returns an integer or a (int, str) tuple like t1 above, calling with_overrides on the result would throw an error. This Promise object adds that.

  3. Assorted handling for conditionals.

__init__(var: str, val: Union[flytekit.core.promise.NodeOutput, flytekit.models.literals.Literal])[source]

Initialize self. See help(type(self)) for accurate signature.

Methods

__init__(var, val)

Initialize self.

eval()

is_(v)

is_false()

is_true()

with_overrides(*args, **kwargs)

with_var(new_var)

Attributes

is_ready

Returns if the Promise is READY (is not a reference and the val is actually ready) Usage: p = Promise(…) … if p.is_ready(): print(p.val) else: print(p.ref).

ref

If the promise is NOT READY / Incomplete, then it maps to the origin node that owns the promise

val

If the promise is ready then this holds the actual evaluate value in Flyte’s type system

var

Name of the variable bound with this promise