)]}'
{
  "commit": "14ac9dfdf3acbbde77e6c5461ab798bd646efe8f",
  "tree": "2aa6975fa19ecc994f374d1f8313b4cd2db60c5c",
  "parents": [
    "b1b3b430c6a39ad7452a7907a4c781c0672e2bd7"
  ],
  "author": {
    "name": "Dave Lee",
    "email": "davelee.com@gmail.com",
    "time": "Fri May 08 14:41:36 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri May 08 14:41:36 2026 -0700"
  },
  "message": "[lldb] Add lldb.summary and lldb.synthetic decorators (#195351)\n\nAdds two new decorators, `@lldb.summary` and `@lldb.synthetic`,\nanalogous to the existing `@lldb.command` decorator.\n\n```python\n@lldb.summary(\"MyType\")\ndef MyType_summary(valobj, _):\n      return \"summary string\"\n\n@lldb.synthetic(\"MyContainer\")\nclass MyContainerSynthetic:\n    def __init__(self, valobj, _): ...\n```\n\nThese decorators result in `type summary add` and `type synthetic add`\ncommands being run.\n\nAn additional motivation: these decorators will make it straightforward\nto invoke the Python-to-LLDB formatter bytecode compiler\n(`formatter_bytecode.Compiler`), which currently requires command-line\nflags to know how to register formatters. With these decorators, the\nregistration metadata is associated directly with the implementing\nfunction or class.\n\nSee the docstrings and formatters.py test fixture for usage examples.\n\nAssisted-by: claude",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "40fa76872ee964088c8d9fb6af42c69562ab91b8",
      "old_mode": 33188,
      "old_path": "lldb/bindings/python/python-extensions.swig",
      "new_id": "8d6d825b65b3c64c596f093ba8d41cdf22e70484",
      "new_mode": 33188,
      "new_path": "lldb/bindings/python/python-extensions.swig"
    },
    {
      "type": "modify",
      "old_id": "82bb3c7ba1e110d6ce4184a0fcd641c9e8c0935f",
      "old_mode": 33188,
      "old_path": "lldb/docs/use/variable.rst",
      "new_id": "3261edbc49797c658b3c7eba2fbfdbd6e15ebf07",
      "new_mode": 33188,
      "new_path": "lldb/docs/use/variable.rst"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3d0b98f13f3d7be79aa6f4f5fd40d1697bb1e1a1",
      "new_mode": 33188,
      "new_path": "lldb/test/API/functionalities/data-formatter/decorator-formatters/Makefile"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5972442ec4c2337eb0254202e22fc35866bede09",
      "new_mode": 33188,
      "new_path": "lldb/test/API/functionalities/data-formatter/decorator-formatters/TestDecoratorFormatters.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "64f60973fde54f9a9e927b42731db357da71d82e",
      "new_mode": 33188,
      "new_path": "lldb/test/API/functionalities/data-formatter/decorator-formatters/broken_formatter.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ee9c8443f5a0399839ad5c019df64909bd9382ea",
      "new_mode": 33188,
      "new_path": "lldb/test/API/functionalities/data-formatter/decorator-formatters/formatters.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "35bf7253d929bc5df591d0473e26cb11119f2c84",
      "new_mode": 33188,
      "new_path": "lldb/test/API/functionalities/data-formatter/decorator-formatters/main.cpp"
    }
  ]
}
