in scripts/install_deps.py [0:0]
def resolve_dependencies(groups: List[str], optional_deps: Dict[str, List[str]]) -> List[str]:
"""Resolve dependencies, including references to other groups."""
resolved = set()
stack = list(groups) # Stack to process groups
while stack:
group = stack.pop()
if group not in optional_deps:
raise ValueError(
f"Group '{group}' does not exist in optional dependencies. Optional groups: {', '.join(optional_deps)}"
)
for dep in optional_deps[group]:
if dep.startswith("arctic_training["): # Handle group references
ref_group = dep.split("[")[1].rstrip("]")
stack.append(ref_group)
else:
resolved.add(dep)
return sorted(resolved) # Return sorted list for consistency