Commit Graph

603 Commits (master)

Author SHA1 Message Date
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