From 9a17d2d20c9c51924fe517e3ea543720e60d1016 Mon Sep 17 00:00:00 2001 From: Oscar Gustafsson <oscar.gustafsson@gmail.com> Date: Wed, 25 Jan 2023 17:27:28 +0100 Subject: [PATCH] Typing improvements --- b_asic/operation.py | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/b_asic/operation.py b/b_asic/operation.py index 11cd476b..61fab3a7 100644 --- a/b_asic/operation.py +++ b/b_asic/operation.py @@ -24,8 +24,16 @@ from typing import ( ) from b_asic.graph_component import AbstractGraphComponent, GraphComponent, Name +from b_asic.core_operations import ( + Addition, + Subtraction, + Multiplication, + ConstantMultiplication, + Division, +) from b_asic.port import InputPort, OutputPort, SignalSourceProvider from b_asic.signal import Signal +from b_asic.signal_flow_graph import SFG ResultKey = NewType("ResultKey", str) ResultMap = Mapping[ResultKey, Optional[Number]] @@ -47,7 +55,7 @@ class Operation(GraphComponent, SignalSourceProvider): """ @abstractmethod - def __add__(self, src: Union[SignalSourceProvider, Number]) -> "Addition": + def __add__(self, src: Union[SignalSourceProvider, Number]) -> Addition: """ Overloads the addition operator to make it return a new Addition operation object that is connected to the self and other objects. @@ -55,7 +63,7 @@ class Operation(GraphComponent, SignalSourceProvider): raise NotImplementedError @abstractmethod - def __radd__(self, src: Union[SignalSourceProvider, Number]) -> "Addition": + def __radd__(self, src: Union[SignalSourceProvider, Number]) -> Addition: """ Overloads the addition operator to make it return a new Addition operation object that is connected to the self and other objects. @@ -63,9 +71,7 @@ class Operation(GraphComponent, SignalSourceProvider): raise NotImplementedError @abstractmethod - def __sub__( - self, src: Union[SignalSourceProvider, Number] - ) -> "Subtraction": + def __sub__(self, src: Union[SignalSourceProvider, Number]) -> Subtraction: """ Overloads the subtraction operator to make it return a new Subtraction operation object that is connected to the self and other objects. @@ -75,7 +81,7 @@ class Operation(GraphComponent, SignalSourceProvider): @abstractmethod def __rsub__( self, src: Union[SignalSourceProvider, Number] - ) -> "Subtraction": + ) -> Subtraction: """ Overloads the subtraction operator to make it return a new Subtraction operation object that is connected to the self and other objects. @@ -85,7 +91,7 @@ class Operation(GraphComponent, SignalSourceProvider): @abstractmethod def __mul__( self, src: Union[SignalSourceProvider, Number] - ) -> "Union[Multiplication, ConstantMultiplication]": + ) -> Union[Multiplication, ConstantMultiplication]: """ Overloads the multiplication operator to make it return a new Multiplication operation object that is connected to the self and other objects. If *src* is a number, then @@ -96,7 +102,7 @@ class Operation(GraphComponent, SignalSourceProvider): @abstractmethod def __rmul__( self, src: Union[SignalSourceProvider, Number] - ) -> "Union[Multiplication, ConstantMultiplication]": + ) -> Union[Multiplication, ConstantMultiplication]: """ Overloads the multiplication operator to make it return a new Multiplication operation object that is connected to the self and other objects. If *src* is a number, then @@ -107,7 +113,7 @@ class Operation(GraphComponent, SignalSourceProvider): @abstractmethod def __truediv__( self, src: Union[SignalSourceProvider, Number] - ) -> "Division": + ) -> Division: """ Overloads the division operator to make it return a new Division operation object that is connected to the self and other objects. @@ -117,7 +123,7 @@ class Operation(GraphComponent, SignalSourceProvider): @abstractmethod def __rtruediv__( self, src: Union[SignalSourceProvider, Number] - ) -> "Division": + ) -> Division: """ Overloads the division operator to make it return a new Division operation object that is connected to the self and other objects. @@ -274,7 +280,7 @@ class Operation(GraphComponent, SignalSourceProvider): raise NotImplementedError @abstractmethod - def to_sfg(self) -> "SFG": + def to_sfg(self) -> SFG: """ Convert the operation into its corresponding SFG. If the operation is composed by multiple operations, the operation will be split. @@ -507,7 +513,7 @@ class AbstractOperation(Operation, AbstractGraphComponent): def __rmul__( self, src: Union[SignalSourceProvider, Number] - ) -> "Union[Multiplication, ConstantMultiplication]": + ) -> Union[Multiplication, ConstantMultiplication]: # Import here to avoid circular imports. from b_asic.core_operations import ( ConstantMultiplication, @@ -522,7 +528,7 @@ class AbstractOperation(Operation, AbstractGraphComponent): def __truediv__( self, src: Union[SignalSourceProvider, Number] - ) -> "Division": + ) -> Division: # Import here to avoid circular imports. from b_asic.core_operations import Constant, Division @@ -532,7 +538,7 @@ class AbstractOperation(Operation, AbstractGraphComponent): def __rtruediv__( self, src: Union[SignalSourceProvider, Number] - ) -> "Division": + ) -> Division: # Import here to avoid circular imports. from b_asic.core_operations import Constant, Division @@ -747,7 +753,7 @@ class AbstractOperation(Operation, AbstractGraphComponent): pass return [self] - def to_sfg(self) -> "SFG": + def to_sfg(self) -> SFG: # Import here to avoid circular imports. from b_asic.signal_flow_graph import SFG from b_asic.special_operations import Input, Output -- GitLab