diff --git a/masque/builder/pather_mixin.py b/masque/builder/pather_mixin.py index 5f46aeb..0afd132 100644 --- a/masque/builder/pather_mixin.py +++ b/masque/builder/pather_mixin.py @@ -528,6 +528,25 @@ class PortPather: self.pather.mpath(self.ports, *args, **kwargs) return self + def path_into(self, *args, **kwargs) -> Self: + """ Path_into, using the current port as the source """ + if len(self.ports) > 1: + raise BuildError(f'Unable use implicit path_into() with {len(self.ports)} (>1) ports.') + self.pather.path_into(self.ports[0], *args, **kwargs) + if thru is not None: + self.rename_from(thru) + return self + + def path_from(self, *args, **kwargs) -> Self: + """ Path_into, using the current port as the destination """ + if len(self.ports) > 1: + raise BuildError(f'Unable use implicit path_from() with {len(self.ports)} (>1) ports.') + thru = kwargs.pop('thru', None) + self.pather.path_into(args[0], self.ports[0], *args[1:], **kwargs) + if thru is not None: + self.rename_from(thru) + return self + def plug( self, other: Abstract | str, @@ -543,7 +562,7 @@ class PortPather: def plugged(self, other_port: str) -> Self: if len(self.ports) > 1: - raise BuildError(f'Unable use implicit plugged() with {len(self.ports)} ports.') + raise BuildError(f'Unable use implicit plugged() with {len(self.ports)} (>1) ports.') self.pather.plugged({self.ports[0]: other_port}) return self @@ -636,12 +655,10 @@ class PortPather: return self @overload - def delete(self, name: None) -> None: - ... + def delete(self, name: None) -> None: ... @overload - def delete(self, name: str) -> Self: - ... + def delete(self, name: str) -> Self: ... def delete(self, name: str | None = None) -> Self | None: if name is None: