diff --git a/masque/builder/pather.py b/masque/builder/pather.py index cbf87f4..877cd6d 100644 --- a/masque/builder/pather.py +++ b/masque/builder/pather.py @@ -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