)]}'
{
  "commit": "645d3a704ff79996e73ba18ec4990e52cbed345c",
  "tree": "c50af3117db041cb7b87266ee3b4847573a3ed69",
  "parents": [
    "3271a8e50284e4302b72e2aeb58df513b07574e3"
  ],
  "author": {
    "name": "Stefan Agner",
    "email": "stefan@agner.ch",
    "time": "Thu Jun 13 16:44:23 2024 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Jun 13 14:44:23 2024 +0000"
  },
  "message": "[Python] Use thread-safe futures for concurrent operations (#33891)\n\n* [Python] Use thread-safe futures for concurrent operations\n\nInstead of using quasi-global variables in the ChipStack singleton\nuse device controller local futures to store results from callbacks.\nThis has several advantages, namely:\n- Avoid unnecessary shared state between device controllers\n- Avoid unnecessary shared state between various operations within a\n  device controller (those who don\u0027t share callbacks could be called\n  from different threads now)\n- Explicitly set Futures to None to detect spurious/unexpected callbacks\n- Better code readability\n- concurrent.futures are thread-safe\n- Will make asyncio transition easier\n\nThis change shouldn\u0027t change the external API.\n\n* [Python] Fix EstablishPASESession API compatibility\n\n* [Python] Make ConnectBLE behave as before",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e9ff7280d9a31d244a8519f7b413108e56f23d7c",
      "old_mode": 33188,
      "old_path": "src/controller/python/chip/ChipDeviceCtrl.py",
      "new_id": "42ee9e6f535197899e6726f96eb977f8076f2025",
      "new_mode": 33188,
      "new_path": "src/controller/python/chip/ChipDeviceCtrl.py"
    },
    {
      "type": "modify",
      "old_id": "5fd0601ba204e7344f174bf9abc132812c384675",
      "old_mode": 33188,
      "old_path": "src/controller/python/chip/ChipStack.py",
      "new_id": "4f19776664cfa77cca20e5b26197b79fc6b010ea",
      "new_mode": 33188,
      "new_path": "src/controller/python/chip/ChipStack.py"
    }
  ]
}
