MCPcopy Create free account
hub / github.com/fabioz/PyDev.Debugger / internal_set_expression_json

Function internal_set_expression_json

_pydevd_bundle/pydevd_comm.py:1352–1392  ·  view source on GitHub ↗
(py_db, request, thread_id)

Source from the content-addressed store, hash-verified

1350
1351
1352def 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
1395def internal_get_completions(dbg, seq, thread_id, frame_id, act_tok, line=-1, column=-1):

Callers

nothing calls this directly

Calls 9

NetCommandClass · 0.90
_set_expression_responseFunction · 0.85
get_frame_trackerMethod · 0.80
obtain_as_variableMethod · 0.80
get_var_dataMethod · 0.80
to_dictMethod · 0.45
find_frameMethod · 0.45
getMethod · 0.45
add_commandMethod · 0.45

Tested by

no test coverage detected