)]}'
{
  "commit": "8c780dcbde77c3b0195494c5557eb3235aced282",
  "tree": "6e0ad60070fc706545a25a1b402220aa9bc4de0c",
  "parents": [
    "92f36f14c59631933787981394c05ad58741d383"
  ],
  "author": {
    "name": "Douglas Thor",
    "email": "dougthor42@users.noreply.github.com",
    "time": "Fri Oct 16 01:18:16 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Oct 16 01:18:16 2026 +0000"
  },
  "message": "fix(gazelle): migrate to official tree-sitter Go bindings (#4272)\n\nReplace the unmaintained `github.com/smacker/go-tree-sitter` dependency\nwith the official `github.com/tree-sitter/go-tree-sitter` and\n`github.com/tree-sitter/tree-sitter-python` (v0.25.0) modules. This\nupdates the Python grammar so the Gazelle plugin can parse Python 3.14\nPEP 758 unparenthesized multi-exception `except` clauses without errors.\n\nBecause the official bindings include C sources across parent and\nsubdirectory paths that standard `go_repository` Gazelle generation\ncannot compile directly, fetch both modules via `http_archive` with\ncustom `cc_library` and `go_library` targets in both Bzlmod and\nWORKSPACE modes.\n\nWe also remove unneeded go_repository items from `gazelle/deps.bzl`.\n\nGenerated by Gemini. Tested on our large-scale QuantumAI monorepo.\n\nTAG\u003dagy\n\n### Timing\n\nI ran the parent commit and this PR on our primary QuantumAI monorepo.\nThis PR might make things a little faster, but I didn\u0027t want to wait for\n5 or more runs in hyperfine :laughing:.\n\nParent commit:\n\n```\n$ git -C ../../oss/bazel-contrib/rules_python rev-parse HEAD\nb7ec5bd151df5f725ab8f76446fd548ac4fedce1  # agents: require user-visible docs prose and workaround comments (#4271)\n$ hyperfine --warmup\u003d1 --runs\u003d3 \u0027bazel run --bes_backend\u003d //:gazelle\u0027\nBenchmark 1: bazel run --bes_backend\u003d //:gazelle\n  Time (mean ± σ):     93.052 s ± 18.023 s    [User: 99.884 s, System: 6.302 s]\n  Range (min … max):   82.134 s … 113.855 s    3 runs\n\n  Warning: Statistical outliers were detected. Consider re-running this benchmark on a quiet system without any interferences from other programs. It might help to use the \u0027--warmup\u0027 or \u0027--prepare\u0027 options.\n```\n\n\nThis PR:\n\n```\n$ git -C ../../oss/bazel-contrib/rules_python rev-parse HEAD\nbc5b12a5e160e7f91f665fc730b9b305dc3471b4\n$ hyperfine --warmup\u003d1 --runs\u003d3 \u0027bazel run --bes_backend\u003d //:gazelle\u0027\nBenchmark 1: bazel run --bes_backend\u003d //:gazelle\n  Time (mean ± σ):     80.338 s ±  2.570 s    [User: 80.271 s, System: 3.808 s]\n  Range (min … max):   78.292 s … 83.223 s    3 runs\n```\n\nFixes #3416",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "30758181ede2dee28ab913c73143fa67cc338d96",
      "old_mode": 33188,
      "old_path": "gazelle/BUILD.bazel",
      "new_id": "7467648c6b81fcbb2edf07f73ea026f68e2ec803",
      "new_mode": 33188,
      "new_path": "gazelle/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "b6eed23c6f9e99ce6dc969e1e40ba7c87a88d24a",
      "old_mode": 33188,
      "old_path": "gazelle/MODULE.bazel",
      "new_id": "407be5338f16cf78b9d1bef61b1328e7983f401a",
      "new_mode": 33188,
      "new_path": "gazelle/MODULE.bazel"
    },
    {
      "type": "modify",
      "old_id": "c57d5193b8584123f6f3c5ab05b0cf602b36328a",
      "old_mode": 33188,
      "old_path": "gazelle/deps.bzl",
      "new_id": "a7868c666a39465a91b2450cc8754683ee6c2ba5",
      "new_mode": 33188,
      "new_path": "gazelle/deps.bzl"
    },
    {
      "type": "modify",
      "old_id": "9ad4951536fb12078797e308ac089bb6c39ad612",
      "old_mode": 33188,
      "old_path": "gazelle/go.mod",
      "new_id": "cdf28f264fd0f31c4b274b84d63757fc29d83ddf",
      "new_mode": 33188,
      "new_path": "gazelle/go.mod"
    },
    {
      "type": "modify",
      "old_id": "d5fc2b1af9e2bd45ebcba4a9155b8154dbd60a08",
      "old_mode": 33188,
      "old_path": "gazelle/go.sum",
      "new_id": "1b141b66424da63de5c5daba9654624725cf6738",
      "new_mode": 33188,
      "new_path": "gazelle/go.sum"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "901e614cf0a14162f4226d6e9aa07dd4b4b8c0a9",
      "new_mode": 33188,
      "new_path": "gazelle/internal/go_tree_sitter_BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1f6fe1fa81a2749adc2a7c66eac2b130bc873e51",
      "new_mode": 33188,
      "new_path": "gazelle/internal/tree_sitter_python_BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "68f4e1be30925a52f4fd4f3b87560fb97ebf644b",
      "old_mode": 33188,
      "old_path": "gazelle/manifest/BUILD.bazel",
      "new_id": "fc12c5e435899dc46d61ad66d086918002deb3cc",
      "new_mode": 33188,
      "new_path": "gazelle/manifest/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "1ffa2890e1f38d6048d74819e3ede315a06adc17",
      "old_mode": 33188,
      "old_path": "gazelle/python/BUILD.bazel",
      "new_id": "0b9fd761b5ee77dcbe35f1fb5755facffc4e5830",
      "new_mode": 33188,
      "new_path": "gazelle/python/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "e129337e11619ac641f9c4ef0f0b8fb31ff83fc3",
      "old_mode": 33188,
      "old_path": "gazelle/python/file_parser.go",
      "new_id": "7bc3838cc4faa640ccf86042bb63ae8bd9cca306",
      "new_mode": 33188,
      "new_path": "gazelle/python/file_parser.go"
    },
    {
      "type": "modify",
      "old_id": "0a6fd1b4ab04446aa6a46ddcb56af1d9be21a495",
      "old_mode": 33188,
      "old_path": "gazelle/python/file_parser_test.go",
      "new_id": "81c5b99452d0d901f9806931c996f678dfd5391d",
      "new_mode": 33188,
      "new_path": "gazelle/python/file_parser_test.go"
    },
    {
      "type": "modify",
      "old_id": "a82a7f19ca66ae53d38c2a65b5945eb37700158b",
      "old_mode": 33188,
      "old_path": "gazelle/pythonconfig/BUILD.bazel",
      "new_id": "9c1e5eb9a7f0d9d3b83ab18c9f8054686886e39f",
      "new_mode": 33188,
      "new_path": "gazelle/pythonconfig/BUILD.bazel"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5aab21bfd143548e60eaafb58095475960eddc12",
      "new_mode": 33188,
      "new_path": "news/3416.changed.md"
    }
  ]
}
