)]}'
{
  "commit": "03456a2d489f2357e2706cffc01e67fff56263b1",
  "tree": "bfab32f9d0aedc7d3ad9cccf0c1e07ea473bb13c",
  "parents": [
    "2f5a3ba2e40a3ce909e11cde6b53697074e6814a"
  ],
  "author": {
    "name": "Runze Wang",
    "email": "runze@google.com",
    "time": "Mon Oct 19 15:58:06 2026 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Mon Oct 19 16:01:33 2026 -0700"
  },
  "message": "Breaking change: Make the options returned by GetOptions() immutable in Python.\n\nThe options message returned by GetOptions() on descriptor objects is now frozen in all\nPython implementations (upb, C++, and pure Python). Modifying it, or any of its\nsub-messages, repeated fields, or maps, now raises\nFrozenInstanceError instead of emitting a warning.\n\nCallers that need a mutable copy should copy the options into\na new message first.\n\nhttps://protobuf.dev/news/2026-09-22/#immutable-getoptions\n\nPiperOrigin-RevId: 1002656748\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "bf71937e50e4d60665e6e277abe9bd71247f2675",
      "old_mode": 33188,
      "old_path": "python/descriptor.c",
      "new_id": "a93bcd64f117d78b68d280f1aa833df195aff1ce",
      "new_mode": 33188,
      "new_path": "python/descriptor.c"
    },
    {
      "type": "modify",
      "old_id": "2dbab47ceb93f3158a7dea3399a6cb937d77a18a",
      "old_mode": 33188,
      "old_path": "python/google/protobuf/breaking_changes.h",
      "new_id": "6712473b1433f7cfca2210652cf506108a6737fa",
      "new_mode": 33188,
      "new_path": "python/google/protobuf/breaking_changes.h"
    },
    {
      "type": "modify",
      "old_id": "57437f1de86ab35c827c485cdc1cb45e7f42f557",
      "old_mode": 33261,
      "old_path": "python/google/protobuf/internal/containers.py",
      "new_id": "47ebbd7202e7bd0ebb10f8d7a3e5305a5607d4c4",
      "new_mode": 33261,
      "new_path": "python/google/protobuf/internal/containers.py"
    },
    {
      "type": "modify",
      "old_id": "318408fd6d1b1d8aadc842029b6ad049021ca8f7",
      "old_mode": 33261,
      "old_path": "python/google/protobuf/internal/descriptor_test.py",
      "new_id": "d9e70d2913cbbe5b625c9f31cfc7c62a37655020",
      "new_mode": 33261,
      "new_path": "python/google/protobuf/internal/descriptor_test.py"
    },
    {
      "type": "modify",
      "old_id": "53bd94f9eacaa4e1741393340174a31ef534d4c9",
      "old_mode": 33261,
      "old_path": "python/google/protobuf/internal/python_message.py",
      "new_id": "88215010dc11a731cff4c6603d5b884fa13b0b79",
      "new_mode": 33261,
      "new_path": "python/google/protobuf/internal/python_message.py"
    },
    {
      "type": "modify",
      "old_id": "596540e04e47971b784731f1bfbae5539ca20ffb",
      "old_mode": 33188,
      "old_path": "python/google/protobuf/pyext/message.cc",
      "new_id": "06c5d6ae19d0e8e1f795fbcfe395e84d0ab01ce6",
      "new_mode": 33188,
      "new_path": "python/google/protobuf/pyext/message.cc"
    },
    {
      "type": "modify",
      "old_id": "67a8b9065e62b6f8d1721718ef0053e660f5a9b2",
      "old_mode": 33188,
      "old_path": "python/google/protobuf/pyext/message.h",
      "new_id": "044d05a32af6492639ccc2eccd16cdc8c5ac98ec",
      "new_mode": 33188,
      "new_path": "python/google/protobuf/pyext/message.h"
    },
    {
      "type": "modify",
      "old_id": "2ed81bf3c8bc4226bdbdfeaa4f1392fbe851fa28",
      "old_mode": 33188,
      "old_path": "python/map.c",
      "new_id": "21d2d438ee6015bebf692b21f9fa2ac8cca41801",
      "new_mode": 33188,
      "new_path": "python/map.c"
    },
    {
      "type": "modify",
      "old_id": "2642a5fff677061110d8217cf730e1bdfdb7b974",
      "old_mode": 33188,
      "old_path": "python/message.c",
      "new_id": "6587d87251f888c305ef0578b3cdb6cd3f2e8728",
      "new_mode": 33188,
      "new_path": "python/message.c"
    },
    {
      "type": "modify",
      "old_id": "1c706804bf5099eb8142473e4a4ea7301d8b194c",
      "old_mode": 33188,
      "old_path": "python/protobuf.c",
      "new_id": "9beff2561461a19156d532d6a856496730519d4e",
      "new_mode": 33188,
      "new_path": "python/protobuf.c"
    },
    {
      "type": "modify",
      "old_id": "1d67d5b0996813e6f8c193038dea5b6edfa3629a",
      "old_mode": 33188,
      "old_path": "python/protobuf.h",
      "new_id": "f4ee2825232e2c1313f6f45fe02f1a40d4413e0d",
      "new_mode": 33188,
      "new_path": "python/protobuf.h"
    },
    {
      "type": "modify",
      "old_id": "3b34fd25f6c5e89e1fbf32a690b8dbba889a4d15",
      "old_mode": 33188,
      "old_path": "python/repeated.c",
      "new_id": "0d59b7065d6cd8faed924e11e346ba5ea722af72",
      "new_mode": 33188,
      "new_path": "python/repeated.c"
    }
  ]
}
