Source code for gdsfactory.components.extend_ports_list

from __future__ import annotations

from gdsfactory.cell import cell
from gdsfactory.component import Component
from gdsfactory.port import Port
from gdsfactory.typings import ComponentSpec, Strs


[docs] @cell def extend_ports_list( ports: list[Port], extension: ComponentSpec, extension_port_name: str | None = None, ignore_ports: Strs | None = None, ) -> Component: """Returns a component with the extensions for a list of ports. Args: ports: list of ports. extension: function for extension. extension_port_name: to connect extension. ignore_ports: list of port names to ignore. """ from gdsfactory.pdk import get_component c = Component() extension = get_component(extension) extension_port_name = extension_port_name or list(extension.ports.keys())[0] ignore_ports = ignore_ports or () for i, port in enumerate(ports): extension_ref = c << extension extension_ref.connect(extension_port_name, port) for port_name, port in extension_ref.ports.items(): if port_name not in ignore_ports: c.add_port(f"{i}_{port_name}", port=port) c.auto_rename_ports() return c
if __name__ == "__main__": import gdsfactory as gf c = gf.Component("taper_extended") c0 = gf.components.taper(width2=10) e = extend_ports_list(c0.get_ports_list(), extension="straight") c << c0 c << e c.show(show_ports=True) # c = gf.Component("mmi_extended") # m = gf.components.mmi1x2() # t = partial(gf.components.taper, width2=0.1) # e = extend_ports_list( # ports=m.get_ports_list(), extension=t, extension_port_name="o1" # ) # c << m # c << e # c.show(show_ports=True)