Skip to content

Commit be8dd60

Browse files
fabiozint19h
authored andcommitted
Don't show None when evaluating in repl. Fixes #678
1 parent 83b18ef commit be8dd60

File tree

2 files changed

+39
-31
lines changed

2 files changed

+39
-31
lines changed

src/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py

+18-11
Original file line numberDiff line numberDiff line change
@@ -1234,8 +1234,6 @@ def __create_frame():
12341234
_evaluate_response(py_db, request, result='', error_message='Thread id: %s is not current thread id.' % (thread_id,))
12351235
return
12361236

1237-
variable = frame_tracker.obtain_as_variable(expression, eval_result, frame=frame)
1238-
12391237
safe_repr_custom_attrs = {}
12401238
if context == 'clipboard':
12411239
safe_repr_custom_attrs = dict(
@@ -1245,16 +1243,25 @@ def __create_frame():
12451243
maxother_inner=2 ** 64,
12461244
)
12471245

1248-
var_data = variable.get_var_data(fmt=fmt, **safe_repr_custom_attrs)
1246+
if context == 'repl' and eval_result is None:
1247+
# We don't want "None" to appear when typing in the repl.
1248+
body = pydevd_schema.EvaluateResponseBody(
1249+
result=None,
1250+
variablesReference=0,
1251+
)
12491252

1250-
body = pydevd_schema.EvaluateResponseBody(
1251-
result=var_data['value'],
1252-
variablesReference=var_data.get('variablesReference', 0),
1253-
type=var_data.get('type'),
1254-
presentationHint=var_data.get('presentationHint'),
1255-
namedVariables=var_data.get('namedVariables'),
1256-
indexedVariables=var_data.get('indexedVariables'),
1257-
)
1253+
else:
1254+
variable = frame_tracker.obtain_as_variable(expression, eval_result, frame=frame)
1255+
var_data = variable.get_var_data(fmt=fmt, **safe_repr_custom_attrs)
1256+
1257+
body = pydevd_schema.EvaluateResponseBody(
1258+
result=var_data['value'],
1259+
variablesReference=var_data.get('variablesReference', 0),
1260+
type=var_data.get('type'),
1261+
presentationHint=var_data.get('presentationHint'),
1262+
namedVariables=var_data.get('namedVariables'),
1263+
indexedVariables=var_data.get('indexedVariables'),
1264+
)
12581265
variables_response = pydevd_base_schema.build_response(request, kwargs={'body':body})
12591266
py_db.writer.add_command(NetCommand(CMD_RETURN, 0, variables_response, is_json=True))
12601267

src/debugpy/_vendored/pydevd/tests_python/test_debugger_json.py

+21-20
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,8 @@ def evaluate(self, expression, frameId=None, context=None, fmt=None, success=Tru
504504
'''
505505
:param wait_for_response:
506506
If True returns the response, otherwise returns the request.
507+
508+
:returns EvaluateResponse
507509
'''
508510
eval_request = self.write_request(
509511
pydevd_schema.EvaluateRequest(pydevd_schema.EvaluateArguments(
@@ -1926,26 +1928,25 @@ def test_evaluate_no_name_mangling(case_setup):
19261928
json_hit = json_facade.get_stack_as_json_hit(json_hit.thread_id)
19271929

19281930
# Check eval with a properly indented block
1929-
json_facade.evaluate(
1930-
'x = "_"',
1931-
frameId=json_hit.frame_id,
1932-
context="repl",
1933-
)
1934-
json_facade.evaluate(
1935-
'x',
1936-
frameId=json_hit.frame_id,
1937-
context="repl",
1938-
)
1939-
json_facade.evaluate(
1940-
'y = "__"',
1941-
frameId=json_hit.frame_id,
1942-
context="repl",
1943-
)
1944-
json_facade.evaluate(
1945-
'y',
1946-
frameId=json_hit.frame_id,
1947-
context="repl",
1948-
)
1931+
evaluate_response = json_facade.evaluate(
1932+
'x = "_"', frameId=json_hit.frame_id, context="repl")
1933+
assert not evaluate_response.body.result
1934+
1935+
evaluate_response = json_facade.evaluate(
1936+
'x', frameId=json_hit.frame_id, context="repl")
1937+
assert evaluate_response.body.result == "'_'"
1938+
1939+
evaluate_response = json_facade.evaluate(
1940+
'y = "__"', frameId=json_hit.frame_id, context="repl")
1941+
assert not evaluate_response.body.result
1942+
1943+
evaluate_response = json_facade.evaluate(
1944+
'y', frameId=json_hit.frame_id, context="repl")
1945+
assert evaluate_response.body.result == "'__'"
1946+
1947+
evaluate_response = json_facade.evaluate(
1948+
'None', json_hit.frame_id, context='repl')
1949+
assert not evaluate_response.body.result
19491950

19501951
json_facade.write_continue()
19511952
writer.finished_ok = True

0 commit comments

Comments
 (0)