airflow.models.xcom_arg

Module Contents

Classes

XComArg

Class that represents a XCom push from a previous operator.

class airflow.models.xcom_arg.XComArg(operator: airflow.models.baseoperator.BaseOperator, key: str = XCOM_RETURN_KEY)[source]

Bases: airflow.models.taskmixin.TaskMixin

Class that represents a XCom push from a previous operator. Defaults to “return_value” as only key.

Current implementation supports

xcomarg >> op xcomarg << op op >> xcomarg (by BaseOperator code) op << xcomarg (by BaseOperator code)

Example: The moment you get a result from any operator (decorated or regular) you can

any_op = AnyOperator()
xcomarg = XComArg(any_op)
# or equivalently
xcomarg = any_op.output
my_op = MyOperator()
my_op >> xcomarg

This object can be used in legacy Operators via Jinja.

Example: You can make this result to be part of any generated string

any_op = AnyOperator()
xcomarg = any_op.output
op1 = MyOperator(my_text_message=f"the value is {xcomarg}")
op2 = MyOperator(my_text_message=f"the value is {xcomarg['topic']}")
Parameters
__eq__(self, other)[source]

Return self==value.

__getitem__(self, item)[source]

Implements xcomresult[‘some_result_key’]

__str__(self)[source]

Backward compatibility for old-style jinja used in Airflow Operators

Example: to use XComArg at BashOperator:

BashOperator(cmd=f"... { xcomarg } ...")
Returns

property operator(self) airflow.models.baseoperator.BaseOperator[source]

Returns operator of this XComArg.

property roots(self) List[airflow.models.baseoperator.BaseOperator][source]

Required by TaskMixin

property leaves(self) List[airflow.models.baseoperator.BaseOperator][source]

Required by TaskMixin

property key(self) str[source]

Returns keys of this XComArg

set_upstream(self, task_or_task_list: Union[airflow.models.taskmixin.TaskMixin, Sequence[airflow.models.taskmixin.TaskMixin]], edge_modifier: Optional[airflow.utils.edgemodifier.EdgeModifier] = None)[source]

Proxy to underlying operator set_upstream method. Required by TaskMixin.

set_downstream(self, task_or_task_list: Union[airflow.models.taskmixin.TaskMixin, Sequence[airflow.models.taskmixin.TaskMixin]], edge_modifier: Optional[airflow.utils.edgemodifier.EdgeModifier] = None)[source]

Proxy to underlying operator set_downstream method. Required by TaskMixin.

resolve(self, context: airflow.utils.context.Context) Any[source]

Pull XCom value for the existing arg. This method is run during op.execute() in respectable context.

Was this entry helpful?