Preparations for 0.28.10

This commit is contained in:
Matthias Koefferlein 2023-07-05 18:53:45 +02:00
parent 6b1aa882eb
commit 2ed27ff937
6 changed files with 105 additions and 55 deletions

View File

@ -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): 0.28.9 (2023-06-10):
* Enhancement: %GITHUB%/issues/1281 Layout diff can ignore shape or instance duplicates * Enhancement: %GITHUB%/issues/1281 Layout diff can ignore shape or instance duplicates
* Bugfix: %GITHUB%/issues/1393 GDS2Text format not supported in Python module * 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 * Bugfix: GDS2 reader should not segfault on certain broken files
* Enhancement: performance improvement of hierarchical XOR in certain cases * Enhancement: performance improvement of hierarchical XOR in certain cases
* Enhancement: New methods * Enhancement: New methods
* Layout#copy_layer, Layout#move_layer and Layout#clear_layer with shape type selector - Layout#copy_layer, Layout#move_layer and Layout#clear_layer with shape type selector
* Shapes#clear with shape type selector - Shapes#clear with shape type selector
0.28.8 (2023-05-23): 0.28.8 (2023-05-23):
* Enhancement: %GITHUB%/issues/1314 Storing (arbitrary) data in metadata * Enhancement: %GITHUB%/issues/1314 Storing (arbitrary) data in metadata

View File

@ -1,3 +1,10 @@
klayout (0.28.10-1) unstable; urgency=low
* New features and bugfixes
- See changelog
-- Matthias Köfferlein <matthias@koefferlein.de> Wed, 05 Jul 2023 18:37:13 +0200
klayout (0.28.9-1) unstable; urgency=low klayout (0.28.9-1) unstable; urgency=low
* New features and bugfixes * New features and bugfixes

17
scripts/regenerate_stubs.sh Executable file
View File

@ -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

View File

@ -11271,7 +11271,8 @@ class DText:
Setter: Setter:
@brief Sets the horizontal alignment @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 size: float
r""" r"""
@ -12880,6 +12881,19 @@ class DeepShapeStore:
Setter: Setter:
@brief Sets the number of threads to allocate for the hierarchical processor @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 @classmethod
def instance_count(cls) -> int: def instance_count(cls) -> int:
r""" r"""
@ -28707,12 +28721,12 @@ class LayoutToNetlist:
@overload @overload
def __eq__(self, other: object) -> bool: def __eq__(self, other: object) -> bool:
r""" r"""
@brief Compares an enum with an integer value @brief Compares two enums
""" """
@overload @overload
def __eq__(self, other: object) -> bool: def __eq__(self, other: object) -> bool:
r""" r"""
@brief Compares two enums @brief Compares an enum with an integer value
""" """
@overload @overload
def __init__(self, i: int) -> None: def __init__(self, i: int) -> None:
@ -28737,12 +28751,12 @@ class LayoutToNetlist:
@overload @overload
def __ne__(self, other: object) -> bool: def __ne__(self, other: object) -> bool:
r""" r"""
@brief Compares an enum with an integer for inequality @brief Compares two enums for inequality
""" """
@overload @overload
def __ne__(self, other: object) -> bool: def __ne__(self, other: object) -> bool:
r""" r"""
@brief Compares two enums for inequality @brief Compares an enum with an integer for inequality
""" """
def __repr__(self) -> str: def __repr__(self) -> str:
r""" r"""
@ -33581,16 +33595,16 @@ class Netlist:
@overload @overload
def circuit_by_cell_index(self, cell_index: int) -> Circuit: def circuit_by_cell_index(self, cell_index: int) -> Circuit:
r""" 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. 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 @overload
def circuit_by_cell_index(self, cell_index: int) -> Circuit: def circuit_by_cell_index(self, cell_index: int) -> Circuit:
r""" 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. 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 @overload
def circuit_by_name(self, name: str) -> Circuit: def circuit_by_name(self, name: str) -> Circuit:
@ -33677,12 +33691,6 @@ class Netlist:
This constness variant has been introduced in version 0.26.8. This constness variant has been introduced in version 0.26.8.
""" """
@overload @overload
def each_circuit_bottom_up(self) -> Iterator[Circuit]:
r"""
@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.
"""
@overload
def each_circuit_bottom_up(self) -> Iterator[Circuit]: def each_circuit_bottom_up(self) -> Iterator[Circuit]:
r""" r"""
@brief Iterates over the circuits bottom-up (const version) @brief Iterates over the circuits bottom-up (const version)
@ -33691,10 +33699,10 @@ class Netlist:
This constness variant has been introduced in version 0.26.8. This constness variant has been introduced in version 0.26.8.
""" """
@overload @overload
def each_circuit_top_down(self) -> Iterator[Circuit]: def each_circuit_bottom_up(self) -> Iterator[Circuit]:
r""" r"""
@brief Iterates over the circuits top-down @brief Iterates over the circuits bottom-up
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. 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.
""" """
@overload @overload
def each_circuit_top_down(self) -> Iterator[Circuit]: def each_circuit_top_down(self) -> Iterator[Circuit]:
@ -33705,6 +33713,12 @@ class Netlist:
This constness variant has been introduced in version 0.26.8. This constness variant has been introduced in version 0.26.8.
""" """
@overload @overload
def each_circuit_top_down(self) -> Iterator[Circuit]:
r"""
@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.
"""
@overload
def each_device_class(self) -> Iterator[DeviceClass]: def each_device_class(self) -> Iterator[DeviceClass]:
r""" r"""
@brief Iterates over the device classes of the netlist @brief Iterates over the device classes of the netlist
@ -36294,12 +36308,12 @@ class PCellParameterState:
@overload @overload
def __ne__(self, other: object) -> bool: def __ne__(self, other: object) -> bool:
r""" r"""
@brief Compares an enum with an integer for inequality @brief Compares two enums for inequality
""" """
@overload @overload
def __ne__(self, other: object) -> bool: def __ne__(self, other: object) -> bool:
r""" r"""
@brief Compares two enums for inequality @brief Compares an enum with an integer for inequality
""" """
def __repr__(self) -> str: def __repr__(self) -> str:
r""" r"""
@ -39071,12 +39085,12 @@ class PropertyConstraint:
@overload @overload
def __eq__(self, other: object) -> bool: def __eq__(self, other: object) -> bool:
r""" r"""
@brief Compares an enum with an integer value @brief Compares two enums
""" """
@overload @overload
def __eq__(self, other: object) -> bool: def __eq__(self, other: object) -> bool:
r""" r"""
@brief Compares two enums @brief Compares an enum with an integer value
""" """
@overload @overload
def __init__(self, i: int) -> None: def __init__(self, i: int) -> None:
@ -39101,12 +39115,12 @@ class PropertyConstraint:
@overload @overload
def __ne__(self, other: object) -> bool: def __ne__(self, other: object) -> bool:
r""" r"""
@brief Compares two enums for inequality @brief Compares an enum with an integer for inequality
""" """
@overload @overload
def __ne__(self, other: object) -> bool: def __ne__(self, other: object) -> bool:
r""" r"""
@brief Compares an enum with an integer for inequality @brief Compares two enums for inequality
""" """
def __repr__(self) -> str: def __repr__(self) -> str:
r""" r"""
@ -40539,12 +40553,12 @@ class Region(ShapeCollection):
@overload @overload
def __eq__(self, other: object) -> bool: def __eq__(self, other: object) -> bool:
r""" r"""
@brief Compares two enums @brief Compares an enum with an integer value
""" """
@overload @overload
def __eq__(self, other: object) -> bool: def __eq__(self, other: object) -> bool:
r""" r"""
@brief Compares an enum with an integer value @brief Compares two enums
""" """
@overload @overload
def __init__(self, i: int) -> None: def __init__(self, i: int) -> None:
@ -40645,12 +40659,12 @@ class Region(ShapeCollection):
@overload @overload
def __eq__(self, other: object) -> bool: def __eq__(self, other: object) -> bool:
r""" r"""
@brief Compares two enums @brief Compares an enum with an integer value
""" """
@overload @overload
def __eq__(self, other: object) -> bool: def __eq__(self, other: object) -> bool:
r""" r"""
@brief Compares an enum with an integer value @brief Compares two enums
""" """
@overload @overload
def __init__(self, i: int) -> None: 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. Starting with version 0.23, this method returns nil, if the shape does not represent a path.
Setter: Setter:
@brief Replaces the shape by the given path (in micrometer units) @brief Replaces the shape by the given path object
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. 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 path_bgnext: int
r""" 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. 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: Setter:
@brief Replaces the shape by the given polygon object @brief Replaces the shape by the given polygon (in micrometer units)
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. 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.
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.22. This method has been introduced in version 0.25.
""" """
prop_id: int prop_id: int
r""" 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. 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: Setter:
@brief Replaces the shape by the given simple polygon (in micrometer units) @brief Replaces the shape by the given simple polygon object
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. 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 text: Any
r""" 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. This is NOT the circuit which is referenced. For getting the circuit that the subcircuit references, use \circuit_ref.
""" """
@overload @overload
def circuit_ref(self) -> Circuit:
r"""
@brief Gets the circuit referenced by the subcircuit.
"""
@overload
def circuit_ref(self) -> Circuit: def circuit_ref(self) -> Circuit:
r""" r"""
@brief Gets the circuit referenced by the subcircuit (non-const version). @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 This constness variant has been introduced in version 0.26.8
""" """
@overload @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: def connect_pin(self, pin: Pin, net: Net) -> None:
r""" r"""
@brief Connects the given pin to the specified net. @brief Connects the given pin to the specified net.
@ -48520,7 +48535,8 @@ class Text:
Setter: Setter:
@brief Sets the horizontal alignment @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 size: int
r""" r"""
@ -48556,7 +48572,8 @@ class Text:
Setter: Setter:
@brief Sets the vertical alignment @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 x: int
r""" r"""
@ -51592,12 +51609,12 @@ class VAlign:
@overload @overload
def __eq__(self, other: object) -> bool: def __eq__(self, other: object) -> bool:
r""" r"""
@brief Compares two enums @brief Compares an enum with an integer value
""" """
@overload @overload
def __eq__(self, other: object) -> bool: def __eq__(self, other: object) -> bool:
r""" r"""
@brief Compares an enum with an integer value @brief Compares two enums
""" """
@overload @overload
def __init__(self, i: int) -> None: def __init__(self, i: int) -> None:

View File

@ -7230,12 +7230,12 @@ class Macro:
@overload @overload
def __ne__(self, other: object) -> bool: def __ne__(self, other: object) -> bool:
r""" r"""
@brief Compares two enums for inequality @brief Compares an enum with an integer for inequality
""" """
@overload @overload
def __ne__(self, other: object) -> bool: def __ne__(self, other: object) -> bool:
r""" r"""
@brief Compares an enum with an integer for inequality @brief Compares two enums for inequality
""" """
def __repr__(self) -> str: def __repr__(self) -> str:
r""" r"""
@ -7327,12 +7327,12 @@ class Macro:
@overload @overload
def __ne__(self, other: object) -> bool: def __ne__(self, other: object) -> bool:
r""" r"""
@brief Compares two enums for inequality @brief Compares an enum with an integer for inequality
""" """
@overload @overload
def __ne__(self, other: object) -> bool: def __ne__(self, other: object) -> bool:
r""" r"""
@brief Compares an enum with an integer for inequality @brief Compares two enums for inequality
""" """
def __repr__(self) -> str: def __repr__(self) -> str:
r""" r"""

View File

@ -2,10 +2,10 @@
# This script is sourced to define the main version parameters # This script is sourced to define the main version parameters
# The main version # The main version
KLAYOUT_VERSION="0.28.9" KLAYOUT_VERSION="0.28.10"
# The version used for PyPI (don't use variables here!) # 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 # The build date
KLAYOUT_VERSION_DATE=$(date "+%Y-%m-%d") KLAYOUT_VERSION_DATE=$(date "+%Y-%m-%d")