)]}'
{
  "commit": "0fba211fefd110e84cf3a064f7fde5074810bc95",
  "tree": "f312f31b76db21c79c549abac5f8e9f28de10b5e",
  "parents": [
    "4c356f7731bfaa36a8b0195782716b790cbc4357"
  ],
  "author": {
    "name": "Bénédikt Tran",
    "email": "10796600+picnixz@users.noreply.github.com",
    "time": "Tue Oct 20 00:55:09 2026"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Oct 20 00:55:09 2026"
  },
  "message": "gh-159786: Convert HACL* update() errors in `_hmac` after releasing the lock (GH-159805)\n\n* gh-159786: Convert HACL* update() errors in `_hmac` after releasing the lock\n\n`_hacl_hmac_state_update_once()` converted the HACL* exit code into an\nexception while the thread state was detached and, for HMAC.update(),\nwhile the object\u0027s mutex was held. On debug builds, this re-attached the\nthread state under the mutex and then called PyErr_Occurred() with the\nthread state detached in the chunking loop of `_hacl_hmac_state_update()`.\n\nReturn the raw HACL* exit code instead and convert it in `_hmac.new()` and\n`_hmac.HMAC.update()` once the thread state is re-attached and the mutex\nis released, as `hmac_digest_compute_locked()` already does. Release\nbuilds keep ignoring the update() exit code.\n\nSince `_hacl_convert_errno()` is now always called with an attached\nthread state, remove the `PyGILState_Ensure()` added by gh-135561 and\nassert that a thread state is attached instead.\n\n* simplify ifdefs: always check for the hacl error\n\n---------\n\nCo-authored-by: Gregory P. Smith \u003cgreg@krypto.org\u003e",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3f901326c87f68edc0dc46fdaaa40d402536d15f",
      "new_mode": 33188,
      "new_path": "Misc/NEWS.d/next/Library/2026-10-19-21-20-28.gh-issue-159786.fThehQ.rst"
    },
    {
      "type": "modify",
      "old_id": "96a91ce9754bdc0f774f1cbb9ca7080f4ae7730a",
      "old_mode": 33188,
      "old_path": "Modules/hmacmodule.c",
      "new_id": "a76a7056e4944378c5c76f5f9eac745e5ed7fc7c",
      "new_mode": 33188,
      "new_path": "Modules/hmacmodule.c"
    }
  ]
}
