get rid of NamedPattern in favor of just returning a tuple
This commit is contained in:
parent
9115371b19
commit
cbfbdf66a1
@ -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, NamedPattern
|
from .pattern import Pattern
|
||||||
|
|
||||||
from .library import (
|
from .library import (
|
||||||
Library, MutableLibrary,
|
Library, MutableLibrary,
|
||||||
|
@ -6,7 +6,7 @@ import numpy
|
|||||||
from numpy import pi
|
from numpy import pi
|
||||||
from numpy.typing import ArrayLike
|
from numpy.typing import ArrayLike
|
||||||
|
|
||||||
from ..pattern import Pattern, NamedPattern
|
from ..pattern import Pattern
|
||||||
from ..ref import Ref
|
from ..ref import Ref
|
||||||
from ..library import MutableLibrary, Tree
|
from ..library import MutableLibrary, Tree
|
||||||
from ..error import PortError, BuildError
|
from ..error import PortError, BuildError
|
||||||
@ -236,7 +236,7 @@ class Builder(PortList):
|
|||||||
|
|
||||||
def plug(
|
def plug(
|
||||||
self,
|
self,
|
||||||
other: Abstract | str | NamedPattern,
|
other: Abstract | str,
|
||||||
map_in: dict[str, str],
|
map_in: dict[str, str],
|
||||||
map_out: dict[str, str | None] | None = None,
|
map_out: dict[str, str | None] | None = None,
|
||||||
*,
|
*,
|
||||||
@ -337,7 +337,7 @@ class Builder(PortList):
|
|||||||
|
|
||||||
def place(
|
def place(
|
||||||
self,
|
self,
|
||||||
other: Abstract | str | NamedPattern,
|
other: Abstract | str,
|
||||||
*,
|
*,
|
||||||
offset: ArrayLike = (0, 0),
|
offset: ArrayLike = (0, 0),
|
||||||
rotation: float = 0,
|
rotation: float = 0,
|
||||||
|
@ -26,7 +26,7 @@ from .label import Label
|
|||||||
from .abstract import Abstract
|
from .abstract import Abstract
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from .pattern import Pattern, NamedPattern
|
from .pattern import Pattern
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
@ -490,22 +490,21 @@ class MutableLibrary(Library, MutableMapping[str, 'Pattern'], metaclass=ABCMeta)
|
|||||||
ref.target = new_target
|
ref.target = new_target
|
||||||
return self
|
return self
|
||||||
|
|
||||||
def create(self, name: str) -> 'NamedPattern':
|
def mkpat(self, name: str) -> tuple[str, 'Pattern']:
|
||||||
"""
|
"""
|
||||||
Convenience method to create an empty pattern, choose a name
|
Convenience method to create an empty pattern, add it to the library,
|
||||||
for it, add it with that name, and return both the pattern and name.
|
and return both the pattern and name.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
base_name: Prefix used when naming the pattern
|
name: Name for the pattern
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
(name, pattern) tuple
|
(name, pattern) tuple
|
||||||
"""
|
"""
|
||||||
from .pattern import NamedPattern
|
from .pattern import Pattern
|
||||||
#name = self.get_name(base_name)
|
pat = Pattern()
|
||||||
npat = NamedPattern(name)
|
self[name] = pat
|
||||||
self[name] = npat
|
return pat
|
||||||
return npat
|
|
||||||
|
|
||||||
def add(
|
def add(
|
||||||
self,
|
self,
|
||||||
@ -865,8 +864,6 @@ class WrapLibrary(MutableLibrary):
|
|||||||
|
|
||||||
if callable(value):
|
if callable(value):
|
||||||
value = value()
|
value = value()
|
||||||
elif hasattr(value, 'as_pattern'):
|
|
||||||
value = cast('NamedPattern', value).as_pattern() # don't want to carry along NamedPattern instances
|
|
||||||
else:
|
else:
|
||||||
value = value
|
value = value
|
||||||
self.mapping[key] = value
|
self.mapping[key] = value
|
||||||
@ -1045,7 +1042,7 @@ class Tree(MutableLibrary):
|
|||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
top: 'str | NamedPattern',
|
top: str,
|
||||||
library: MutableLibrary | None = None
|
library: MutableLibrary | None = None
|
||||||
) -> None:
|
) -> None:
|
||||||
self.top = top if isinstance(top, str) else top.name
|
self.top = top if isinstance(top, str) else top.name
|
||||||
|
@ -700,54 +700,3 @@ class Pattern(PortList, AnnotatableImpl, Mirrorable):
|
|||||||
pyplot.xlabel('x')
|
pyplot.xlabel('x')
|
||||||
pyplot.ylabel('y')
|
pyplot.ylabel('y')
|
||||||
pyplot.show()
|
pyplot.show()
|
||||||
|
|
||||||
|
|
||||||
class NamedPattern(Pattern):
|
|
||||||
"""
|
|
||||||
TODO: Document NamedPattern
|
|
||||||
"""
|
|
||||||
__slots__ = ('_name',)
|
|
||||||
|
|
||||||
_name: str
|
|
||||||
""" The pattern's name """
|
|
||||||
|
|
||||||
@property
|
|
||||||
def name(self) -> str:
|
|
||||||
return self._name
|
|
||||||
|
|
||||||
def __init__(self, name: str) -> None:
|
|
||||||
"""
|
|
||||||
Creates an empty NamedPattern
|
|
||||||
|
|
||||||
Args:
|
|
||||||
name: The pattern's name. Immutable.
|
|
||||||
|
|
||||||
"""
|
|
||||||
Pattern.__init__(self)
|
|
||||||
self._name = name
|
|
||||||
|
|
||||||
def __repr__(self) -> str:
|
|
||||||
s = f'<NamedPattern "{self.name}":'
|
|
||||||
s += f' sh{len(self.shapes)} sp{len(self.refs)} la{len(self.labels)} ['
|
|
||||||
for name, port in self.ports.items():
|
|
||||||
s += f'\n\t{name}: {port}'
|
|
||||||
s += ']>'
|
|
||||||
return s
|
|
||||||
|
|
||||||
def __str__(self) -> str:
|
|
||||||
return self.name
|
|
||||||
|
|
||||||
def __copy__(self) -> Pattern:
|
|
||||||
return Pattern.__copy__(self)
|
|
||||||
|
|
||||||
def __deepcopy__(self, memo: dict | None = None) -> Pattern:
|
|
||||||
return Pattern.__deepcopy__(self, memo)
|
|
||||||
|
|
||||||
def as_pattern(self) -> Pattern:
|
|
||||||
return Pattern(
|
|
||||||
shapes=self.shapes,
|
|
||||||
labels=self.labels,
|
|
||||||
refs=self.refs,
|
|
||||||
annotations=self.annotations,
|
|
||||||
ports=self.ports,
|
|
||||||
)
|
|
||||||
|
@ -21,7 +21,7 @@ from .traits import (
|
|||||||
|
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from . import Pattern, NamedPattern
|
from . import Pattern
|
||||||
|
|
||||||
|
|
||||||
class Ref(
|
class Ref(
|
||||||
@ -46,7 +46,7 @@ class Ref(
|
|||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
target: 'str | NamedPattern | None',
|
target: str | None,
|
||||||
*,
|
*,
|
||||||
offset: ArrayLike = (0.0, 0.0),
|
offset: ArrayLike = (0.0, 0.0),
|
||||||
rotation: float = 0.0,
|
rotation: float = 0.0,
|
||||||
@ -64,8 +64,6 @@ class Ref(
|
|||||||
scale: Scaling factor applied to the pattern's geometry.
|
scale: Scaling factor applied to the pattern's geometry.
|
||||||
repetition: `Repetition` object, default `None`
|
repetition: `Repetition` object, default `None`
|
||||||
"""
|
"""
|
||||||
if hasattr(target, 'name'):
|
|
||||||
target = cast('NamedPattern', target).name
|
|
||||||
self.target = target
|
self.target = target
|
||||||
self.offset = offset
|
self.offset = offset
|
||||||
self.rotation = rotation
|
self.rotation = rotation
|
||||||
|
Loading…
Reference in New Issue
Block a user