flytekit.extend.Promise

class flytekit.extend.Promise(var, val)[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.

Methods

Parameters:
deepcopy()[source]
Return type:

Promise

eval()[source]
Return type:

Any

is_(v)[source]
Parameters:

v (bool)

Return type:

ComparisonExpression

is_false()[source]
Return type:

ComparisonExpression

is_none()[source]
Return type:

ComparisonExpression

is_true()[source]
Return type:

ComparisonExpression

with_overrides(*args, **kwargs)[source]
with_var(new_var)[source]
Parameters:

new_var (str)

Return type:

Promise

Attributes

attr_path

The attribute path the promise will be resolved with. :rtype: List[Union[str, int]]

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