)]}'
{
  "commit": "2a31b1c242bb0a54611373701191fec301dd41aa",
  "tree": "1b2ee45a3c020a05bc1bcf1202d1da99eeb2f333",
  "parents": [
    "33d5253d059c82c027faa566226c1eb8329c62f1"
  ],
  "author": {
    "name": "yuzelin",
    "email": "33053040+yuzelin@users.noreply.github.com",
    "time": "Mon Dec 02 15:54:47 2024 +0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Dec 02 15:54:47 2024 +0800"
  },
  "message": "[Build] Refactor project structure and refactor release tools (#31)\n\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "153dfeb1d8749ba8e7ea6780535a64259a14171d",
      "old_mode": 33188,
      "old_path": ".github/workflows/check-java-bridge-licensing.yml",
      "new_id": "1513f980b39709487ee47b13b0ce556c8a90fc64",
      "new_mode": 33188,
      "new_path": ".github/workflows/check-java-bridge-licensing.yml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "eb9029e92d01b2eb9c70b677b77d308a11d9205f",
      "new_mode": 33188,
      "new_path": ".github/workflows/create-source-release.yml"
    },
    {
      "type": "modify",
      "old_id": "195783f59919df552419ed9f5c366a0b78ee7618",
      "old_mode": 33188,
      "old_path": ".github/workflows/paimon-python-checks.yml",
      "new_id": "6ec61f0026df13699d03a454b4d6b1f0c2132384",
      "new_mode": 33188,
      "new_path": ".github/workflows/paimon-python-checks.yml"
    },
    {
      "type": "copy",
      "old_id": "27dc0acdc757227e163df1626458bafa7068a2f7",
      "old_mode": 33188,
      "old_path": "setup_utils/__init__.py",
      "new_id": "09e37343bd3ed9f545173dbd1d90354a55ebc809",
      "new_mode": 33188,
      "new_path": "MANIFEST.in",
      "score": 87
    },
    {
      "type": "modify",
      "old_id": "cd2d3602ff6756581b762c7c8356cffbac3ddd62",
      "old_mode": 33188,
      "old_path": "README.md",
      "new_id": "63c2d41edaf023eb57c5d0e7da5cd401a585449f",
      "new_mode": 33188,
      "new_path": "README.md"
    },
    {
      "type": "delete",
      "old_id": "7b9f53dd6789927cd24a942368d5936691f098d0",
      "old_mode": 33261,
      "old_path": "dev/build-wheels.sh",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "15a009e502c025e29f619e694f02553e3503c542",
      "old_mode": 33261,
      "old_path": "dev/lint-python.sh",
      "new_id": "e9d3e5e5c33efcc9a0485d1bd2e112f819d855ad",
      "new_mode": 33261,
      "new_path": "dev/lint-python.sh"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a7b50b073ae6fd52e3d30fe1033c393c0afc7803",
      "new_mode": 33188,
      "new_path": "dev/test_deps/flink-shaded-hadoop-2-uber-2.8.3-10.0.jar"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dfbe9d7d0b5e3ef88d213a61e378a3570b7a848c",
      "new_mode": 33188,
      "new_path": "dev/test_deps/paimon-python-java-bridge-0.9-SNAPSHOT.jar"
    },
    {
      "type": "rename",
      "old_id": "e5cdfe96e7bb88df7e7f267ec9382516c8169e0c",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/paimon-python-java-bridge/copyright.txt",
      "new_id": "e5cdfe96e7bb88df7e7f267ec9382516c8169e0c",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/copyright.txt",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "dd7f7f2d5cd64380c07bb1d3d3dc5add55cb1b67",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/paimon-python-java-bridge/pom.xml",
      "new_id": "dd7f7f2d5cd64380c07bb1d3d3dc5add55cb1b67",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/pom.xml",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "f2ca4e1490dd38ca8f36b503e76a7445ee897901",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/paimon-python-java-bridge/src/main/java/org/apache/paimon/python/BytesWriter.java",
      "new_id": "f2ca4e1490dd38ca8f36b503e76a7445ee897901",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/src/main/java/org/apache/paimon/python/BytesWriter.java",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "5254d2f98592a41223ef512ad44a1da5e5b654bc",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/paimon-python-java-bridge/src/main/java/org/apache/paimon/python/FileLock.java",
      "new_id": "5254d2f98592a41223ef512ad44a1da5e5b654bc",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/src/main/java/org/apache/paimon/python/FileLock.java",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "61d322abf25d3862a6322037b5bb57a17525a7bb",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/paimon-python-java-bridge/src/main/java/org/apache/paimon/python/InvocationUtil.java",
      "new_id": "61d322abf25d3862a6322037b5bb57a17525a7bb",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/src/main/java/org/apache/paimon/python/InvocationUtil.java",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "83b34069a22e5148ad460f9dc25fdb4720dc0c96",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/paimon-python-java-bridge/src/main/java/org/apache/paimon/python/NetUtils.java",
      "new_id": "83b34069a22e5148ad460f9dc25fdb4720dc0c96",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/src/main/java/org/apache/paimon/python/NetUtils.java",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "4c6ff00f93dcce90cdb1818d9853d6561c924f98",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/paimon-python-java-bridge/src/main/java/org/apache/paimon/python/ParallelBytesReader.java",
      "new_id": "4c6ff00f93dcce90cdb1818d9853d6561c924f98",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/src/main/java/org/apache/paimon/python/ParallelBytesReader.java",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "a863dfd13cb8fb0e432f670eb04d0c3edcf6ff49",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/paimon-python-java-bridge/src/main/java/org/apache/paimon/python/PredicationUtil.java",
      "new_id": "a863dfd13cb8fb0e432f670eb04d0c3edcf6ff49",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/src/main/java/org/apache/paimon/python/PredicationUtil.java",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "0a28cf22ba203655bd0e653e104bd6493c405803",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/paimon-python-java-bridge/src/main/java/org/apache/paimon/python/PythonEnvUtils.java",
      "new_id": "0a28cf22ba203655bd0e653e104bd6493c405803",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/src/main/java/org/apache/paimon/python/PythonEnvUtils.java",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "17ca0738207d8275f50dade92617eda62b4ac010",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/paimon-python-java-bridge/src/main/java/org/apache/paimon/python/PythonGatewayServer.java",
      "new_id": "17ca0738207d8275f50dade92617eda62b4ac010",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/src/main/java/org/apache/paimon/python/PythonGatewayServer.java",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "d4965db3a55ed3e0fba4b9f40b17093e36883033",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/paimon-python-java-bridge/src/main/java/org/apache/paimon/python/RecordBytesIterator.java",
      "new_id": "d4965db3a55ed3e0fba4b9f40b17093e36883033",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/src/main/java/org/apache/paimon/python/RecordBytesIterator.java",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "64f6ce04395b27318b0e85da97c79b8350242c50",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/paimon-python-java-bridge/src/main/java/org/apache/paimon/python/SchemaUtil.java",
      "new_id": "64f6ce04395b27318b0e85da97c79b8350242c50",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/src/main/java/org/apache/paimon/python/SchemaUtil.java",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "db5800c41bcdf3c07b2bfb64e7bbe54bb817599d",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/paimon-python-java-bridge/src/main/resources/META-INF/NOTICE",
      "new_id": "db5800c41bcdf3c07b2bfb64e7bbe54bb817599d",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/src/main/resources/META-INF/NOTICE",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "7daf1c3365ac57832c283f7822a2a6d26d83bafc",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/paimon-python-java-bridge/tools/ci/log4j.properties",
      "new_id": "7daf1c3365ac57832c283f7822a2a6d26d83bafc",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/tools/ci/log4j.properties",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "d5db52cb03df6b62d68b0f9813d125a2008a7528",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/paimon-python-java-bridge/tools/maven/checkstyle.xml",
      "new_id": "d5db52cb03df6b62d68b0f9813d125a2008a7528",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/tools/maven/checkstyle.xml",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "42525cd46d83db1ac0cff9d671b8bc4e40cd5e60",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/paimon-python-java-bridge/tools/maven/suppressions.xml",
      "new_id": "42525cd46d83db1ac0cff9d671b8bc4e40cd5e60",
      "new_mode": 33188,
      "new_path": "paimon-python-java-bridge/tools/maven/suppressions.xml",
      "score": 100
    },
    {
      "type": "modify",
      "old_id": "9a259e06075bd8ff8e269e40d11942a0f3de331f",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/gateway_server.py",
      "new_id": "f3a0fda125323c7b0b0b8e992bfc34395524f2ef",
      "new_mode": 33188,
      "new_path": "pypaimon/py4j/gateway_server.py"
    },
    {
      "type": "modify",
      "old_id": "65b48d4d79b4e39f57109bc0e22c48a5cd04b3a3",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/tests/__init__.py",
      "new_id": "931ef35638af58b4a2fa330a54710040d2ef8b5f",
      "new_mode": 33188,
      "new_path": "pypaimon/py4j/tests/__init__.py"
    },
    {
      "type": "modify",
      "old_id": "5fb809e198086ec05142a60d6253ebf5dd0da686",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/tests/test_data_types.py",
      "new_id": "b0d0e41d5a7d855019c2d38204b572d8faba4776",
      "new_mode": 33188,
      "new_path": "pypaimon/py4j/tests/test_data_types.py"
    },
    {
      "type": "modify",
      "old_id": "5b637599062a459bebe7ecf601e5e40263d0e2d1",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/tests/test_preicates.py",
      "new_id": "f538c93ec024980449ee7b9739eeedf8b70d6764",
      "new_mode": 33188,
      "new_path": "pypaimon/py4j/tests/test_preicates.py"
    },
    {
      "type": "modify",
      "old_id": "27528d1f815275b4dace5aa0f8d6877c1c06a2e2",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/tests/test_write_and_read.py",
      "new_id": "14e41387df606d0e67c89ebbdde88d1401dbfef8",
      "new_mode": 33188,
      "new_path": "pypaimon/py4j/tests/test_write_and_read.py"
    },
    {
      "type": "modify",
      "old_id": "1039de2336278c14861c19f226df481151f9097e",
      "old_mode": 33188,
      "old_path": "pypaimon/py4j/util/constants.py",
      "new_id": "f22330957c67e4c1fbd912f2af5fa29d677d6469",
      "new_mode": 33188,
      "new_path": "pypaimon/py4j/util/constants.py"
    },
    {
      "type": "rename",
      "old_id": "659ce0d0361858d5e85cf6cf89fecb122e3376bb",
      "old_mode": 33188,
      "old_path": "setup_utils/version.py",
      "new_id": "659ce0d0361858d5e85cf6cf89fecb122e3376bb",
      "new_mode": 33188,
      "new_path": "pypaimon/version.py",
      "score": 100
    },
    {
      "type": "rename",
      "old_id": "27dc0acdc757227e163df1626458bafa7068a2f7",
      "old_mode": 33188,
      "old_path": "setup_utils/__init__.py",
      "new_id": "ecc3dda50ef435f01cbb2efcc1f12741004b95c0",
      "new_mode": 33188,
      "new_path": "setup.cfg",
      "score": 92
    },
    {
      "type": "modify",
      "old_id": "628a6b86f9cf55bfadba5624598102441386b23a",
      "old_mode": 33188,
      "old_path": "setup.py",
      "new_id": "4fc12a6913295287021c6472ff728361fb440993",
      "new_mode": 33188,
      "new_path": "setup.py"
    },
    {
      "type": "delete",
      "old_id": "01b02e85fa6d9ff49a0cf4d081cad17861365014",
      "old_mode": 33261,
      "old_path": "setup_utils/java_setuputils.py",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "delete",
      "old_id": "8188fb49284242cbc3eeab749ba00c0caa02d847",
      "old_mode": 33261,
      "old_path": "tools/releasing/create_binary_release.sh",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "7d6a8a9013a6d5bbc9e75b7c05418fa9444d7841",
      "old_mode": 33261,
      "old_path": "tools/releasing/create_source_release.sh",
      "new_id": "ad12a42257da0566cbf8e0e180e9849d9590a370",
      "new_mode": 33261,
      "new_path": "tools/releasing/create_source_release.sh"
    },
    {
      "type": "modify",
      "old_id": "5c8fc492d93b0cd0fad6e188336b48881498a208",
      "old_mode": 33261,
      "old_path": "tools/releasing/update_branch_version.sh",
      "new_id": "9c2017121bc8cfda2af0fffa4fa7e36e03cc68a1",
      "new_mode": 33261,
      "new_path": "tools/releasing/update_branch_version.sh"
    }
  ]
}
