コード例 #1
0
def test_comparison_refs():
    def dummy_node(node_id) -> Node:
        n = Node(
            node_id,
            metadata=None,
            bindings=[],
            upstream_nodes=[],
            flyte_entity=SQLTask(name="x", query_template="x", inputs={}),
        )

        n._id = node_id
        return n

    px = Promise("x", NodeOutput(var="x", node=dummy_node("n1")))
    py = Promise("y", NodeOutput(var="y", node=dummy_node("n2")))

    def print_expr(expr):
        print(f"{expr} is type {type(expr)}")

    print_expr(px == py)
    print_expr(px < py)
    print_expr((px == py) & (px < py))
    print_expr(((px == py) & (px < py)) | (px > py))
    print_expr(px < 5)
    print_expr(px >= 5)
    print_expr(px != 5)
コード例 #2
0
 def _compute_outputs(
         self,
         n: Node) -> Optional[Union[Promise, Tuple[Promise], VoidPromise]]:
     curr = self.compute_output_vars()
     if curr is None or len(curr) == 0:
         return VoidPromise(n.id, NodeOutput(node=n, var="placeholder"))
     promises = [
         Promise(var=x, val=NodeOutput(node=n, var=x)) for x in curr
     ]
     # TODO: Is there a way to add the Python interface here? Currently, it's an optional arg.
     return create_task_output(promises)
コード例 #3
0
def construct_input_promises(inputs: List[str]):
    return {
        input_name: Promise(var=input_name,
                            val=NodeOutput(node=GLOBAL_START_NODE,
                                           var=input_name))
        for input_name in inputs
    }
コード例 #4
0
ファイル: workflow.py プロジェクト: dylanwilder/flytekit
 def add_workflow_input(self, input_name: str, python_type: Type) -> Interface:
     """
     Adds an input to the workflow.
     """
     if input_name in self._inputs:
         raise FlyteValidationException(f"Input {input_name} has already been specified for wf {self.name}.")
     self._python_interface = self._python_interface.with_inputs(extra_inputs={input_name: python_type})
     self._interface = transform_interface_to_typed_interface(self._python_interface)
     self._inputs[input_name] = Promise(var=input_name, val=NodeOutput(node=GLOBAL_START_NODE, var=input_name))
     self._unbound_inputs.add(self._inputs[input_name])
     return self._inputs[input_name]
コード例 #5
0
ファイル: condition.py プロジェクト: xquek-fn/flytekit
 def _compute_outputs(self, n: Node) -> Union[Promise, Tuple[Promise], VoidPromise]:
     output_var_sets: typing.List[typing.Set[str]] = []
     for c in self._cases:
         if c.output_promise is None and c.err is None:
             # One node returns a void output and no error, we will default to a
             # Void output
             return VoidPromise(n.id)
         if c.output_promise is not None:
             if isinstance(c.output_promise, tuple):
                 output_var_sets.append(set([i.var for i in c.output_promise]))
             else:
                 output_var_sets.append(set([c.output_promise.var]))
     curr = output_var_sets[0]
     if len(output_var_sets) > 1:
         for x in output_var_sets[1:]:
             curr = curr.intersection(x)
     promises = [Promise(var=x, val=NodeOutput(node=n, var=x)) for x in curr]
     # TODO: Is there a way to add the Python interface here? Currently, it's an optional arg.
     return create_task_output(promises)