add prune_layers and prune_refs

This commit is contained in:
Jan Petykiewicz 2023-06-02 21:15:16 -07:00
parent 45d5845e07
commit 0e2b628465

View File

@ -678,6 +678,33 @@ class Pattern(PortList, AnnotatableImpl, Mirrorable):
self.labels[layer].append(Label(*args, **kwargs))
return self
def prune_layers(self) -> Self:
"""
Removes empty layers (empty lists) in `self.shapes` and `self.labels`.
Returns:
self
"""
for layer in list(self.shapes):
if not self.shapes[layer]:
del self.shapes[layer]
for layer in list(self.labels):
if not self.labels[layer]:
del self.labels[layer]
return self
def prune_refs(self) -> Self:
"""
Remove empty ref lists in `self.refs`.
Returns:
self
"""
for target in list(self.refs):
if not self.refs[target]:
del self.refs[target]
return self
def flatten(
self,
library: Mapping[str, 'Pattern'],