)]}'
{
  "commit": "40fad186bae14796567ea6786d8701bdd9d79312",
  "tree": "ee39bf22e562610eb67ced152c68d3dd96a38308",
  "parents": [
    "29d398bd21af492abeecd9fc9d33c48dc4d5fc08"
  ],
  "author": {
    "name": "Vincent Gao",
    "email": "gaobing1230@gmail.com",
    "time": "Mon Jul 13 13:11:22 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Jul 13 11:11:22 2026 +0000"
  },
  "message": "Accept empty message in retry_if_exception_message (#651)\n\nretry_if_exception_message validated its message/match arguments with\ntruthiness checks (if message and match, if not message and not match).\nAn empty string is a valid message target — it matches exceptions whose\nstr() is empty, e.g. a bare RuntimeError() — but \u0027not message\u0027 is True\nfor \u0027\u0027, so retry_if_exception_message(message\u003d\u0027\u0027) wrongly raised\nTypeError(\u0027missing 1 required argument\u0027). _check had the same problem:\n\u0027if self.message:\u0027 skipped the empty-message branch.\n\nReplace the truthiness guards with \u0027is None\u0027 checks so an empty message\nis accepted and matched. This makes every message matchable, not every\nmessage except the empty one.",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "38a6f3bb3b395f20f846fb59a1af08cc8ae0d3c6",
      "new_mode": 33188,
      "new_path": "releasenotes/notes/fix-exception-message-empty-string-7b1e9c4a2f6d0835.yaml"
    },
    {
      "type": "modify",
      "old_id": "df0cc4d6b4cd310e41e73cd7c09b7ed5a67029ad",
      "old_mode": 33188,
      "old_path": "tenacity/retry.py",
      "new_id": "e59f4c0aca0d59708a6de97f95476946c75b0aee",
      "new_mode": 33188,
      "new_path": "tenacity/retry.py"
    },
    {
      "type": "modify",
      "old_id": "61fd8dbb5b8cbc68acf3f816fd01b25d9179b06b",
      "old_mode": 33188,
      "old_path": "tests/test_tenacity.py",
      "new_id": "f6c15ce05b415cfd14dec5a0b8d30026aa68b0f1",
      "new_mode": 33188,
      "new_path": "tests/test_tenacity.py"
    }
  ]
}
