231 def debug_inspect_compact(pb_doc, max_depth=10, _current_depth=0):
232
233 data = MessageToDict(pb_doc)
234
235 def print_attributes(element, depth):
236 indent = " " * depth
237 name = element.get('name', '')
238 elem_type = element.get('type', '')
239 if elem_type:
240 elem_type = f'({elem_type})'
241 attrs = element.get('attributes', [])
242 attrs_preview = ", ".join([f"{attr.get('key', '')}={attr.get('value', '')}" for attr in attrs[:2]])
243 if attrs_preview:
244 attrs_preview = f" [{attrs_preview}]"
245 print(f"{indent}{name} {elem_type}{attrs_preview}")
246
247 def print_element(element, depth):
248 if depth > max_depth:
249 return
250
251 print_attributes(element, depth)
252 children_count = len(element.get('children', []))
253
254
255 for child in element.get('children', []):
256 print_element(child, depth + 1)
257
258 pb_version = pb_doc.schema_version
259 print("Schema Version:", f"{pb_version.major}.{pb_version.minor}.{pb_version.patch}")
260
261 attribs = ", ".join([f"{attr.get('key', '')}={attr.get('value', '')}" for attr in data.get('attributes', [])])
262 print("Document:" + (f" [{attribs}]" if attribs else ""))
263
264 for element in data.get('elements', []):
265 print_element(element, 0)
266
267 return data
268