Commit f8e9195
fix(planners): allow BuiltInPlanner subclasses to override process_planning_response
Merge google#4141
## Summary
Fixes google#4133
### Problem
When users create a subclass of `BuiltInPlanner` and override `process_planning_response()`, the method was never called because the response processor used `isinstance(planner, BuiltInPlanner)` which returns `True` for all subclasses.
### Solution
Changed the check to detect whether `process_planning_response` has been overridden:
```python
# Before
if not planner or isinstance(planner, BuiltInPlanner):
return
# After
if (
not planner
or type(planner).process_planning_response
is BuiltInPlanner.process_planning_response
):
return
```
This ensures:
- `BuiltInPlanner` itself is skipped (returns `None`)
- Subclasses **without** override are skipped (avoids side effects)
- Subclasses **with** override have their method called
### Testing
Added 3 new tests:
1. `test_overridden_subclass_process_planning_response_called` - Regression test for google#4133
2. `test_base_builtin_planner_process_planning_response_not_called` - Verifies base class is skipped
3. `test_non_overridden_subclass_process_planning_response_not_called` - Verifies non-overriding subclasses are also skipped
Co-authored-by: George Weale <gweale@google.com>
COPYBARA_INTEGRATE_REVIEW=google#4141 from maru0804:fix/4133-planner-process-planning-response 8d57323
PiperOrigin-RevId: 9328537831 parent 8e2b06d commit f8e9195
2 files changed
Lines changed: 97 additions & 1 deletion
File tree
- src/google/adk/flows/llm_flows
- tests/unittests/flows/llm_flows
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
82 | 82 | | |
83 | 83 | | |
84 | 84 | | |
85 | | - | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
86 | 90 | | |
87 | 91 | | |
88 | 92 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
14 | 14 | | |
15 | 15 | | |
16 | 16 | | |
| 17 | + | |
| 18 | + | |
17 | 19 | | |
| 20 | + | |
18 | 21 | | |
| 22 | + | |
19 | 23 | | |
20 | 24 | | |
| 25 | + | |
21 | 26 | | |
| 27 | + | |
22 | 28 | | |
23 | 29 | | |
24 | 30 | | |
| |||
126 | 132 | | |
127 | 133 | | |
128 | 134 | | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
0 commit comments