)]}'
{
  "commit": "87a9cf11a25132ee42f24e7aeb4cdbc616eddebc",
  "tree": "4c916abbffa3fb08942264d2a81dad2312a05113",
  "parents": [
    "fde5fc1b2b594eab283ae91b1f218f6afb7e5700"
  ],
  "author": {
    "name": "Alexey Preobrazhenskiy",
    "email": "dizzy57@gmail.com",
    "time": "Tue Oct 17 06:59:10 2023 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Oct 17 04:59:10 2023 +0000"
  },
  "message": "fix(py_wheel): produce deterministic wheel files (#1453)\n\nCurrent implementation does not produce deterministic output because:\n- `ZipFile.writestr()` leaks current date and time\n- `ZipFile.write()` leaks the source file\u0027s mtime and mode bits\n(permissions) into the resulting zip archive.\n\nBy manually creating our own `ZipInfo` objects we can explicitly set\ndate and time fields to `Jan 1, 1980, 00:00` (minimum value allowed by\nthe zip file standard), and ensure that other file attributes are\nuniform across all entries in a zip file.\n\n---------\n\nCo-authored-by: Ignas Anikevicius \u003c240938+aignas@users.noreply.github.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "be69f5e8d02f58c181f6d193c0e7e4fa04c4bbd8",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "e13868a02688127696a876051b9a633c8605f5cf",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "8c0f53e6ff1c0ddfcdded09664ccb36e095ba5ea",
      "old_mode": 33188,
      "old_path": "examples/wheel/wheel_test.py",
      "new_id": "23b1c8a145832ea05c0042e14e69ac284e705e3b",
      "new_mode": 33188,
      "new_path": "examples/wheel/wheel_test.py"
    },
    {
      "type": "modify",
      "old_id": "dce54060932f807b711e1d20e043f5165d471869",
      "old_mode": 33188,
      "old_path": "tools/wheelmaker.py",
      "new_id": "f2ecbaf6ecb64c2ec3510d4334f9768efd8f499b",
      "new_mode": 33188,
      "new_path": "tools/wheelmaker.py"
    }
  ]
}
