in scripts/new_ping_metadata_table.py [0:0]
def transform(data: Dict[str, Any]) -> List[Tuple[str, str]]:
"""Transform a JSON Schema into a list of (path, description) pairs."""
# transform must start at a valid node in the schema
assert "properties" in data
# the result set
result = []
# state for breadth first traversal
queue = [([], data["properties"])]
while queue:
prefix, obj = queue.pop()
for key, sub in sorted(obj.items()):
path = prefix + [key]
if sub["type"] == "object":
queue += [(path, sub["properties"])]
else:
result += [(".".join(path), sub.get("description", "N/A"))]
return result