[ILibrary] add .resolve()
This commit is contained in:
parent
2513c7f8fd
commit
bb7f4906af
1 changed files with 27 additions and 0 deletions
|
|
@ -682,6 +682,33 @@ class ILibrary(ILibraryView, MutableMapping[str, 'Pattern'], metaclass=ABCMeta):
|
||||||
def _merge(self, key_self: str, other: Mapping[str, 'Pattern'], key_other: str) -> None:
|
def _merge(self, key_self: str, other: Mapping[str, 'Pattern'], key_other: str) -> None:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def resolve(
|
||||||
|
self,
|
||||||
|
other: 'Abstract | str | Pattern | TreeView',
|
||||||
|
append: bool = False,
|
||||||
|
) -> 'Abstract | Pattern':
|
||||||
|
"""
|
||||||
|
Resolve another device (name, Abstract, Pattern, or TreeView) into an Abstract or Pattern.
|
||||||
|
If it is a TreeView, it is first added into this library.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
other: The device to resolve.
|
||||||
|
append: If True and `other` is an `Abstract`, returns the full `Pattern` from the library.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
An `Abstract` or `Pattern` object.
|
||||||
|
"""
|
||||||
|
from .pattern import Pattern #noqa: PLC0415
|
||||||
|
if not isinstance(other, (str, Abstract, Pattern)):
|
||||||
|
# We got a TreeView; add it into self and grab its topcell as an Abstract
|
||||||
|
other = self << other
|
||||||
|
|
||||||
|
if isinstance(other, str):
|
||||||
|
other = self.abstract(other)
|
||||||
|
if append and isinstance(other, Abstract):
|
||||||
|
other = self[other.name]
|
||||||
|
return other
|
||||||
|
|
||||||
def rename(
|
def rename(
|
||||||
self,
|
self,
|
||||||
old_name: str,
|
old_name: str,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue