| 55 | |
| 56 | |
| 57 | def _enrich_tree(rich_tree: Tree, tree: dict): |
| 58 | for key, value in tree.items(): |
| 59 | if key == CHILDREN_KEY: |
| 60 | continue |
| 61 | if isinstance(key, int): |
| 62 | key_name = f"[{key}]" |
| 63 | else: |
| 64 | key_name = key |
| 65 | subtree = rich_tree.add( |
| 66 | f"[{TREE_NODE_STYLE}]{escape(key_name)}[/{TREE_NODE_STYLE}]" |
| 67 | ) |
| 68 | _enrich_tree(subtree, value) |
| 69 | children = tree.get(CHILDREN_KEY, None) |
| 70 | if children is not None: |
| 71 | for error in children: |
| 72 | items = [] |
| 73 | for key in ("type", "msg", "url"): |
| 74 | if key not in error: |
| 75 | continue |
| 76 | items.append( |
| 77 | f"[{TREE_LEAF_ATTR_STYLE}]{escape(key)}[/{TREE_LEAF_ATTR_STYLE}]", |
| 78 | ) |
| 79 | label = escape(error[key]) |
| 80 | items.append( |
| 81 | f"[{TREE_LEAF_VALUE_STYLE}]{label}[/{TREE_LEAF_VALUE_STYLE}]", |
| 82 | ) |
| 83 | rich_tree.add(" ".join(items)) |
| 84 | |
| 85 | |
| 86 | def enrich_tree(tree: dict) -> Tree: |