Skip to content

Commit e4ca325

Browse files
Migrate MYSQL provider to common.compat
1 parent 0636439 commit e4ca325

9 files changed

Lines changed: 32 additions & 40 deletions

File tree

providers/mysql/pyproject.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ requires-python = ">=3.10"
5858
# After you modify the dependencies, and rebuild your Breeze CI image with ``breeze ci-image build``
5959
dependencies = [
6060
"apache-airflow>=2.10.0",
61+
"apache-airflow-providers-common-compat>=1.8.0",
6162
"apache-airflow-providers-common-sql>=1.20.0",
6263
# The mysqlclient package creates friction when installing on MacOS as it needs pkg-config to
6364
# Install and compile, and it's really only used by MySQL provider, so we can skip it on MacOS
@@ -95,6 +96,7 @@ dev = [
9596
"apache-airflow-task-sdk",
9697
"apache-airflow-devel-common",
9798
"apache-airflow-providers-amazon",
99+
"apache-airflow-providers-common-compat",
98100
"apache-airflow-providers-common-sql",
99101
"apache-airflow-providers-openlineage",
100102
"apache-airflow-providers-presto",

providers/mysql/src/airflow/providers/mysql/hooks/mysql.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,7 @@
3030
logger = logging.getLogger(__name__)
3131

3232
if TYPE_CHECKING:
33-
from airflow.providers.mysql.version_compat import AIRFLOW_V_3_0_PLUS
34-
35-
if AIRFLOW_V_3_0_PLUS:
36-
from airflow.sdk import Connection
37-
else:
38-
from airflow.models.connection import Connection # type: ignore[assignment]
33+
from airflow.providers.common.compat.sdk import Connection
3934

4035
try:
4136
from mysql.connector.abstracts import MySQLConnectionAbstract

providers/mysql/src/airflow/providers/mysql/transfers/presto_to_mysql.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,12 @@
2020
from collections.abc import Sequence
2121
from typing import TYPE_CHECKING
2222

23+
from airflow.providers.common.compat.sdk import BaseOperator
2324
from airflow.providers.mysql.hooks.mysql import MySqlHook
24-
from airflow.providers.mysql.version_compat import BaseOperator
2525
from airflow.providers.presto.hooks.presto import PrestoHook
2626

2727
if TYPE_CHECKING:
28-
try:
29-
from airflow.sdk.definitions.context import Context
30-
except ImportError:
31-
# TODO: Remove once provider drops support for Airflow 2
32-
from airflow.utils.context import Context
28+
from airflow.providers.common.compat.sdk import Context
3329

3430

3531
class PrestoToMySqlOperator(BaseOperator):

providers/mysql/src/airflow/providers/mysql/transfers/s3_to_mysql.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,11 @@
2121
from typing import TYPE_CHECKING
2222

2323
from airflow.providers.amazon.aws.hooks.s3 import S3Hook
24+
from airflow.providers.common.compat.sdk import BaseOperator
2425
from airflow.providers.mysql.hooks.mysql import MySqlHook
25-
from airflow.providers.mysql.version_compat import BaseOperator
2626

2727
if TYPE_CHECKING:
28-
try:
29-
from airflow.sdk.definitions.context import Context
30-
except ImportError:
31-
# TODO: Remove once provider drops support for Airflow 2
32-
from airflow.utils.context import Context
28+
from airflow.providers.common.compat.sdk import Context
3329

3430

3531
class S3ToMySqlOperator(BaseOperator):

providers/mysql/src/airflow/providers/mysql/transfers/trino_to_mysql.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,12 @@
2020
from collections.abc import Sequence
2121
from typing import TYPE_CHECKING
2222

23+
from airflow.providers.common.compat.sdk import BaseOperator
2324
from airflow.providers.mysql.hooks.mysql import MySqlHook
24-
from airflow.providers.mysql.version_compat import BaseOperator
2525
from airflow.providers.trino.hooks.trino import TrinoHook
2626

2727
if TYPE_CHECKING:
28-
try:
29-
from airflow.sdk.definitions.context import Context
30-
except ImportError:
31-
# TODO: Remove once provider drops support for Airflow 2
32-
from airflow.utils.context import Context
28+
from airflow.providers.common.compat.sdk import Context
3329

3430

3531
class TrinoToMySqlOperator(BaseOperator):

providers/mysql/src/airflow/providers/mysql/transfers/vertica_to_mysql.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,12 @@
3333
"installed in case you see compilation error during installation."
3434
)
3535

36+
from airflow.providers.common.compat.sdk import BaseOperator
3637
from airflow.providers.mysql.hooks.mysql import MySqlHook
37-
from airflow.providers.mysql.version_compat import BaseOperator
3838
from airflow.providers.vertica.hooks.vertica import VerticaHook
3939

4040
if TYPE_CHECKING:
41-
try:
42-
from airflow.sdk.definitions.context import Context
43-
except ImportError:
44-
# TODO: Remove once provider drops support for Airflow 2
45-
from airflow.utils.context import Context
41+
from airflow.providers.common.compat.sdk import Context
4642

4743

4844
class VerticaToMySqlOperator(BaseOperator):

providers/mysql/src/airflow/providers/mysql/version_compat.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,6 @@ def get_base_airflow_version_tuple() -> tuple[int, int, int]:
2929

3030
AIRFLOW_V_3_0_PLUS = get_base_airflow_version_tuple() >= (3, 0, 0)
3131

32-
if AIRFLOW_V_3_0_PLUS:
33-
from airflow.sdk import BaseOperator
34-
else:
35-
from airflow.models import BaseOperator
36-
3732
__all__ = [
3833
"AIRFLOW_V_3_0_PLUS",
39-
"BaseOperator",
4034
]

providers/mysql/tests/unit/mysql/hooks/test_mysql.py

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
import pytest
2626
import sqlalchemy
2727

28-
from airflow.models import Connection
2928
from airflow.models.dag import DAG
29+
from airflow.providers.common.compat.sdk import Connection
3030

3131
try:
3232
import MySQLdb.cursors
@@ -52,6 +52,7 @@
5252
class TestMySqlHookConn:
5353
def setup_method(self):
5454
self.connection = Connection(
55+
conn_id="test_conn_id",
5556
conn_type="mysql",
5657
login="login",
5758
password="password",
@@ -194,7 +195,14 @@ def test_get_uri(self, mock_connect, connection_params, expected_uri):
194195

195196
@mock.patch("MySQLdb.connect")
196197
def test_get_conn_from_connection(self, mock_connect):
197-
conn = Connection(login="login-conn", password="password-conn", host="host", schema="schema")
198+
conn = Connection(
199+
conn_id="test_conn_id",
200+
conn_type="mysql",
201+
login="login-conn",
202+
password="password-conn",
203+
host="host",
204+
schema="schema",
205+
)
198206
hook = MySqlHook(connection=conn)
199207
hook.get_conn()
200208
mock_connect.assert_called_once_with(
@@ -203,7 +211,14 @@ def test_get_conn_from_connection(self, mock_connect):
203211

204212
@mock.patch("MySQLdb.connect")
205213
def test_get_conn_from_connection_with_schema(self, mock_connect):
206-
conn = Connection(login="login-conn", password="password-conn", host="host", schema="schema")
214+
conn = Connection(
215+
conn_id="test_conn_id",
216+
conn_type="mysql",
217+
login="login-conn",
218+
password="password-conn",
219+
host="host",
220+
schema="schema",
221+
)
207222
hook = MySqlHook(connection=conn, schema="schema-override")
208223
hook.get_conn()
209224
mock_connect.assert_called_once_with(

providers/mysql/tests/unit/mysql/hooks/test_mysql_connector_python.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,15 @@
2020
import json
2121
from unittest import mock
2222

23-
from airflow.models import Connection
23+
from airflow.providers.common.compat.sdk import Connection
2424
from airflow.providers.mysql.hooks.mysql import MySqlHook
2525

2626

2727
class TestMySqlHookConnMySqlConnectorPython:
2828
def setup_method(self):
2929
self.connection = Connection(
30+
conn_id="test_conn_id",
31+
conn_type="mysql",
3032
login="login",
3133
password="password",
3234
host="host",

0 commit comments

Comments
 (0)