From 548e2c3d6e7c0356d686f4c2e87624b4f2b2dbe1 Mon Sep 17 00:00:00 2001 From: Yingjian Wu Date: Tue, 5 May 2026 21:35:30 -0700 Subject: [PATCH] update config during table refresh --- pyiceberg/table/__init__.py | 1 + tests/catalog/test_rest.py | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/pyiceberg/table/__init__.py b/pyiceberg/table/__init__.py index 7f1524642b..b8d87143c9 100644 --- a/pyiceberg/table/__init__.py +++ b/pyiceberg/table/__init__.py @@ -1103,6 +1103,7 @@ def refresh(self) -> Table: self.metadata = fresh.metadata self.io = fresh.io self.metadata_location = fresh.metadata_location + self.config = fresh.config return self def name(self) -> Identifier: diff --git a/tests/catalog/test_rest.py b/tests/catalog/test_rest.py index 7977892635..e61274baf1 100644 --- a/tests/catalog/test_rest.py +++ b/tests/catalog/test_rest.py @@ -2535,6 +2535,39 @@ def test_table_uuid_check_on_commit(rest_mock: Mocker, example_table_metadata_v2 assert f"refreshed={different_uuid}" in str(exc_info.value) +def test_table_refresh_updates_config(rest_mock: Mocker, example_table_metadata_v2: dict[str, Any]) -> None: + metadata_location = "s3://warehouse/database/table/metadata.json" + + rest_mock.get( + f"{TEST_URI}v1/namespaces/namespace/tables/table_name", + json={ + "metadata-location": metadata_location, + "metadata": example_table_metadata_v2, + "config": {"original-key": "original-value"}, + }, + status_code=200, + request_headers=TEST_HEADERS, + ) + + catalog = RestCatalog("rest", uri=TEST_URI, token=TEST_TOKEN) + table = catalog.load_table(("namespace", "table_name")) + assert table.config == {"original-key": "original-value"} + + rest_mock.get( + f"{TEST_URI}v1/namespaces/namespace/tables/table_name", + json={ + "metadata-location": metadata_location, + "metadata": example_table_metadata_v2, + "config": {"updated-key": "updated-value"}, + }, + status_code=200, + request_headers=TEST_HEADERS, + ) + + table.refresh() + assert table.config == {"updated-key": "updated-value"} + + def test_table_uuid_check_on_refresh(rest_mock: Mocker, example_table_metadata_v2: dict[str, Any]) -> None: original_uuid = "9c12d441-03fe-4693-9a96-a0705ddf69c1" different_uuid = "550e8400-e29b-41d4-a716-446655440000"