From 54e587c1e37790817c46fe0764340f020fc11939 Mon Sep 17 00:00:00 2001
From: TheZoq2 <frans.skarman@protonmail.com>
Date: Tue, 14 Feb 2023 11:14:55 +0100
Subject: [PATCH] Fix type errors in 3.8

---
 b_asic/operation.py | 24 ++++++++++++++----------
 b_asic/types.py     |  6 ++++--
 2 files changed, 18 insertions(+), 12 deletions(-)

diff --git a/b_asic/operation.py b/b_asic/operation.py
index bc4ee71b..8b8251dc 100644
--- a/b_asic/operation.py
+++ b/b_asic/operation.py
@@ -34,7 +34,7 @@ from b_asic.graph_component import (
 )
 from b_asic.port import InputPort, OutputPort, SignalSourceProvider
 from b_asic.signal import Signal
-from b_asic.types import Num
+from b_asic.types import Num, NumRuntime
 
 if TYPE_CHECKING:
     # Conditionally imported to avoid circular imports
@@ -593,7 +593,7 @@ class AbstractOperation(Operation, AbstractGraphComponent):
         # Import here to avoid circular imports.
         from b_asic.core_operations import Addition, Constant
 
-        if isinstance(src, Num):
+        if isinstance(src, NumRuntime):
             return Addition(self, Constant(src))
         else:
             return Addition(self, src)
@@ -602,14 +602,16 @@ class AbstractOperation(Operation, AbstractGraphComponent):
         # Import here to avoid circular imports.
         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":
         # Import here to avoid circular imports.
         from b_asic.core_operations import Constant, 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":
@@ -617,7 +619,7 @@ class AbstractOperation(Operation, AbstractGraphComponent):
         from b_asic.core_operations import Constant, Subtraction
 
         return Subtraction(
-            Constant(src) if isinstance(src, Num) else src, self
+            Constant(src) if isinstance(src, NumRuntime) else src, self
         )
 
     def __mul__(
@@ -631,7 +633,7 @@ class AbstractOperation(Operation, AbstractGraphComponent):
 
         return (
             ConstantMultiplication(src, self)
-            if isinstance(src, Num)
+            if isinstance(src, NumRuntime)
             else Multiplication(self, src)
         )
 
@@ -646,7 +648,7 @@ class AbstractOperation(Operation, AbstractGraphComponent):
 
         return (
             ConstantMultiplication(src, self)
-            if isinstance(src, Num)
+            if isinstance(src, NumRuntime)
             else Multiplication(src, self)
         )
 
@@ -654,7 +656,9 @@ class AbstractOperation(Operation, AbstractGraphComponent):
         # Import here to avoid circular imports.
         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__(
         self, src: Union[SignalSourceProvider, Num]
@@ -662,7 +666,7 @@ class AbstractOperation(Operation, AbstractGraphComponent):
         # Import here to avoid circular imports.
         from b_asic.core_operations import Constant, Division, Reciprocal
 
-        if isinstance(src, Num):
+        if isinstance(src, NumRuntime):
             if src == 1:
                 return Reciprocal(self)
             else:
@@ -963,7 +967,7 @@ class AbstractOperation(Operation, AbstractGraphComponent):
 
     # TODO: Fix
     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)
         else:
             raise TypeError
diff --git a/b_asic/types.py b/b_asic/types.py
index 656e1226..1f37cebb 100644
--- a/b_asic/types.py
+++ b/b_asic/types.py
@@ -1,7 +1,9 @@
-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
-Num = int | float | complex
+Num = Union[int, float, complex]
+
+NumRuntime = (complex, float, int)
 
 
 Name = str
-- 
GitLab