(val, nodes_dict, edges)
| 464 | |
| 465 | |
| 466 | def parse_element(val, nodes_dict, edges): |
| 467 | if val is None: |
| 468 | return |
| 469 | |
| 470 | # If it is a Path |
| 471 | if hasattr(val, 'nodes') and hasattr(val, 'relationships'): |
| 472 | for n in val.nodes: |
| 473 | parse_element(n, nodes_dict, edges) |
| 474 | for r in val.relationships: |
| 475 | parse_element(r, nodes_dict, edges) |
| 476 | return |
| 477 | |
| 478 | type_name = type(val).__name__ |
| 479 | |
| 480 | if type_name in ('Node', 'KuzuNode') or (isinstance(val, dict) and ('_label' in val or 'labels' in val) and not any(k in val for k in ('_src', '_dst', 'src_node', 'dest_node'))): |
| 481 | parse_node(val, nodes_dict) |
| 482 | elif type_name in ('Relationship', 'KuzuRelationship') or (isinstance(val, dict) and any(k in val for k in ('_src', '_dst', 'src_node', 'dest_node'))): |
| 483 | parse_rel(val, edges) |
| 484 | elif isinstance(val, (list, tuple)): |
| 485 | for item in val: |
| 486 | parse_element(item, nodes_dict, edges) |
| 487 | |
| 488 | |
| 489 | class AIQueryRequest(BaseModel): |
no test coverage detected