From f790e655483c1588399bb85a29c17f2007ba89d0 Mon Sep 17 00:00:00 2001 From: Sidra-009 Date: Tue, 2 Jun 2026 18:49:30 +0500 Subject: [PATCH 1/6] docs: add Tencent COS S3-compatible configuration example --- mkdocs/docs/configuration.md | 34 ++++++++++++++++++++++++++-------- 1 file changed, 26 insertions(+), 8 deletions(-) diff --git a/mkdocs/docs/configuration.md b/mkdocs/docs/configuration.md index 3f82f78895..1bb8ae3bfd 100644 --- a/mkdocs/docs/configuration.md +++ b/mkdocs/docs/configuration.md @@ -193,14 +193,32 @@ For the FileIO there are several configuration options available: PyIceberg uses [S3FileSystem](https://arrow.apache.org/docs/python/generated/pyarrow.fs.S3FileSystem.html) class to connect to OSS bucket as the service is [compatible with S3 SDK](https://www.alibabacloud.com/help/en/oss/developer-reference/use-amazon-s3-sdks-to-access-oss) as long as the endpoint is addressed with virtual hosted style. -| Key | Example | Description | -| -------------------- | ------------------- | ------------------------------------------------ | -| s3.endpoint | | Configure an endpoint of the OSS service for the FileIO to access. Be sure to use S3 compatible endpoint as given in the example. | -| s3.access-key-id | admin | Configure the static access key id used to access the FileIO. | -| s3.secret-access-key | password | Configure the static secret access key used to access the FileIO. | -| s3.session-token | AQoDYXdzEJr... | Configure the static session token used to access the FileIO. | -| s3.force-virtual-addressing | True | Whether to use virtual addressing of buckets. This is set to `True` by default as OSS can only be accessed with virtual hosted style address. | -| s3.anonymous | True | Configure whether to use anonymous connection. If False (default), uses key/secret if configured or standard AWS configuration methods. | +--- + +### Tencent Cloud Object Storage (COS) + +Tencent Cloud Object Storage (COS) is S3-compatible and can be used with PyIceberg using the existing S3FileIO / PyArrowFileIO implementation. + +No additional dependencies are required. + +| Key | Example | Description | +| -------------------- | ------------------------------------------------- | ----------- | +| s3.endpoint | https://cos.ap-guangzhou.myqcloud.com | Tencent COS S3-compatible endpoint | +| s3.access-key-id | | Access key for COS | +| s3.secret-access-key | | Secret key for COS | +| s3.session-token | | Optional session token | + +### Example + +```python +catalog = load_catalog( + { + "s3.endpoint": "https://cos.ap-guangzhou.myqcloud.com", + "s3.access-key-id": "", + "s3.secret-access-key": "", + } +) +``` From 374e965f1486579ed3f29ac97eadcaa4854b824a Mon Sep 17 00:00:00 2001 From: Sidra-009 Date: Tue, 2 Jun 2026 20:00:25 +0500 Subject: [PATCH 2/6] docs: fix markdown lint issue in COS config --- mkdocs/docs/configuration.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mkdocs/docs/configuration.md b/mkdocs/docs/configuration.md index 1bb8ae3bfd..995de96627 100644 --- a/mkdocs/docs/configuration.md +++ b/mkdocs/docs/configuration.md @@ -201,12 +201,12 @@ Tencent Cloud Object Storage (COS) is S3-compatible and can be used with PyIcebe No additional dependencies are required. -| Key | Example | Description | -| -------------------- | ------------------------------------------------- | ----------- | -| s3.endpoint | https://cos.ap-guangzhou.myqcloud.com | Tencent COS S3-compatible endpoint | -| s3.access-key-id | | Access key for COS | -| s3.secret-access-key | | Secret key for COS | -| s3.session-token | | Optional session token | +| Key | Example | Description | +| -------------------- | ------------------------------ | ----------- | +| s3.endpoint | https://cos.ap-guangzhou.myqcloud.com | Tencent COS S3-compatible endpoint | +| s3.access-key-id | `` | Access key for COS | +| s3.secret-access-key | `` | Secret key for COS | +| s3.session-token | `` | Optional session token | ### Example From 9e219801de7dfc08db29e46c7d85d31cc8ab32d2 Mon Sep 17 00:00:00 2001 From: Sidra-009 Date: Tue, 2 Jun 2026 20:30:02 +0500 Subject: [PATCH 3/6] fix: markdown lint issues in COS docs --- mkdocs/docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs/docs/configuration.md b/mkdocs/docs/configuration.md index 995de96627..54c5cd9d86 100644 --- a/mkdocs/docs/configuration.md +++ b/mkdocs/docs/configuration.md @@ -203,7 +203,7 @@ No additional dependencies are required. | Key | Example | Description | | -------------------- | ------------------------------ | ----------- | -| s3.endpoint | https://cos.ap-guangzhou.myqcloud.com | Tencent COS S3-compatible endpoint | +| s3.endpoint | | Tencent COS S3-compatible endpoint | | s3.access-key-id | `` | Access key for COS | | s3.secret-access-key | `` | Secret key for COS | | s3.session-token | `` | Optional session token | From 6037c3c3f449ad3b6b3a95d860a0b84dbe7482c4 Mon Sep 17 00:00:00 2001 From: Sidra-009 Date: Wed, 3 Jun 2026 11:12:18 +0500 Subject: [PATCH 4/6] docs: fix OSS/COS configuration tables --- mkdocs/docs/configuration.md | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/mkdocs/docs/configuration.md b/mkdocs/docs/configuration.md index 54c5cd9d86..97aefbb2a7 100644 --- a/mkdocs/docs/configuration.md +++ b/mkdocs/docs/configuration.md @@ -189,6 +189,15 @@ For the FileIO there are several configuration options available: ### Alibaba Cloud Object Storage Service (OSS) +| Key | Example | Description | +| ---------------------------- | --------------------------------------------- | ----------- | +| s3.endpoint | | Configure an endpoint of the OSS service for the FileIO to access. Be sure to use S3 compatible endpoint as given in the example. | +| s3.access-key-id | admin | Configure the static access key id used to access the FileIO. | +| s3.secret-access-key | password | Configure the static secret access key used to access the FileIO. | +| s3.session-token | AQoDYXdzEJr... | Configure the static session token used to access the FileIO. | +| s3.force-virtual-addressing | True | Whether to use virtual addressing of buckets. This is set to `True` by default as OSS can only be accessed with virtual hosted style address. | +| s3.anonymous | True | Configure whether to use anonymous connection. If False (default), uses key/secret if configured or standard AWS configuration methods. | + PyIceberg uses [S3FileSystem](https://arrow.apache.org/docs/python/generated/pyarrow.fs.S3FileSystem.html) class to connect to OSS bucket as the service is [compatible with S3 SDK](https://www.alibabacloud.com/help/en/oss/developer-reference/use-amazon-s3-sdks-to-access-oss) as long as the endpoint is addressed with virtual hosted style. @@ -203,19 +212,19 @@ No additional dependencies are required. | Key | Example | Description | | -------------------- | ------------------------------ | ----------- | -| s3.endpoint | | Tencent COS S3-compatible endpoint | -| s3.access-key-id | `` | Access key for COS | -| s3.secret-access-key | `` | Secret key for COS | -| s3.session-token | `` | Optional session token | +| s3.endpoint | https://cos.ap-guangzhou.myqcloud.com | Tencent COS S3-compatible endpoint | +| s3.access-key-id | admin | Access key for COS | +| s3.secret-access-key | password | Secret key for COS | +| s3.session-token | AQoDYXdzEJr... | Optional session token | ### Example ```python catalog = load_catalog( - { + **{ "s3.endpoint": "https://cos.ap-guangzhou.myqcloud.com", - "s3.access-key-id": "", - "s3.secret-access-key": "", + "s3.access-key-id": "admin", + "s3.secret-access-key": "password", } ) ``` From f8a4fe8ae0a00e04f4e3347375d954278aabd398 Mon Sep 17 00:00:00 2001 From: Sidra-009 Date: Wed, 3 Jun 2026 11:18:33 +0500 Subject: [PATCH 5/6] fix: handle tzset on Windows safely --- tests/integration/test_writes/test_writes.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/integration/test_writes/test_writes.py b/tests/integration/test_writes/test_writes.py index 609c1863bc..1f72210255 100644 --- a/tests/integration/test_writes/test_writes.py +++ b/tests/integration/test_writes/test_writes.py @@ -870,7 +870,9 @@ def test_summaries_with_only_nulls( @pytest.mark.integration def test_duckdb_url_import(warehouse: Path, arrow_table_with_null: pa.Table) -> None: os.environ["TZ"] = "Etc/UTC" - time.tzset() + + if hasattr(time, "tzset"): + time.tzset() tz = pytz.timezone(os.environ["TZ"]) catalog = SqlCatalog("test_sql_catalog", uri="sqlite:///:memory:", warehouse=f"/{warehouse}") From 71ba9661923360c9ae4a3af78f4598174efd2c82 Mon Sep 17 00:00:00 2001 From: Sidra-009 Date: Wed, 3 Jun 2026 11:24:35 +0500 Subject: [PATCH 6/6] fix: apply markdownlint URL formatting --- mkdocs/docs/configuration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs/docs/configuration.md b/mkdocs/docs/configuration.md index 97aefbb2a7..60871ff46b 100644 --- a/mkdocs/docs/configuration.md +++ b/mkdocs/docs/configuration.md @@ -212,7 +212,7 @@ No additional dependencies are required. | Key | Example | Description | | -------------------- | ------------------------------ | ----------- | -| s3.endpoint | https://cos.ap-guangzhou.myqcloud.com | Tencent COS S3-compatible endpoint | +| s3.endpoint | | Tencent COS S3-compatible endpoint | | s3.access-key-id | admin | Access key for COS | | s3.secret-access-key | password | Secret key for COS | | s3.session-token | AQoDYXdzEJr... | Optional session token |