)]}'
{
  "commit": "1367ef66aa555f463f2e814a68969ef7c1ec9704",
  "tree": "aa8e7ce0089aba808bff75d21b4077532bffb31a",
  "parents": [
    "09221a517661be95440184f3e82b066465f7575e"
  ],
  "author": {
    "name": "Ang Li",
    "email": "angli@google.com",
    "time": "Sat Aug 08 21:26:54 2026 +0000"
  },
  "committer": {
    "name": "Ang Li",
    "email": "angli@google.com",
    "time": "Sun Aug 09 00:18:40 2026 +0000"
  },
  "message": "feat(adb): add spawn and stream parameters to AdbProxy (#446)\n\nAdd support for long-running and streaming ADB commands directly via\nparameter flags on AdbProxy dynamic method dispatches (e.g. adb.shell(..., spawn\u003dTrue),\nadb.logcat(..., stream\u003dTrue)).\n\n- Introduce AdbProcess wrapping subprocess.Popen with process lifecycle\n  methods (poll, wait, stop, iter_lines) and context manager support.\n- Add _spawn_cmd to AdbProxy and update __getattr__ to support spawn\u003dTrue\n  and stream\u003dTrue.\n- Validate that timeout cannot be passed when spawn\u003dTrue, delegating timeout\n  control cleanly to AdbProcess.wait(timeout\u003d...).\n- Add comprehensive unit tests for AdbProcess and AdbProxy spawn/stream execution.\n\nCloses #446\n\nORIGINAL_AUTHOR\u003dangli\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "5760d27bf81c16685d8ec2016cba168b00a0d934",
      "old_mode": 33188,
      "old_path": "mobly/controllers/android_device_lib/adb.py",
      "new_id": "cdfc0e113a8040890537beb83c2ccc15eea448d8",
      "new_mode": 33188,
      "new_path": "mobly/controllers/android_device_lib/adb.py"
    },
    {
      "type": "modify",
      "old_id": "7b01feb756e150e6d0e814110b595fae7206013f",
      "old_mode": 33261,
      "old_path": "tests/mobly/controllers/android_device_lib/adb_test.py",
      "new_id": "3fc44af4105fdcdad417e81ecfd6066638576b08",
      "new_mode": 33261,
      "new_path": "tests/mobly/controllers/android_device_lib/adb_test.py"
    }
  ]
}
