# What changed in pyiceberg

> 81 changes in pyiceberg 0.11 to 0.12 from its official release notes, upgrade guides and advisories: 6 breaking, 1 deprecations, 48 new APIs and options. Each one cited. Sources checked 2026-11-12. HTML: https://unstale.sh/pypi/pyiceberg/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## pyiceberg 0.12

### Breaking changes

- Rejects empty source-ids in PartitionField. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- PyArrow 18.0.0 or newer is required for native UUID type support. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Adds --warehouse to the REST catalog CLI in place of --prefix. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Renames REST rest-scan-planning-enabled to scan-planning-mode. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Rejects empty source-ids in SortField. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)

### Deprecations

- The version command is deprecated in favor of the --version flag. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)

### New APIs and options

- The REST catalog can create views. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Adds dictionary_columns to to_arrow() and to_arrow_batch_reader() for memory-efficient reads. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Adds a --purge option to the drop table CLI. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- drop_view accepts an Identifier type. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Adds S3 server-side encryption configuration support for FsspecFileIO. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Adds the Geography type. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Adds the Geometry type. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Adds support for incremental append scans. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- REST list_namespaces supports pagination and page-size. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- REST list_tables supports pagination and page-size. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- REST list_views supports pagination and page-size. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Adds REST catalog support for loading views. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Makes manifest cache size configurable. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- OutputStream writers now provide tell(). (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Puffin supports zstd blob decompression. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Supports pyarrow float16 by widening to float on read and write. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Adds support for an overwrite option in register_table. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Adds support for registering views. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- REST catalog LoadTableResult supports storage-credentials. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Adds REST loadCredentials support. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Adds defaults for REST SigV4 retry configuration. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Table.append supports pa.RecordBatchReader input. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Table.overwrite supports pa.RecordBatchReader input. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- The too many requests exception is now surfaced to callers. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Adds a View object API. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)

### Behavior and default changes

- Adds commit retry and concurrency validation for writes. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)

### Fixes and other changes

- The CLI preserves empty property values. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Extracts the ADLS account_name from the URI hostname. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- NoopCatalog returns False instead of throwing an error. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- Preserves dictionary encoding in to_arrow_batch_reader. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- View.sql_for is case-insensitive and returns None for unknown dialects. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)
- View.version returns None for an unknown id. (0.12.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0)

## pyiceberg 0.11

### Breaking changes

- Python 3.9 is no longer supported. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)

### New APIs and options

- Adds a field alias for partition statistics updates. (0.11.1) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.1)
- Supports adding files to branches. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Makes AND expressions JSON serializable. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Adds an anon property to fsspec ADLS FileIO configuration to ease use of the DefaultCredential pipeline. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Adds AWS profile support to Glue and fsspec S3 FileIO. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Adds a log level parameter to the CLI. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Allows servers to express which endpoints they support. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Adds an Entra ID authentication manager. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Adds conversion from JSON to expressions. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Adds the ability to set the current snapshot through the ManageSnapshots API. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Adds the namespace_exists method. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Makes OR expressions JSON serializable. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Adds comprehensive ORC read support. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Adds the RemovePartitionSpecsUpdate event. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Adds the RemoveSchemasUpdate event. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Makes the namespace separator configurable for REST catalogs. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Adds REST scan-planning support, including planning endpoints, configuration, and models. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Adds support for rolling back to a snapshot. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Adds support for rolling back to a timestamp. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Adds row lineage fields for format version 3. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Supports fsspec s3 addressing_style properties. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Adds a filter expression parameter to partition inspection. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Adds snapshot_properties support to the upsert operation. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)

### Behavior and default changes

- Removes the field ID constraint when adding files. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Supports arbitrary literal comparisons in the BETWEEN operator. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Makes LiteralPredicate serializable through IcebergBaseModel. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Makes SetPredicate and its subclasses JSON serializable with Pydantic. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Makes UnaryPredicate JSON serializable. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)

### Fixes and other changes

- Extracts the ADLS account name from the URI hostname. (0.11.1) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.1)
- PyIceberg now accepts all valid HTTP methods for IRC ConfigResponse. (0.11.1) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.12.0), [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.1)
- Fixes SSL deactivation from catalog properties. (0.11.1) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.1)
- Blocks dropping a schema field when it is referenced by an active partition or sort field. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Prefix matching for ADLS_SAS_TOKEN is corrected, so the setting is matched properly. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Makes ExecutorFactory safe for use across multiple processes. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Fixes thread safety in FsspecFileIO.get_fs. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Makes Literal serializable by Pydantic. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Makes Not expressions JSON serializable. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Allows writing data when optional map fields are missing. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Fixes partition column projection when schemas have evolved. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Allows reading PyArrow timestamptz values as Iceberg timestamp. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Supports nested struct field filtering. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
- Makes Reference JSON serializable. (0.11.0) — [release notes](https://github.com/apache/iceberg-python/releases/tag/pyiceberg-0.11.0)
