Skip to content

Return manifests and manifest lists as pyarrow tables from pyiceberg-core #3648

Open

Description

@mbutrovich

Is your feature request related to a problem or challenge?

pyiceberg-core returns manifest entries and manifest-list entries as per-entry #[pyclass] objects, which PyIceberg converts into its own objects one at a time. apache/iceberg-python#4007 shows that conversion costing about as much as PyIceberg's whole Cython decode. #3388 and #3631 added iceberg::arrow::read_manifest_entries and iceberg::arrow::read_manifest_list, which decode into a RecordBatch. This is part of Task 3 of #3262.

Describe the solution you'd like

Add binding functions that return pyarrow tables from those readers, next to the existing ones. The binding already depends on arrow with the pyarrow feature. read_manifest_entries takes the manifest's ManifestFile to apply inheritance, so the binding needs a way to pass it in.

The existing read_manifest_list binding hard-codes FormatVersion::V2 (bindings/python/src/manifest.rs#L223-L228). This should fix that by reading through iceberg::arrow::read_manifest_list, which takes the version from the file and returns an error for an unknown one.

This follows #3647, which settles the readers' return type.

Willingness to contribute

I can contribute to this feature independently

Activity

  1. self-assigned this
    on Nov 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions