misc fixes

master
jan 1 year ago
parent 9a077ea2df
commit 93ab0a942d

@ -32,7 +32,7 @@ from .error import MasqueError, PatternError, LibraryError, BuildError
from .shapes import Shape, Polygon, Path, Circle, Arc, Ellipse from .shapes import Shape, Polygon, Path, Circle, Arc, Ellipse
from .label import Label from .label import Label
from .ref import Ref from .ref import Ref
from .pattern import Pattern from .pattern import Pattern, map_layers, map_targets, chain_elements
from .library import ( from .library import (
ILibraryView, ILibrary, ILibraryView, ILibrary,

@ -358,35 +358,35 @@ class Builder(PortList):
mirrored=mirrored, port_map=map_out, skip_port_check=True, append=append) mirrored=mirrored, port_map=map_out, skip_port_check=True, append=append)
return self return self
@overload # @overload
def place( # def place(
self, # self,
other: Abstract | str, # other: Abstract | str,
*, # *,
offset: ArrayLike, # offset: ArrayLike,
rotation: float, # rotation: float,
pivot: ArrayLike, # pivot: ArrayLike,
mirrored: tuple[bool, bool], # mirrored: tuple[bool, bool],
port_map: dict[str, str | None] | None, # port_map: dict[str, str | None] | None,
skip_port_check: bool, # skip_port_check: bool,
append: bool, # append: bool,
) -> Self: # ) -> Self:
pass # pass
#
@overload # @overload
def place( # def place(
self, # self,
other: Pattern, # other: Pattern,
*, # *,
offset: ArrayLike, # offset: ArrayLike,
rotation: float, # rotation: float,
pivot: ArrayLike, # pivot: ArrayLike,
mirrored: tuple[bool, bool], # mirrored: tuple[bool, bool],
port_map: dict[str, str | None] | None, # port_map: dict[str, str | None] | None,
skip_port_check: bool, # skip_port_check: bool,
append: Literal[True], # append: Literal[True],
) -> Self: # ) -> Self:
pass # pass
def place( def place(
self, self,

@ -575,7 +575,7 @@ class ILibrary(ILibraryView, MutableMapping[str, 'Pattern'], metaclass=ABCMeta):
for old_name in temp: for old_name in temp:
new_name = rename_map.get(old_name, old_name) new_name = rename_map.get(old_name, old_name)
pat = self[new_name] pat = self[new_name]
pat.refs = map_targets(pat.refs, rename_map) pat.refs = map_targets(pat.refs, lambda tt: cast(dict[str | None, str | None], rename_map).get(tt, tt))
return rename_map return rename_map

@ -779,21 +779,21 @@ def chain_elements(*args: Mapping[Any, Iterable[TT]]) -> Iterable[TT]:
def map_layers( def map_layers(
elements: Mapping[layer_t, Sequence[TT]], elements: Mapping[layer_t, Sequence[TT]],
layer_map: Mapping[layer_t, layer_t], map_layer: Callable[[layer_t], layer_t],
) -> defaultdict[layer_t, list[TT]]: ) -> defaultdict[layer_t, list[TT]]:
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 = layer_map.get(old_layer, old_layer) new_layer = map_layer(old_layer)
new_elements[new_layer].extend(seq) new_elements[new_layer].extend(seq)
return new_elements return new_elements
def map_targets( def map_targets(
refs: Mapping[str | None, Sequence[Ref]], refs: Mapping[str | None, Sequence[Ref]],
target_map: Mapping[str | None, str | None] | Mapping[str, str | None], map_target: Callable[[str | None], str | None],
) -> defaultdict[str | None, list[Ref]]: ) -> defaultdict[str | None, list[Ref]]:
new_refs: defaultdict[str | None, list[Ref]] = defaultdict(list) new_refs: defaultdict[str | None, list[Ref]] = defaultdict(list)
for old_target, seq in refs.items(): for old_target, seq in refs.items():
new_target = target_map.get(old_target, old_target) # type: ignore # OK to .get() wrong type new_target = map_target(old_target)
new_refs[new_target].extend(seq) new_refs[new_target].extend(seq)
return new_refs return new_refs

Loading…
Cancel
Save