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): ...
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.
One needs to be able to call
x = t1().with_overrides(...)
If the task returns an integer or a
(int, str)
tuple liket1
above, callingwith_overrides
on the result would throw an error. This Promise object adds that.Assorted handling for conditionals.
Methods
- Parameters:
var (str)
val (Union[NodeOutput, _literals_models.Literal])
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