MCPcopy Index your code
hub / github.com/fabioz/PyDev.Debugger / JsonFacade

Class JsonFacade

tests_python/test_debugger_json.py:83–584  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

81
82
83class JsonFacade(object):
84
85 def __init__(self, writer):
86 self.writer = writer
87 if hasattr(writer, "reader_thread"):
88 writer.reader_thread.accept_xml_messages = False
89 self._all_json_messages_found = []
90 self._sent_launch_or_attach = False
91
92 def mark_messages(self, expected_class, accept_message=lambda obj: True):
93 ret = []
94 for message_with_mark in self._all_json_messages_found:
95 if not message_with_mark.marked:
96 if isinstance(message_with_mark.msg, expected_class):
97 if accept_message(message_with_mark.msg):
98 message_with_mark.marked = True
99 ret.append(message_with_mark.msg)
100 return ret
101
102 def wait_for_json_message(self, expected_class, accept_message=lambda obj: True):
103
104 def accept_json_message(msg):
105 if msg.startswith("{"):
106 decoded_msg = from_json(msg)
107
108 self._all_json_messages_found.append(_MessageWithMark(decoded_msg))
109
110 if isinstance(decoded_msg, expected_class):
111 if accept_message(decoded_msg):
112 return True
113 return False
114
115 msg = self.writer.wait_for_message(accept_json_message, unquote_msg=False, expect_xml=False)
116 return from_json(msg)
117
118 def build_accept_response(self, request, response_class=None):
119 if response_class is None:
120 response_class = pydevd_base_schema.get_response_class(request)
121
122 def accept_message(response):
123 if isinstance(request, dict):
124 if response.request_seq == request["seq"]:
125 return True
126 else:
127 if response.request_seq == request.seq:
128 return True
129 return False
130
131 return (response_class, Response), accept_message
132
133 def wait_for_response(self, request, response_class=None):
134 expected_classes, accept_message = self.build_accept_response(request, response_class)
135 return self.wait_for_json_message(expected_classes, accept_message)
136
137 def write_request(self, request):
138 seq = self.writer.next_seq()
139 if isinstance(request, dict):
140 request["seq"] = seq

Calls

no outgoing calls