)]}'
{
  "commit": "b4dd596dadafe7c4e323d950433714a897045170",
  "tree": "24c0d84dc8b5de4dc6cabe39c7c593f7f564b325",
  "parents": [
    "0be8175389f4f80f97ed7f964cfd002c55e7592b"
  ],
  "author": {
    "name": "ChengHui Chen",
    "email": "27797326+chenghuichen@users.noreply.github.com",
    "time": "Thu May 22 18:28:48 2025 +0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu May 22 18:28:48 2025 +0800"
  },
  "message": "#49 Implement Python native read with PyArrow (#50)\n\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e845db30c1f54501366d02290c8fb685455324c5",
      "old_mode": 33188,
      "old_path": ".gitignore",
      "new_id": "339e2c226e56794f75e9c2c4026178140e393a90",
      "new_mode": 33188,
      "new_path": ".gitignore"
    },
    {
      "type": "modify",
      "old_id": "4ed964ea55e25a78547bbf6287564673da4bebab",
      "old_mode": 33261,
      "old_path": "dev/dev-requirements.txt",
      "new_id": "328c7e63039ea67780ac7e971b2d6f7b6c211773",
      "new_mode": 33261,
      "new_path": "dev/dev-requirements.txt"
    },
    {
      "type": "rename",
      "old_id": "dfbe9d7d0b5e3ef88d213a61e378a3570b7a848c",
      "old_mode": 33188,
      "old_path": "dev/test_deps/paimon-python-java-bridge-0.9-SNAPSHOT.jar",
      "new_id": "c0df8e3ed67e4d93d4967235e07234cf5dcf019d",
      "new_mode": 33188,
      "new_path": "dev/test_deps/paimon-python-java-bridge-1.0-SNAPSHOT.jar",
      "score": 89
    },
    {
      "type": "modify",
      "old_id": "dd7f7f2d5cd64380c07bb1d3d3dc5add55cb1b67",
      "old_mode": 33188,
      "old_path": "paimon-python-java-bridge/pom.xml",
      "new_id": "5abf40ab0c1644db2ec0fc1957dac5ad3be84d18",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/pom.xml"
    },
    {
      "type": "modify",
      "old_id": "f2ca4e1490dd38ca8f36b503e76a7445ee897901",
      "old_mode": 33188,
      "old_path": "paimon-python-java-bridge/src/main/java/org/apache/paimon/python/BytesWriter.java",
      "new_id": "fe53597aef81f6297721ddb270512c748a345667",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/src/main/java/org/apache/paimon/python/BytesWriter.java"
    },
    {
      "type": "modify",
      "old_id": "61d322abf25d3862a6322037b5bb57a17525a7bb",
      "old_mode": 33188,
      "old_path": "paimon-python-java-bridge/src/main/java/org/apache/paimon/python/InvocationUtil.java",
      "new_id": "583377114bc140fe74bdcb54abafc6e9c70b8d84",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/src/main/java/org/apache/paimon/python/InvocationUtil.java"
    },
    {
      "type": "modify",
      "old_id": "6801c71904bdeffb313bcd2475e9c0ac05b5e29f",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/java_implementation.py",
      "new_id": "43425b0bb3d39d6299c9cf224db9aceebf94cdac",
      "new_mode": 33188,
      "new_path": "pypaimon/py4j/java_implementation.py"
    },
    {
      "type": "modify",
      "old_id": "f22330957c67e4c1fbd912f2af5fa29d677d6469",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/util/constants.py",
      "new_id": "200ac32361c9325147b8b337cb4938528e3f82bb",
      "new_mode": 33188,
      "new_path": "pypaimon/py4j/util/constants.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "65b48d4d79b4e39f57109bc0e22c48a5cd04b3a3",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/__init__.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "65b48d4d79b4e39f57109bc0e22c48a5cd04b3a3",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/common/__init__.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9f377297eed0346858f5427f8f72f01ebe13703e",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/common/exception.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "cadff46a6c00a3ec32ca8c4b482ffad20e0392fd",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/common/predicate.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "65b48d4d79b4e39f57109bc0e22c48a5cd04b3a3",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/common/row/__init__.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "244539d4c3394557f1f06d445f849a064c0d80af",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/common/row/columnar_row.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4c46ed926c537b5ba3d6a5e342a13aee4dfc7b27",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/common/row/internal_row.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d8c9951e11bf445339fc2cd6203abbb3a7c65917",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/common/row/key_value.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8ae21a29bd3a6becabc1bdbaca0f4b032cbf0ac2",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/common/row/offset_row.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ff9b9b18e9b62d397658a8781d3aed91f8dcb7ca",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/common/row/row_kind.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "65b48d4d79b4e39f57109bc0e22c48a5cd04b3a3",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/reader/__init__.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6852516823e375e8b1503915e4dc3487fa5518e7",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/reader/avro_format_reader.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ccbffab3d58fccaba8a45d125655e0290fca2d99",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/reader/concat_record_reader.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "65b48d4d79b4e39f57109bc0e22c48a5cd04b3a3",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/reader/core/__init__.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b42b96ca90843f1d4b3621d27b2e5c799977a765",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/reader/core/columnar_row_iterator.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "590a65e1d2b89ce7eea2fdb5b21629fcae72acdd",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/reader/core/file_record_iterator.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2d03cd1dfa8aec1c9598c39f024c0ffb5bf385e1",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/reader/core/file_record_reader.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4d3712c6c30bb2ab51336c504d3683aec7f3e7ab",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/reader/core/record_iterator.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f7226fa27e243fb4b9bdcab3e86216303b18762b",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/reader/core/record_reader.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0b161fe5a332ad12ae11f80e14a6e0ff6d7102ac",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/reader/data_file_record_reader.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ccb70e002ac5661f3d3b639052220d2a0a425205",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/reader/drop_delete_reader.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9883cb88766b9b15e5cebf1ccaa93d25ca40c62f",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/reader/empty_record_reader.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ef578290ea0ee13d82d7832e23cd400934e43239",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/reader/filter_record_reader.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9add03e3acb1eeafb8ae0ec29dc50503714a6fa1",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/reader/key_value_unwrap_reader.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "980e7e5dd9c9e0daf504fe3d1a0d478b32b6800e",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/reader/key_value_wrap_reader.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2f3bc85c1f85350fd44906ec4c0afc1c9215a0d7",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/reader/pyarrow_dataset_reader.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "896eb50f0f072233c16b159b486caa984d74252e",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/reader/sort_merge_reader.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e173487d4605efd62d8459a73ee2b0033ca95c06",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/tests/__init__.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "76667a011346edf12dceef7424b244d5a795de0c",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/tests/test_pynative_reader.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "65b48d4d79b4e39f57109bc0e22c48a5cd04b3a3",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/util/__init__.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e3c549959420429fc45f08503e7b7b44430c1136",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/util/predicate_converter.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8178449e4440552ae5c2ba3cdca9c1090794ceb1",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/util/predicate_utils.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "00b1a147535d6ad58146b3c7732918167f34b182",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/util/reader_convert_func.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ef9bbb08f504939dd857914457752ce1479eba9b",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/util/reader_converter.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "65b48d4d79b4e39f57109bc0e22c48a5cd04b3a3",
      "new_mode": 33188,
      "new_path": "pypaimon/pynative/writer/__init__.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b9481f59773bc513e57281d86ea96f59251b7e6c",
      "new_mode": 33188,
      "new_path": "pyproject.toml"
    },
    {
      "type": "modify",
      "old_id": "98515e0f456f8124d427d3c343190f9de3eb49aa",
      "old_mode": 33188,
      "old_path": "setup.py",
      "new_id": "0762a6975ec6406a203088ac5321b18cb7eeb616",
      "new_mode": 33188,
      "new_path": "setup.py"
    }
  ]
}
