65466a5986
Force keyword args in more cases
2021-06-18 18:46:05 -07:00
21ef4207df
Enable repetition arg for other Polygon constructors
2021-06-18 18:45:40 -07:00
78a4416f4c
Fix wrap_repeated_shapes
2021-06-15 16:11:55 -07:00
0d733bdc6f
Breaking change: Use string-valued ptypes, with default value 'unk'
2021-06-15 15:23:20 -07:00
44b08a8dae
bump version to 2.5
2021-03-26 10:34:30 -07:00
e2fdd5a347
make klamath the default gdsii reader/writer, and install it automatically
...
python-gdsii code is now under masque.file.python_gdsii
2021-03-26 10:34:02 -07:00
689312cc87
don't include newlines in version string
2021-03-26 10:29:48 -07:00
5b84a436a0
Make flatten() work in-place on all subpatterns (avoid copies and repeated calls). Also fix a bug around identifier generation introduced in a5900f6ad
.
2021-03-22 11:29:50 -07:00
8ad4082f6d
Fix offset complaining if it gets a Vec3
2021-03-08 17:11:33 -08:00
a5900f6ade
BREAKING change shape identifers generated when flattening
2021-03-08 17:10:42 -08:00
db4148a0ff
Don't trash label identifiers
2021-03-08 17:10:42 -08:00
7225fd5715
add traceback to port type warnings
2021-03-08 17:10:42 -08:00
1dc7d5bd56
2-element paths are not polygons
2021-02-13 15:47:04 -08:00
5aa41f5e12
fix reading lwpolylines
2021-02-13 15:47:04 -08:00
939ad5451c
enable pickling of LockableImpl
2021-01-08 21:21:17 -08:00
88d42807be
label axes in visualization
2021-01-08 21:20:03 -08:00
29ee13a8ab
fix comment
2020-12-20 20:43:02 -08:00
cf2413f9e3
remove_colinear_vertices implementation assumes no duplicate vertices, so we need to remove them first
2020-12-20 20:42:50 -08:00
bce3d9f37c
Avoid placing duplicate vertices when polygonizing an arc
2020-12-20 20:40:59 -08:00
0fce7fd099
bump version to v2.4
2020-12-05 14:52:55 -08:00
479e0c3c2e
fix mirroring for rotated ports/devices
2020-12-05 14:50:16 -08:00
b7383a30ca
fix mirroring across y for arcs and ellipses
2020-12-05 14:49:57 -08:00
177f9952a5
Add builder submodule, Device and Port definitions, and DeviceLibrary
2020-11-09 22:09:47 -08:00
ad51801c5d
minor fixes to rotate()
2020-11-09 22:06:44 -08:00
6c4fe0e9e4
Add octagon constructor
2020-11-09 22:06:19 -08:00
8e1c05cf73
add mirror2d() to Rotatable
2020-11-09 22:05:56 -08:00
09a5e4a2db
type-related fixes and improvements
2020-11-09 22:04:04 -08:00
4308bdeb56
Add parent class MasqueError and use it for traits and all other exceptions
2020-11-09 21:59:28 -08:00
3653a33534
add implementation notes
2020-11-09 21:55:46 -08:00
6402c6242e
add full_load
option to load_library
2020-11-02 20:57:29 -08:00
6ead7231a8
make raw_mode
an arg to
read()`
2020-11-02 20:56:56 -08:00
74a0a4f7d2
bump version to 2.3
2020-11-01 19:46:25 -08:00
ccb42e220f
cosmetic and doc changes
2020-11-01 19:45:57 -08:00
b9322be77f
move VERSION into a .py file that gets directly parsed by setup.py
...
avoids possible issues with pyinstaller
2020-11-01 19:45:31 -08:00
1b400605b1
use addsp() to consolidate some existing code
2020-11-01 19:35:12 -08:00
3a9eca91b5
add addsp()
convenience function to Pattern
2020-11-01 19:34:47 -08:00
517a6dec98
remove duplicate setattr definition
...
already set by LockableImpl
2020-11-01 19:34:25 -08:00
2bc03cbbf4
improve some more type annotations using TypeVar
2020-11-01 19:33:43 -08:00
eb11f31960
improve type hints for Library
2020-10-26 19:58:25 -07:00
f364970403
style and type fixes (per flake8)
...
could potentially fix some bugs in `Library` class and dxf reader
2020-10-16 19:00:50 -07:00
f6ad272c2c
bump version to v2.2
2020-10-10 19:12:56 -07:00
7ed3b26b02
skip assignment in dfs() to avoid PatternLockedError on unmodified patterns
2020-10-10 19:12:17 -07:00
5bc82b9d49
__iter__ should actually return an iterator
2020-10-10 19:11:52 -07:00
0f35eb5e58
fix dxf reader
2020-10-10 19:11:35 -07:00
4a7e20d6ba
improve type annotations in dxf writer
2020-10-10 19:11:22 -07:00
c23c391d83
disable locking for annotations
...
until I can find a better way to do it
2020-10-10 19:10:17 -07:00
08cf7ca4b1
avoid calling to_polygons on Polygons (for speed)
2020-09-29 01:01:10 -07:00
de4726955b
add load_libraryfile convenience wrapper
2020-09-29 01:00:37 -07:00
ce5d386a24
Determine if an existing file is gzipped based on magic bytes, not suffix
2020-09-29 00:57:47 -07:00
03a359e446
add more dict-like methods
2020-09-28 23:49:42 -07:00
b873a5ddf3
make __getitem__ call get_primary rather than the other way around
...
this makes subclassing easier
2020-09-28 23:49:33 -07:00
682a99470f
Bump version to 2.1
2020-09-26 17:41:08 -07:00
aa5696d884
Add Library management functionality
2020-09-26 17:37:23 -07:00
7cad46fa46
add klamath-based gds read/write
2020-09-26 17:35:05 -07:00
c6684936cf
Improve docs, error messages, and type annotations
2020-09-26 17:33:46 -07:00
84f811e9d1
move clean_vertices functionality out into a common function
2020-09-26 17:32:12 -07:00
0e4b6828df
Disable height warning for DXF
2020-09-26 17:24:04 -07:00
a02dfdc982
remove dependency list from top-level comment
2020-09-26 00:44:56 -07:00
f51144ae6a
misc doc/import/typing fixes
2020-09-20 16:32:17 -07:00
3f59168cec
Use chain() instead of adding lists
2020-09-20 16:32:17 -07:00
5f72fe318f
Loosen requirements from List to Sequence
2020-09-20 16:32:17 -07:00
64fbd08cac
don't attempt to set structure properties
2020-09-20 16:32:17 -07:00
c4dfd06a42
improve type annotations
2020-09-20 16:32:17 -07:00
f996a1629f
limit number of arguments on more functions
2020-09-20 16:32:17 -07:00
0e04633f61
Force use of keyword args on most constructors
2020-09-20 16:32:17 -07:00
2a8e43cbcd
bump version to 2.0
2020-09-20 16:32:17 -07:00
49a3b4e322
add support for annotations
...
and other fixes
2020-09-20 16:32:17 -07:00
ea21353d2e
fix incorrect variable name
2020-09-20 16:32:17 -07:00
e330c34a0c
import layer_t at top level
2020-09-20 16:32:17 -07:00
92a3b9b72e
documentation fixes/updates
2020-09-20 16:32:17 -07:00
e7c8708f7f
prefer f-strings
2020-09-20 16:32:17 -07:00
3ec28d4720
typo fixes
2020-09-20 16:32:17 -07:00
b845b0f7bc
move shape conversions to their own functions, and use raw mode
2020-09-20 16:32:17 -07:00
352c03c0ae
remove use_dtype_as_dose arg
2020-09-20 16:32:17 -07:00
cbb5462fcb
spelling fix and wrong import
2020-09-20 16:32:17 -07:00
b4a19a3176
fix @abstractmethod on wrong function
2020-09-20 16:32:17 -07:00
d14182998b
various fixes
2020-09-20 16:32:17 -07:00
b98553a770
set repetition on subpattern
2020-09-20 16:32:17 -07:00
99ded5c113
Don't bother checking that dose is a scalar
2020-09-20 16:32:17 -07:00
f57ccc073d
add raw
arg, which skips setter funcs
2020-09-20 16:32:17 -07:00
7ce601dc1d
Enable repeated shapes in gdsii and oasis
2020-09-20 16:32:17 -07:00
629a6a9ba2
enable per-shape repetitions
2020-09-20 16:32:16 -07:00
ad6fa88e53
Expect name to still be a string after disambiguation
...
Check that encode('ascii') doesn't make it zero-length, but don't
actually return the encoded form.
2020-09-20 16:32:16 -07:00
794ebb6b37
repetition related fixup
2020-09-20 16:32:16 -07:00
bab40474a0
Add repetitions and split up code into traits
2020-09-20 16:32:16 -07:00
d4fbdd8d27
add fast-path for 0-degree rotations
2020-08-11 01:19:15 -07:00
0fa073b488
Make sure linspace gets an integer number of points
2020-07-21 20:38:38 -07:00
89bd1e6abe
only add new_children (marginally faster)
2020-07-12 03:50:32 -07:00
a4b5776208
Don't return early, since we add patterns to memo before they've been checked
2020-07-12 03:50:19 -07:00
0589fbb1b8
bump version to v1.5
2020-07-08 18:42:39 -07:00
1ae9225130
add rename() method for Pattern
2020-07-08 18:36:19 -07:00
f3a1db30c5
Fix order of rotation/mirror/offset when calling as_pattern() on repetitions
2020-07-08 18:36:14 -07:00
53d2a9ca1a
Only swap between tuple/list if actually necessary
2020-05-23 19:39:48 -07:00
07ee25e735
add subpatterns_by_id()
2020-05-23 19:39:03 -07:00
1976c6e684
Add recursive
arg to referenced_patterns_by_id
2020-05-23 19:38:48 -07:00
09615eaea6
use set() to remove any duplicates in patterns
2020-05-23 19:38:17 -07:00
e401f37993
Improve documentation on disambiguate_pattern_names
2020-05-23 19:37:55 -07:00
778e54c895
bump version to v1.4
2020-05-19 01:01:31 -07:00
f204d917c9
Add basic support for OASIS and update setup/docs for OASIS and DXF support
2020-05-19 01:00:00 -07:00
6e957d761a
newline
2020-05-19 00:29:30 -07:00
1bb4bd6bb7
add py.typed to enable type checking for downstream
2020-05-19 00:15:51 -07:00
8082743e17
move dose2dtype() into masque.file.utils, add dtype2dose(), and add a note that use_dtype_as_dose
2020-05-19 00:13:50 -07:00
1b0b056bf9
break out build() which returns the gdsii.library.Library object
2020-05-19 00:03:29 -07:00
d7a8bd7e0d
Allow b_count=None
2020-05-17 23:00:25 -07:00
22b2834d55
Documentation improvements
2020-05-17 22:59:54 -07:00
f9fb7ccad3
move gdsii import below standard packages
2020-05-17 17:22:50 -07:00
5bd1e85d89
add experimental support for dxf
2020-05-17 14:13:01 -07:00
f260fe1374
comment fixup
2020-05-17 14:12:38 -07:00
8a404a2602
Allow setting subpattern identifier in constructors
2020-05-17 14:12:27 -07:00
8302286a7a
allow using a string for the layer
...
Can't use it in gdsii, but no reason to forbit it in masque...
2020-05-17 14:11:47 -07:00
247b31a9d6
Don't include None in referenced_patterns_by_id() by default
2020-05-17 14:05:19 -07:00
5c6c10d2be
fix repetition __repr__
2020-05-12 14:17:50 -07:00
f312f50751
some typing clarifications
2020-05-12 14:17:35 -07:00
ee8f015172
add subpattern_t type (generalizattion of SubPattern and GridRepetition)
2020-05-12 14:17:17 -07:00
6b09fc0c20
make section comments more prominent
2020-05-11 20:31:35 -07:00
a440f2e256
add Shape.set_layer()
2020-05-11 20:31:21 -07:00
c236fdb81b
Add __repr__ methods to most objects`
...
These are closer to what __str__ should be and will likely change in the
future.
2020-05-11 20:31:07 -07:00
c79eee2a8c
Stricter locking (lock contained ndarrays and turn lists into tuples)
2020-05-11 19:29:00 -07:00
79990e3806
cosmetic changes
2020-05-11 19:10:00 -07:00
157df47884
Improve type annotations based on mypy errors
2020-05-11 19:09:35 -07:00
bd4085365f
Path should create a Path, not a Polygon
2020-05-11 19:04:25 -07:00
9bfb3bef9f
avoid unnecessarily nested classes
...
Still provide a class variable for convenience
2020-05-11 19:03:55 -07:00
d33afc2bfd
disambiguate some variable names
2020-05-11 19:01:02 -07:00
f8e347c997
fix scale -> scale_by
2020-05-11 19:00:25 -07:00
8493364e9c
Use a tuple for .identifier
2020-05-11 18:59:47 -07:00
00394a62f0
Formally allow instances to point to None (i.e. an 'empty' pattern)
2020-05-11 18:58:57 -07:00
f8c49cdb5e
Add setter/getter for .pattern to catch wrong types
2020-05-11 18:52:17 -07:00
fa8fc52dd6
Improve consistency of ndarray members
2020-05-11 18:49:30 -07:00
9fa527ea11
improve handling of patterns with no bounding box
2020-05-11 18:42:31 -07:00
334633662e
Remove extra __author__ declarations
2020-05-11 18:41:13 -07:00
df179c9233
Improve type annotations for layer
2020-05-11 18:39:02 -07:00
95ab0934b7
bump version to v1.3
2020-03-14 15:54:20 -07:00
e9244055c6
Add type check for SubPattern's pattern arg
2020-03-14 15:53:35 -07:00
a4f556c3b3
clarify docs for referenced_patterns_by_id()
2020-03-14 15:53:05 -07:00
e684bd0e40
add Pattern.find_toplevel()
...
Topological sort for lists of Pattern objects, useful for finding top
cell of gds
2020-03-14 15:52:49 -07:00
9f27a5093a
add Pattern.referenced_patterns_by_name()
2020-03-14 15:52:10 -07:00
5adabfd25a
Docstring format change
...
(new param and return format)
Also some minor code formatting fixes in utils
2020-02-17 21:02:53 -08:00
20981f10b9
Fix error name
...
InvalidDataError -> PatternError
2020-02-16 18:17:28 -08:00
a930c65d42
fix gridrepetition mirror
2020-02-10 10:09:07 -08:00
2a53d8ef4d
bump version to 1.2
2020-02-07 23:49:53 -08:00
0db70d2c50
Change GridRepetition rotation/mirrored/scale properties so that they consistently apply only to the individual instances; the rotate()/mirror()/scale_by() functions apply to the full array. Add *_elements() versions of the functions
2020-02-07 23:01:14 -08:00
64b8e4dec8
Fix duplicates in gds with multiple top-level cells
...
Since the different patterns we are handed might reference the same
Patterns, we have to deepcopy the entire list at once so that we
don't make multiple copies of them.
2020-01-07 22:17:00 -08:00
5ba67af816
bump version to 1.1
2019-12-31 13:56:18 -08:00
25c9e591cb
shapes: unlock before modifying during deepcopy
2019-12-13 21:18:31 -08:00
f2e6548d21
fix locking issue in __deepcopy__
2019-12-13 21:18:31 -08:00
e0db621595
allow locking of all objects
2019-12-13 21:18:31 -08:00
09711116a7
allow more freedom in pattern names (e.g. names which violate spec, longer suffixes, filter warning, etc)
2019-12-12 01:48:36 -08:00
df9c4b52f4
add some todos
2019-12-12 01:48:24 -08:00
fcc4770534
Mirroring fix for gdsii import
2019-12-11 21:16:31 -08:00
97b7eda21a
Force repetition counts to be integers
2019-12-06 22:28:11 -08:00
f3669f2dfd
fixup mirroring for subpatterns
2019-12-06 22:19:16 -08:00
4bc51f765f
custom __copy__ for SubPattern and GridRepetition
...
the difference between copy/deepcopy should be whether a copy is made of
the contained pattern
2019-12-06 22:19:11 -08:00
7b0a567625
.mirrored should be an ndarray
2019-12-04 23:30:46 -08:00
bece3136be
Bump version number to 1.0
...
Note MAJOR incompatibilities with previous version, including
- order of Pattern() args
- save format
- i/o functions
2019-09-30 23:54:21 -07:00
f471374b68
Use separate VERSION file
2019-09-27 21:03:52 -07:00
2259e7987b
don't rename shape.to_polygons() args
2019-06-09 23:59:55 -07:00
e5f28a7a92
Fix Pattern.get_bounds()
2019-06-09 23:57:54 -07:00
6801ee7fc0
Account for rotation/mirror in Pattern.dfs()
2019-05-25 12:41:51 -07:00
b5bd7cd9c8
Pattern.get_bounds() should return None if it's empty
...
s
2019-05-25 12:41:30 -07:00
49982f1207
Add newlines to long log messages
2019-05-25 12:40:17 -07:00
dcd8324eb4
Use to_polygons() for bounds calculation for simple path shapes
2019-05-20 21:06:28 -07:00
2c9af3f63f
Simplify normalize_mirror
2019-05-20 21:04:31 -07:00
0ab5674fb9
strans needs starting value (0)
2019-05-20 21:04:07 -07:00
02c3d300e0
Wrap long lines (cosmetic)
2019-05-18 15:05:38 -07:00
75b42f6b63
Use normalize_mirror for all 2d-to-1d mirroring
2019-05-18 15:05:30 -07:00
194a90fe7a
Add Pattern.dfs()
...
Depth-first traversal with hierarchy and transform tracking
2019-05-18 15:05:05 -07:00
76f213a7ce
use .identifier instead of the dynamically-created .ref_name
2019-05-17 20:51:53 -07:00
ca80b14ee4
Fix text get_bounds
...
was addressing list using numpy slices
2019-05-17 01:20:10 -07:00
67c9b510cb
Rename svg functions to reflect their gds counterparts
...
Backwards incompatible!
2019-05-17 01:16:18 -07:00
503a77925e
Move away from __dict__ style save/load
...
Incompatible with previous versions, but necessary given the move to
__slots__.
Also use pickle.HIGHEST_PROTOCOL
2019-05-17 00:44:10 -07:00
28084dfe45
Make name the first argument to Pattern() init
...
Major incompatibility with previous versions!!
2019-05-17 00:42:55 -07:00
a154555902
Add TODO noting that polygon mirroring could be normalized
2019-05-17 00:42:14 -07:00
f00d283c56
Add missing imports
2019-05-17 00:41:43 -07:00
032c410b43
Add mirror_x to extrinsic properties
...
It's not implemented for Polygon shapes, since I haven't thought about
how to normalize those for reflection yet
2019-05-17 00:41:26 -07:00
2e54cf1080
initialize identifier for text shapes
2019-05-17 00:39:56 -07:00
16c6bfc70a
Cosmetic changes to argument lists
2019-05-17 00:39:46 -07:00
58353b7884
Remove orphaned comment
2019-05-17 00:38:20 -07:00
38f64f7c62
Use __slots__ for class members
...
Also use the other sort of type hints for instance variables
2019-05-17 00:37:56 -07:00
0b962999b2
Add arbitrary identifier for labels and subpattern/repetition
2019-05-17 00:34:01 -07:00
703c1aa6d8
Custom deepcopy for labels
2019-05-17 00:32:51 -07:00
17451cd995
Force dose2dtype to accept only a list of patterns
...
Backwards incompatible, just like the rest of the gdsii rework
2019-05-17 00:30:32 -07:00
1ef8518c60
Fix dose2dtype
...
Was broken during gdsii refactor
2019-05-17 00:28:46 -07:00
a6a3ae797c
Fix Pattern.scale_by() for labels
...
Label offsets weren't being scaled.
2019-05-15 23:51:51 -07:00
4bd5542ce9
Clarify warning when adding suffix
2019-05-15 23:51:17 -07:00
3ff9a8a506
Shorten long names when writing
...
Maybe turn this into an option later?
2019-05-15 23:51:00 -07:00
376cbcce26
Use buffered IO
...
free ~10% speedup on read, probably similar on write
2019-05-15 23:50:31 -07:00
a461446059
Custom deepcopy() implementations to help speed things up
2019-05-15 00:19:37 -07:00
94410dffc9
Fix clockwise (to-perp) path bends
2019-05-15 00:18:43 -07:00
2909b25fd7
Missing args for commit bc43be48bc
(cap_extensions)
2019-05-15 00:17:40 -07:00
a44a7c176e
Add type hints
2019-05-15 00:14:35 -07:00
bc43be48bc
Implement SquareCustom end-caps and gds output
2019-05-15 00:14:17 -07:00
d5665f54a7
Comment and type hint updates
2019-05-15 00:12:34 -07:00
b8b848c28f
add Pattern.is_empty()
2019-05-15 00:11:44 -07:00
0bbcf3823a
Fix .gz suffix detection
2019-05-15 00:11:28 -07:00
347716ec6e
Give shapes unique path-like identifiers when flattening
2019-05-13 23:55:42 -07:00
9ab1372c7b
Allow shapes to carry an arbitrary identifier (Tuple)
2019-05-13 23:55:14 -07:00
380393dbc3
Fix mirror axis for arrays
2019-05-07 00:58:39 -07:00
5741b38ca6
fixup remove_colinear_vertices
2019-05-06 21:07:53 -07:00
ee6699a7de
fix alternate polygon constructors
2019-04-20 15:44:45 -07:00
0018891200
handle defaults for path params
2019-04-20 15:42:42 -07:00