diff --git a/mkdocs/docs/configuration.md b/mkdocs/docs/configuration.md index 3f82f78895..60871ff46b 100644 --- a/mkdocs/docs/configuration.md +++ b/mkdocs/docs/configuration.md @@ -189,18 +189,45 @@ 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. -| 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 | | 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": "admin", + "s3.secret-access-key": "password", + } +) +``` 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}")