Why points are connected to self.
(self, points: list[Point], level: int = None)
| 373 | """Node of type Circle.""" |
| 374 | |
| 375 | def why_cyclic(self, points: list[Point], level: int = None) -> list[Any]: |
| 376 | """Why points are connected to self.""" |
| 377 | level = level or float('inf') |
| 378 | |
| 379 | groups = [] |
| 380 | for p in points: |
| 381 | group = [ |
| 382 | c |
| 383 | for c, d in self.edge_graph[p].items() |
| 384 | if d is None or d.level < level |
| 385 | ] |
| 386 | if not group: |
| 387 | return None |
| 388 | groups.append(group) |
| 389 | |
| 390 | min_deps = None |
| 391 | for circle in groups[0]: |
| 392 | deps, others = circle.why_equal_groups(groups[1:], level) |
| 393 | if deps is None: |
| 394 | continue |
| 395 | for p, o in zip(points, [circle] + others): |
| 396 | deps.append(self.edge_graph[p][o]) |
| 397 | |
| 398 | if min_deps is None or len(deps) < len(min_deps): |
| 399 | min_deps = deps |
| 400 | |
| 401 | if min_deps is None: |
| 402 | return None |
| 403 | return [d for d in min_deps if d is not None] |
| 404 | |
| 405 | |
| 406 | def why_equal(x: Node, y: Node, level: int = None) -> list[Any]: |
no test coverage detected