Commit 12bd4fe
authored
Return evaluate result in DAP response body instead of writing to stdout (#2027)
When a DAP client sends an `evaluate` request with `context: "repl"` and no
`frameId`, debugpy forces the expression through the exec code path. Previously,
if the expression could be compiled as an eval (e.g. `2 + 2`),
`evaluate_expression` would compute the result but write it to `sys.stdout` and
return `None`. The caller in `internal_evaluate_expression_json` would then send
back `result=""` in the response body. Clients that read the response
body would get nothing, while the actual value was emitted as a DAP output event.
This changes `evaluate_expression` to return the computed result from the
eval-within-exec path instead of printing it. The caller now captures that
return value and includes it in the response body. Pure exec statements (e.g.
`x = 42`) continue to return `None` and produce `result=""` as before.
VS Code is unaffected because it always provides a `frameId`, which routes
through the normal eval path where results already go into the response body.1 parent 8bd57a7 commit 12bd4fe
4 files changed
Lines changed: 47 additions & 23 deletions
File tree
- src/debugpy/_vendored/pydevd
- _pydevd_bundle
- tests_python
Lines changed: 7 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1239 | 1239 | | |
1240 | 1240 | | |
1241 | 1241 | | |
1242 | | - | |
| 1242 | + | |
1243 | 1243 | | |
1244 | 1244 | | |
1245 | 1245 | | |
1246 | | - | |
1247 | | - | |
| 1246 | + | |
| 1247 | + | |
| 1248 | + | |
| 1249 | + | |
| 1250 | + | |
| 1251 | + | |
1248 | 1252 | | |
1249 | 1253 | | |
1250 | 1254 | | |
| |||
Lines changed: 6 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
473 | 473 | | |
474 | 474 | | |
475 | 475 | | |
476 | | - | |
| 476 | + | |
| 477 | + | |
477 | 478 | | |
478 | | - | |
479 | 479 | | |
480 | 480 | | |
481 | 481 | | |
| |||
539 | 539 | | |
540 | 540 | | |
541 | 541 | | |
542 | | - | |
543 | | - | |
| 542 | + | |
| 543 | + | |
544 | 544 | | |
545 | 545 | | |
546 | 546 | | |
547 | 547 | | |
| 548 | + | |
548 | 549 | | |
549 | 550 | | |
550 | 551 | | |
| |||
574 | 575 | | |
575 | 576 | | |
576 | 577 | | |
577 | | - | |
578 | | - | |
579 | | - | |
| 578 | + | |
580 | 579 | | |
581 | 580 | | |
582 | 581 | | |
| |||
Lines changed: 3 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3633 | 3633 | | |
3634 | 3634 | | |
3635 | 3635 | | |
3636 | | - | |
3637 | | - | |
3638 | | - | |
| 3636 | + | |
| 3637 | + | |
| 3638 | + | |
3639 | 3639 | | |
3640 | 3640 | | |
3641 | 3641 | | |
| |||
Lines changed: 31 additions & 10 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
238 | 238 | | |
239 | 239 | | |
240 | 240 | | |
241 | | - | |
| 241 | + | |
242 | 242 | | |
243 | | - | |
244 | | - | |
245 | | - | |
246 | | - | |
247 | | - | |
248 | | - | |
249 | | - | |
250 | | - | |
251 | | - | |
| 243 | + | |
| 244 | + | |
252 | 245 | | |
253 | 246 | | |
254 | 247 | | |
255 | 248 | | |
256 | 249 | | |
257 | 250 | | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
258 | 279 | | |
259 | 280 | | |
260 | 281 | | |
| |||
0 commit comments