5452bc5608
more fixes and improvements
2023-10-15 16:18:32 -07:00
d9fe295f4f
get things working with a LazyLibrary hack while we think about cycles
2023-10-15 16:18:32 -07:00
f4537a0feb
Lots of progress on tutorials
2023-10-15 16:18:32 -07:00
c31d7dfa2c
Add note about reproducibility for DXF
2023-10-15 16:18:32 -07:00
61b381cfaa
remove dead code
2023-10-15 16:18:32 -07:00
cca7cbaae1
formatting
2023-10-15 16:18:32 -07:00
b75c8de0c4
lots of fixes to get test_rep running
2023-10-15 16:18:32 -07:00
92f7fce6ff
improve gzipped file reproducibility
...
Mostly avoid writing the old filename and modification time to the gzip
header
2023-10-15 16:18:32 -07:00
ea87418bf5
clarify comment
2023-10-15 16:18:32 -07:00
e812c69bfb
get rid of Mapping stuff on PortsList
2023-10-15 16:18:32 -07:00
71db073a54
add todos
2023-10-15 16:18:32 -07:00
a6cb276468
add AbstractView
2023-10-15 16:18:32 -07:00
090e86644a
Move Abstract into its own file
2023-10-15 16:18:32 -07:00
a1073eca6b
handle library=None
2023-10-15 16:18:32 -07:00
0368cf7a00
library can generate abstracts
2023-10-15 16:18:32 -07:00
e288c3f5e0
B becomes BB for searchability
2023-10-15 16:18:32 -07:00
3b8866732b
PortsRef -> Abstract
2023-10-15 16:18:32 -07:00
6b01b43559
flake8-aided fixes
2023-10-15 16:18:32 -07:00
db9b39dbc0
fix more type issues
2023-10-15 16:18:32 -07:00
557c6c98dc
more wip -- most central stuff is first pass done
2023-10-15 16:18:32 -07:00
6549faddbb
wip -- more fixes
2023-10-15 16:18:32 -07:00
9efb6f0eeb
wip
2023-10-15 16:18:32 -07:00
d9ae8dd6e3
wip
2023-10-15 16:18:32 -07:00
f7902fa517
busL -> mpath
2023-10-15 16:18:32 -07:00
2635c6c20c
some type updates
2023-10-15 16:18:32 -07:00
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.
2023-10-15 16:18:32 -07:00
f7a2edfe23
fix some type-related issues
2023-10-15 16:18:32 -07:00
a0ca53f57a
get rid of "identifier"
2023-10-15 16:18:32 -07:00
7ca017d993
wip again
2023-10-15 16:18:32 -07:00
db9a6269a1
delete duplicate utils submodule
2023-10-15 16:18:32 -07:00
6f696bfc71
partial work on device libraries
2023-10-15 16:18:32 -07:00
f7b8f2db0c
various fixes
2023-10-15 16:18:32 -07:00
e3511ed852
remove duplicatre __delitem__
2023-10-15 16:18:32 -07:00
a4f89e6f48
improve docs
2023-10-15 16:18:32 -07:00
5f35e8c8e3
indirect type spec for Pattern
2023-10-15 16:18:32 -07:00
52f0b4aa93
Add lib types
2023-10-15 16:18:32 -07:00
c95b2f4c0d
bifurcate Device into DeviceRef
2023-10-15 16:18:32 -07:00
e932687210
make error message prettier
2023-10-15 16:18:32 -07:00
7aaf73cb37
WIP: make libraries and names first-class!
2023-10-15 16:18:32 -07:00
f834ec6be5
Avoid generating a container if only a single port is passed
2023-10-15 16:18:32 -07:00
885b259fb7
allow bounds to be passed as args
2023-10-15 16:18:32 -07:00
3f986957ac
allow passing a single Tool to be used as the default
2023-10-15 16:18:32 -07:00
1c3c032434
Add functionality for building paths (single use wires/waveguides/etc)
2023-10-15 16:18:32 -07:00
afcbd315ae
Fix extra vertex added during OASIS loading
2023-01-24 14:14:10 -08:00
8edb7b0956
round().astype() -> rint(...)
2023-01-11 18:29:28 -08:00
5b5cbe94d3
Move from setuputils and setup.py to hatch and pyproject.toml
2023-01-11 17:37:36 -08:00
a713967911
Add an alternate constructor for axis-aligned 2D grids
2023-01-04 22:56:17 -08:00
51b7021bdc
bump version to 2.7
2022-06-08 21:14:41 -07:00
b188589b60
Fix / simplify some cases where the arc is a sector
2022-06-08 21:12:39 -07:00
eb9682b1b8
Avoid calling new.unlock() in __deepcopy__()
...
since the new object's properties aren't necessarily deepcopied yet...
2022-06-08 21:12:39 -07:00
48b28351ed
speed up GDS writing
...
by preallocating xy array and directly rounding to target dtype
2022-06-08 21:12:39 -07:00
bfabd351c4
fix circular import
2022-06-08 21:12:39 -07:00
4cc824526b
fix deepcopy for locked shapes
2022-04-17 19:04:18 -07:00
e48183ee0b
dose==1 is the identity situation
2022-04-07 17:47:30 -07:00
6886360f6d
fix getting displacements in Arbitrary repetition
2022-04-01 17:35:21 -07:00
b5ddb5749c
fix calculation of displacements
2022-04-01 17:35:12 -07:00
67d312162a
speed up as_pattern()
...
mainly used by `flatten()`
2022-04-01 17:33:24 -07:00
97db83a1d5
add utils.vertices.poly_contains_points
2022-04-01 17:30:25 -07:00
fd0b2ba4cd
no longer ignore numpy types
2022-04-01 17:30:13 -07:00
9f1c7aea01
add _displacements to __slots__
2022-04-01 17:30:07 -07:00
3640de27c7
Fix OASIS loading when strings are stored by-reference
2022-04-01 17:30:00 -07:00
ed9b0df057
fix scaling for objects with repetitions
2022-03-16 23:54:26 -07:00
a4aa50d814
fix another instance where numpy prohibits using not bounds
2022-02-28 23:43:16 -08:00
2b8195ad3e
move dev2pat and pat2dev into masque.builder.port_utils
2022-02-28 23:38:55 -08:00
36f6edac21
fix wrong var name
2022-02-28 23:38:34 -08:00
210f5c21bc
wrap_device can be used on DeviceLibrary
2022-02-28 23:38:17 -08:00
bfee560693
simplify type hints
2022-02-28 23:37:48 -08:00
f4c2357737
fix type hint
2022-02-28 23:03:42 -08:00
20be409341
fix numpy complaining about .any() / .all()
2022-02-28 23:03:23 -08:00
d8b60da827
use_ours & use_theirs should be passed verbatim to the underlying library
2022-02-28 23:03:01 -08:00
3b0ef1e08d
always couple LibDeviceLibrary keys to the underlying Library
...
See comment for why this is necessary
2022-02-28 23:02:36 -08:00
7603a7a1c8
fix typevar naming
2022-02-28 23:00:53 -08:00
0c1954c9d1
fix missing imports
2022-02-28 23:00:31 -08:00
30025ba081
fixup dxf read
2022-02-28 22:59:45 -08:00
5ef34794ff
keep ordering stable for same-y ports
2022-02-28 22:59:30 -08:00
c8b4075fcc
Avoid circular import
2022-02-27 21:26:51 -08:00
40b98b2511
add missing colon
2022-02-27 21:26:23 -08:00
0471addd65
add get_bounds_nonempty
2022-02-27 21:23:03 -08:00
780d1ca97f
export LibDeviceLibrary
2022-02-27 21:23:03 -08:00
fc7a6c6f4a
fix some unused code
2022-02-27 21:23:03 -08:00
81430fe632
add LibDeviceLibrary
2022-02-27 21:23:03 -08:00
6a1208bc33
add some helper functions to libraries
2022-02-27 21:23:03 -08:00
f36350ebee
Add some warnings around cache invalidation when mutating items
2022-02-27 21:23:03 -08:00
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
2022-02-27 21:23:03 -08:00
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
2022-02-27 21:23:03 -08:00
86315fc32b
improve DeviceLibrary docstring
2022-02-27 21:23:03 -08:00
f178e94d82
remove old overloads
2022-02-27 21:23:03 -08:00
7612a2660c
add DeviceLibraryError
2022-02-27 21:23:03 -08:00
7aa850a239
add todo note
2022-02-23 16:03:26 -08:00
9a9a05d1d7
add guillotine_bssf_sas
2022-02-23 16:03:26 -08:00
c2994b74bd
add utils.pack2d.pack_patterns
2022-02-23 16:03:26 -08:00
a9e3bf8b2a
return a set of rejected indices
2022-02-23 16:03:24 -08:00
fc1a0f5a5a
break apart utils into submodules, and add utils.pack2d
2022-02-23 16:01:51 -08:00
a4fe3d9e2e
Use ArrayLike and NDArray wherever possible. Some type fixes and some related corner cases
2022-02-23 15:47:38 -08:00
89f327ba37
reformat some multiline arg lists and add missing 'None' return types
2022-02-23 15:16:25 -08:00
47e8cab73c
fix format string now that ptypes are str-typed
2021-06-24 23:25:15 -07:00
a92ab9425b
typo in 4788fa3c
2021-06-23 22:42:39 -07:00
576077c461
add docstring for Pattern.rename()
2021-06-23 22:39:24 -07:00
4788fa3ca5
add Device.rename()
2021-06-23 22:39:12 -07:00
dbee0027b2
fix wrap_repated_shapes for labels
2021-06-23 22:39:02 -07:00
52c6634a25
fix port comparison regression
2021-06-23 22:35:43 -07:00
886bd59726
should be casting with numpy.array() not .ndarray()
2021-06-22 19:00:43 -07:00
4796676a4e
use ArrayLike when accepting pseudo-ndarrays
2021-06-22 18:59:13 -07:00
3aefa644e5
fix type annotations for Device.__getitem__
2021-06-22 18:26:05 -07:00
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