from _pydevd_bundle.pydevd_constants import dict_keys, NEXT_VALUE_SEPARATOR, GET_FRAME_NORMAL_GROUP, GET_FRAME_SPECIAL_GROUP, GET_FRAME_RETURN_GROUP
from _pydevd_bundle.pydevd_vars import resolve_compound_var_object_fields, table_like_struct_to_xml, eval_in_context, resolve_var_object, get_offset
from _pydevd_bundle.pydevd_xml import frame_vars_to_xml, should_evaluate_full_value, var_to_xml
from _pydevd_bundle.pydevd_tables import exec_table_command
from _pydevd_bundle.pydevd_user_type_renderers import parse_set_type_renderers_message
def evaluate(expression):
ipython_shell = get_ipython()
user_type_renderers = getattr(ipython_shell, "user_type_renderers", None)
namespace = ipython_shell.user_ns
result = eval_in_context(expression, namespace, namespace)
xml = ""
xml += var_to_xml(result, expression, user_type_renderers=user_type_renderers)
xml += ""
print(xml)
def get_frame(group_type):
ipython_shell = get_ipython()
user_ns = ipython_shell.user_ns
hidden_ns = ipython_shell.user_ns_hidden
user_type_renderers = getattr(ipython_shell, "user_type_renderers", None)
xml = ""
xml += frame_vars_to_xml(user_ns, group_type, hidden_ns, user_type_renderers)
xml += ""
print(xml)
def get_variable(pydev_text):
ipython_shell = get_ipython()
user_type_renderers = getattr(ipython_shell, "user_type_renderers", None)
val_dict = resolve_compound_var_object_fields(ipython_shell.user_ns, pydev_text, user_type_renderers)
if val_dict is None:
val_dict = {}
xml_list = [""]
for k in dict_keys(val_dict):
val = val_dict[k]
evaluate_full_value = should_evaluate_full_value(val)
xml_list.append(var_to_xml(val, k, evaluate_full_value=evaluate_full_value, user_type_renderers=user_type_renderers))
xml_list.append("")
print(''.join(xml_list))
def get_array(text):
ipython_shell = get_ipython()
namespace = ipython_shell.user_ns
roffset, coffset, rows, cols, format, attrs = text.split('\t', 5)
name = attrs.split("\t")[-1]
var = eval_in_context(name, namespace, namespace)
xml = table_like_struct_to_xml(var, name, int(roffset), int(coffset), int(rows), int(cols), format)
print(xml)
def load_full_value(scope_attrs):
ipython_shell = get_ipython()
user_type_renderers = getattr(ipython_shell, "user_type_renderers", None)
namespace = ipython_shell.user_ns
vars = scope_attrs.split(NEXT_VALUE_SEPARATOR)
xml_list = [""]
for var_attrs in vars:
var_attrs = var_attrs.strip()
if len(var_attrs) == 0:
continue
if '\t' in var_attrs:
name, attrs = var_attrs.split('\t', 1)
else:
name = var_attrs
attrs = None
if name in namespace.keys():
var_object = resolve_var_object(namespace[name], attrs)
else:
var_object = eval_in_context(name, namespace, namespace)
xml_list.append(var_to_xml(var_object, name, evaluate_full_value=True, user_type_renderers=user_type_renderers))
xml_list.append("")
print(''.join(xml_list))
def table_command(command_text):
ipython_shell = get_ipython()
namespace = ipython_shell.user_ns
command, command_type, start_index, end_index = command_text.split(NEXT_VALUE_SEPARATOR)
try:
start_index = int(start_index)
end_index = int(end_index)
except ValueError:
start_index = None
end_index = None
status, res = exec_table_command(command, command_type, start_index, end_index, namespace, namespace)
print(res)
def serializeImage(img):
if len(img.shape) != 2:
return None
if img.shape[0] > 1024 or img.shape[1] > 1024:
return None
result = "{\n"
result += " \"height\": {},\n \"width\": {},\n \"value\": [\n".format(img.shape[0], img.shape[1])
for y in range(img.shape[0]):
result += " ["
for x in range(img.shape[1]):
result += "{}".format(img[y][x])
if x < img.shape[1] - 1:
result += ", "
result += "]"
if y < img.shape[0] - 1:
result += ", \n"
result += "\n ]\n}"
return result
def image_command(command_text):
ipython_shell = get_ipython()
namespace = ipython_shell.user_ns
try:
var_value = eval_in_context(command_text, namespace, namespace)
json_result = serializeImage(var_value)
except Exception as e:
print(e)
print(command_text)
print(json_result)
def set_user_type_renderers(message):
ipython_shell = get_ipython()
try:
renderers = parse_set_type_renderers_message(message)
ipython_shell.user_type_renderers = renderers
except:
pass