- add electrical routes to routing_strategy
[5.2.2](https://github.com/gdsfactory/gdsfactory/pull/296)
- add `get_name_from_label` to `add_ports_from_labels`
- add optional `layer_label` to `add_ports_from_labels`
- remove `.` in clean_name, before it was renaming `.` to `p`
[5.2.1](https://github.com/gdsfactory/gdsfactory/pull/289)
- [PR](https://github.com/gdsfactory/gdsfactory/pull/289)
- rename cladding_offsets as bbox_offsets
- copy_child_info propagates polarization and wavelength info
- make sure 0 or None is 0 in `xmin` or `xmax` keys from component_from_yaml
[5.2.0](https://github.com/gdsfactory/gdsfactory/pull/287)
- rename `contact` to `via_stack`
[5.1.2](https://github.com/gdsfactory/gdsfactory/pull/286)
- `Component.remove_layers` also removes layers from paths
- add `bbox_layers` and `bbox_offsets` to `taper`
[5.1.1](https://github.com/gdsfactory/gdsfactory/pull/285)
- add `gf yaml webapp -d` or `gf yaml webapp --debug` for debug mode
- fix [get_netlist for component arrays issue](https://github.com/gdsfactory/gdsfactory/issues/263)
[5.1.0](https://github.com/gdsfactory/gdsfactory/pull/284)
- improve shear angle algorithm to work with waveguides at any angle [PR](https://github.com/gdsfactory/gdsfactory/pull/283)
- add examples in notebooks
- add tests
- add shear_angle attribute to Port
- Update test_shear_face_path.py
- remove default port width, layer and center
[5.0.7](https://github.com/gdsfactory/gdsfactory/pull/281)
- define layermap as pydantic BaseModel
- Sometimes it is desirable to have a waveguide with a shear face (i.e. the port face is not orthogonal to the propagation direction, but slightly slanted). [PR](https://github.com/gdsfactory/gdsfactory/pull/280) adds the capability to extrude basic waveguides with shear faces.
[5.0.6](https://github.com/gdsfactory/gdsfactory/pull/279)
- fix set active PDK on component_from_yaml
[5.0.5](https://github.com/gdsfactory/gdsfactory/pull/278)
- implements `get_active_pdk()` and `set_active_pdk()` functions to avoid side-effects of using ACTIVE_PDK global variable in different scopes. Renames `ACTIVE_PDK` to `_ACTIVE_PDK` to make it private, and instead promotes `get_active_pdk()`
- fixes instances where cross_section was specified and/or used as a factory rather than CrossSectionSpec
- fixes cases where cross_section was directly called as a function rather than invoking get_cross_section(cross_section) pattern
- Section.layer type needs to be the Union of Layer and Tuple[Layer,Layer] as long as we use the current implementation of Transition
- when getting instances in read_yaml(), uses the dictionary ComponentSpec format to get each component rather than using component name and `**settings` the old method causes an error for container-style components which have an argument named component
- for CrossSection class, makes info non-optional and by default instantiates empty dictionary. also replaces default values for mutable types with factories creating empty mutable types
- for cross_section() function, removes unused args
[5.0.4](https://github.com/gdsfactory/gdsfactory/pull/277)
- fix cross_section from get_route_from_steps
- replace CrossSectionFactory to CrossSectionSpec
- replace ComponentFactory to ComponentSpec
[5.0.3](https://github.com/gdsfactory/gdsfactory/pull/276)
- fix mmi1x2 and 2x2 definition to use waveguide cross_sections
[5.0.2](https://github.com/gdsfactory/gdsfactory/pull/275)
- get_cells and get_component_factories work with module and list of modules
- add `gf.get_cells` and `gf.get_cross_section_factories`
- get_component and get_cross_section accepts also omegaconf.DictConfig
- add pack_doe and pack_doe_grid to containers
- add gf.get_cell, and enable partials
[5.0.1](https://github.com/gdsfactory/gdsfactory/pull/274)
- fix bends bbox
[5.0.0](https://github.com/gdsfactory/gdsfactory/pull/273)
- refactor cross_section. I recommend reviewing the Layout Tutorial -> Paths and CrossSections
- include routing parameters (width, layer)
- rename ports to port_names
- make it immutable and remove add method
- raise Error when creating a foreign key
- rename `ports` to `port_names`
- refactor Section
- make it immutable
- raise Error when creating a foreign key
- add gf.Pdk
- add gf.get_component(component_spec) returns a Component from the active PDK using the registered Cells
- add gf.get_cross_section(cross_section_spec) returns a CrossSection from the active PDK using the registered CrossSectionFactory
- add Pdk.register_cells()
- add Pdk.register_cross_sections()
- add gf.ACTIVE_PDK
- delete klayout autoplacer code. Use gf.read.from_yaml instead.
- delete YAML placer code. Use gf.read.from_yaml instead.
[4.7.3](https://github.com/gdsfactory/gdsfactory/pull/272)
- add `has_routing_info` to CrossSection to ensure it has routing information
- rename cross_section_factory to cross_sections
- rename component_factory to cells
- add ComponentSpec, CrossSectionSpec, gf.get_component, gf.get_cross_section, gf.Pdk
[4.7.2](https://github.com/gdsfactory/gdsfactory/pull/270)
- add vscode plugin to docs
- get_bundle accepts also cross_section as well as cross_section_factory
- rename gethash to text_lines
- simplify component_factory definition
- simplify cross_section_factory definition
[4.7.1](https://github.com/gdsfactory/gdsfactory/pull/265)
- `gf yaml build` can read from stdin
[4.7.0](https://github.com/gdsfactory/gdsfactory/pull/264)
- convert LayerStack from dict to BaseModel, which accepts a single layers: Dict[str, LayerLevel]
- add gf.get_factories to get_component_factories and get_module_factories
- add `gf yaml build filepath` where filepath is a YAML path that you want to show in klayout
- update to phidl 1.6.1
[4.6.3](https://github.com/gdsfactory/gdsfactory/pull/262)
- pack_doe and pack_doe_grid have a function argument
- fix netlist.json schema for instances to have pack kwarg
- add `gf yaml watch` CLI command to watch a YAML file