This is an automated email from the ASF dual-hosted git repository.

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new aa2342d36aa Provider Migration: Update Oracle for Airflow 3.0 
compatibility (#52382)
aa2342d36aa is described below

commit aa2342d36aa6b25bec6e1a0b07d9b15938421a00
Author: Kevin Yang <[email protected]>
AuthorDate: Sat Jun 28 18:02:03 2025 -0400

    Provider Migration: Update Oracle for Airflow 3.0 compatibility (#52382)
    
    * Update BaseOperator imports for Airflow 3.0 compatibility
    
    * update based on latest instruction
---
 .../tests/unit/always/test_project_structure.py    |  1 +
 .../airflow/providers/oracle/operators/oracle.py   |  8 +---
 .../providers/oracle/transfers/oracle_to_oracle.py |  8 +---
 .../src/airflow/providers/oracle/version_compat.py | 43 ++++++++++++++++++++++
 .../tests/unit/oracle/operators/test_oracle.py     |  3 +-
 5 files changed, 49 insertions(+), 14 deletions(-)

diff --git a/airflow-core/tests/unit/always/test_project_structure.py 
b/airflow-core/tests/unit/always/test_project_structure.py
index 14d63b8b211..76a1aa41d11 100644
--- a/airflow-core/tests/unit/always/test_project_structure.py
+++ b/airflow-core/tests/unit/always/test_project_structure.py
@@ -224,6 +224,7 @@ class TestProjectStructure:
             
"providers/microsoft/azure/tests/unit/microsoft/azure/test_version_compat.py",
             
"providers/openlineage/tests/unit/openlineage/test_version_compat.py",
             
"providers/opensearch/tests/unit/opensearch/test_version_compat.py",
+            "providers/oracle/tests/unit/oracle/test_version_compat.py",
             "providers/presto/tests/unit/presto/test_version_compat.py",
             "providers/redis/tests/unit/redis/test_version_compat.py",
             "providers/sftp/tests/unit/sftp/test_version_compat.py",
diff --git a/providers/oracle/src/airflow/providers/oracle/operators/oracle.py 
b/providers/oracle/src/airflow/providers/oracle/operators/oracle.py
index 0eaf32ae681..0907752af14 100644
--- a/providers/oracle/src/airflow/providers/oracle/operators/oracle.py
+++ b/providers/oracle/src/airflow/providers/oracle/operators/oracle.py
@@ -23,15 +23,11 @@ from typing import TYPE_CHECKING
 
 import oracledb
 
-from airflow.models import BaseOperator
 from airflow.providers.oracle.hooks.oracle import OracleHook
+from airflow.providers.oracle.version_compat import BaseOperator
 
 if TYPE_CHECKING:
-    try:
-        from airflow.sdk.definitions.context import Context
-    except ImportError:
-        # TODO: Remove once provider drops support for Airflow 2
-        from airflow.utils.context import Context
+    from airflow.providers.oracle.version_compat import Context
 
 
 class OracleStoredProcedureOperator(BaseOperator):
diff --git 
a/providers/oracle/src/airflow/providers/oracle/transfers/oracle_to_oracle.py 
b/providers/oracle/src/airflow/providers/oracle/transfers/oracle_to_oracle.py
index 6e10383609a..8d722e8658b 100644
--- 
a/providers/oracle/src/airflow/providers/oracle/transfers/oracle_to_oracle.py
+++ 
b/providers/oracle/src/airflow/providers/oracle/transfers/oracle_to_oracle.py
@@ -20,15 +20,11 @@ from __future__ import annotations
 from collections.abc import Sequence
 from typing import TYPE_CHECKING
 
-from airflow.models import BaseOperator
 from airflow.providers.oracle.hooks.oracle import OracleHook
+from airflow.providers.oracle.version_compat import BaseOperator
 
 if TYPE_CHECKING:
-    try:
-        from airflow.sdk.definitions.context import Context
-    except ImportError:
-        # TODO: Remove once provider drops support for Airflow 2
-        from airflow.utils.context import Context
+    from airflow.providers.oracle.version_compat import Context
 
 
 class OracleToOracleOperator(BaseOperator):
diff --git a/providers/oracle/src/airflow/providers/oracle/version_compat.py 
b/providers/oracle/src/airflow/providers/oracle/version_compat.py
new file mode 100644
index 00000000000..c2672880061
--- /dev/null
+++ b/providers/oracle/src/airflow/providers/oracle/version_compat.py
@@ -0,0 +1,43 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+from __future__ import annotations
+
+
+def get_base_airflow_version_tuple() -> tuple[int, int, int]:
+    from packaging.version import Version
+
+    from airflow import __version__
+
+    airflow_version = Version(__version__)
+    return airflow_version.major, airflow_version.minor, airflow_version.micro
+
+
+AIRFLOW_V_3_0_PLUS = get_base_airflow_version_tuple() >= (3, 0, 0)
+
+if AIRFLOW_V_3_0_PLUS:
+    from airflow.sdk import BaseOperator
+    from airflow.sdk.definitions.context import Context
+else:
+    from airflow.models import BaseOperator
+    from airflow.utils.context import Context
+
+__all__ = [
+    "AIRFLOW_V_3_0_PLUS",
+    "BaseOperator",
+    "Context",
+]
diff --git a/providers/oracle/tests/unit/oracle/operators/test_oracle.py 
b/providers/oracle/tests/unit/oracle/operators/test_oracle.py
index 6fde023ff66..37799cffcfd 100644
--- a/providers/oracle/tests/unit/oracle/operators/test_oracle.py
+++ b/providers/oracle/tests/unit/oracle/operators/test_oracle.py
@@ -26,8 +26,7 @@ import pytest
 from airflow.models import TaskInstance
 from airflow.providers.oracle.hooks.oracle import OracleHook
 from airflow.providers.oracle.operators.oracle import 
OracleStoredProcedureOperator
-
-from tests_common.test_utils.version_compat import AIRFLOW_V_3_0_PLUS
+from airflow.providers.oracle.version_compat import AIRFLOW_V_3_0_PLUS
 
 
 class TestOracleStoredProcedureOperator:

Reply via email to