Known changes and backwards incompatibilities in 2026.03.0

pkg_resources removal

The deprecated pkg_resources package is not distributed anymore with the installer. Older PDKs might rely on this package’s parse_version function to parse version strings. The parse function from the packaging.version package can be used instead.

Dummy fill functions

The functions for dummy filling of a layout or GDSII file based on a Box and a specified density have been enhanced for more flexibility on the dummy filling. Their API has changed, see i3.dummy_fill_layout and i3.dummy_fill_gdsii. The original functions introduced in 2025.12 are available as i3.dummy_fill_layout_box and i3.dummy_fill_gdsii_box. Users using these functions will need to perform a renaming.

To use the original API:

  • dummy_fill_layout: replace with dummy_fill_layout_box.

  • dummy_fill_gdsii: replace with dummy_fill_gdsii_box.

View manager is no longer a weak reference

The manager property of IPKISS views is now stored as a regular reference, not a weak reference. This will only have effect when explicitly referring to the manager property of a view, which normally does not happen with a regular IPKISS usage.

import ipkiss3.all as i3


class MyCell(i3.PCell):
    class Layout(i3.LayoutView):
        def generate(self, layout):
            pass


cell = MyCell(name="Some cell")
lv = cell.Layout()

# 2025.12: <class 'weakref.ReferenceType'>
# 2026.03: <class '__main__.MyCell'>
print(type(lv.manager))

# 2025.12: <class '__main__.MyCell'>
# 2026.03: TypeError: 'MyCell' object is not callable
print(type(lv.manager()))