From 2e4cdc3d1b16ecd3cdad49cb404fe066ed67f017 Mon Sep 17 00:00:00 2001 From: Minh Vu Date: Sat, 13 Jun 2026 16:05:06 +0200 Subject: [PATCH] Fix fsspec S3 virtual addressing boolean parsing --- pyiceberg/io/fsspec.py | 2 +- tests/io/test_fsspec.py | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/pyiceberg/io/fsspec.py b/pyiceberg/io/fsspec.py index 7749268ff5..ec26255f5a 100644 --- a/pyiceberg/io/fsspec.py +++ b/pyiceberg/io/fsspec.py @@ -201,7 +201,7 @@ def _s3(properties: Properties) -> AbstractFileSystem: if request_timeout := properties.get(S3_REQUEST_TIMEOUT): config_kwargs["read_timeout"] = float(request_timeout) - if _force_virtual_addressing := properties.get(S3_FORCE_VIRTUAL_ADDRESSING): + if property_as_bool(properties, S3_FORCE_VIRTUAL_ADDRESSING, False): config_kwargs["s3"] = {"addressing_style": "virtual"} if s3_anonymous := properties.get(S3_ANONYMOUS): diff --git a/tests/io/test_fsspec.py b/tests/io/test_fsspec.py index 8739a5964d..6c8ed1646e 100644 --- a/tests/io/test_fsspec.py +++ b/tests/io/test_fsspec.py @@ -320,9 +320,16 @@ def test_fsspec_s3_session_properties() -> None: ) -def test_fsspec_s3_session_properties_force_virtual_addressing() -> None: +@pytest.mark.parametrize( + ("force_virtual_addressing", "config_kwargs"), + [ + ("true", {"s3": {"addressing_style": "virtual"}}), + ("false", {}), + ], +) +def test_fsspec_s3_session_properties_force_virtual_addressing(force_virtual_addressing: str, config_kwargs: Properties) -> None: session_properties: Properties = { - "s3.force-virtual-addressing": True, + "s3.force-virtual-addressing": force_virtual_addressing, "s3.endpoint": "http://localhost:9000", "s3.access-key-id": "admin", "s3.secret-access-key": "password", @@ -346,7 +353,7 @@ def test_fsspec_s3_session_properties_force_virtual_addressing() -> None: "region_name": "us-east-1", "aws_session_token": "s3.session-token", }, - config_kwargs={"s3": {"addressing_style": "virtual"}}, + config_kwargs=config_kwargs, )