(rel, edges)
| 482 | |
| 483 | |
| 484 | def parse_rel(rel, edges): |
| 485 | rid = _get_eid(rel) |
| 486 | if isinstance(rel, dict): |
| 487 | src = _meta(rel, 'src') |
| 488 | if src is None: |
| 489 | src = rel.get('src_node') |
| 490 | dst = _meta(rel, 'dst') |
| 491 | if dst is None: |
| 492 | dst = rel.get('dest_node') |
| 493 | source = _get_eid(src) if src is not None else None |
| 494 | target = _get_eid(dst) if dst is not None else None |
| 495 | rel_type = str(_meta(rel, 'label') or rel.get('relation', rel.get('type', 'RELATED'))).upper() |
| 496 | else: |
| 497 | start_node = None |
| 498 | end_node = None |
| 499 | for src_attr in ['start_node', 'src_node', '_src_node']: |
| 500 | if hasattr(rel, src_attr): |
| 501 | start_node = getattr(rel, src_attr) |
| 502 | break |
| 503 | for dest_attr in ['end_node', 'dest_node', '_dest_node']: |
| 504 | if hasattr(rel, dest_attr): |
| 505 | end_node = getattr(rel, dest_attr) |
| 506 | break |
| 507 | source = _get_eid(start_node) if start_node is not None else None |
| 508 | target = _get_eid(end_node) if end_node is not None else None |
| 509 | rel_type = "RELATED" |
| 510 | for rel_attr in ['type', 'relation', '_relation']: |
| 511 | if hasattr(rel, rel_attr): |
| 512 | rel_type = str(getattr(rel, rel_attr)).upper() |
| 513 | break |
| 514 | |
| 515 | if source and target: |
| 516 | edges.append({ |
| 517 | "id": rid, |
| 518 | "source": source, |
| 519 | "target": target, |
| 520 | "type": rel_type |
| 521 | }) |
| 522 | |
| 523 | |
| 524 | def parse_element(val, nodes_dict, edges): |
no test coverage detected