)]}'
{
  "commit": "480cbbbf75488acc0b3fb7ab6c07fd8989e905de",
  "tree": "08c40d339da34b8f0dfa791b2a6a55fb184e2ff3",
  "parents": [
    "7fd5f9a6831e0f497b611d3e77095db51ec810fe"
  ],
  "author": {
    "name": "maxbartel",
    "email": "bartel@roofline.ai",
    "time": "Mon Oct 05 20:18:53 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Oct 05 20:18:53 2026 +0200"
  },
  "message": "[Runtime][Python] Keep all results in benchmark_module (#24985)\n\n`benchmark_module` parsed the console table by splitting whitespace\ncolumns. It kept only the first user counter and failed on rows without\ncounters. Read a separate Google Benchmark JSON output file and expose\neach complete row through `BenchmarkResult.report`, including metadata\nand every user counter, without maintaining a list of Google Benchmark\nfields.\n\nThis replaces `user_counters`. The name, timing, and iteration fields\nretain their string representation. Percentage aggregates use `%`, and\nan unmatched benchmark filter returns an empty list. Subprocess failures\nand JSON rows marked `error_occurred` raise `BenchmarkToolError` with\ntheir diagnostics.\n\nThe wrapper also accepts an explicit tool executable, benchmarks\neligible exports of a module file when no entry function is given,\nsupports repeated flags through list values, and serializes booleans as\n`true`/`false`. These support the lifecycle tests in the following\nchanges.\n\nAssisted by AI.\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3a2d9da808114d4bde005186a7815cf41f3837d2",
      "old_mode": 33188,
      "old_path": "runtime/bindings/python/iree/runtime/benchmark.py",
      "new_id": "6b7b76a35d618d10929fc48c56830aab07cd4ca7",
      "new_mode": 33188,
      "new_path": "runtime/bindings/python/iree/runtime/benchmark.py"
    },
    {
      "type": "modify",
      "old_id": "959edd90b7ea73472e8accd2069702d521475132",
      "old_mode": 33188,
      "old_path": "runtime/bindings/python/tests/benchmark_test.py",
      "new_id": "65c6813139bec695f2bb4056413a1486a53fcc16",
      "new_mode": 33188,
      "new_path": "runtime/bindings/python/tests/benchmark_test.py"
    }
  ]
}
