Module Contents



An "intermediate state" returned by BaseOperator.partial().


Object representing a mapped operator in a DAG.


validate_mapping_kwargs(op, func, value)

prevent_duplicates(kwargs1, kwargs2, *, fail_reason)




airflow.models.mappedoperator.validate_mapping_kwargs(op, func, value)[source]
airflow.models.mappedoperator.prevent_duplicates(kwargs1, kwargs2, *, fail_reason)[source]
class airflow.models.mappedoperator.OperatorPartial[source]

An “intermediate state” returned by BaseOperator.partial().

This only exists at DAG-parsing time; the only intended usage is for the user to call .expand() on it at some point (usually in a method chain) to create a MappedOperator to add into the DAG.

operator_class :type[airflow.models.baseoperator.BaseOperator][source]
kwargs :dict[str, Any][source]

Return repr(self).

expand_kwargs(kwargs, *, strict=True)[source]
class airflow.models.mappedoperator.MappedOperator(context=None)[source]

Bases: airflow.models.abstractoperator.AbstractOperator

Object representing a mapped operator in a DAG.

property task_type: str[source]

Implementing Operator.

property operator_name: str[source]
property inherits_from_empty_operator: bool[source]

Implementing Operator.

property roots: Sequence[airflow.models.abstractoperator.AbstractOperator][source]

Implementing DAGNode.

property leaves: Sequence[airflow.models.abstractoperator.AbstractOperator][source]

Implementing DAGNode.

property owner: str[source]
property email: None | str | Iterable[str][source]
property trigger_rule: airflow.utils.trigger_rule.TriggerRule[source]
property depends_on_past: bool[source]
property ignore_first_depends_on_past: bool[source]
property wait_for_downstream: bool[source]
property retries: int | None[source]
property queue: str[source]
property pool: str[source]
property pool_slots: str | None[source]
property execution_timeout: datetime.timedelta | None[source]
property max_retry_delay: datetime.timedelta | None[source]
property retry_delay: datetime.timedelta[source]
property retry_exponential_backoff: bool[source]
property priority_weight: int[source]
property weight_rule: int[source]
property sla: datetime.timedelta | None[source]
property max_active_tis_per_dag: int | None[source]
property resources: Resources | None[source]
property on_execute_callback: TaskStateChangeCallback | None[source]
property on_failure_callback: TaskStateChangeCallback | None[source]
property on_retry_callback: TaskStateChangeCallback | None[source]
property on_success_callback: TaskStateChangeCallback | None[source]
property run_as_user: str | None[source]
property executor_config: dict[source]
property inlets: list[Any][source]
property outlets: list[Any][source]
property doc: str | None[source]
property doc_md: str | None[source]
property doc_json: str | None[source]
property doc_yaml: str | None[source]
property doc_rst: str | None[source]
property output: airflow.models.xcom_arg.XComArg[source]

Returns reference to XCom pushed by current operator

operator_class :type[BaseOperator] | dict[str, Any][source]
expand_input :airflow.models.expandinput.ExpandInput[source]
partial_kwargs :dict[str, Any][source]
task_id :str[source]
params :dict | None[source]
deps :frozenset[airflow.ti_deps.deps.base_ti_dep.BaseTIDep][source]
template_ext :Sequence[str][source]
template_fields :Collection[str][source]
template_fields_renderers :dict[str, str][source]
ui_color :str[source]
ui_fgcolor :str[source]
dag :DAG | None[source]
task_group :TaskGroup | None[source]
start_date :pendulum.DateTime | None[source]
end_date :pendulum.DateTime | None[source]
upstream_task_ids :set[str][source]
downstream_task_ids :set[str][source]
is_mapped :ClassVar[bool] = True[source]
subdag :None[source]
HIDE_ATTRS_FROM_UI :ClassVar[frozenset[str]][source]

Return hash(self).


Return repr(self).

classmethod get_serialized_fields()[source]
static deps_for(operator_class)[source]

Implementing Operator.


Implementing DAGNode.


Get the “normal” Operator after applying the current mapping.

The resolve argument is only used if operator_class is a real class, i.e. if this operator is not serialized. If operator_class is not a class (i.e. this DAG has been deserialized), this returns a SerializedBaseOperator that “looks like” the actual unmapping result.

If resolve is a two-tuple (context, session), the information is used to resolve the mapped arguments into init arguments. If it is a mapping, no resolving happens, the mapping directly provides those init arguments resolved from mapped kwargs.

expand_mapped_task(run_id, *, session)[source]

Create the mapped task instances for mapped task.


The newly created mapped TaskInstances (if any) in ascending order by map index, and the maximum map_index.

Return type

tuple[Sequence[airflow.models.taskinstance.TaskInstance], int]


Upstream dependencies that provide XComs used by this task for task mapping.


Number of mapped TaskInstances that can be created at DagRun create time.

This only considers literal mapped arguments, and would return None when any non-literal values are used for mapping.


None if non-literal mapped arg encountered, or the total number of mapped TIs this task should have.

Return type

int | None

get_mapped_ti_count(run_id, *, session)[source]

Number of mapped TaskInstances that can be created at run time.

This considers both literal and non-literal mapped arguments, and the result is therefore available when all depended tasks have finished. The return value should be identical to parse_time_mapped_ti_count if all mapped arguments are literal.


None if upstream tasks are not complete yet, or the total number of mapped TIs this task should have.

Return type

int | None

render_template_fields(context, jinja_env=None)[source]

Template all attributes listed in template_fields.

If the operator is mapped, this should return the unmapped, fully rendered, and map-expanded operator. The mapped operator should not be modified. However, context will be modified in-place to reference the unmapped operator for template rendering.

If the operator is not mapped, this should modify the operator in-place.

Was this entry helpful?