[Pather] handle empty or duplicate port lists

This commit is contained in:
Jan Petykiewicz 2026-07-12 15:18:00 -07:00
commit 306f0b4c83

View file

@ -159,6 +159,16 @@ class Pather(PortList):
def _route_contexts(self, portspecs: Sequence[str]) -> tuple[RoutePortContext, ...]:
"""Snapshot several ports in request order for bundle planning."""
if not portspecs:
raise BuildError('Routing requires at least one port')
seen: set[str] = set()
duplicates: set[str] = set()
for portspec in portspecs:
if portspec in seen:
duplicates.add(portspec)
seen.add(portspec)
if duplicates:
raise BuildError(f'Routing port names must be unique; got duplicates: {sorted(duplicates)}')
return tuple(self._route_context(portspec) for portspec in portspecs)
@property