From 2ed27ff937d786c6c965c5e1fde3db8abda1d307 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Wed, 5 Jul 2023 18:53:45 +0200 Subject: [PATCH] Preparations for 0.28.10 --- Changelog | 13 ++- Changelog.Debian | 7 ++ scripts/regenerate_stubs.sh | 17 +++ src/pymod/distutils_src/klayout/dbcore.pyi | 109 +++++++++++--------- src/pymod/distutils_src/klayout/laycore.pyi | 8 +- version.sh | 4 +- 6 files changed, 104 insertions(+), 54 deletions(-) create mode 100755 scripts/regenerate_stubs.sh diff --git a/Changelog b/Changelog index 9894d350c2..95dc314f7f 100644 --- a/Changelog +++ b/Changelog @@ -1,3 +1,12 @@ +0.28.10 (2023-07-05): +* Bugfix: %GITHUB%/issues/1397 LayoutMetaInfo serialization/deserialization problem +* Bugfix: %GITHUB%/issues/1404 Better support for editing mode in Qt-less LayoutView +* Bugfix: %GITHUB%/issues/1407 Clip functions do not support polygons with holes +* Bugfix: %GITHUB%/issues/1409 Text edit issue (internal error) +* Enhancements: + - Made 'time' parameter optional for MainWindow#message + - strmxor performance with --deep enhanced + 0.28.9 (2023-06-10): * Enhancement: %GITHUB%/issues/1281 Layout diff can ignore shape or instance duplicates * Bugfix: %GITHUB%/issues/1393 GDS2Text format not supported in Python module @@ -9,8 +18,8 @@ * Bugfix: GDS2 reader should not segfault on certain broken files * Enhancement: performance improvement of hierarchical XOR in certain cases * Enhancement: New methods - * Layout#copy_layer, Layout#move_layer and Layout#clear_layer with shape type selector - * Shapes#clear with shape type selector + - Layout#copy_layer, Layout#move_layer and Layout#clear_layer with shape type selector + - Shapes#clear with shape type selector 0.28.8 (2023-05-23): * Enhancement: %GITHUB%/issues/1314 Storing (arbitrary) data in metadata diff --git a/Changelog.Debian b/Changelog.Debian index 4e4c1e632a..2460653774 100644 --- a/Changelog.Debian +++ b/Changelog.Debian @@ -1,3 +1,10 @@ +klayout (0.28.10-1) unstable; urgency=low + + * New features and bugfixes + - See changelog + + -- Matthias Köfferlein Wed, 05 Jul 2023 18:37:13 +0200 + klayout (0.28.9-1) unstable; urgency=low * New features and bugfixes diff --git a/scripts/regenerate_stubs.sh b/scripts/regenerate_stubs.sh new file mode 100755 index 0000000000..644f594c82 --- /dev/null +++ b/scripts/regenerate_stubs.sh @@ -0,0 +1,17 @@ +#!/bin/bash -e + +# This script regenerates the Python stubs from the sources + +# clean up +rm -rf build dist + +python3 setup.py build +python3 setup.py bdist_wheel +python3 -m venv create python3-venv-make_stubs + +. python3-venv-make_stubs/bin/activate + +pip3 install ./dist/*.whl + +./scripts/make_stubs.sh + diff --git a/src/pymod/distutils_src/klayout/dbcore.pyi b/src/pymod/distutils_src/klayout/dbcore.pyi index b950a6baea..7bd4429f08 100644 --- a/src/pymod/distutils_src/klayout/dbcore.pyi +++ b/src/pymod/distutils_src/klayout/dbcore.pyi @@ -11271,7 +11271,8 @@ class DText: Setter: @brief Sets the horizontal alignment - This is the version accepting integer values. It's provided for backward compatibility. + This property specifies how the text is aligned relative to the anchor point. + This property has been introduced in version 0.22 and extended to enums in 0.28. """ size: float r""" @@ -12880,6 +12881,19 @@ class DeepShapeStore: Setter: @brief Sets the number of threads to allocate for the hierarchical processor """ + wants_all_cells: bool + r""" + Getter: + @brief Gets a flag wether to copy the full hierarchy for the working layouts + This attribute has been introduced in version 0.28.10. + Setter: + @brief Sets a flag wether to copy the full hierarchy for the working layouts + + The DeepShapeStore object keeps a copy of the original hierarchy internally for the working layouts. + By default, this hierarchy is mapping only non-empty cells. While the operations proceed, more cells may need to be added. This conservative approach saves some memory, but the update operations may reduce overall performance. Setting this flag to 'true' switches to a mode where the full hierarchy is copied always. This will take more memory but may save CPU time. + + This attribute has been introduced in version 0.28.10. + """ @classmethod def instance_count(cls) -> int: r""" @@ -28707,12 +28721,12 @@ class LayoutToNetlist: @overload def __eq__(self, other: object) -> bool: r""" - @brief Compares an enum with an integer value + @brief Compares two enums """ @overload def __eq__(self, other: object) -> bool: r""" - @brief Compares two enums + @brief Compares an enum with an integer value """ @overload def __init__(self, i: int) -> None: @@ -28737,12 +28751,12 @@ class LayoutToNetlist: @overload def __ne__(self, other: object) -> bool: r""" - @brief Compares an enum with an integer for inequality + @brief Compares two enums for inequality """ @overload def __ne__(self, other: object) -> bool: r""" - @brief Compares two enums for inequality + @brief Compares an enum with an integer for inequality """ def __repr__(self) -> str: r""" @@ -33581,16 +33595,16 @@ class Netlist: @overload def circuit_by_cell_index(self, cell_index: int) -> Circuit: r""" - @brief Gets the circuit object for a given cell index (const version). + @brief Gets the circuit object for a given cell index. If the cell index is not valid or no circuit is registered with this index, nil is returned. - - This constness variant has been introduced in version 0.26.8. """ @overload def circuit_by_cell_index(self, cell_index: int) -> Circuit: r""" - @brief Gets the circuit object for a given cell index. + @brief Gets the circuit object for a given cell index (const version). If the cell index is not valid or no circuit is registered with this index, nil is returned. + + This constness variant has been introduced in version 0.26.8. """ @overload def circuit_by_name(self, name: str) -> Circuit: @@ -33679,30 +33693,30 @@ class Netlist: @overload def each_circuit_bottom_up(self) -> Iterator[Circuit]: r""" - @brief Iterates over the circuits bottom-up + @brief Iterates over the circuits bottom-up (const version) Iterating bottom-up means the parent circuits come after the child circuits. This is the basically the reverse order as delivered by \each_circuit_top_down. + + This constness variant has been introduced in version 0.26.8. """ @overload def each_circuit_bottom_up(self) -> Iterator[Circuit]: r""" - @brief Iterates over the circuits bottom-up (const version) + @brief Iterates over the circuits bottom-up Iterating bottom-up means the parent circuits come after the child circuits. This is the basically the reverse order as delivered by \each_circuit_top_down. - - This constness variant has been introduced in version 0.26.8. """ @overload def each_circuit_top_down(self) -> Iterator[Circuit]: r""" - @brief Iterates over the circuits top-down + @brief Iterates over the circuits top-down (const version) Iterating top-down means the parent circuits come before the child circuits. The first \top_circuit_count circuits are top circuits - i.e. those which are not referenced by other circuits. + + This constness variant has been introduced in version 0.26.8. """ @overload def each_circuit_top_down(self) -> Iterator[Circuit]: r""" - @brief Iterates over the circuits top-down (const version) + @brief Iterates over the circuits top-down Iterating top-down means the parent circuits come before the child circuits. The first \top_circuit_count circuits are top circuits - i.e. those which are not referenced by other circuits. - - This constness variant has been introduced in version 0.26.8. """ @overload def each_device_class(self) -> Iterator[DeviceClass]: @@ -36294,12 +36308,12 @@ class PCellParameterState: @overload def __ne__(self, other: object) -> bool: r""" - @brief Compares an enum with an integer for inequality + @brief Compares two enums for inequality """ @overload def __ne__(self, other: object) -> bool: r""" - @brief Compares two enums for inequality + @brief Compares an enum with an integer for inequality """ def __repr__(self) -> str: r""" @@ -39071,12 +39085,12 @@ class PropertyConstraint: @overload def __eq__(self, other: object) -> bool: r""" - @brief Compares an enum with an integer value + @brief Compares two enums """ @overload def __eq__(self, other: object) -> bool: r""" - @brief Compares two enums + @brief Compares an enum with an integer value """ @overload def __init__(self, i: int) -> None: @@ -39101,12 +39115,12 @@ class PropertyConstraint: @overload def __ne__(self, other: object) -> bool: r""" - @brief Compares two enums for inequality + @brief Compares an enum with an integer for inequality """ @overload def __ne__(self, other: object) -> bool: r""" - @brief Compares an enum with an integer for inequality + @brief Compares two enums for inequality """ def __repr__(self) -> str: r""" @@ -40539,12 +40553,12 @@ class Region(ShapeCollection): @overload def __eq__(self, other: object) -> bool: r""" - @brief Compares two enums + @brief Compares an enum with an integer value """ @overload def __eq__(self, other: object) -> bool: r""" - @brief Compares an enum with an integer value + @brief Compares two enums """ @overload def __init__(self, i: int) -> None: @@ -40645,12 +40659,12 @@ class Region(ShapeCollection): @overload def __eq__(self, other: object) -> bool: r""" - @brief Compares two enums + @brief Compares an enum with an integer value """ @overload def __eq__(self, other: object) -> bool: r""" - @brief Compares an enum with an integer value + @brief Compares two enums """ @overload def __init__(self, i: int) -> None: @@ -44610,10 +44624,11 @@ class Shape: Starting with version 0.23, this method returns nil, if the shape does not represent a path. Setter: - @brief Replaces the shape by the given path (in micrometer units) - This method replaces the shape by the given path, like \path= with a \Path argument does. This version translates the path from micrometer units to database units internally. + @brief Replaces the shape by the given path object + This method replaces the shape by the given path object. This method can only be called for editable layouts. It does not change the user properties of the shape. + Calling this method will invalidate any iterators. It should not be called inside a loop iterating over shapes. - This method has been introduced in version 0.25. + This method has been introduced in version 0.22. """ path_bgnext: int r""" @@ -44721,11 +44736,10 @@ class Shape: Starting with version 0.23, this method returns nil, if the shape does not represent a geometrical primitive that can be converted to a polygon. Setter: - @brief Replaces the shape by the given polygon object - This method replaces the shape by the given polygon object. This method can only be called for editable layouts. It does not change the user properties of the shape. - Calling this method will invalidate any iterators. It should not be called inside a loop iterating over shapes. + @brief Replaces the shape by the given polygon (in micrometer units) + This method replaces the shape by the given polygon, like \polygon= with a \Polygon argument does. This version translates the polygon from micrometer units to database units internally. - This method has been introduced in version 0.22. + This method has been introduced in version 0.25. """ prop_id: int r""" @@ -44764,10 +44778,11 @@ class Shape: Starting with version 0.23, this method returns nil, if the shape does not represent a geometrical primitive that can be converted to a simple polygon. Setter: - @brief Replaces the shape by the given simple polygon (in micrometer units) - This method replaces the shape by the given text, like \simple_polygon= with a \SimplePolygon argument does. This version translates the polygon from micrometer units to database units internally. + @brief Replaces the shape by the given simple polygon object + This method replaces the shape by the given simple polygon object. This method can only be called for editable layouts. It does not change the user properties of the shape. + Calling this method will invalidate any iterators. It should not be called inside a loop iterating over shapes. - This method has been introduced in version 0.25. + This method has been introduced in version 0.22. """ text: Any r""" @@ -47985,11 +48000,6 @@ class SubCircuit(NetlistObject): This is NOT the circuit which is referenced. For getting the circuit that the subcircuit references, use \circuit_ref. """ @overload - def circuit_ref(self) -> Circuit: - r""" - @brief Gets the circuit referenced by the subcircuit. - """ - @overload def circuit_ref(self) -> Circuit: r""" @brief Gets the circuit referenced by the subcircuit (non-const version). @@ -47998,6 +48008,11 @@ class SubCircuit(NetlistObject): This constness variant has been introduced in version 0.26.8 """ @overload + def circuit_ref(self) -> Circuit: + r""" + @brief Gets the circuit referenced by the subcircuit. + """ + @overload def connect_pin(self, pin: Pin, net: Net) -> None: r""" @brief Connects the given pin to the specified net. @@ -48520,7 +48535,8 @@ class Text: Setter: @brief Sets the horizontal alignment - This is the version accepting integer values. It's provided for backward compatibility. + This property specifies how the text is aligned relative to the anchor point. + This property has been introduced in version 0.22 and extended to enums in 0.28. """ size: int r""" @@ -48556,7 +48572,8 @@ class Text: Setter: @brief Sets the vertical alignment - This is the version accepting integer values. It's provided for backward compatibility. + This property specifies how the text is aligned relative to the anchor point. + This property has been introduced in version 0.22 and extended to enums in 0.28. """ x: int r""" @@ -51592,12 +51609,12 @@ class VAlign: @overload def __eq__(self, other: object) -> bool: r""" - @brief Compares two enums + @brief Compares an enum with an integer value """ @overload def __eq__(self, other: object) -> bool: r""" - @brief Compares an enum with an integer value + @brief Compares two enums """ @overload def __init__(self, i: int) -> None: diff --git a/src/pymod/distutils_src/klayout/laycore.pyi b/src/pymod/distutils_src/klayout/laycore.pyi index bd75fa314c..e7e81e9c52 100644 --- a/src/pymod/distutils_src/klayout/laycore.pyi +++ b/src/pymod/distutils_src/klayout/laycore.pyi @@ -7230,12 +7230,12 @@ class Macro: @overload def __ne__(self, other: object) -> bool: r""" - @brief Compares two enums for inequality + @brief Compares an enum with an integer for inequality """ @overload def __ne__(self, other: object) -> bool: r""" - @brief Compares an enum with an integer for inequality + @brief Compares two enums for inequality """ def __repr__(self) -> str: r""" @@ -7327,12 +7327,12 @@ class Macro: @overload def __ne__(self, other: object) -> bool: r""" - @brief Compares two enums for inequality + @brief Compares an enum with an integer for inequality """ @overload def __ne__(self, other: object) -> bool: r""" - @brief Compares an enum with an integer for inequality + @brief Compares two enums for inequality """ def __repr__(self) -> str: r""" diff --git a/version.sh b/version.sh index 74486e9326..37539b8c71 100644 --- a/version.sh +++ b/version.sh @@ -2,10 +2,10 @@ # This script is sourced to define the main version parameters # The main version -KLAYOUT_VERSION="0.28.9" +KLAYOUT_VERSION="0.28.10" # The version used for PyPI (don't use variables here!) -KLAYOUT_PYPI_VERSION="0.28.9-2" +KLAYOUT_PYPI_VERSION="0.28.10" # The build date KLAYOUT_VERSION_DATE=$(date "+%Y-%m-%d")