Skip to content

Commit 54ce927

Browse files
committed
Fix S3 boto options review comments
1 parent 8dcc5ad commit 54ce927

2 files changed

Lines changed: 46 additions & 3 deletions

File tree

great_expectations/compatibility/aws.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,14 @@ def get_s3_boto3_options(boto3_options: Dict[str, Any]) -> Dict[str, Any]:
5454
suffix = f"great-expectations/{_get_distribution_version()}"
5555
options = dict(boto3_options)
5656

57-
if not Config:
57+
if isinstance(Config, NotImported):
5858
return options
5959

6060
config = options.get("config")
61-
existing = getattr(config, "user_agent_extra", None) if config else None
61+
existing = getattr(config, "user_agent_extra", None) if config is not None else None
6262
user_agent_extra = f"{existing} {suffix}" if existing else suffix
6363

64-
if config:
64+
if config is not None:
6565
options["config"] = config.merge(Config(user_agent_extra=user_agent_extra))
6666
else:
6767
options["config"] = Config(user_agent_extra=user_agent_extra)

tests/compatibility/test_aws.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
from __future__ import annotations
2+
3+
from typing import Any, Dict
4+
5+
import pytest
6+
7+
from great_expectations.compatibility import aws
8+
9+
botocore_client = pytest.importorskip("botocore.client")
10+
11+
pytestmark = pytest.mark.unit
12+
13+
14+
@pytest.fixture
15+
def distribution_version(monkeypatch: pytest.MonkeyPatch) -> str:
16+
version = "1.2.3"
17+
monkeypatch.setattr(aws, "_get_distribution_version", lambda: version)
18+
return version
19+
20+
21+
def test_get_s3_boto3_options_adds_user_agent_suffix(distribution_version: str) -> None:
22+
options = aws.get_s3_boto3_options({})
23+
24+
assert options["config"].user_agent_extra == f"great-expectations/{distribution_version}"
25+
26+
27+
def test_get_s3_boto3_options_appends_user_agent_and_preserves_options(
28+
distribution_version: str,
29+
) -> None:
30+
config = botocore_client.Config(user_agent_extra="my-app/1.0")
31+
boto3_options: Dict[str, Any] = {
32+
"config": config,
33+
"endpoint_url": "https://s3.example.com",
34+
}
35+
36+
options = aws.get_s3_boto3_options(boto3_options)
37+
38+
assert (
39+
options["config"].user_agent_extra
40+
== f"my-app/1.0 great-expectations/{distribution_version}"
41+
)
42+
assert options["endpoint_url"] == "https://s3.example.com"
43+
assert boto3_options["config"] is config

0 commit comments

Comments
 (0)