)]}'
{
  "commit": "c4cd5130382d3240ff034c67ebcf74d3d9c986cc",
  "tree": "7779d592ee6624519f35570f3e45cdd64b79a37b",
  "parents": [
    "03e80a7b22dcc351935eb4e0dad7a7c75c8e85e1"
  ],
  "author": {
    "name": "Dhruv Gupta",
    "email": "41189498+DG47@users.noreply.github.com",
    "time": "Wed Nov 11 21:44:39 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Nov 11 21:44:39 2026 +0000"
  },
  "message": "fix(io): keep null lists of structs when projecting Arrow data (#4065)\n\nThe projection visitor rebuilds a list of structs from its offsets alone,\nwhich cannot represent a null list, so every null list\u003cstruct\u003c...\u003e\u003e was\nturned into an empty list. On the write path this is persisted into the\nParquet file and the null is lost for every reader.\n\nRebuild the list from the original validity and offsets buffers instead,\nwhich also keeps the original array offset so sliced batches stay correct.\n\nCloses #3833",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "175d7658c9ee01717ff30fa5ab75e8f71f98cf68",
      "old_mode": 33188,
      "old_path": "pyiceberg/io/pyarrow.py",
      "new_id": "96ff36e859f15172fa17bd069b6a4229900e95f6",
      "new_mode": 33188,
      "new_path": "pyiceberg/io/pyarrow.py"
    },
    {
      "type": "modify",
      "old_id": "1d6569a9bd6a5b0ab318e0fc9af9dda148d1ebfd",
      "old_mode": 33188,
      "old_path": "tests/integration/test_reads.py",
      "new_id": "e8e2dcd576cc28711e59976150cafcfeb30d8d6f",
      "new_mode": 33188,
      "new_path": "tests/integration/test_reads.py"
    },
    {
      "type": "modify",
      "old_id": "9a332076d46dffd1fceb68fe76a0ef624f31a441",
      "old_mode": 33188,
      "old_path": "tests/io/test_pyarrow.py",
      "new_id": "74a0f9ddb650d69f01ea758dfb2459e03a6a0f58",
      "new_mode": 33188,
      "new_path": "tests/io/test_pyarrow.py"
    }
  ]
}
