Skip to content

Commit

Permalink
Use stdlib importlib.metadata for retrieve botocore package versi…
Browse files Browse the repository at this point in the history
…on (#40137)

* Use stdlib `importlib.metadata` for retrieve `botocore` package version

* Fixup typo
  • Loading branch information
Taragolis authored Jun 8, 2024
1 parent 7a254ff commit 15178b6
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 13 deletions.
7 changes: 1 addition & 6 deletions airflow/providers/amazon/aws/utils/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,11 @@

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
Expand Down
13 changes: 13 additions & 0 deletions tests/providers/amazon/aws/utils/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,15 @@

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)
Expand Down Expand Up @@ -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"
10 changes: 3 additions & 7 deletions tests/providers/amazon/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,16 @@

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


@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

Expand Down

0 comments on commit 15178b6

Please sign in to comment.