code: def external_python_task(
      python: str | None = None,
      python_callable: Callable | None = None,
      multiple_outputs: bool | None = None,
      **kwargs,
  ) -> TaskDecorator:
      """
      Wrap a callable into an Airflow operator to run via a Python virtual environment.
  
      Accepts kwargs for operator kwarg. Can be reused in a single DAG.
  
      This function is only used during type checking or auto-completion.
  
      :meta private:
  
      :param python: Full path string (file-system specific) that points to a Python binary inside
          a virtualenv that should be used (in ``VENV/bin`` folder). Should be absolute path
          (so usually start with "/" or "X:/" depending on the filesystem/os used).
      :param python_callable: Function to decorate
      :param multiple_outputs: If set to True, the decorated function's return value will be unrolled to
          multiple XCom values. Dict will unroll to XCom values with its keys as XCom keys.
          Defaults to False.
      """
      return task_decorator_factory(
          python=python,
          python_callable=python_callable,
          multiple_outputs=multiple_outputs,
          decorated_operator_class=_PythonExternalDecoratedOperator,
          **kwargs,
      )
  
file_path: airflow/airflow/decorators/external_python.py
imports: from __future__ import annotations
  from typing import TYPE_CHECKING, Callable
  from airflow.decorators.base import task_decorator_factory
  from airflow.decorators.python import _PythonDecoratedOperator
  from airflow.operators.python import ExternalPythonOperator
label_desc: Use image node_id 1 for calling a global function with example usage: external_python_task(python, python_callable, multiple_outputs) and returns: task_decorator_factory