(py_db, request, thread_id)
| 1350 | |
| 1351 | |
| 1352 | def internal_set_expression_json(py_db, request, thread_id): |
| 1353 | # : :type arguments: SetExpressionArguments |
| 1354 | |
| 1355 | arguments = request.arguments |
| 1356 | expression = arguments.expression |
| 1357 | frame_id = arguments.frameId |
| 1358 | value = arguments.value |
| 1359 | fmt = arguments.format |
| 1360 | if hasattr(fmt, "to_dict"): |
| 1361 | fmt = fmt.to_dict() |
| 1362 | |
| 1363 | frame = py_db.find_frame(thread_id, frame_id) |
| 1364 | exec_code = "%s = (%s)" % (expression, value) |
| 1365 | try: |
| 1366 | pydevd_vars.evaluate_expression(py_db, frame, exec_code, is_exec=True) |
| 1367 | except (Exception, KeyboardInterrupt): |
| 1368 | _set_expression_response(py_db, request, error_message="Error executing: %s" % (exec_code,)) |
| 1369 | return |
| 1370 | |
| 1371 | # Ok, we have the result (could be an error), let's put it into the saved variables. |
| 1372 | frame_tracker = py_db.suspended_frames_manager.get_frame_tracker(thread_id) |
| 1373 | if frame_tracker is None: |
| 1374 | # This is not really expected. |
| 1375 | _set_expression_response(py_db, request, error_message="Thread id: %s is not current thread id." % (thread_id,)) |
| 1376 | return |
| 1377 | |
| 1378 | # Now that the exec is done, get the actual value changed to return. |
| 1379 | result = pydevd_vars.evaluate_expression(py_db, frame, expression, is_exec=False) |
| 1380 | variable = frame_tracker.obtain_as_variable(expression, result, frame=frame) |
| 1381 | var_data = variable.get_var_data(fmt=fmt) |
| 1382 | |
| 1383 | body = pydevd_schema.SetExpressionResponseBody( |
| 1384 | value=var_data["value"], |
| 1385 | variablesReference=var_data.get("variablesReference", 0), |
| 1386 | type=var_data.get("type"), |
| 1387 | presentationHint=var_data.get("presentationHint"), |
| 1388 | namedVariables=var_data.get("namedVariables"), |
| 1389 | indexedVariables=var_data.get("indexedVariables"), |
| 1390 | ) |
| 1391 | variables_response = pydevd_base_schema.build_response(request, kwargs={"body": body}) |
| 1392 | py_db.writer.add_command(NetCommand(CMD_RETURN, 0, variables_response, is_json=True)) |
| 1393 | |
| 1394 | |
| 1395 | def internal_get_completions(dbg, seq, thread_id, frame_id, act_tok, line=-1, column=-1): |
nothing calls this directly
no test coverage detected