- Use Qhull as an external dependecy instead of installing it ourselves to avoid conflicts.
Library.remap
andCell.remap
to remap layer and data/text types- Add typing stub
- Add deepcopy support
- Raise an error if not both layer and datatype are specified in
Cell.get_polygons
andReference.get_polygons
. - Correct ordering of path ends in
Library::read_oas()
- Sort
slice
positions when converting from python because the internal implementation expects the coordinates to be sorted
racetrack
bug in inner radius
- Dictionary-like access to library cells by name
len(Library)
returns the number of cells in the libraryReference.cell_name
to directly access a referenced cell's name
RobustPath
accepts width of 0 at the path end
- Build system changes for lower numpy version requirements
- Downgrade the zlib version dependency to support manylinux2014
- Minor documentation improvements
- Segfaults caused by class inheritance in Python
- Segfaults caused by cleanup of incomplete initialization of Python instances
- Reading polygons with extremely large number of vertices
- Integer overflow in boolean operations
GdsWriter
C++ API fix- Properly read zlib path from environment during build
- Ensure polygons are closed when loading GDSII files
- Reference counting in
Reference.apply_repetition
andCell.flatten
- Bug when saving OASIS files with missing references.
Reference.get_polygons
,Reference.get_paths
,Reference.get_labels
Library.rename_cell
Library::rename_cell
andLibrary::replace_cell
in the C++ API
Cell.filter
arguments modified to matchread_gds
.- Changed default tolerance for
read_gds
andread_oas
to be the library's rounding size. Reference::polygons
renamed toReference::get_polygons
in the C++ API.Reference::flexpaths
renamed toReference::get_flexpaths
in the C++ API.Reference::robustpaths
renamed toReference::get_robustpaths
in the C++ API.Reference::labels
renamed toReference::get_labels
in the C++ API.- Removed magnification argument from
Reference::init
andLabel::init
in the C++ API.
- References from raw cells are kept from garbage collection while in use
- Allow assigning to
Reference.x_reflection
from Python - Errors in detection of arrays when exporting GDSII files
Cell.get_paths
not returning all FlexPaths when RobustPaths were present in the cell (thanks @jatoben)- Reference array is no longer transformed into multiple references when element displacement is zero
- Memory leaks in the python wrapper (thanks @jatoben)
- Set separation instead of offset in
FlexPath::init
andRobustPath::init
- Missing flag in OASIS bounding box property
- Bug in bounding box when using explicit repetitions
- Segfault when loading GDSII files with missing cells
- GdsWriter C++ API
- Safer initializers C++ API
Cell.get_polygons
,Cell.get_paths
, andCell.get_labels
return a copy of a cell’s polygons, paths or labels, including references, with the possibility of filtering by layer and typeLibrary.layers_and_datatypes
andLibrary.layers_and_texttypes
return tuples with the layer and data/text types found in the library.gdstk.gds_info
provide information about a GDSII file without fully loading it- Several
FlexPath
andRobustPath
attributes.
- Label transforms in SVG output
- Label styling in SVG output
- Default label magnification when loading a GDSII file
- Bugs when loading some OASIS files
- Bug in OASIS output for some Manhattan geometry.
- Bug fix in Map::del
- Bounding box calculations take all repetitions into account
- Memory leaks
- Removed LAPACK dependency
- The implementation of layer and data/text type for shapes and labels use the type
Tag
in the C++ API - Style arguments renamed in
Cell.write_svg
contour
functionPolygon.transform
to apply a general transformation to the polygon verticesPolygon.contain
tests whether single points are inside the polygonPolygon.contain_all
andPolygon.contain_any
test multiple points with short circuitall_inside
andany_inside
test multiple points against multiple polygons with short circuit- Alternative function interfaces in the C++ API
- Holes in boolean results could lead to incorrect geometry in specific cases
- Bug in boolean operations resulting in self-intersecting polygons
- Bug in boolean operations with clockwise-oriented polygons
- Unsupported records found when loading a library generate a warning, not an error
inside
has changed to use the better interfaces: grouping has been removed, scaling is not necessary, and short-circuit is implemented inall_inside
andany_inside
- Bug in
gdstk::read_oas
andLibrary.read_oas
Library.replace
, used when adding cells with substitution of duplicate cell names- Added pyproject.toml (thanks Ben Gollmer for the fix)
Reference.cell
is now writable
- Bug in Array::insert not increasing the array count
- Argument
precision
inCell.write_svg
controls the maximum number of digits of coordinates in the SVG - Function
gds_timestamp
can be used to query or set the timestamp in a GDSII file - Better error handling in the C++ API and argument validation for the Python wrapper
oas_validate
returnsNone
if the file has no checksum informationLibrary.write_gds
andGdsWriter
accept a timestamp setting
- Bend calculation for
FlexPath
correctly accounts for bending angle to make sure the bend fits - Missing files in the source distribution
Cell.filter
to remove elements by layer and data/text typeCell.convex_hull
andReference.convex_hull
FlexPath.path_spines()
andRobustPath.path_spines()
Library.unit
andLibrary.precision
- Shapes can be sorted in
Cell.write_svg
(sorting works within each cell, references remain on top)
- Bounding box calculations use convex hull for efficiency
- Bounding box and convex hull calculations cache intermediate results for efficiency
Robustpath.parametric
docstring.- Accept
None
as a possible value for arguments in severalRobustPath
methods
- Build system fixes for conda recipe
- Missing constant definition
- Support for OASIS files
- Repetition property for geometric objects, labels and references
- Library and cells can have properties
- Use cmake to properly install library
- More efficient bounding box calculation for rotations multiple of 90°
- Labels are now included in bounding box calculations
- Properties can be general or GDSII-specific. Only the latter are stored in gds files.
- Attribute
gdsii_path
renamed tosimple_path
inFlexPath
andRobustPath
.
- How-tos and C++ examples
Cell.add
andLibrary.add
accept iteratorsMap<T>.has_key
Repetition
class
RawCell
doesn't copy the contents of its input file unless needed- Dependencies for
Cell
andRawCell
are stored in maps, instead of arrays in the C++ API - The
translate
method of polygons and paths accept a sequence of 2 coordinates or a complex
- Incorrect scaling for
FlexPath
whenscale_width = False
- Typo in default SVG background specification
- Negative path extensions are correctly implemented
- Add missing source files to MANIFEST.in
- Remove directory from CMakeLists.txt
- Remove unnecessary dependency from conda
- Initial release
Format based on Keep a Changelog