)]}'
{
  "commit": "8fba377b0bc90ae6f852a621bb657213a1dd0066",
  "tree": "364313371ee0711b8b98d4d5cbc09ed7f40ef0fd",
  "parents": [
    "8f114a5326e8940702e7e701a4cedd22ea4c1403"
  ],
  "author": {
    "name": "Thomas Lam",
    "email": "thomaslam@canva.com",
    "time": "Wed Jan 31 16:48:58 2024 +1100"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Jan 31 05:48:58 2024 +0000"
  },
  "message": "Ensure regular file bit set in wheel archives (#1731)\n\n#1453 added logic to manually set zipinfo for each file in the wheel\narchive. When wheel archives generated by `_Whlfile` are installed by\nthe `installer` module (or `pip`), the file mode is inspected as such:\n\n* `installer`:\nhttps://github.com/pypa/installer/blob/fcc0d6f14f99974316c2e490cead07a9a0b7a6ac/src/installer/sources.py#L318-L321\n* `pip`:\nhttps://github.com/pypa/pip/blob/0f21fb92/src/pip/_internal/utils/unpacking.py#L96-L100\n\nas you can tell, if the regular file bit is not set, the installer\nthinks that the file being installed is not an executable and therefore\nthe executable bit will not be preserved when the file from wheel is\nextracted onto the host filesystem.\n\nSince all files being archived into Whlfile are regular files anyway, we\nset `S_IFREG` on the file mode for all files in the zip archive.\n\nFixes #1711\n\n---------\n\nSigned-off-by: Thomas Lam \u003cthomaslam@canva.com\u003e\nCo-authored-by: Ignas Anikevicius \u003c240938+aignas@users.noreply.github.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a137e9ded509a65e933c1314fac124878855239b",
      "old_mode": 33188,
      "old_path": "CHANGELOG.md",
      "new_id": "dfcdf3659fdc0bbc1c8d01a46668c3aeedcb3de6",
      "new_mode": 33188,
      "new_path": "CHANGELOG.md"
    },
    {
      "type": "modify",
      "old_id": "b683da06a0c50feea9484ca5bac3fc51d47f63ef",
      "old_mode": 33188,
      "old_path": "examples/wheel/wheel_test.py",
      "new_id": "0c3e87b48b349561c18d84fea79221f48151617a",
      "new_mode": 33188,
      "new_path": "examples/wheel/wheel_test.py"
    },
    {
      "type": "modify",
      "old_id": "28987550040d2263ce47a6ab2566c720a6f58e52",
      "old_mode": 33188,
      "old_path": "tools/wheelmaker.py",
      "new_id": "26153f62500b96448dc7eff069baca5a51aa3d81",
      "new_mode": 33188,
      "new_path": "tools/wheelmaker.py"
    }
  ]
}
