This is an automated email from the ASF dual-hosted git repository.
eladkal 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 15178b6953 Use stdlib `importlib.metadata` for retrieve `botocore`
package version (#40137)
15178b6953 is described below
commit 15178b6953001ea7ab9e013cb5e7ede72ec6c36f
Author: Andrey Anshin <[email protected]>
AuthorDate: Sat Jun 8 20:11:03 2024 +0400
Use stdlib `importlib.metadata` for retrieve `botocore` package version
(#40137)
* Use stdlib `importlib.metadata` for retrieve `botocore` package version
* Fixup typo
---
airflow/providers/amazon/aws/utils/__init__.py | 7 +------
tests/providers/amazon/aws/utils/test_utils.py | 13 +++++++++++++
tests/providers/amazon/conftest.py | 10 +++-------
3 files changed, 17 insertions(+), 13 deletions(-)
diff --git a/airflow/providers/amazon/aws/utils/__init__.py
b/airflow/providers/amazon/aws/utils/__init__.py
index e04d28869e..74da7001b8 100644
--- a/airflow/providers/amazon/aws/utils/__init__.py
+++ b/airflow/providers/amazon/aws/utils/__init__.py
@@ -18,16 +18,11 @@ from __future__ import annotations
import logging
import re
-import sys
from datetime import datetime, timezone
from enum import Enum
+from importlib import metadata
from typing import Any
-if sys.version_info >= (3, 10):
- from importlib import metadata
-else:
- import importlib_metadata as metadata # type: ignore[no-redef]
-
from airflow.exceptions import AirflowException
from airflow.utils.helpers import prune_dict
from airflow.version import version
diff --git a/tests/providers/amazon/aws/utils/test_utils.py
b/tests/providers/amazon/aws/utils/test_utils.py
index 7f951d06dd..b9a04a8f54 100644
--- a/tests/providers/amazon/aws/utils/test_utils.py
+++ b/tests/providers/amazon/aws/utils/test_utils.py
@@ -18,12 +18,15 @@ from __future__ import annotations
import datetime
+import pytest
+
from airflow.providers.amazon.aws.utils import (
_StringCompareEnum,
datetime_to_epoch,
datetime_to_epoch_ms,
datetime_to_epoch_us,
get_airflow_version,
+ get_botocore_version,
)
DT = datetime.datetime(2000, 1, 1, tzinfo=datetime.timezone.utc)
@@ -53,3 +56,13 @@ def test_get_airflow_version():
def test_str_enum():
assert EnumTest.FOO == "FOO"
assert EnumTest.FOO.value == "FOO"
+
+
+def test_botocore_version():
+ pytest.importorskip("botocore", reason="`botocore` not installed")
+
+ botocore_version = get_botocore_version()
+ assert len(botocore_version) == 3
+ assert isinstance(botocore_version[0], int), "botocore major version
expected to be an integer"
+ assert isinstance(botocore_version[1], int), "botocore minor version
expected to be an integer"
+ assert isinstance(botocore_version[2], int), "botocore patch version
expected to be an integer"
diff --git a/tests/providers/amazon/conftest.py
b/tests/providers/amazon/conftest.py
index ca31f1b9ff..0384e05111 100644
--- a/tests/providers/amazon/conftest.py
+++ b/tests/providers/amazon/conftest.py
@@ -19,11 +19,7 @@ from __future__ import annotations
import os
import warnings
-
-try:
- import importlib_metadata
-except ImportError:
- from importlib import metadata as importlib_metadata # type:
ignore[no-redef]
+from importlib import metadata
import pytest
@@ -31,8 +27,8 @@ import pytest
@pytest.fixture(scope="session")
def botocore_version():
try:
- version = importlib_metadata.version("botocore")
- except importlib_metadata.PackageNotFoundError:
+ version = metadata.version("botocore")
+ except ModuleNotFoundError:
warnings.warn("'botocore' package not found'", UserWarning,
stacklevel=2)
return None