Files
openide/python/helpers/pydev/_pydev_bundle/pydev_console_commands.py
Elizaveta Shashkova b1e8fc9ecb PY-21984 Type Renderers fixes
GitOrigin-RevId: 5911d95d52d994ac4f3e8c514b28f1008b0047e6
2022-02-21 15:44:09 +00:00

43 lines
1.6 KiB
Python

from _pydevd_bundle import pydevd_thrift
from _pydevd_bundle.pydevd_comm import PyDBDaemonThread
from _pydevd_bundle.pydevd_comm import threading
from _pydevd_bundle.pydevd_comm import time
from _pydevd_bundle.pydevd_constants import ASYNC_EVAL_TIMEOUT_SEC
class ThriftAbstractGetValueAsyncThread(PyDBDaemonThread):
"""
Abstract class for a thread, which evaluates values for async variables
"""
def __init__(self, server, seq, var_objects, user_type_renderers=None):
PyDBDaemonThread.__init__(self)
self.server = server
self.seq = seq
self.var_objs = var_objects
self.cancel_event = threading.Event()
self.user_type_renderers = user_type_renderers
def send_result(self, xml):
raise NotImplementedError()
def _on_run(self):
start = time.time()
values = []
for (var_obj, name) in self.var_objs:
current_time = time.time()
if current_time - start > ASYNC_EVAL_TIMEOUT_SEC or self.cancel_event.is_set():
break
# pydev_console_thrift.DebugValue()
values.append(pydevd_thrift.var_to_struct(var_obj, name, evaluate_full_value=True, user_type_renderers=self.user_type_renderers))
self.send_result(values)
class ThriftGetValueAsyncThreadConsole(ThriftAbstractGetValueAsyncThread):
"""
A thread for evaluation async values, which returns result for Console
Send result directly to Console's server
"""
def send_result(self, values):
if self.server is not None:
self.server.returnFullValue(self.seq, values)