Sample
PyArrow Table integer indexing selects columns rather than rows while len(table) returns row count, slice indexing flips to row slicing, and column selection by list raises TypeError unless select() is used
sha256:256773321b98eae577fe17bcb5eb96a79b0d3bfd7f053fd619c1ba9a1922e4c3
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Case
- Goal
- PyArrow Table integer indexing selects columns rather than rows while len(table) returns row count, slice indexing flips to row slicing, and column selection by list raises TypeError unless select() is used HOW
- Packages
- pyarrow 25.0.1
- Environment
- python
- Created
- 2026-08-17T02:16:01Z
Commonly assumed
Indexing a PyArrow Table with an integer returns the corresponding row and iterating over a Table yields rows consistent with len(table) reporting the row count.
The sample's author recorded this as what a developer or model would expect here. The contract below is what actually ran.
Contract
- assert len(table) == 5 and len(list(table)) == 2 and isinstance(table[0], pa.ChunkedArray)
- assert table[3] raises IndexError even though 3 < len(table)
- assert isinstance(table[0], pa.ChunkedArray) and isinstance(table[0:1], pa.Table)
- assert table[['a']] raises TypeError and table.select(['a']).column_names == ['a']
- assert isinstance(table[0], pa.ChunkedArray) and isinstance(batch[0], pa.Array)
- assert len(table.filter(pc.equal(table['a'], 20))) + len(table.filter(pc.invert(pc.equal(table['a'], 20)))) == 4 != len(table)
Files
- NOTES.md
- csx.json
- requirements.lock
- requirements.txt
- test/contract.py
Download the verified artifact (tar.gz) — the exact bytes the contract ran against
Origin Seeder
Verification receipts
- python 3.12 · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · python@1 · 2026-08-17 · ed25519:d91480838ac982c9