diff --git a/dev/breeze/tests/test_selective_checks.py b/dev/breeze/tests/test_selective_checks.py index 6c54340e37f06..9f7ea9a9a1034 100644 --- a/dev/breeze/tests/test_selective_checks.py +++ b/dev/breeze/tests/test_selective_checks.py @@ -2151,7 +2151,7 @@ def test_upgrade_to_newer_dependencies( ), pytest.param( ("providers/celery/src/airflow/providers/celery/file.py",), - {"docs-list-as-string": "celery cncf.kubernetes"}, + {"docs-list-as-string": "celery cncf.kubernetes common.compat"}, id="Celery python files changed", ), pytest.param( diff --git a/providers/celery/pyproject.toml b/providers/celery/pyproject.toml index fc25e9531eee4..c20b58f15e96f 100644 --- a/providers/celery/pyproject.toml +++ b/providers/celery/pyproject.toml @@ -58,6 +58,7 @@ requires-python = ">=3.10" # After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build`` dependencies = [ "apache-airflow>=2.10.0", + "apache-airflow-providers-common-compat>=1.8.0", # The Celery is known to introduce problems when upgraded to a MAJOR version. Airflow Core # Uses Celery for CeleryExecutor, and we also know that Kubernetes Python client follows SemVer # (https://docs.celeryq.dev/en/stable/contributing.html?highlight=semver#versions). @@ -79,6 +80,7 @@ dev = [ "apache-airflow-task-sdk", "apache-airflow-devel-common", "apache-airflow-providers-cncf-kubernetes", + "apache-airflow-providers-common-compat", # Additional devel dependencies (do not remove this line and add extra development dependencies) ] diff --git a/providers/celery/src/airflow/providers/celery/executors/celery_executor_utils.py b/providers/celery/src/airflow/providers/celery/executors/celery_executor_utils.py index 76202dd139f33..9b48efbc38090 100644 --- a/providers/celery/src/airflow/providers/celery/executors/celery_executor_utils.py +++ b/providers/celery/src/airflow/providers/celery/executors/celery_executor_utils.py @@ -44,7 +44,8 @@ from airflow.configuration import conf from airflow.exceptions import AirflowException, AirflowProviderDeprecationWarning, AirflowTaskTimeout from airflow.executors.base_executor import BaseExecutor -from airflow.providers.celery.version_compat import AIRFLOW_V_3_0_PLUS, timeout +from airflow.providers.celery.version_compat import AIRFLOW_V_3_0_PLUS +from airflow.providers.common.compat.sdk import timeout from airflow.stats import Stats from airflow.utils.log.logging_mixin import LoggingMixin from airflow.utils.net import get_hostname diff --git a/providers/celery/src/airflow/providers/celery/version_compat.py b/providers/celery/src/airflow/providers/celery/version_compat.py index 9dbb0942ea72f..718adeae40e5e 100644 --- a/providers/celery/src/airflow/providers/celery/version_compat.py +++ b/providers/celery/src/airflow/providers/celery/version_compat.py @@ -28,10 +28,4 @@ def get_base_airflow_version_tuple() -> tuple[int, int, int]: AIRFLOW_V_3_0_PLUS = get_base_airflow_version_tuple() >= (3, 0, 0) -try: - from airflow.sdk.execution_time.timeout import timeout -except ImportError: - from airflow.utils.timeout import timeout # type: ignore[assignment,attr-defined,no-redef] - - -__all__ = ["AIRFLOW_V_3_0_PLUS", "timeout"] +__all__ = ["AIRFLOW_V_3_0_PLUS"]