From 6ef3a89a25d077a55aebe9f2351d6b19ee21a6b8 Mon Sep 17 00:00:00 2001
From: Oscar Gustafsson <oscar.gustafsson@gmail.com>
Date: Fri, 12 Apr 2024 11:31:02 +0200
Subject: [PATCH] Apply style fixes etc

---
 b_asic/GUI/__init__.py                  |  1 +
 b_asic/GUI/port_button.py               |  1 +
 b_asic/GUI/precedence_graph_window.py   |  1 +
 b_asic/GUI/properties_window.py         | 10 ++++++----
 b_asic/GUI/select_sfg_window.py         |  1 +
 b_asic/GUI/simulate_sfg_window.py       |  1 +
 b_asic/__init__.py                      |  1 +
 b_asic/codegen/vhdl/entity.py           |  1 +
 b_asic/core_operations.py               |  9 +++++++++
 b_asic/gui_utils/color_button.py        |  1 +
 b_asic/port.py                          |  1 +
 b_asic/save_load_structure.py           | 16 ++++++++++------
 b_asic/scheduler_gui/__init__.py        |  1 +
 b_asic/scheduler_gui/scheduler_event.py | 12 ++++--------
 b_asic/scheduler_gui/signal_item.py     |  1 -
 b_asic/sfg_generators.py                |  1 +
 b_asic/signal.py                        |  1 +
 b_asic/wdf_operations.py                |  6 ++++++
 examples/introduction.py                |  1 +
 examples/schedulingexample.py           |  1 +
 examples/thirdorderblwdf.py             |  1 +
 pyproject.toml                          |  4 ++--
 test/fixtures/operation_tree.py         |  4 ++--
 test/test_gui/twotapfir.py              | 15 +++------------
 test/test_operation.py                  |  1 +
 test/test_outputport.py                 |  1 +
 test/test_wdf_operations.py             |  1 +
 27 files changed, 60 insertions(+), 35 deletions(-)

diff --git a/b_asic/GUI/__init__.py b/b_asic/GUI/__init__.py
index 357ada54..89256ec9 100644
--- a/b_asic/GUI/__init__.py
+++ b/b_asic/GUI/__init__.py
@@ -2,6 +2,7 @@
 
 Graphical user interface for B-ASIC.
 """
+
 from b_asic.GUI.main_window import start_editor
 
 __all__ = ['start_editor']
diff --git a/b_asic/GUI/port_button.py b/b_asic/GUI/port_button.py
index 92f2696c..c90166d0 100644
--- a/b_asic/GUI/port_button.py
+++ b/b_asic/GUI/port_button.py
@@ -1,6 +1,7 @@
 """
 B-ASIC port button module.
 """
+
 from typing import TYPE_CHECKING
 
 from qtpy.QtCore import QMimeData, Qt, Signal
diff --git a/b_asic/GUI/precedence_graph_window.py b/b_asic/GUI/precedence_graph_window.py
index 090ca3d1..57365bf9 100644
--- a/b_asic/GUI/precedence_graph_window.py
+++ b/b_asic/GUI/precedence_graph_window.py
@@ -1,6 +1,7 @@
 """
 B-ASIC window to show precedence graph.
 """
+
 from qtpy.QtCore import Qt, Signal
 from qtpy.QtWidgets import (
     QCheckBox,
diff --git a/b_asic/GUI/properties_window.py b/b_asic/GUI/properties_window.py
index cb6cda29..6babd698 100644
--- a/b_asic/GUI/properties_window.py
+++ b/b_asic/GUI/properties_window.py
@@ -162,10 +162,12 @@ class PropertiesWindow(QDialog):
 
         self.operation.operation.set_latency_offsets(
             {
-                port: float(latency_edit.text().replace(",", "."))
-                if latency_edit.text()
-                and float(latency_edit.text().replace(",", ".")) > 0
-                else None
+                port: (
+                    float(latency_edit.text().replace(",", "."))
+                    if latency_edit.text()
+                    and float(latency_edit.text().replace(",", ".")) > 0
+                    else None
+                )
                 for port, latency_edit in self._latency_fields.items()
             }
         )
diff --git a/b_asic/GUI/select_sfg_window.py b/b_asic/GUI/select_sfg_window.py
index 53118a4b..a3ac58bf 100644
--- a/b_asic/GUI/select_sfg_window.py
+++ b/b_asic/GUI/select_sfg_window.py
@@ -1,6 +1,7 @@
 """
 B-ASIC select SFG window.
 """
+
 from typing import TYPE_CHECKING
 
 from qtpy.QtCore import Qt, Signal
diff --git a/b_asic/GUI/simulate_sfg_window.py b/b_asic/GUI/simulate_sfg_window.py
index 2e27170e..29dc5c8e 100644
--- a/b_asic/GUI/simulate_sfg_window.py
+++ b/b_asic/GUI/simulate_sfg_window.py
@@ -1,6 +1,7 @@
 """
 B-ASIC window to simulate an SFG.
 """
+
 from typing import TYPE_CHECKING, Dict
 
 from qtpy.QtCore import Qt, Signal
diff --git a/b_asic/__init__.py b/b_asic/__init__.py
index fbf1fe4f..dcc3b397 100644
--- a/b_asic/__init__.py
+++ b/b_asic/__init__.py
@@ -1,6 +1,7 @@
 """B-ASIC - Better ASIC Toolbox.
 ASIC toolbox that simplifies circuit design and optimization.
 """
+
 # Python modules.
 from b_asic.core_operations import *
 from b_asic.graph_component import *
diff --git a/b_asic/codegen/vhdl/entity.py b/b_asic/codegen/vhdl/entity.py
index 4ccbd28d..c52f8584 100644
--- a/b_asic/codegen/vhdl/entity.py
+++ b/b_asic/codegen/vhdl/entity.py
@@ -1,6 +1,7 @@
 """
 Module for code generation of VHDL entity declarations
 """
+
 from typing import Set, TextIO
 
 from b_asic.codegen.vhdl import VHDL_TAB, write_lines
diff --git a/b_asic/core_operations.py b/b_asic/core_operations.py
index b83baa72..869f5e8f 100644
--- a/b_asic/core_operations.py
+++ b/b_asic/core_operations.py
@@ -73,6 +73,7 @@ class Constant(AbstractOperation):
     def __str__(self) -> str:
         return f"{self.value}"
 
+
 class Addition(AbstractOperation):
     """
     Binary addition operation.
@@ -240,6 +241,7 @@ class AddSub(AbstractOperation):
     ========
     Addition, Subtraction
     """
+
     is_linear = True
 
     def __init__(
@@ -317,6 +319,7 @@ class Multiplication(AbstractOperation):
     ========
     ConstantMultiplication
     """
+
     is_swappable = True
 
     def __init__(
@@ -450,6 +453,7 @@ class Min(AbstractOperation):
     ========
     Max
     """
+
     is_swappable = True
 
     def __init__(
@@ -515,6 +519,7 @@ class Max(AbstractOperation):
     ========
     Min
     """
+
     is_swappable = True
 
     def __init__(
@@ -729,6 +734,7 @@ class ConstantMultiplication(AbstractOperation):
     --------
     Multiplication
     """
+
     is_linear = True
 
     def __init__(
@@ -802,6 +808,7 @@ class Butterfly(AbstractOperation):
     execution_time : int, optional
         Operation execution time (time units before operator can be reused).
     """
+
     is_linear = True
 
     def __init__(
@@ -865,6 +872,7 @@ class MAD(AbstractOperation):
     Multiplication
     Addition
     """
+
     is_swappable = True
 
     def __init__(
@@ -1196,6 +1204,7 @@ class Shift(AbstractOperation):
             raise TypeError("value must be an int")
         self.set_param("value", value)
 
+
 class Sink(AbstractOperation):
     r"""
     Sink operation.
diff --git a/b_asic/gui_utils/color_button.py b/b_asic/gui_utils/color_button.py
index 725ddda1..5f753e92 100644
--- a/b_asic/gui_utils/color_button.py
+++ b/b_asic/gui_utils/color_button.py
@@ -1,6 +1,7 @@
 """
 Qt button for use in preference dialogs, selecting color.
 """
+
 from qtpy.QtCore import Qt, Signal
 from qtpy.QtGui import QColor
 from qtpy.QtWidgets import QColorDialog, QPushButton
diff --git a/b_asic/port.py b/b_asic/port.py
index 911634ce..e0eb028f 100644
--- a/b_asic/port.py
+++ b/b_asic/port.py
@@ -347,6 +347,7 @@ class InputPort(AbstractPort):
         Returns the input port of the first delay element in the chain.
         """
         from b_asic.special_operations import Delay
+
         if not isinstance(number, int) or number < 0:
             raise TypeError("Number of delays must be a positive integer")
         tmp_signal = None
diff --git a/b_asic/save_load_structure.py b/b_asic/save_load_structure.py
index 1dccc40b..58497f4d 100644
--- a/b_asic/save_load_structure.py
+++ b/b_asic/save_load_structure.py
@@ -63,9 +63,11 @@ def sfg_to_python(
                 if attr != "latency" and hasattr(comp, attr)
             }
             params = {
-                attr: getattr(comp, attr)
-                if not isinstance(getattr(comp, attr), str)
-                else f'"{getattr(comp, attr)}"'
+                attr: (
+                    getattr(comp, attr)
+                    if not isinstance(getattr(comp, attr), str)
+                    else f'"{getattr(comp, attr)}"'
+                )
                 for attr in params_filtered
             }
             params = {k: v for k, v in params.items() if v}
@@ -153,9 +155,11 @@ def python_to_sfg(path: str) -> Tuple[SFG, Dict[str, Tuple[int, int]]]:
         exec(code, globals(), locals())
 
     return (
-        locals()["prop"]["name"]
-        if "prop" in locals()
-        else [v for k, v in locals().items() if isinstance(v, SFG)][0],
+        (
+            locals()["prop"]["name"]
+            if "prop" in locals()
+            else [v for k, v in locals().items() if isinstance(v, SFG)][0]
+        ),
         locals()["positions"] if "positions" in locals() else {},
     )
 
diff --git a/b_asic/scheduler_gui/__init__.py b/b_asic/scheduler_gui/__init__.py
index fa401de5..65a54cad 100644
--- a/b_asic/scheduler_gui/__init__.py
+++ b/b_asic/scheduler_gui/__init__.py
@@ -3,6 +3,7 @@ B-ASIC Scheduler-gui Module.
 
 Graphical user interface for B-ASIC scheduler.
 """
+
 from b_asic.scheduler_gui.main_window import start_scheduler
 
 __all__ = ['start_scheduler']
diff --git a/b_asic/scheduler_gui/scheduler_event.py b/b_asic/scheduler_gui/scheduler_event.py
index d11df346..6df2b679 100644
--- a/b_asic/scheduler_gui/scheduler_event.py
+++ b/b_asic/scheduler_gui/scheduler_event.py
@@ -69,12 +69,10 @@ class SchedulerEvent:  # PyQt5
     # Filters #
     ###########
     @overload
-    def installSceneEventFilters(self, filterItems: QGraphicsItem) -> None:
-        ...
+    def installSceneEventFilters(self, filterItems: QGraphicsItem) -> None: ...
 
     @overload
-    def installSceneEventFilters(self, filterItems: List[QGraphicsItem]) -> None:
-        ...
+    def installSceneEventFilters(self, filterItems: List[QGraphicsItem]) -> None: ...
 
     def installSceneEventFilters(self, filterItems) -> None:
         """
@@ -88,12 +86,10 @@ class SchedulerEvent:  # PyQt5
             item.installSceneEventFilter(self)
 
     @overload
-    def removeSceneEventFilters(self, filterItems: QGraphicsItem) -> None:
-        ...
+    def removeSceneEventFilters(self, filterItems: QGraphicsItem) -> None: ...
 
     @overload
-    def removeSceneEventFilters(self, filterItems: List[QGraphicsItem]) -> None:
-        ...
+    def removeSceneEventFilters(self, filterItems: List[QGraphicsItem]) -> None: ...
 
     def removeSceneEventFilters(self, filterItems) -> None:
         """
diff --git a/b_asic/scheduler_gui/signal_item.py b/b_asic/scheduler_gui/signal_item.py
index ccb065df..723bf228 100644
--- a/b_asic/scheduler_gui/signal_item.py
+++ b/b_asic/scheduler_gui/signal_item.py
@@ -5,7 +5,6 @@ Contains the scheduler_gui SignalItem class for drawing and maintaining a signal
 in the schedule.
 """
 
-
 from typing import TYPE_CHECKING, cast
 
 from qtpy.QtCore import QPointF
diff --git a/b_asic/sfg_generators.py b/b_asic/sfg_generators.py
index 1f1bf2c7..051249ca 100644
--- a/b_asic/sfg_generators.py
+++ b/b_asic/sfg_generators.py
@@ -3,6 +3,7 @@ B-ASIC signal flow graph generators.
 
 This module contains a number of functions generating SFGs for specific functions.
 """
+
 from typing import Dict, Optional, Sequence, Union
 
 import numpy as np
diff --git a/b_asic/signal.py b/b_asic/signal.py
index df04fadc..d755bfd5 100644
--- a/b_asic/signal.py
+++ b/b_asic/signal.py
@@ -3,6 +3,7 @@ B-ASIC Signal Module.
 
 Contains the class for representing the connections between operations.
 """
+
 from typing import TYPE_CHECKING, Iterable, Optional, Union
 
 from b_asic.graph_component import AbstractGraphComponent, GraphComponent
diff --git a/b_asic/wdf_operations.py b/b_asic/wdf_operations.py
index 95213e83..027a1601 100644
--- a/b_asic/wdf_operations.py
+++ b/b_asic/wdf_operations.py
@@ -3,6 +3,7 @@ B-ASIC Core Operations Module.
 
 Contains wave digital filter adaptors.
 """
+
 from typing import Dict, Iterable, Optional, Tuple
 
 from b_asic.graph_component import Name, TypeName
@@ -21,6 +22,7 @@ class SymmetricTwoportAdaptor(AbstractOperation):
         y_1 & = & x_0 + \text{value}\times\left(x_1 - x_0\right)
         \end{eqnarray}
     """
+
     is_linear = True
     is_swappable = True
 
@@ -91,6 +93,7 @@ class SeriesTwoportAdaptor(AbstractOperation):
 
     Port 1 is the dependent port.
     """
+
     is_linear = True
     is_swappable = True
 
@@ -166,6 +169,7 @@ class ParallelTwoportAdaptor(AbstractOperation):
 
     Port 1 is the dependent port.
     """
+
     is_linear = True
     is_swappable = True
 
@@ -242,6 +246,7 @@ class SeriesThreeportAdaptor(AbstractOperation):
     Port 2 is the dependent port.
 
     """
+
     is_linear = True
     is_swappable = True
 
@@ -312,6 +317,7 @@ class ReflectionFreeSeriesThreeportAdaptor(AbstractOperation):
 
     Port 1 is the reflection-free port and port 2 is the dependent port.
     """
+
     is_linear = True
     is_swappable = True
 
diff --git a/examples/introduction.py b/examples/introduction.py
index 16778e30..0caa0bd0 100644
--- a/examples/introduction.py
+++ b/examples/introduction.py
@@ -3,6 +3,7 @@
 Introduction example for the TSTE87 course
 ==========================================
 """
+
 from b_asic.core_operations import Addition, ConstantMultiplication
 from b_asic.signal_flow_graph import SFG
 from b_asic.special_operations import Delay, Input, Output
diff --git a/examples/schedulingexample.py b/examples/schedulingexample.py
index 31663194..f68c42a6 100644
--- a/examples/schedulingexample.py
+++ b/examples/schedulingexample.py
@@ -14,6 +14,7 @@ Node numbering from the original SFG used with the Matlab toolbox::
     sfg=addoperand(sfg,'delay',1,3,4);
     sfg=addoperand(sfg,'out',1,7);
 """
+
 from b_asic.signal_flow_graph import SFG
 from b_asic.special_operations import Delay, Input, Output
 
diff --git a/examples/thirdorderblwdf.py b/examples/thirdorderblwdf.py
index 02b45486..1915c602 100644
--- a/examples/thirdorderblwdf.py
+++ b/examples/thirdorderblwdf.py
@@ -5,6 +5,7 @@ Third-order Bireciprocal LWDF
 
 Small bireciprocal lattice wave digital filter.
 """
+
 import numpy as np
 from mplsignal.freq_plots import freqz_fir
 
diff --git a/pyproject.toml b/pyproject.toml
index 558e8e9f..23033b05 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -76,7 +76,7 @@ ignore_missing_imports = true
 precision = 2
 
 [tool.ruff]
-ignore = ["F403"]
+lint.ignore = ["F403"]
 
 [tool.typos]
-default.extend-identifiers = { addd0 = "addd0", inout = "inout", ArChItEctUrE = "ArChItEctUrE" }
+default.extend-identifiers = { addd0 = "addd0", inout = "inout", ArChItEctUrE = "ArChItEctUrE", ser2p = "ser2p", ser3p = "ser3p" }
diff --git a/test/fixtures/operation_tree.py b/test/fixtures/operation_tree.py
index 02134668..23c1179e 100644
--- a/test/fixtures/operation_tree.py
+++ b/test/fixtures/operation_tree.py
@@ -87,10 +87,10 @@ def butterfly_operation_tree():
         *(
             Butterfly(
                 *(Butterfly(Constant(2), Constant(4), name="bfly3").outputs),
-                name="bfly2"
+                name="bfly2",
             ).outputs
         ),
-        name="bfly1"
+        name="bfly1",
     )
 
 
diff --git a/test/test_gui/twotapfir.py b/test/test_gui/twotapfir.py
index e0d7ca6f..44300bb8 100644
--- a/test/test_gui/twotapfir.py
+++ b/test/test_gui/twotapfir.py
@@ -3,15 +3,8 @@ B-ASIC automatically generated SFG file.
 Name: twotapfir
 Last saved: 2023-01-24 14:38:17.654639.
 """
-from b_asic import (
-    SFG,
-    Addition,
-    ConstantMultiplication,
-    Delay,
-    Input,
-    Output,
-    Signal,
-)
+
+from b_asic import SFG, Addition, ConstantMultiplication, Delay, Input, Output, Signal
 
 # Inputs:
 in1 = Input(name="in1")
@@ -24,9 +17,7 @@ t1 = Delay(initial_value=0, name="")
 cmul1 = ConstantMultiplication(
     value=-0.5, name="cmul1", latency_offsets={'in0': None, 'out0': None}
 )
-add1 = Addition(
-    name="add1", latency_offsets={'in0': None, 'in1': None, 'out0': None}
-)
+add1 = Addition(name="add1", latency_offsets={'in0': None, 'in1': None, 'out0': None})
 cmul2 = ConstantMultiplication(
     value=0.5, name="cmul2", latency_offsets={'in0': None, 'out0': None}
 )
diff --git a/test/test_operation.py b/test/test_operation.py
index dc7ad0b1..ebcd1789 100644
--- a/test/test_operation.py
+++ b/test/test_operation.py
@@ -1,6 +1,7 @@
 """
 B-ASIC test suite for the AbstractOperation class.
 """
+
 import re
 
 import pytest
diff --git a/test/test_outputport.py b/test/test_outputport.py
index 3480c2eb..5ebc5655 100644
--- a/test/test_outputport.py
+++ b/test/test_outputport.py
@@ -1,6 +1,7 @@
 """
 B-ASIC test suite for OutputPort.
 """
+
 import pytest
 
 from b_asic import Signal
diff --git a/test/test_wdf_operations.py b/test/test_wdf_operations.py
index be86b532..c6b30744 100644
--- a/test/test_wdf_operations.py
+++ b/test/test_wdf_operations.py
@@ -1,4 +1,5 @@
 """B-ASIC test suite for the core operations."""
+
 import pytest
 
 from b_asic.wdf_operations import (
-- 
GitLab