Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions providers/ssh/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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.7.4", # + TODO: bump to next version
# TODO: Bump to >= 4.0.0 once https://github.com/apache/airflow/issues/54079 is handled
"paramiko>=2.9.0,<4.0.0",
"sshtunnel>=0.3.2",
Expand All @@ -68,6 +69,7 @@ dev = [
"apache-airflow",
"apache-airflow-task-sdk",
"apache-airflow-devel-common",
"apache-airflow-providers-common-compat",
# Additional devel dependencies (do not remove this line and add extra development dependencies)
]

Expand Down
2 changes: 1 addition & 1 deletion providers/ssh/src/airflow/providers/ssh/hooks/ssh.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
from tenacity import Retrying, stop_after_attempt, wait_fixed, wait_random

from airflow.exceptions import AirflowException
from airflow.providers.ssh.version_compat import BaseHook
from airflow.providers.common.compat.sdk import BaseHook
from airflow.utils.platform import getuser
from airflow.utils.types import NOTSET, ArgNotSet

Expand Down
2 changes: 1 addition & 1 deletion providers/ssh/src/airflow/providers/ssh/operators/ssh.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@

from airflow.configuration import conf
from airflow.exceptions import AirflowException, AirflowSkipException
from airflow.providers.common.compat.sdk import BaseOperator
from airflow.providers.ssh.hooks.ssh import SSHHook
from airflow.providers.ssh.version_compat import BaseOperator
from airflow.utils.types import NOTSET, ArgNotSet

if TYPE_CHECKING:
Expand Down
12 changes: 1 addition & 11 deletions providers/ssh/src/airflow/providers/ssh/version_compat.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,4 @@ def get_base_airflow_version_tuple() -> tuple[int, int, int]:
AIRFLOW_V_3_0_PLUS = get_base_airflow_version_tuple() >= (3, 0, 0)
AIRFLOW_V_3_1_PLUS: bool = get_base_airflow_version_tuple() >= (3, 1, 0)

if AIRFLOW_V_3_1_PLUS:
from airflow.sdk import BaseHook
else:
from airflow.hooks.base import BaseHook # type: ignore[attr-defined,no-redef]

if AIRFLOW_V_3_0_PLUS:
from airflow.sdk import BaseOperator
else:
from airflow.models import BaseOperator

__all__ = ["AIRFLOW_V_3_0_PLUS", "AIRFLOW_V_3_1_PLUS", "BaseHook", "BaseOperator"]
__all__ = ["AIRFLOW_V_3_0_PLUS", "AIRFLOW_V_3_1_PLUS"]
10 changes: 4 additions & 6 deletions providers/ssh/tests/unit/ssh/operators/test_ssh.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,22 +27,20 @@

from airflow.exceptions import AirflowException, AirflowSkipException, AirflowTaskTimeout
from airflow.models import TaskInstance
from airflow.providers.common.compat.sdk import timezone
from airflow.providers.ssh.hooks.ssh import SSHHook
from airflow.providers.ssh.operators.ssh import SSHOperator
from airflow.utils.types import NOTSET

from tests_common.test_utils.config import conf_vars
from tests_common.test_utils.dag import sync_dag_to_db
from tests_common.test_utils.version_compat import AIRFLOW_V_3_0_PLUS, AIRFLOW_V_3_1_PLUS
from tests_common.test_utils.version_compat import AIRFLOW_V_3_0_PLUS

datetime = timezone.datetime

if AIRFLOW_V_3_0_PLUS:
from airflow.models.dag_version import DagVersion

if AIRFLOW_V_3_1_PLUS:
from airflow.sdk.timezone import datetime
else:
from airflow.utils.timezone import datetime # type: ignore[attr-defined,no-redef]

pytestmark = pytest.mark.db_test


Expand Down