Skip to content

Apache Iceberg Python 0.12.0 Release

The Apache Iceberg community is pleased to announce the 0.12.0 release of Apache Iceberg Python.

The 0.12.0 release covers development work from early February through late August 2026 and is the result of merging over 470 pull requests from 58 contributors, including more than 40 first-time contributors.

These notes cover the highlights. For the full list, see the changelog.

Release Highlights🔗

REST Catalog View Support🔗

This release adds read support for Iceberg views. Views can be created, loaded, listed, registered, and dropped through the REST catalog, and are exposed through a View object.

view = catalog.create_view(
    identifier=("default", "recent_orders"),
    schema=schema,
    view_version=view_version,
)

view = catalog.load_view("default.recent_orders")
view.sql_for("spark")

For older REST servers that support the view endpoints but do not advertise them in the ConfigResponse, set the view-endpoints-supported catalog property.

Commit Retry and Concurrency Validation🔗

Writes now retry on concurrent commits and validate for conflicts. When a catalog commit fails with CommitFailedException, Transaction.commit_transaction() refreshes the table, checks for conflicts, and retries the commit.

Incremental Append Scan🔗

Table.incremental_append_scan() (#3512) reads the rows added by append snapshots within a snapshot range, projected onto the table's current schema.

scan = table.incremental_append_scan(
    from_snapshot_id_exclusive=last_processed_snapshot_id,
    to_snapshot_id_inclusive=table.current_snapshot().snapshot_id,
)
new_rows = scan.to_arrow()

Geometry and Geography Types🔗

The v3 geometry and geography primitive types are now supported: schema parsing and serialization, Avro mapping via WKB bytes, and PyArrow/Parquet integration.

File Format Writer API🔗

PyIceberg has begun using the File Format API for handling Parquet files.

Catalog and REST Improvements🔗

CLI🔗

Bug Fixes🔗

Notable correctness fixes in this release:

Breaking Changes🔗

Infrastructure Improvements🔗

Contributors🔗

$ git shortlog --perl-regexp --author='^((?!dependabot\[bot\]).*)$' -sn pyiceberg-0.11.0..pyiceberg-0.12.0
    44  Kevin Liu
    36  Yuya Ebihara
    12  Anas Khan
    11  Alex Stephen
     7  geruh
     5  Minh Vu
     5  Neelesh Salian
     4  Gabriel Igliozzi
     3  Fokko Driesprong
     3  GayathriSrividya
     3  Junwang Zhao
     3  Sotaro Hikita
     3  jj.lee
     3  vishnu prakash
     2  Aaron Niskode-Dossett
     2  ChangHyeon Im
     2  David
     2  David Dallakyan
     2  Jared Yu (余启正)
     2  Mrutunjay Kinagi
     2  Paul Mathew
     2  Sreesh Maheshwar
     2  Tanmay Rauth
     2  Yingjian Wu
     1  Adam
     1  Antonio
     1  Ben Lai
     1  BharatDeva
     1  CalebWeisgerber
     1  Chris Qiu
     1  David Zhao
     1  Federico
     1  James Bornholt
     1  Jared Yu
     1  Koen Denecker
     1  Kristofer Gaudel
     1  Marcin Szymański
     1  Ménélik Vero
     1  Noritaka Sekiyama
     1  Platon G. Gimp
     1  Pucheng Yang
     1  R. Conner Howell
     1  Rob Reeves
     1  Ruiyang Wang
     1  Sam Verhasselt
     1  Sidra
     1  Sumanth
     1  Sung Yun
     1  Thomas Pfeiffer
     1  Vova Kot
     1  Yong Zheng
     1  abnobdoss
     1  achasnovskiy
     1  antonlin1
     1  barking-code
     1  committobetter
     1  rcjverhoef
     1  shiwk
     1  spr0els
We thank all contributors for their efforts in making this release possible!

Getting Involved🔗

The PyIceberg project welcomes contributions! We use GitHub issues for tracking work and the Apache Iceberg Community Slack for discussions.

The easiest way to get started is to:

  1. Try PyIceberg with your workloads and report any issues you encounter
  2. Review the contributor guide
  3. Look for good first issues

Code review is also a very welcome contribution - please provide feedback on pull requests where you feel comfortable to do so!

For more information, visit the PyIceberg repository or the documentation.