Skip to content
Snippets Groups Projects
Commit 54e587c1 authored by Frans Skarman's avatar Frans Skarman :tropical_fish:
Browse files

Fix type errors in 3.8

parent 91cf4c9b
No related branches found
No related tags found
No related merge requests found
Pipeline #89456 passed
...@@ -34,7 +34,7 @@ from b_asic.graph_component import ( ...@@ -34,7 +34,7 @@ from b_asic.graph_component import (
) )
from b_asic.port import InputPort, OutputPort, SignalSourceProvider from b_asic.port import InputPort, OutputPort, SignalSourceProvider
from b_asic.signal import Signal from b_asic.signal import Signal
from b_asic.types import Num from b_asic.types import Num, NumRuntime
if TYPE_CHECKING: if TYPE_CHECKING:
# Conditionally imported to avoid circular imports # Conditionally imported to avoid circular imports
...@@ -593,7 +593,7 @@ class AbstractOperation(Operation, AbstractGraphComponent): ...@@ -593,7 +593,7 @@ class AbstractOperation(Operation, AbstractGraphComponent):
# Import here to avoid circular imports. # Import here to avoid circular imports.
from b_asic.core_operations import Addition, Constant from b_asic.core_operations import Addition, Constant
if isinstance(src, Num): if isinstance(src, NumRuntime):
return Addition(self, Constant(src)) return Addition(self, Constant(src))
else: else:
return Addition(self, src) return Addition(self, src)
...@@ -602,14 +602,16 @@ class AbstractOperation(Operation, AbstractGraphComponent): ...@@ -602,14 +602,16 @@ class AbstractOperation(Operation, AbstractGraphComponent):
# Import here to avoid circular imports. # Import here to avoid circular imports.
from b_asic.core_operations import Addition, Constant from b_asic.core_operations import Addition, Constant
return Addition(Constant(src) if isinstance(src, Num) else src, self) return Addition(
Constant(src) if isinstance(src, NumRuntime) else src, self
)
def __sub__(self, src: Union[SignalSourceProvider, Num]) -> "Subtraction": def __sub__(self, src: Union[SignalSourceProvider, Num]) -> "Subtraction":
# Import here to avoid circular imports. # Import here to avoid circular imports.
from b_asic.core_operations import Constant, Subtraction from b_asic.core_operations import Constant, Subtraction
return Subtraction( return Subtraction(
self, Constant(src) if isinstance(src, Num) else src self, Constant(src) if isinstance(src, NumRuntime) else src
) )
def __rsub__(self, src: Union[SignalSourceProvider, Num]) -> "Subtraction": def __rsub__(self, src: Union[SignalSourceProvider, Num]) -> "Subtraction":
...@@ -617,7 +619,7 @@ class AbstractOperation(Operation, AbstractGraphComponent): ...@@ -617,7 +619,7 @@ class AbstractOperation(Operation, AbstractGraphComponent):
from b_asic.core_operations import Constant, Subtraction from b_asic.core_operations import Constant, Subtraction
return Subtraction( return Subtraction(
Constant(src) if isinstance(src, Num) else src, self Constant(src) if isinstance(src, NumRuntime) else src, self
) )
def __mul__( def __mul__(
...@@ -631,7 +633,7 @@ class AbstractOperation(Operation, AbstractGraphComponent): ...@@ -631,7 +633,7 @@ class AbstractOperation(Operation, AbstractGraphComponent):
return ( return (
ConstantMultiplication(src, self) ConstantMultiplication(src, self)
if isinstance(src, Num) if isinstance(src, NumRuntime)
else Multiplication(self, src) else Multiplication(self, src)
) )
...@@ -646,7 +648,7 @@ class AbstractOperation(Operation, AbstractGraphComponent): ...@@ -646,7 +648,7 @@ class AbstractOperation(Operation, AbstractGraphComponent):
return ( return (
ConstantMultiplication(src, self) ConstantMultiplication(src, self)
if isinstance(src, Num) if isinstance(src, NumRuntime)
else Multiplication(src, self) else Multiplication(src, self)
) )
...@@ -654,7 +656,9 @@ class AbstractOperation(Operation, AbstractGraphComponent): ...@@ -654,7 +656,9 @@ class AbstractOperation(Operation, AbstractGraphComponent):
# Import here to avoid circular imports. # Import here to avoid circular imports.
from b_asic.core_operations import Constant, Division from b_asic.core_operations import Constant, Division
return Division(self, Constant(src) if isinstance(src, Num) else src) return Division(
self, Constant(src) if isinstance(src, NumRuntime) else src
)
def __rtruediv__( def __rtruediv__(
self, src: Union[SignalSourceProvider, Num] self, src: Union[SignalSourceProvider, Num]
...@@ -662,7 +666,7 @@ class AbstractOperation(Operation, AbstractGraphComponent): ...@@ -662,7 +666,7 @@ class AbstractOperation(Operation, AbstractGraphComponent):
# Import here to avoid circular imports. # Import here to avoid circular imports.
from b_asic.core_operations import Constant, Division, Reciprocal from b_asic.core_operations import Constant, Division, Reciprocal
if isinstance(src, Num): if isinstance(src, NumRuntime):
if src == 1: if src == 1:
return Reciprocal(self) return Reciprocal(self)
else: else:
...@@ -963,7 +967,7 @@ class AbstractOperation(Operation, AbstractGraphComponent): ...@@ -963,7 +967,7 @@ class AbstractOperation(Operation, AbstractGraphComponent):
# TODO: Fix # TODO: Fix
def truncate_input(self, index: int, value: Num, bits: int) -> Num: def truncate_input(self, index: int, value: Num, bits: int) -> Num:
if isinstance(value, float | int): if isinstance(value, (float, int)):
return round(value) & ((2**bits) - 1) return round(value) & ((2**bits) - 1)
else: else:
raise TypeError raise TypeError
......
from typing import NewType from typing import NewType, Union
# https://stackoverflow.com/questions/69334475/how-to-hint-at-number-types-i-e-subclasses-of-number-not-numbers-themselv # https://stackoverflow.com/questions/69334475/how-to-hint-at-number-types-i-e-subclasses-of-number-not-numbers-themselv
Num = int | float | complex Num = Union[int, float, complex]
NumRuntime = (complex, float, int)
Name = str Name = str
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment