diff --git a/masque/builder/tools.py b/masque/builder/tools.py index 0e08674..1ffaa4d 100644 --- a/masque/builder/tools.py +++ b/masque/builder/tools.py @@ -3,7 +3,7 @@ Tools are objects which dynamically generate simple single-use devices (e.g. wir # TODO document all tools """ -from typing import Literal, Any, Self, cast, TYPE_CHECKING +from typing import Literal, Any, Self, cast from collections.abc import Sequence, Callable from abc import ABCMeta # , abstractmethod # TODO any way to make Tool ok with implementing only one method? from dataclasses import dataclass @@ -593,7 +593,7 @@ class AutoTool(Tool, metaclass=ABCMeta): success = False # If ccw is None, we don't need a bend, but we still loop to reuse the logic. # We'll use a dummy loop if bends is empty and ccw is None. - bends = cast(list[AutoTool.Bend | None], self.bends) + bends = cast('list[AutoTool.Bend | None]', self.bends) if ccw is None and not bends: bends += [None] @@ -613,7 +613,7 @@ class AutoTool(Tool, metaclass=ABCMeta): out_ptype_pair = ( 'unk' if out_ptype is None else out_ptype, - straight.ptype if ccw is None else cast(AutoTool.Bend, bend).out_port.ptype + straight.ptype if ccw is None else cast('AutoTool.Bend', bend).out_port.ptype ) out_transition = self.transitions.get(out_ptype_pair, None) otrans_dxy = self._otransition2dxy(out_transition, bend_angle) diff --git a/masque/pattern.py b/masque/pattern.py index 42f9ab4..94555cc 100644 --- a/masque/pattern.py +++ b/masque/pattern.py @@ -2,7 +2,7 @@ Object representing a one multi-layer lithographic layout. A single level of hierarchical references is included. """ -from typing import cast, Self, Any, TypeVar +from typing import cast, Self, Any, TypeVar, TYPE_CHECKING from collections.abc import Sequence, Mapping, MutableMapping, Iterable, Callable import copy import logging @@ -25,6 +25,9 @@ from .error import PatternError, PortError from .traits import AnnotatableImpl, Scalable, Mirrorable, Rotatable, Positionable, Repeatable, Bounded from .ports import Port, PortList +if TYPE_CHECKING: + from .traits import Flippable + logger = logging.getLogger(__name__) diff --git a/masque/ports.py b/masque/ports.py index 740636e..f2651de 100644 --- a/masque/ports.py +++ b/masque/ports.py @@ -11,7 +11,7 @@ import numpy from numpy import pi from numpy.typing import ArrayLike, NDArray -from .traits import PositionableImpl, Rotatable, PivotableImpl, Copyable, Mirrorable, Flippable +from .traits import PositionableImpl, Rotatable, PivotableImpl, Copyable, Flippable from .utils import rotate_offsets_around, rotation_matrix_2d from .error import PortError, format_stacktrace diff --git a/masque/shapes/shape.py b/masque/shapes/shape.py index 43aa222..269c460 100644 --- a/masque/shapes/shape.py +++ b/masque/shapes/shape.py @@ -6,7 +6,7 @@ import numpy from numpy.typing import NDArray, ArrayLike from ..traits import ( - Rotatable, Mirrorable, Copyable, Scalable, FlippableImpl, + Rotatable, Copyable, Scalable, FlippableImpl, Positionable, Pivotable, PivotableImpl, RepeatableImpl, AnnotatableImpl, ) diff --git a/masque/traits/mirrorable.py b/masque/traits/mirrorable.py index 2ff486a..9b4072b 100644 --- a/masque/traits/mirrorable.py +++ b/masque/traits/mirrorable.py @@ -1,14 +1,15 @@ -from typing import Self, Any, TYPE_CHECKING, cast +from typing import Self, cast, TYPE_CHECKING from abc import ABCMeta, abstractmethod import numpy -from numpy.typing import ArrayLike, NDArray +from numpy.typing import NDArray from ..error import MasqueError - -from .positionable import Positionable from .repeatable import Repeatable +if TYPE_CHECKING: + from .positionable import Positionable + class Mirrorable(metaclass=ABCMeta): """