diff --git a/airflow/operators/python.py b/airflow/operators/python.py index 4dd8727519849..b23d400f47cb9 100644 --- a/airflow/operators/python.py +++ b/airflow/operators/python.py @@ -531,7 +531,7 @@ def __init__( *, python_callable: Callable, requirements: None | Iterable[str] | str = None, - python_version: str | int | float | None = None, + python_version: str | None = None, use_dill: bool = False, system_site_packages: bool = True, pip_install_options: list[str] | None = None, @@ -555,6 +555,13 @@ def __init__( "major versions for PythonVirtualenvOperator. Please use string_args." f"Sys version: {sys.version_info}. Venv version: {python_version}" ) + if python_version is not None and not isinstance(python_version, str): + warnings.warn( + "Passing non-string types (e.g. int or float) as python_version " + "is deprecated. Please use string value instead.", + RemovedInAirflow3Warning, + stacklevel=2, + ) if not is_venv_installed(): raise AirflowException("PythonVirtualenvOperator requires virtualenv, please install it.") if not requirements: diff --git a/tests/operators/test_python.py b/tests/operators/test_python.py index d20949c618043..1d68d6543f560 100644 --- a/tests/operators/test_python.py +++ b/tests/operators/test_python.py @@ -965,7 +965,7 @@ def f(): return raise Exception - self.run_as_task(f, python_version=3, use_dill=False, requirements=["dill"]) + self.run_as_task(f, python_version="3", use_dill=False, requirements=["dill"]) def test_without_dill(self): def f(a):