| 618 | |
| 619 | |
| 620 | def _get_dependencies(obj: object) -> set | frozenset: |
| 621 | if _is_dask_future(obj): |
| 622 | return obj.key # type: ignore[attr-defined] |
| 623 | elif isinstance(obj, GraphNode): |
| 624 | return obj.dependencies |
| 625 | elif isinstance(obj, dict): |
| 626 | if not obj: |
| 627 | return _no_deps |
| 628 | return set().union(*map(_get_dependencies, obj.values())) |
| 629 | elif isinstance(obj, (list, tuple, frozenset, set)): |
| 630 | if not obj: |
| 631 | return _no_deps |
| 632 | return set().union(*map(_get_dependencies, obj)) |
| 633 | return _no_deps |
| 634 | |
| 635 | |
| 636 | class Task(GraphNode): |