From b4f36417fd4199b73c8b483a21d0055cfd8a4cc8 Mon Sep 17 00:00:00 2001 From: Jan Petykiewicz Date: Thu, 23 Feb 2023 16:23:06 -0800 Subject: [PATCH] Pipe-operator does not support forward references --- masque/abstract.py | 2 +- masque/library.py | 18 +++++++++--------- masque/pattern.py | 2 +- masque/ref.py | 6 +++--- masque/traits/repeatable.py | 14 +++++++------- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/masque/abstract.py b/masque/abstract.py index 3301c66..9eefcbb 100644 --- a/masque/abstract.py +++ b/masque/abstract.py @@ -45,7 +45,7 @@ class Abstract(PortList): # def build( # self, # library: 'MutableLibrary', -# tools: None | 'Tool' | MutableMapping[str | None, 'Tool'] = None, +# tools: 'None | Tool | MutableMapping[str | None, Tool]' = None, # ) -> 'Builder': # """ # Begin building a new device around an instance of the current device diff --git a/masque/library.py b/masque/library.py index 781983a..c2cd9b4 100644 --- a/masque/library.py +++ b/masque/library.py @@ -219,7 +219,7 @@ class Library(Mapping[str, 'Pattern'], metaclass=ABCMeta): if isinstance(tops, str): tops = (tops,) - flattened: dict[str, 'Pattern' | None] = {} + flattened: dict[str, 'Pattern | None'] = {} def flatten_single(name) -> None: flattened[name] = None @@ -342,7 +342,7 @@ class Library(Mapping[str, 'Pattern'], metaclass=ABCMeta): current_pattern = visit_after(current_pattern, **visit_args) ``` where `visit_args` are - `hierarchy`: (top_pattern_or_None, L1_pattern, L2_pattern, ..., parent_pattern) + `hierarchy`: (top_pattern_or_None, L1_pattern, L2_pattern, ..., parent_pattern, target_pattern) tuple of all parent-and-higher pattern names. Top pattern name may be `None` if not provided in first call to .dfs() `transform`: numpy.ndarray containing cumulative @@ -413,7 +413,7 @@ class Library(Mapping[str, 'Pattern'], metaclass=ABCMeta): pattern = visit_after(pattern, hierarchy=hierarchy, memo=memo, transform=transform) if pattern is not original_pattern: - name = hierarchy[-1] + name = hierarchy[-1] # TODO what is name=None? if not isinstance(self, MutableLibrary): raise LibraryError('visit_* functions returned a new `Pattern` object' ' but the library is immutable') @@ -431,14 +431,14 @@ class MutableLibrary(Library, MutableMapping[str, 'Pattern'], metaclass=ABCMeta) #def __getitem__(self, key: str) -> 'Pattern': #def __iter__(self) -> Iterator[str]: #def __len__(self) -> int: - #def __setitem__(self, key: str, value: 'Pattern' | Callable[[], 'Pattern']) -> None: + #def __setitem__(self, key: str, value: 'Pattern | Callable[[], Pattern]') -> None: #def __delitem__(self, key: str) -> None: @abstractmethod def __setitem__( self, key: str, - value: 'Pattern' | Callable[[], 'Pattern'], + value: 'Pattern | Callable[[], Pattern]', ) -> None: pass @@ -858,7 +858,7 @@ class WrapLibrary(MutableLibrary): def __setitem__( self, key: str, - value: 'Pattern' | Callable[[], 'Pattern'], + value: 'Pattern | Callable[[], Pattern]', ) -> None: if key in self.mapping: raise LibraryError(f'"{key}" already exists in the library. Overwriting is not allowed!') @@ -898,7 +898,7 @@ class LazyLibrary(MutableLibrary): def __setitem__( self, key: str, - value: 'Pattern' | Callable[[], 'Pattern'], + value: 'Pattern | Callable[[], Pattern]', ) -> None: if key in self.mapping: raise LibraryError(f'"{key}" already exists in the library. Overwriting is not allowed!') @@ -1045,7 +1045,7 @@ class Tree(MutableLibrary): def __init__( self, - top: str | 'NamedPattern', + top: 'str | NamedPattern', library: MutableLibrary | None = None ) -> None: self.top = top if isinstance(top, str) else top.name @@ -1068,7 +1068,7 @@ class Tree(MutableLibrary): def __len__(self) -> int: return len(self.library) - def __setitem__(self, key: str, value: 'Pattern' | Callable[[], 'Pattern']) -> None: + def __setitem__(self, key: str, value: 'Pattern | Callable[[], Pattern]') -> None: self.library[key] = value def __delitem__(self, key: str) -> None: diff --git a/masque/pattern.py b/masque/pattern.py index 9e3afa1..8c2ea7c 100644 --- a/masque/pattern.py +++ b/masque/pattern.py @@ -601,7 +601,7 @@ class Pattern(PortList, AnnotatableImpl, Mirrorable): Returns: self """ - flattened: dict[str | None, 'Pattern' | None] = {} + flattened: dict[str | None, 'Pattern | None'] = {} # TODO both Library and Pattern have flatten()... pattern is in-place? def flatten_single(name: str | None) -> None: diff --git a/masque/ref.py b/masque/ref.py index 17fddb1..69b40e4 100644 --- a/masque/ref.py +++ b/masque/ref.py @@ -46,7 +46,7 @@ class Ref( def __init__( self, - target: str | 'NamedPattern' | None, + target: 'str | NamedPattern | None', *, offset: ArrayLike = (0.0, 0.0), rotation: float = 0.0, @@ -120,7 +120,7 @@ class Ref( def as_pattern( self, *, - pattern: 'Pattern' | None = None, + pattern: 'Pattern | None' = None, library: Mapping[str, 'Pattern'] | None = None, ) -> 'Pattern': """ @@ -177,7 +177,7 @@ class Ref( def get_bounds( self, *, - pattern: 'Pattern' | None = None, + pattern: 'Pattern | None' = None, library: Mapping[str, 'Pattern'] | None = None, ) -> NDArray[numpy.float64] | None: """ diff --git a/masque/traits/repeatable.py b/masque/traits/repeatable.py index 7be1559..492e270 100644 --- a/masque/traits/repeatable.py +++ b/masque/traits/repeatable.py @@ -22,7 +22,7 @@ class Repeatable(metaclass=ABCMeta): ''' @property @abstractmethod - def repetition(self) -> 'Repetition' | None: + def repetition(self) -> 'Repetition | None': """ Repetition object, or None (single instance only) """ @@ -30,14 +30,14 @@ class Repeatable(metaclass=ABCMeta): # @repetition.setter # @abstractmethod -# def repetition(self, repetition: 'Repetition' | None): +# def repetition(self, repetition: 'Repetition | None'): # pass ''' ---- Methods ''' @abstractmethod - def set_repetition(self, repetition: 'Repetition' | None) -> Self: + def set_repetition(self, repetition: 'Repetition | None') -> Self: """ Set the repetition @@ -56,18 +56,18 @@ class RepeatableImpl(Repeatable, metaclass=ABCMeta): """ __slots__ = _empty_slots - _repetition: 'Repetition' | None + _repetition: 'Repetition | None' """ Repetition object, or None (single instance only) """ ''' ---- Non-abstract properties ''' @property - def repetition(self) -> 'Repetition' | None: + def repetition(self) -> 'Repetition | None': return self._repetition @repetition.setter - def repetition(self, repetition: 'Repetition' | None): + def repetition(self, repetition: 'Repetition | None'): from ..repetition import Repetition if repetition is not None and not isinstance(repetition, Repetition): raise MasqueError(f'{repetition} is not a valid Repetition object!') @@ -76,6 +76,6 @@ class RepeatableImpl(Repeatable, metaclass=ABCMeta): ''' ---- Non-abstract methods ''' - def set_repetition(self, repetition: 'Repetition' | None) -> Self: + def set_repetition(self, repetition: 'Repetition | None') -> Self: self.repetition = repetition return self