Jan Petykiewicz
a6cb276468
add AbstractView
7 months ago
Jan Petykiewicz
090e86644a
Move Abstract into its own file
7 months ago
Jan Petykiewicz
a1073eca6b
handle library=None
7 months ago
Jan Petykiewicz
0368cf7a00
library can generate abstracts
7 months ago
Jan Petykiewicz
e288c3f5e0
B becomes BB for searchability
7 months ago
Jan Petykiewicz
3b8866732b
PortsRef -> Abstract
7 months ago
Jan Petykiewicz
6b01b43559
flake8-aided fixes
7 months ago
Jan Petykiewicz
db9b39dbc0
fix more type issues
7 months ago
Jan Petykiewicz
557c6c98dc
more wip -- most central stuff is first pass done
7 months ago
Jan Petykiewicz
6549faddbb
wip -- more fixes
7 months ago
jan
9efb6f0eeb
wip
7 months ago
jan
d9ae8dd6e3
wip
7 months ago
Jan Petykiewicz
f7902fa517
busL -> mpath
7 months ago
Jan Petykiewicz
2635c6c20c
some type updates
7 months ago
Jan Petykiewicz
c7f3e7ee52
Remove support for dose
...
Since there isn't GDS/OASIS level support for dose, this can be mostly
handled by using arbitrary layers/dtypes directly. Dose scaling isn't
handled as nicely that way, but it corresponds more directly to what
gets written to file.
7 months ago
Jan Petykiewicz
f7a2edfe23
fix some type-related issues
7 months ago
Jan Petykiewicz
a0ca53f57a
get rid of "identifier"
7 months ago
jan
7ca017d993
wip again
7 months ago
jan
db9a6269a1
delete duplicate utils submodule
7 months ago
Jan Petykiewicz
6f696bfc71
partial work on device libraries
7 months ago
Jan Petykiewicz
f7b8f2db0c
various fixes
7 months ago
Jan Petykiewicz
e3511ed852
remove duplicatre __delitem__
7 months ago
Jan Petykiewicz
a4f89e6f48
improve docs
7 months ago
Jan Petykiewicz
5f35e8c8e3
indirect type spec for Pattern
7 months ago
jan
52f0b4aa93
Add lib types
7 months ago
jan
c95b2f4c0d
bifurcate Device into DeviceRef
7 months ago
Jan Petykiewicz
e932687210
make error message prettier
7 months ago
jan
7aaf73cb37
WIP: make libraries and names first-class!
7 months ago
Jan Petykiewicz
f834ec6be5
Avoid generating a container if only a single port is passed
7 months ago
Jan Petykiewicz
885b259fb7
allow bounds to be passed as args
7 months ago
Jan Petykiewicz
3f986957ac
allow passing a single Tool to be used as the default
7 months ago
Jan Petykiewicz
1c3c032434
Add functionality for building paths (single use wires/waveguides/etc)
7 months ago
Jan Petykiewicz
afcbd315ae
Fix extra vertex added during OASIS loading
1 year ago
jan
8edb7b0956
round().astype() -> rint(...)
1 year ago
Jan Petykiewicz
5b5cbe94d3
Move from setuputils and setup.py to hatch and pyproject.toml
1 year ago
Jan Petykiewicz
a713967911
Add an alternate constructor for axis-aligned 2D grids
1 year ago
Jan Petykiewicz
51b7021bdc
bump version to 2.7
2 years ago
Jan Petykiewicz
b188589b60
Fix / simplify some cases where the arc is a sector
2 years ago
Jan Petykiewicz
eb9682b1b8
Avoid calling new.unlock() in __deepcopy__()
...
since the new object's properties aren't necessarily deepcopied yet...
2 years ago
Jan Petykiewicz
48b28351ed
speed up GDS writing
...
by preallocating xy array and directly rounding to target dtype
2 years ago
Jan Petykiewicz
bfabd351c4
fix circular import
2 years ago
jan
4cc824526b
fix deepcopy for locked shapes
2 years ago
Jan Petykiewicz
e48183ee0b
dose==1 is the identity situation
2 years ago
Jan Petykiewicz
6886360f6d
fix getting displacements in Arbitrary repetition
2 years ago
Jan Petykiewicz
b5ddb5749c
fix calculation of displacements
2 years ago
jan
67d312162a
speed up as_pattern()
...
mainly used by `flatten()`
2 years ago
Jan Petykiewicz
97db83a1d5
add utils.vertices.poly_contains_points
2 years ago
Jan Petykiewicz
fd0b2ba4cd
no longer ignore numpy types
2 years ago
Jan Petykiewicz
9f1c7aea01
add _displacements to __slots__
2 years ago
Jan Petykiewicz
3640de27c7
Fix OASIS loading when strings are stored by-reference
2 years ago
Jan Petykiewicz
ed9b0df057
fix scaling for objects with repetitions
2 years ago
jan
a4aa50d814
fix another instance where numpy prohibits using `not bounds`
2 years ago
jan
2b8195ad3e
move dev2pat and pat2dev into masque.builder.port_utils
2 years ago
jan
36f6edac21
fix wrong var name
2 years ago
jan
210f5c21bc
wrap_device can be used on DeviceLibrary
2 years ago
jan
bfee560693
simplify type hints
2 years ago
jan
f4c2357737
fix type hint
2 years ago
jan
20be409341
fix numpy complaining about .any() / .all()
2 years ago
jan
d8b60da827
use_ours & use_theirs should be passed verbatim to the underlying library
2 years ago
jan
3b0ef1e08d
always couple LibDeviceLibrary keys to the underlying Library
...
See comment for why this is necessary
2 years ago
jan
7603a7a1c8
fix typevar naming
2 years ago
jan
0c1954c9d1
fix missing imports
2 years ago
jan
30025ba081
fixup dxf read
2 years ago
jan
5ef34794ff
keep ordering stable for same-y ports
2 years ago
jan
c8b4075fcc
Avoid circular import
2 years ago
jan
40b98b2511
add missing colon
2 years ago
jan
0471addd65
add get_bounds_nonempty
2 years ago
jan
780d1ca97f
export LibDeviceLibrary
2 years ago
jan
fc7a6c6f4a
fix some unused code
2 years ago
jan
81430fe632
add LibDeviceLibrary
2 years ago
jan
6a1208bc33
add some helper functions to libraries
2 years ago
jan
f36350ebee
Add some warnings around cache invalidation when mutating items
2 years ago
jan
2e5d51b0af
resolve name conflicts rather than just giving up
...
this lets us merge libraries without having to mutate `other`, which
brings a bunch of problems around cache invalidation
2 years ago
jan
566ba99f9c
set_const doesn't need to take in a separate key, can just use the pattern's name
...
might as well make the convenience function convenient
2 years ago
jan
86315fc32b
improve DeviceLibrary docstring
2 years ago
jan
f178e94d82
remove old overloads
2 years ago
jan
7612a2660c
add DeviceLibraryError
2 years ago
Jan Petykiewicz
7aa850a239
add todo note
2 years ago
Jan Petykiewicz
9a9a05d1d7
add guillotine_bssf_sas
2 years ago
Jan Petykiewicz
c2994b74bd
add utils.pack2d.pack_patterns
2 years ago
Jan Petykiewicz
a9e3bf8b2a
return a set of rejected indices
2 years ago
Jan Petykiewicz
fc1a0f5a5a
break apart utils into submodules, and add utils.pack2d
2 years ago
jan
a4fe3d9e2e
Use ArrayLike and NDArray wherever possible. Some type fixes and some related corner cases
2 years ago
jan
89f327ba37
reformat some multiline arg lists and add missing 'None' return types
2 years ago
Jan Petykiewicz
47e8cab73c
fix format string now that ptypes are str-typed
3 years ago
Jan Petykiewicz
a92ab9425b
typo in 4788fa3c
3 years ago
Jan Petykiewicz
576077c461
add docstring for Pattern.rename()
3 years ago
Jan Petykiewicz
4788fa3ca5
add Device.rename()
3 years ago
Jan Petykiewicz
dbee0027b2
fix wrap_repated_shapes for labels
3 years ago
Jan Petykiewicz
52c6634a25
fix port comparison regression
3 years ago
Jan Petykiewicz
886bd59726
should be casting with numpy.array() not .ndarray()
3 years ago
Jan Petykiewicz
4796676a4e
use ArrayLike when accepting pseudo-ndarrays
3 years ago
Jan Petykiewicz
3aefa644e5
fix type annotations for Device.__getitem__
3 years ago
Jan Petykiewicz
65466a5986
Force keyword args in more cases
3 years ago
Jan Petykiewicz
21ef4207df
Enable repetition arg for other Polygon constructors
3 years ago
Jan Petykiewicz
78a4416f4c
Fix wrap_repeated_shapes
3 years ago
Jan Petykiewicz
0d733bdc6f
Breaking change: Use string-valued ptypes, with default value 'unk'
3 years ago
jan
44b08a8dae
bump version to 2.5
3 years ago
jan
e2fdd5a347
make klamath the default gdsii reader/writer, and install it automatically
...
python-gdsii code is now under masque.file.python_gdsii
3 years ago
jan
689312cc87
don't include newlines in version string
3 years ago
jan
5b84a436a0
Make flatten() work in-place on all subpatterns (avoid copies and repeated calls). Also fix a bug around identifier generation introduced in a5900f6ad
.
3 years ago
Jan Petykiewicz
8ad4082f6d
Fix offset complaining if it gets a Vec3
3 years ago
Jan Petykiewicz
a5900f6ade
BREAKING change shape identifers generated when flattening
3 years ago
Jan Petykiewicz
db4148a0ff
Don't trash label identifiers
3 years ago
Jan Petykiewicz
7225fd5715
add traceback to port type warnings
3 years ago
jan
1dc7d5bd56
2-element paths are not polygons
3 years ago
jan
5aa41f5e12
fix reading lwpolylines
3 years ago
Jan Petykiewicz
939ad5451c
enable pickling of LockableImpl
3 years ago
Jan Petykiewicz
88d42807be
label axes in visualization
3 years ago
Jan Petykiewicz
29ee13a8ab
fix comment
3 years ago
Jan Petykiewicz
cf2413f9e3
remove_colinear_vertices implementation assumes no duplicate vertices, so we need to remove them first
3 years ago
Jan Petykiewicz
bce3d9f37c
Avoid placing duplicate vertices when polygonizing an arc
3 years ago
Jan Petykiewicz
0fce7fd099
bump version to v2.4
3 years ago
Jan Petykiewicz
479e0c3c2e
fix mirroring for rotated ports/devices
3 years ago
Jan Petykiewicz
b7383a30ca
fix mirroring across y for arcs and ellipses
3 years ago
Jan Petykiewicz
177f9952a5
Add builder submodule, Device and Port definitions, and DeviceLibrary
4 years ago
Jan Petykiewicz
ad51801c5d
minor fixes to rotate()
4 years ago
Jan Petykiewicz
6c4fe0e9e4
Add octagon constructor
4 years ago
Jan Petykiewicz
8e1c05cf73
add mirror2d() to Rotatable
4 years ago
Jan Petykiewicz
09a5e4a2db
type-related fixes and improvements
4 years ago
Jan Petykiewicz
4308bdeb56
Add parent class MasqueError and use it for traits and all other exceptions
4 years ago
Jan Petykiewicz
3653a33534
add implementation notes
4 years ago
Jan Petykiewicz
6402c6242e
add `full_load` option to `load_library`
4 years ago
Jan Petykiewicz
6ead7231a8
make `raw_mode`` an arg to `read()`
4 years ago
Jan Petykiewicz
74a0a4f7d2
bump version to 2.3
4 years ago
Jan Petykiewicz
ccb42e220f
cosmetic and doc changes
4 years ago
Jan Petykiewicz
b9322be77f
move VERSION into a .py file that gets directly parsed by setup.py
...
avoids possible issues with pyinstaller
4 years ago
Jan Petykiewicz
1b400605b1
use addsp() to consolidate some existing code
4 years ago
Jan Petykiewicz
3a9eca91b5
add `addsp()` convenience function to Pattern
4 years ago
Jan Petykiewicz
517a6dec98
remove duplicate setattr definition
...
already set by LockableImpl
4 years ago
Jan Petykiewicz
2bc03cbbf4
improve some more type annotations using TypeVar
4 years ago
Jan Petykiewicz
eb11f31960
improve type hints for Library
4 years ago
Jan Petykiewicz
f364970403
style and type fixes (per flake8)
...
could potentially fix some bugs in `Library` class and dxf reader
4 years ago
Jan Petykiewicz
f6ad272c2c
bump version to v2.2
4 years ago
Jan Petykiewicz
7ed3b26b02
skip assignment in dfs() to avoid PatternLockedError on unmodified patterns
4 years ago
Jan Petykiewicz
5bc82b9d49
__iter__ should actually return an iterator
4 years ago
Jan Petykiewicz
0f35eb5e58
fix dxf reader
4 years ago
Jan Petykiewicz
4a7e20d6ba
improve type annotations in dxf writer
4 years ago
Jan Petykiewicz
c23c391d83
disable locking for annotations
...
until I can find a better way to do it
4 years ago
Jan Petykiewicz
08cf7ca4b1
avoid calling to_polygons on Polygons (for speed)
4 years ago
Jan Petykiewicz
de4726955b
add load_libraryfile convenience wrapper
4 years ago
Jan Petykiewicz
ce5d386a24
Determine if an existing file is gzipped based on magic bytes, not suffix
4 years ago
Jan Petykiewicz
03a359e446
add more dict-like methods
4 years ago
Jan Petykiewicz
b873a5ddf3
make __getitem__ call get_primary rather than the other way around
...
this makes subclassing easier
4 years ago
Jan Petykiewicz
682a99470f
Bump version to 2.1
4 years ago
Jan Petykiewicz
aa5696d884
Add Library management functionality
4 years ago
Jan Petykiewicz
7cad46fa46
add klamath-based gds read/write
4 years ago
Jan Petykiewicz
c6684936cf
Improve docs, error messages, and type annotations
4 years ago
Jan Petykiewicz
84f811e9d1
move clean_vertices functionality out into a common function
4 years ago
Jan Petykiewicz
0e4b6828df
Disable height warning for DXF
4 years ago
Jan Petykiewicz
a02dfdc982
remove dependency list from top-level comment
4 years ago
Jan Petykiewicz
f51144ae6a
misc doc/import/typing fixes
4 years ago
Jan Petykiewicz
3f59168cec
Use chain() instead of adding lists
4 years ago
Jan Petykiewicz
5f72fe318f
Loosen requirements from List to Sequence
4 years ago
Jan Petykiewicz
64fbd08cac
don't attempt to set structure properties
4 years ago
Jan Petykiewicz
c4dfd06a42
improve type annotations
4 years ago
Jan Petykiewicz
f996a1629f
limit number of arguments on more functions
4 years ago
Jan Petykiewicz
0e04633f61
Force use of keyword args on most constructors
4 years ago
Jan Petykiewicz
2a8e43cbcd
bump version to 2.0
4 years ago
Jan Petykiewicz
49a3b4e322
add support for annotations
...
and other fixes
4 years ago
Jan Petykiewicz
ea21353d2e
fix incorrect variable name
4 years ago
Jan Petykiewicz
e330c34a0c
import layer_t at top level
4 years ago
Jan Petykiewicz
92a3b9b72e
documentation fixes/updates
4 years ago
Jan Petykiewicz
e7c8708f7f
prefer f-strings
4 years ago
Jan Petykiewicz
3ec28d4720
typo fixes
4 years ago
Jan Petykiewicz
b845b0f7bc
move shape conversions to their own functions, and use raw mode
4 years ago
Jan Petykiewicz
352c03c0ae
remove use_dtype_as_dose arg
4 years ago
Jan Petykiewicz
cbb5462fcb
spelling fix and wrong import
4 years ago
Jan Petykiewicz
b4a19a3176
fix @abstractmethod on wrong function
4 years ago
Jan Petykiewicz
d14182998b
various fixes
4 years ago
Jan Petykiewicz
b98553a770
set repetition on subpattern
4 years ago
Jan Petykiewicz
99ded5c113
Don't bother checking that dose is a scalar
4 years ago
Jan Petykiewicz
f57ccc073d
add `raw` arg, which skips setter funcs
4 years ago
Jan Petykiewicz
7ce601dc1d
Enable repeated shapes in gdsii and oasis
4 years ago
Jan Petykiewicz
629a6a9ba2
enable per-shape repetitions
4 years ago
Jan Petykiewicz
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.
4 years ago
Jan Petykiewicz
794ebb6b37
repetition related fixup
4 years ago
Jan Petykiewicz
bab40474a0
Add repetitions and split up code into traits
4 years ago
Jan Petykiewicz
d4fbdd8d27
add fast-path for 0-degree rotations
4 years ago
Jan Petykiewicz
0fa073b488
Make sure linspace gets an integer number of points
4 years ago
Jan Petykiewicz
89bd1e6abe
only add new_children (marginally faster)
4 years ago
Jan Petykiewicz
a4b5776208
Don't return early, since we add patterns to memo before they've been checked
4 years ago
Jan Petykiewicz
0589fbb1b8
bump version to v1.5
4 years ago
Jan Petykiewicz
1ae9225130
add rename() method for Pattern
4 years ago
Jan Petykiewicz
f3a1db30c5
Fix order of rotation/mirror/offset when calling as_pattern() on repetitions
4 years ago
Jan Petykiewicz
53d2a9ca1a
Only swap between tuple/list if actually necessary
4 years ago
Jan Petykiewicz
07ee25e735
add subpatterns_by_id()
4 years ago
Jan Petykiewicz
1976c6e684
Add `recursive` arg to referenced_patterns_by_id
4 years ago
Jan Petykiewicz
09615eaea6
use set() to remove any duplicates in patterns
4 years ago
Jan Petykiewicz
e401f37993
Improve documentation on disambiguate_pattern_names
4 years ago
Jan Petykiewicz
778e54c895
bump version to v1.4
4 years ago
Jan Petykiewicz
f204d917c9
Add basic support for OASIS and update setup/docs for OASIS and DXF support
4 years ago
Jan Petykiewicz
6e957d761a
newline
4 years ago
Jan Petykiewicz
1bb4bd6bb7
add py.typed to enable type checking for downstream
4 years ago
Jan Petykiewicz
8082743e17
move dose2dtype() into masque.file.utils, add dtype2dose(), and add a note that use_dtype_as_dose
4 years ago
Jan Petykiewicz
1b0b056bf9
break out build() which returns the gdsii.library.Library object
4 years ago
Jan Petykiewicz
d7a8bd7e0d
Allow b_count=None
4 years ago
Jan Petykiewicz
22b2834d55
Documentation improvements
4 years ago
Jan Petykiewicz
f9fb7ccad3
move gdsii import below standard packages
4 years ago
Jan Petykiewicz
5bd1e85d89
add experimental support for dxf
4 years ago
Jan Petykiewicz
f260fe1374
comment fixup
4 years ago
Jan Petykiewicz
8a404a2602
Allow setting subpattern identifier in constructors
4 years ago
Jan Petykiewicz
8302286a7a
allow using a string for the layer
...
Can't use it in gdsii, but no reason to forbit it in masque...
4 years ago
Jan Petykiewicz
247b31a9d6
Don't include None in referenced_patterns_by_id() by default
4 years ago
Jan Petykiewicz
5c6c10d2be
fix repetition __repr__
4 years ago
Jan Petykiewicz
f312f50751
some typing clarifications
4 years ago
Jan Petykiewicz
ee8f015172
add subpattern_t type (generalizattion of SubPattern and GridRepetition)
4 years ago
Jan Petykiewicz
6b09fc0c20
make section comments more prominent
4 years ago
Jan Petykiewicz
a440f2e256
add Shape.set_layer()
4 years ago
Jan Petykiewicz
c236fdb81b
Add __repr__ methods to most objects`
...
These are closer to what __str__ should be and will likely change in the
future.
4 years ago
Jan Petykiewicz
c79eee2a8c
Stricter locking (lock contained ndarrays and turn lists into tuples)
4 years ago
Jan Petykiewicz
79990e3806
cosmetic changes
4 years ago
Jan Petykiewicz
157df47884
Improve type annotations based on mypy errors
4 years ago
Jan Petykiewicz
bd4085365f
Path should create a Path, not a Polygon
4 years ago
Jan Petykiewicz
9bfb3bef9f
avoid unnecessarily nested classes
...
Still provide a class variable for convenience
4 years ago
Jan Petykiewicz
d33afc2bfd
disambiguate some variable names
4 years ago
Jan Petykiewicz
f8e347c997
fix scale -> scale_by
4 years ago
Jan Petykiewicz
8493364e9c
Use a tuple for .identifier
4 years ago
Jan Petykiewicz
00394a62f0
Formally allow instances to point to None (i.e. an 'empty' pattern)
4 years ago
Jan Petykiewicz
f8c49cdb5e
Add setter/getter for .pattern to catch wrong types
4 years ago
Jan Petykiewicz
fa8fc52dd6
Improve consistency of ndarray members
4 years ago
Jan Petykiewicz
9fa527ea11
improve handling of patterns with no bounding box
4 years ago
Jan Petykiewicz
334633662e
Remove extra __author__ declarations
4 years ago
Jan Petykiewicz
df179c9233
Improve type annotations for layer
4 years ago
Jan Petykiewicz
95ab0934b7
bump version to v1.3
4 years ago
Jan Petykiewicz
e9244055c6
Add type check for SubPattern's pattern arg
4 years ago
Jan Petykiewicz
a4f556c3b3
clarify docs for referenced_patterns_by_id()
4 years ago
Jan Petykiewicz
e684bd0e40
add Pattern.find_toplevel()
...
Topological sort for lists of Pattern objects, useful for finding top
cell of gds
4 years ago
Jan Petykiewicz
9f27a5093a
add Pattern.referenced_patterns_by_name()
4 years ago
jan
5adabfd25a
Docstring format change
...
(new param and return format)
Also some minor code formatting fixes in utils
4 years ago
jan
20981f10b9
Fix error name
...
InvalidDataError -> PatternError
4 years ago
jan
a930c65d42
fix gridrepetition mirror
4 years ago
Jan Petykiewicz
2a53d8ef4d
bump version to 1.2
4 years ago
Jan Petykiewicz
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
4 years ago
Jan Petykiewicz
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.
4 years ago
jan
5ba67af816
bump version to 1.1
4 years ago
Jan Petykiewicz
25c9e591cb
shapes: unlock before modifying during deepcopy
4 years ago
Jan Petykiewicz
f2e6548d21
fix locking issue in __deepcopy__
4 years ago
Jan Petykiewicz
e0db621595
allow locking of all objects
4 years ago
Jan Petykiewicz
09711116a7
allow more freedom in pattern names (e.g. names which violate spec, longer suffixes, filter warning, etc)
4 years ago
Jan Petykiewicz
df9c4b52f4
add some todos
4 years ago
Jan Petykiewicz
fcc4770534
Mirroring fix for gdsii import
4 years ago
Jan Petykiewicz
97b7eda21a
Force repetition counts to be integers
4 years ago
Jan Petykiewicz
f3669f2dfd
fixup mirroring for subpatterns
4 years ago
Jan Petykiewicz
4bc51f765f
custom __copy__ for SubPattern and GridRepetition
...
the difference between copy/deepcopy should be whether a copy is made of
the contained pattern
4 years ago
Jan Petykiewicz
7b0a567625
.mirrored should be an ndarray
4 years ago
Jan Petykiewicz
bece3136be
Bump version number to 1.0
...
Note MAJOR incompatibilities with previous version, including
- order of Pattern() args
- save format
- i/o functions
5 years ago
Jan Petykiewicz
f471374b68
Use separate VERSION file
5 years ago
Jan Petykiewicz
2259e7987b
don't rename shape.to_polygons() args
5 years ago
Jan Petykiewicz
e5f28a7a92
Fix Pattern.get_bounds()
5 years ago