[LayerMappedView] reject None layer mappings early
This commit is contained in:
parent
2b6782c93e
commit
4b0a899e17
2 changed files with 11 additions and 0 deletions
|
|
@ -1829,6 +1829,8 @@ def map_layers(
|
||||||
new_elements: defaultdict[layer_t, list[TT]] = defaultdict(list)
|
new_elements: defaultdict[layer_t, list[TT]] = defaultdict(list)
|
||||||
for old_layer, seq in elements.items():
|
for old_layer, seq in elements.items():
|
||||||
new_layer = map_layer(old_layer)
|
new_layer = map_layer(old_layer)
|
||||||
|
if new_layer is None:
|
||||||
|
raise PatternError(f'Layer mapping returned None for source layer {old_layer!r}')
|
||||||
new_elements[new_layer].extend(seq)
|
new_elements[new_layer].extend(seq)
|
||||||
return new_elements
|
return new_elements
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -673,6 +673,15 @@ def test_layer_mapped_view_detaches_and_maps_shapes_and_labels() -> None:
|
||||||
assert not hasattr(masque.library, 'PortsLibraryView')
|
assert not hasattr(masque.library, 'PortsLibraryView')
|
||||||
|
|
||||||
|
|
||||||
|
def test_layer_mapped_view_preflight_rejects_none_layer() -> None:
|
||||||
|
pattern = Pattern()
|
||||||
|
pattern.polygon((1, 0), vertices=[[0, 0], [1, 0], [0, 1]])
|
||||||
|
mapped = LayerMappedView(Library({'top': pattern}), lambda _layer: None) # type: ignore[arg-type]
|
||||||
|
|
||||||
|
with pytest.raises(PatternError, match=r"returned None for source layer \(1, 0\)"):
|
||||||
|
preflight_source_aware(mapped)
|
||||||
|
|
||||||
|
|
||||||
def test_layer_mapped_view_materialization_and_copy_through() -> None:
|
def test_layer_mapped_view_materialization_and_copy_through() -> None:
|
||||||
pattern = Pattern()
|
pattern = Pattern()
|
||||||
pattern.polygon('A', vertices=[[0, 0], [1, 0], [0, 1]])
|
pattern.polygon('A', vertices=[[0, 0], [1, 0], [0, 1]])
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue