Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
67 commits
Select commit Hold shift + click to select a range
4234879
Build: Migrate markdown-link-check GH action (#2334)
manuzhang Aug 15, 2025
bd5b8ba
New OAuth2AuthManager (#2244)
sungwy Aug 15, 2025
6c1a1b2
Handle stat collection for empty decimal columns (#2306)
berg2043 Aug 15, 2025
a7f6c08
add support to configure anonymous in s3 clients (#2323)
gmweaver Aug 15, 2025
8013545
docs: clarify Parameters for the add_files API (#2249)
Xiezhibin Aug 16, 2025
2cba3b7
fsspec: Support token in ADLS (#2331)
kevinjqliu Aug 18, 2025
cc642b7
bump adlfs minimum to 2024.7.0 (#2330)
kevinjqliu Aug 18, 2025
f8ccd82
Hiv: Fix renaming to a table that already exists (#2336)
gabeiglio Aug 18, 2025
8b43eb8
Add `between` operator (#2335)
jtuglu1 Aug 18, 2025
cf987c6
Fix: use new snapshot id in deleted manifest entry unless is existing…
lliangyu-lin Aug 19, 2025
5a920cd
Arrow: Remove check for supported Arrow transforms (#2340)
Fokko Aug 19, 2025
36d3041
Build: Bump coverage from 7.10.3 to 7.10.4 (#2347)
dependabot[bot] Aug 19, 2025
5100307
Build: Bump mkdocs-material from 9.6.16 to 9.6.17 (#2348)
dependabot[bot] Aug 19, 2025
580f2f4
Build: Bump requests from 2.32.4 to 2.32.5 (#2350)
dependabot[bot] Aug 19, 2025
c72e286
Build: Bump mypy-boto3-dynamodb from 1.40.0 to 1.40.10 (#2354)
dependabot[bot] Aug 19, 2025
5d8c59c
Build: Bump zstandard from 0.23.0 to 0.24.0 (#2353)
dependabot[bot] Aug 19, 2025
d430d11
Build: Bump griffe from 1.11.1 to 1.12.1 (#2349)
dependabot[bot] Aug 19, 2025
1f27c9c
Build: Bump daft from 0.5.18 to 0.5.19 (#2352)
dependabot[bot] Aug 19, 2025
9886433
Build: Bump cython from 3.1.2 to 3.1.3 (#2351)
dependabot[bot] Aug 19, 2025
75006f2
Build: Bump polars from 1.32.2 to 1.32.3 (#2355)
dependabot[bot] Aug 19, 2025
425c3de
Build: Bump mypy-boto3-glue from 1.40.5 to 1.40.11 (#2356)
dependabot[bot] Aug 19, 2025
610a154
Add the rest of the _convert_schema_if_needed calls (#2300)
rambleraptor Aug 19, 2025
5acca48
Remove deprecated code for 0.10 (#2345)
kevinjqliu Aug 19, 2025
bdf19ab
fix: allow reading pyarrow timestamp as iceberg timestamptz (#2333)
kevinjqliu Aug 19, 2025
f805488
REST: Remove spec-version version HTTP header (#2358)
Fokko Aug 19, 2025
fa9094b
Allow snapshot-id in assert-ref-snapshot-id requirement to serialize …
ox Aug 19, 2025
722b8bd
Bump `pre-commit-hooks` in `.pre-commit-config.yaml` file (#2360)
ayushjariyal Aug 20, 2025
b647f72
Bump `ruff-pre-commit` in `.pre-commit-config.yaml` file (#2362)
ayushjariyal Aug 20, 2025
183333d
Bump `mirrors-mypy` in `.pre-commit-config.yaml` file (#2364)
ayushjariyal Aug 20, 2025
5a781df
Validation partition against schema (#2305)
rutb327 Aug 20, 2025
950fc71
Document null field handling for PyArrow (#2365)
kris-gaudel Aug 20, 2025
8db086d
perf: optimize `inspect.partitions` (#2359)
emilie-wang Aug 20, 2025
5d6e1e2
Bump `markdownlint-cli` in `.pre-commit-config.yaml` file (#2366)
ayushjariyal Aug 21, 2025
19efd2d
Bump `flynt` in `.pre-commit-config.yaml` file (#2370)
ayushjariyal Aug 22, 2025
a33cd38
Bump `codespell` in `.pre-commit-config.yaml` file (#2377)
ayushjariyal Aug 23, 2025
07f3453
infra: remove precommit ci (#2379)
kevinjqliu Aug 25, 2025
4f02298
Add serializer for AssertRefSnapshotId allowing null json value (#2375)
ox Aug 25, 2025
835dbe1
Add BigQuery Metastore Catalog (#2068)
rambleraptor Aug 26, 2025
91157dc
Build: Bump pypa/cibuildwheel from 3.1.3 to 3.1.4 (#2381)
dependabot[bot] Aug 26, 2025
c532075
Build: Bump mkdocstrings-python from 1.16.12 to 1.17.0 (#2380)
dependabot[bot] Aug 26, 2025
61b7a7b
Build: Bump moto from 5.1.10 to 5.1.11 (#2386)
dependabot[bot] Aug 26, 2025
fec38e7
Build: Bump typing-extensions from 4.14.1 to 4.15.0 (#2388)
dependabot[bot] Aug 26, 2025
d0d02a8
Build: Bump mypy-boto3-glue from 1.40.11 to 1.40.15 (#2387)
dependabot[bot] Aug 26, 2025
b94108a
Build: Bump mkdocs-material from 9.6.17 to 9.6.18 (#2382)
dependabot[bot] Aug 26, 2025
c48d3ee
Build: Bump pandas from 2.3.1 to 2.3.2 (#2383)
dependabot[bot] Aug 26, 2025
76455ac
Build: Bump coverage from 7.10.4 to 7.10.5 (#2389)
dependabot[bot] Aug 26, 2025
9ef5a47
Build: Bump mypy-boto3-dynamodb from 1.40.10 to 1.40.14 (#2385)
dependabot[bot] Aug 26, 2025
06b9467
Build: Bump daft from 0.5.19 to 0.5.21 (#2384)
dependabot[bot] Aug 26, 2025
370e770
Fix heading levels of subsections of Code standards (#2393)
manuzhang Aug 27, 2025
3c7c279
docs: improve release docs (#2374)
kevinjqliu Aug 28, 2025
3eecdad
Add close option to Catalog (#2390)
kris-gaudel Aug 28, 2025
3457bc2
use PyArrowFileIO as default for abfs and wasb schemes (#2395)
alessandro-nori Aug 28, 2025
7ad7056
disable bodo test (#2401)
kevinjqliu Aug 28, 2025
159b2f3
use anon argument when configuring s3fs.S3FileSystem (#2392)
gmweaver Aug 28, 2025
52ff684
V3: Fix invalid downcasting for nanos (#2397)
Fokko Aug 28, 2025
c3c314d
Fix rest test with ssl_ca_bundle due to conflicts with OS environment…
manuzhang Aug 28, 2025
e8c3a43
fix file system with env variables to set scheme and net loc if not s…
Aug 6, 2025
ae6cc0d
add test
Aug 6, 2025
cd939c7
fix linting
Aug 6, 2025
731075a
use catalog env configs and update to use default scheme and netloc f…
Aug 25, 2025
9bfb7e8
fix linter
Aug 25, 2025
1a75ab6
address comments
Aug 26, 2025
9387d6e
pr comments
Aug 27, 2025
80176e8
pr comments update comment
Aug 27, 2025
13001c8
simplify code, return to previous structure
Aug 28, 2025
35f4cdc
move variable usage closer to usage
Aug 28, 2025
7d5f816
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Aug 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .asf.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
# https://cwiki.apache.org/confluence/display/INFRA/Git+-+.asf.yaml+features

github:
description: "Apache PyIceberg"
description: "PyIceberg"
homepage: https://py.iceberg.apache.org/
labels:
- iceberg
Expand Down
4 changes: 2 additions & 2 deletions .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ Thanks for opening a pull request!

# Rationale for this change

# Are these changes tested?
## Are these changes tested?

# Are there any user-facing changes?
## Are there any user-facing changes?

<!-- In the case of user-facing changes, please add the changelog label. -->
2 changes: 1 addition & 1 deletion .github/workflows/check-md-link.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,4 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: gaurav-nelson/github-action-markdown-link-check@v1
- uses: tcort/github-action-markdown-link-check@v1
2 changes: 1 addition & 1 deletion .github/workflows/pypi-build-artifacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ jobs:
if: startsWith(matrix.os, 'ubuntu')

- name: Build wheels
uses: pypa/[email protected].3
uses: pypa/[email protected].4
with:
output-dir: wheelhouse
config-file: "pyproject.toml"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/svn-build-artifacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ jobs:
if: startsWith(matrix.os, 'ubuntu')

- name: Build wheels
uses: pypa/[email protected].3
uses: pypa/[email protected].4
with:
output-dir: wheelhouse
config-file: "pyproject.toml"
Expand Down
23 changes: 6 additions & 17 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,27 +19,27 @@ exclude: ^vendor/

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
rev: v6.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: debug-statements
- id: check-yaml
- id: check-ast
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.11.13
rev: v0.12.9
hooks:
- id: ruff
args: [ --fix, --exit-non-zero-on-fix ]
- id: ruff-format
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.16.0
rev: v1.17.1
hooks:
- id: mypy
args:
[--install-types, --non-interactive, --config=pyproject.toml]
- repo: https://github.com/igorshubovych/markdownlint-cli
rev: v0.43.0
rev: v0.45.0
hooks:
- id: markdownlint
args: ["--fix"]
Expand All @@ -54,25 +54,14 @@ repos:
additional_dependencies:
- tomli==2.0.1
- repo: https://github.com/ikamensh/flynt
rev: 1.0.1
rev: 1.0.6
hooks:
- id: flynt
args:
# --line-length is set to a high value to deal with very long lines
- --line-length
- '99999'
- repo: https://github.com/codespell-project/codespell
rev: v2.3.0
rev: v2.4.1
hooks:
- id: codespell
ci:
autofix_commit_msg: |
[pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci
autofix_prs: true
autoupdate_branch: ''
autoupdate_commit_msg: '[pre-commit.ci] pre-commit autoupdate'
autoupdate_schedule: weekly
skip: []
submodules: false
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ PyIceberg is a Python library for programmatic access to Iceberg table metadata

The documentation is available at [https://py.iceberg.apache.org/](https://py.iceberg.apache.org/).

# Get in Touch
## Get in Touch

- [Iceberg community](https://iceberg.apache.org/community/)
61 changes: 53 additions & 8 deletions mkdocs/docs/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -1004,6 +1004,34 @@ To show only data files or delete files in the current snapshot, use `table.insp

Expert Iceberg users may choose to commit existing parquet files to the Iceberg table as data files, without rewriting them.

<!-- prettier-ignore-start -->

!!! note "Name Mapping"
Because `add_files` uses existing files without writing new parquet files that are aware of the Iceberg's schema, it requires the Iceberg's table to have a [Name Mapping](https://iceberg.apache.org/spec/?h=name+mapping#name-mapping-serialization) (The Name mapping maps the field names within the parquet files to the Iceberg field IDs). Hence, `add_files` requires that there are no field IDs in the parquet file's metadata, and creates a new Name Mapping based on the table's current schema if the table doesn't already have one.

!!! note "Partitions"
`add_files` only requires the client to read the existing parquet files' metadata footer to infer the partition value of each file. This implementation also supports adding files to Iceberg tables with partition transforms like `MonthTransform`, and `TruncateTransform` which preserve the order of the values after the transformation (Any Transform that has the `preserves_order` property set to True is supported). Please note that if the column statistics of the `PartitionField`'s source column are not present in the parquet metadata, the partition value is inferred as `None`.

!!! warning "Maintenance Operations"
Because `add_files` commits the existing parquet files to the Iceberg Table as any other data file, destructive maintenance operations like expiring snapshots will remove them.

!!! warning "Check Duplicate Files"
The `check_duplicate_files` parameter determines whether the method validates that the specified `file_paths` do not already exist in the Iceberg table. When set to True (the default), the method performs a validation against the table’s current data files to prevent accidental duplication, helping to maintain data consistency by ensuring the same file is not added multiple times. While this check is important for data integrity, it can introduce performance overhead for tables with a large number of files. Setting check_duplicate_files=False can improve performance but increases the risk of duplicate files, which may lead to data inconsistencies or table corruption. It is strongly recommended to keep this parameter enabled unless duplicate file handling is strictly enforced elsewhere.

<!-- prettier-ignore-end -->

### Usage

| Parameter | Required? | Type | Description |
| ------------------------- | --------- | -------------- | ----------------------------------------------------------------------- |
| `file_paths` | ✔️ | List[str] | The list of full file paths to be added as data files to the table |
| `snapshot_properties` | | Dict[str, str] | Properties to set for the new snapshot. Defaults to an empty dictionary |
| `check_duplicate_files` | | bool | Whether to check for duplicate files. Defaults to `True` |

### Example

Add files to Iceberg table:

```python
# Given that these parquet files have schema consistent with the Iceberg table

Expand All @@ -1019,18 +1047,35 @@ tbl.add_files(file_paths=file_paths)
# A new snapshot is committed to the table with manifests pointing to the existing parquet files
```

<!-- prettier-ignore-start -->
Add files to Iceberg table with custom snapshot properties:

!!! note "Name Mapping"
Because `add_files` uses existing files without writing new parquet files that are aware of the Iceberg's schema, it requires the Iceberg's table to have a [Name Mapping](https://iceberg.apache.org/spec/?h=name+mapping#name-mapping-serialization) (The Name mapping maps the field names within the parquet files to the Iceberg field IDs). Hence, `add_files` requires that there are no field IDs in the parquet file's metadata, and creates a new Name Mapping based on the table's current schema if the table doesn't already have one.
```python
# Assume an existing Iceberg table object `tbl`

!!! note "Partitions"
`add_files` only requires the client to read the existing parquet files' metadata footer to infer the partition value of each file. This implementation also supports adding files to Iceberg tables with partition transforms like `MonthTransform`, and `TruncateTransform` which preserve the order of the values after the transformation (Any Transform that has the `preserves_order` property set to True is supported). Please note that if the column statistics of the `PartitionField`'s source column are not present in the parquet metadata, the partition value is inferred as `None`.
file_paths = [
"s3a://warehouse/default/existing-1.parquet",
"s3a://warehouse/default/existing-2.parquet",
]

!!! warning "Maintenance Operations"
Because `add_files` commits the existing parquet files to the Iceberg Table as any other data file, destructive maintenance operations like expiring snapshots will remove them.
# Custom snapshot properties
snapshot_properties = {"abc": "def"}

<!-- prettier-ignore-end -->
# Enable duplicate file checking
check_duplicate_files = True

# Add the Parquet files to the Iceberg table without rewriting
tbl.add_files(
file_paths=file_paths,
snapshot_properties=snapshot_properties,
check_duplicate_files=check_duplicate_files
)

# NameMapping must have been set to enable reads
assert tbl.name_mapping() is not None

# Verify that the snapshot property was set correctly
assert tbl.metadata.snapshots[-1].summary["abc"] == "def"
```

## Schema evolution

Expand Down
23 changes: 21 additions & 2 deletions mkdocs/docs/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ For the FileIO there are several configuration options available:
| s3.request-timeout | 60.0 | Configure socket read timeouts on Windows and macOS, in seconds. |
| s3.force-virtual-addressing | False | Whether to use virtual addressing of buckets. If true, then virtual addressing is always enabled. If false, then virtual addressing is only enabled if endpoint_override is empty. This can be used for non-AWS backends that only support virtual hosted-style access. |
| s3.retry-strategy-impl | None | Ability to set a custom S3 retry strategy. A full path to a class needs to be given that extends the [S3RetryStrategy](https://github.com/apache/arrow/blob/639201bfa412db26ce45e73851432018af6c945e/python/pyarrow/_s3fs.pyx#L110) base class. |
| s3.anonymous | True | Configure whether to use anonymous connection. If False (default), uses key/secret if configured or boto's credential resolver. |

<!-- markdown-link-check-enable-->

Expand Down Expand Up @@ -161,6 +162,7 @@ For the FileIO there are several configuration options available:
| adls.dfs-storage-authority | .dfs.core.windows.net | The hostname[:port] of the Data Lake Gen 2 Service. Defaults to `.dfs.core.windows.net`. Useful for connecting to a local emulator, like [azurite](https://github.com/azure/azurite). See [AzureFileSystem](https://arrow.apache.org/docs/python/filesystems.html#azure-storage-file-system) for reference |
| adls.blob-storage-scheme | https | Either `http` or `https`. Defaults to `https`. Useful for connecting to a local emulator, like [azurite](https://github.com/azure/azurite). See [AzureFileSystem](https://arrow.apache.org/docs/python/filesystems.html#azure-storage-file-system) for reference |
| adls.dfs-storage-scheme | https | Either `http` or `https`. Defaults to `https`. Useful for connecting to a local emulator, like [azurite](https://github.com/azure/azurite). See [AzureFileSystem](https://arrow.apache.org/docs/python/filesystems.html#azure-storage-file-system) for reference |
| adls.token | eyJ0eXAiOiJKV1QiLCJhbGci... | Static access token for authenticating with ADLS. Used for OAuth2 flows. |

<!-- markdown-link-check-enable-->

Expand Down Expand Up @@ -197,6 +199,7 @@ PyIceberg uses [S3FileSystem](https://arrow.apache.org/docs/python/generated/pya
| 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. |

<!-- markdown-link-check-enable-->

Expand Down Expand Up @@ -388,6 +391,7 @@ The RESTCatalog supports pluggable authentication via the `auth` configuration b

- `noop`: No authentication (no Authorization header sent).
- `basic`: HTTP Basic authentication.
- `oauth2`: OAuth2 client credentials flow.
- `custom`: Custom authentication manager (requires `auth.impl`).
- `google`: Google Authentication support

Expand All @@ -411,9 +415,10 @@ catalog:

| Property | Required | Description |
|------------------|----------|-------------------------------------------------------------------------------------------------|
| `auth.type` | Yes | The authentication type to use (`noop`, `basic`, or `custom`). |
| `auth.type` | Yes | The authentication type to use (`noop`, `basic`, `oauth2`, or `custom`). |
| `auth.impl` | Conditionally | The fully qualified class path for a custom AuthManager. Required if `auth.type` is `custom`. |
| `auth.basic` | If type is `basic` | Block containing `username` and `password` for HTTP Basic authentication. |
| `auth.oauth2` | If type is `oauth2` | Block containing OAuth2 configuration (see below). |
| `auth.custom` | If type is `custom` | Block containing configuration for the custom AuthManager. |
| `auth.google` | If type is `google` | Block containing `credentials_path` to a service account file (if using). Will default to using Application Default Credentials. |

Expand All @@ -436,6 +441,20 @@ auth:
password: mypass
```

OAuth2 Authentication:

```yaml
auth:
type: oauth2
oauth2:
client_id: my-client-id
client_secret: my-client-secret
token_url: https://auth.example.com/oauth/token
scope: read
refresh_margin: 60 # (optional) seconds before expiry to refresh
expires_in: 3600 # (optional) fallback if server does not provide
```

Custom Authentication:

```yaml
Expand All @@ -451,7 +470,7 @@ auth:

- If `auth.type` is `custom`, you **must** specify `auth.impl` with the full class path to your custom AuthManager.
- If `auth.type` is not `custom`, specifying `auth.impl` is not allowed.
- The configuration block under each type (e.g., `basic`, `custom`) is passed as keyword arguments to the corresponding AuthManager.
- The configuration block under each type (e.g., `basic`, `oauth2`, `custom`) is passed as keyword arguments to the corresponding AuthManager.

<!-- markdown-link-check-enable-->

Expand Down
6 changes: 3 additions & 3 deletions mkdocs/docs/contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ To rebuild the containers from scratch.

Below are the formalized conventions that we adhere to in the PyIceberg project. The goal of this is to have a common agreement on how to evolve the codebase, but also using it as guidelines for newcomers to the project.

## API Compatibility
### API Compatibility

It is important to keep the Python public API compatible across versions. The Python official [PEP-8](https://peps.python.org/pep-0008/) defines public methods as: _Public attributes should have no leading underscores_. This means not removing any methods without any notice, or removing or renaming any existing parameters. Adding new optional parameters is okay.

Expand Down Expand Up @@ -202,12 +202,12 @@ Which will warn:
Deprecated in 0.1.0, will be removed in 0.2.0. The old_property is deprecated. Please use the something_else property instead.
```

## Type annotations
### Type annotations

For the type annotation the types from the `Typing` package are used.

PyIceberg offers support from Python 3.9 onwards, we can't use the [type hints from the standard collections](https://peps.python.org/pep-0585/).

## Third party libraries
### Third party libraries

PyIceberg naturally integrates into the rich Python ecosystem, however it is important to be hesitant adding third party packages. Adding a lot of packages makes the library heavyweight, and causes incompatibilities with other projects if they use a different version of the library. Also, big libraries such as `s3fs`, `adlfs`, `pyarrow`, `thrift` should be optional to avoid downloading everything, while not being sure if is actually being used.
2 changes: 2 additions & 0 deletions mkdocs/docs/expression-dsl.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,8 @@ age_greater_than_18 = GreaterThan("age", 18)

# Greater than or equal to
age_greater_than_or_equal_18 = GreaterThanOrEqual("age", 18)


```

#### Set Predicates
Expand Down
8 changes: 4 additions & 4 deletions mkdocs/docs/how-to-release.md
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ export LAST_COMMIT_ID=$(git rev-list ${GIT_TAG} 2> /dev/null | head -n 1)

cat << EOF > release-announcement-email.txt
To: [email protected]
Subject: [VOTE] Release Apache PyIceberg $VERSION_WITH_RC
Subject: [VOTE] PyIceberg $VERSION_WITH_RC
Hi Everyone,

I propose that we release the following RC as the official PyIceberg $VERSION release.
Expand Down Expand Up @@ -351,9 +351,9 @@ Send out an announcement on the dev mail list:

```text
To: [email protected]
Subject: [ANNOUNCE] Apache PyIceberg release <VERSION>
Subject: [ANNOUNCE] PyIceberg <VERSION>

I'm pleased to announce the release of Apache PyIceberg <VERSION>!
I'm pleased to announce the release of PyIceberg <VERSION>!

Apache Iceberg is an open table format for huge analytic datasets. Iceberg
delivers high query performance for tables with tens of petabytes of data,
Expand Down Expand Up @@ -397,7 +397,7 @@ Ensure to update the `PYICEBERG_VERSION` in the [Dockerfile](https://github.com/

### Set up GPG key and Upload to Apache Iceberg KEYS file

To set up GPG key locally, see the instructions [here](http://www.apache.org/dev/openpgp.html#key-gen-generate-key).
To set up GPG key locally, see the [instructions](http://www.apache.org/dev/openpgp.html#key-gen-generate-key).

To install gpg on a M1 based Mac, a couple of additional steps are required: <https://gist.github.com/phortuin/cf24b1cca3258720c71ad42977e1ba57>.

Expand Down
1 change: 1 addition & 0 deletions mkdocs/docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ You can mix and match optional dependencies depending on your needs:
| hive-kerberos | Support for Hive metastore in Kerberos environment |
| glue | Support for AWS Glue |
| dynamodb | Support for AWS DynamoDB |
| bigquery | Support for Google Cloud BigQuery |
| sql-postgres | Support for SQL Catalog backed by Postgresql |
| sql-sqlite | Support for SQL Catalog backed by SQLite |
| pyarrow | PyArrow as a FileIO implementation to interact with the object store |
Expand Down
Loading