Why points are connected to self.
(self, points: list[Point], level: int = None)
| 334 | return Direction() |
| 335 | |
| 336 | def why_coll(self, points: list[Point], level: int = None) -> list[Any]: |
| 337 | """Why points are connected to self.""" |
| 338 | level = level or float('inf') |
| 339 | |
| 340 | groups = [] |
| 341 | for p in points: |
| 342 | group = [ |
| 343 | l |
| 344 | for l, d in self.edge_graph[p].items() |
| 345 | if d is None or d.level < level |
| 346 | ] |
| 347 | if not group: |
| 348 | return None |
| 349 | groups.append(group) |
| 350 | |
| 351 | min_deps = None |
| 352 | for line in groups[0]: |
| 353 | deps, others = line.why_equal_groups(groups[1:], level) |
| 354 | if deps is None: |
| 355 | continue |
| 356 | for p, o in zip(points, [line] + others): |
| 357 | deps.append(self.edge_graph[p][o]) |
| 358 | if min_deps is None or len(deps) < len(min_deps): |
| 359 | min_deps = deps |
| 360 | |
| 361 | if min_deps is None: |
| 362 | return None |
| 363 | return [d for d in min_deps if d is not None] |
| 364 | |
| 365 | |
| 366 | class Segment(Node): |
no test coverage detected