diff --git a/.git_hooks/pre-commit b/.git_hooks/pre-commit index 6928f8a5..2ab3ba15 100755 --- a/.git_hooks/pre-commit +++ b/.git_hooks/pre-commit @@ -1,2 +1,3 @@ -black --line-length=100 $(git diff --cached --name-only --diff-filter=ACM -- '***.py') -git add $(git diff --cached --name-only --diff-filter=ACM -- '***.py') +black --line-length=100 $(git diff --cached --name-only --diff-filter=ACM -- '*.py') +isort --line-length=100 --profile=black --multi-line=3 --trailing-comma $(git diff --cached --name-only --diff-filter=ACM -- '*.py') +git add $(git diff --cached --name-only --diff-filter=ACM -- '*.py') \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f2409a18..0b50dcc2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -23,7 +23,8 @@ formatter: stage: Formatter needs: [] script: - - pip install black + - pip install black isort + - isort --check --diff --line-length=100 --profile=black --multi-line=3 --trailing-comma ./ - black --check --diff --color --line-length=100 ./ pylint: stage: Formatter diff --git a/bec_widgets/cli/generate_cli.py b/bec_widgets/cli/generate_cli.py index eff4579a..0dd42928 100644 --- a/bec_widgets/cli/generate_cli.py +++ b/bec_widgets/cli/generate_cli.py @@ -1,9 +1,10 @@ # pylint: disable=missing-module-docstring from __future__ import annotations + import inspect -import black import sys +import black if sys.version_info >= (3, 11): from typing import get_overloads @@ -106,11 +107,11 @@ class {class_name}(RPCBase):""" if __name__ == "__main__": # pragma: no cover import os - from bec_widgets.widgets.figure import BECFigure - from bec_widgets.widgets.plots import BECPlotBase, BECWaveform1D, BECImageShow - from bec_widgets.widgets.plots.waveform1d import BECCurve - from bec_widgets.widgets.plots.image import BECImageItem from bec_widgets.utils import BECConnector + from bec_widgets.widgets.figure import BECFigure + from bec_widgets.widgets.plots import BECImageShow, BECPlotBase, BECWaveform1D + from bec_widgets.widgets.plots.image import BECImageItem + from bec_widgets.widgets.plots.waveform1d import BECCurve current_path = os.path.dirname(__file__) client_path = os.path.join(current_path, "client.py") diff --git a/bec_widgets/cli/server.py b/bec_widgets/cli/server.py index 90d01fa0..c7142a83 100644 --- a/bec_widgets/cli/server.py +++ b/bec_widgets/cli/server.py @@ -1,8 +1,8 @@ import inspect +from bec_lib import MessageEndpoints, messages from qtpy.QtCore import QTimer -from bec_lib import MessageEndpoints, messages from bec_widgets.utils import BECDispatcher from bec_widgets.utils.bec_connector import BECConnector from bec_widgets.widgets.figure import BECFigure @@ -115,8 +115,7 @@ if __name__ == "__main__": # pragma: no cover import argparse import sys - from qtpy.QtWidgets import QApplication - from qtpy.QtWidgets import QMainWindow + from qtpy.QtWidgets import QApplication, QMainWindow app = QApplication(sys.argv) app.setApplicationName("BEC Figure") diff --git a/bec_widgets/examples/__init__.py b/bec_widgets/examples/__init__.py index bd76a2c4..cdec4903 100644 --- a/bec_widgets/examples/__init__.py +++ b/bec_widgets/examples/__init__.py @@ -2,8 +2,8 @@ from .motor_movement import ( MotorControlApp, MotorControlMap, MotorControlPanel, - MotorControlPanelRelative, MotorControlPanelAbsolute, + MotorControlPanelRelative, MotorCoordinateTable, MotorThread, ) diff --git a/bec_widgets/examples/eiger_plot/eiger_plot.py b/bec_widgets/examples/eiger_plot/eiger_plot.py index d6f8e5ea..60ffa295 100644 --- a/bec_widgets/examples/eiger_plot/eiger_plot.py +++ b/bec_widgets/examples/eiger_plot/eiger_plot.py @@ -6,20 +6,11 @@ import h5py import numpy as np import pyqtgraph as pg import zmq +from pyqtgraph.Qt import uic from qtpy.QtCore import Signal as pyqtSignal from qtpy.QtCore import Slot as pyqtSlot from qtpy.QtGui import QKeySequence -from qtpy.QtWidgets import ( - QWidget, - QFileDialog, - QShortcut, - QDialog, - QVBoxLayout, - QLabel, - QFrame, -) -from pyqtgraph.Qt import uic - +from qtpy.QtWidgets import QDialog, QFileDialog, QFrame, QLabel, QShortcut, QVBoxLayout, QWidget # from scipy.stats import multivariate_normal @@ -307,6 +298,7 @@ class EigerPlot(QWidget): if __name__ == "__main__": import sys + from qtpy.QtWidgets import QApplication app = QApplication(sys.argv) diff --git a/bec_widgets/examples/modular_app/modular_app.py b/bec_widgets/examples/modular_app/modular_app.py index 8d40c957..e6116e18 100644 --- a/bec_widgets/examples/modular_app/modular_app.py +++ b/bec_widgets/examples/modular_app/modular_app.py @@ -1,7 +1,7 @@ import os from qtpy import uic -from qtpy.QtWidgets import QMainWindow, QApplication +from qtpy.QtWidgets import QApplication, QMainWindow from bec_widgets.utils.bec_dispatcher import BECDispatcher from bec_widgets.widgets import BECMonitor diff --git a/bec_widgets/examples/motor_movement/__init__.py b/bec_widgets/examples/motor_movement/__init__.py index cb9219da..6e1ea76e 100644 --- a/bec_widgets/examples/motor_movement/__init__.py +++ b/bec_widgets/examples/motor_movement/__init__.py @@ -2,8 +2,8 @@ from .motor_control_compilations import ( MotorControlApp, MotorControlMap, MotorControlPanel, - MotorControlPanelRelative, MotorControlPanelAbsolute, + MotorControlPanelRelative, MotorCoordinateTable, MotorThread, ) diff --git a/bec_widgets/examples/motor_movement/motor_control_compilations.py b/bec_widgets/examples/motor_movement/motor_control_compilations.py index 2e26350c..f682e091 100644 --- a/bec_widgets/examples/motor_movement/motor_control_compilations.py +++ b/bec_widgets/examples/motor_movement/motor_control_compilations.py @@ -1,22 +1,17 @@ # pylint: disable = no-name-in-module,missing-class-docstring, missing-module-docstring import qdarktheme -from qtpy.QtWidgets import QApplication -from qtpy.QtWidgets import QVBoxLayout -from qtpy.QtWidgets import ( - QWidget, - QSplitter, -) from qtpy.QtCore import Qt +from qtpy.QtWidgets import QApplication, QSplitter, QVBoxLayout, QWidget from bec_widgets.utils.bec_dispatcher import BECDispatcher from bec_widgets.widgets import ( MotorControlAbsolute, MotorControlRelative, MotorControlSelection, - MotorThread, - MotorMap, MotorCoordinateTable, + MotorMap, + MotorThread, ) CONFIG_DEFAULT = { diff --git a/bec_widgets/examples/motor_movement/motor_example.py b/bec_widgets/examples/motor_movement/motor_example.py index 34fa3918..0c59ac54 100644 --- a/bec_widgets/examples/motor_movement/motor_example.py +++ b/bec_widgets/examples/motor_movement/motor_example.py @@ -5,29 +5,28 @@ from functools import partial import numpy as np import pyqtgraph as pg +from bec_lib import MessageEndpoints, messages +from pyqtgraph.Qt import QtCore, QtWidgets, uic from qtpy import QtGui -from qtpy.QtCore import QThread, Slot as pyqtSlot -from qtpy.QtCore import Signal as pyqtSignal, Qt -from qtpy.QtGui import QDoubleValidator -from qtpy.QtGui import QKeySequence +from qtpy.QtCore import Qt, QThread +from qtpy.QtCore import Signal as pyqtSignal +from qtpy.QtCore import Slot as pyqtSlot +from qtpy.QtGui import QDoubleValidator, QKeySequence from qtpy.QtWidgets import ( QApplication, - QWidget, - QFileDialog, QDialog, - QVBoxLayout, - QLabel, - QPushButton, + QFileDialog, QFrame, + QLabel, + QMessageBox, + QPushButton, + QShortcut, + QVBoxLayout, + QWidget, ) -from qtpy.QtWidgets import QMessageBox -from qtpy.QtWidgets import QShortcut -from pyqtgraph.Qt import QtWidgets, uic, QtCore -from bec_lib import MessageEndpoints, messages from bec_widgets.utils import DoubleValidationDelegate - # TODO - General features # - put motor status (moving, stopped, etc) # - add mouse interactions with the plot -> click to select coordinates, double click to move? @@ -1306,9 +1305,9 @@ class MotorControl(QThread): if __name__ == "__main__": - import yaml import argparse + import yaml from bec_lib import BECClient, ServiceConfig parser = argparse.ArgumentParser(description="Motor App") diff --git a/bec_widgets/examples/stream_plot/stream_plot.py b/bec_widgets/examples/stream_plot/stream_plot.py index 274ceb2b..d1b61fdd 100644 --- a/bec_widgets/examples/stream_plot/stream_plot.py +++ b/bec_widgets/examples/stream_plot/stream_plot.py @@ -5,14 +5,15 @@ import time import numpy as np import pyqtgraph import pyqtgraph as pg -from bec_lib import messages, MessageEndpoints +from bec_lib import MessageEndpoints, messages from bec_lib.redis_connector import RedisConnector -from qtpy.QtCore import Slot as pyqtSlot -from qtpy.QtWidgets import QTableWidgetItem from pyqtgraph import mkBrush, mkPen from pyqtgraph.Qt import QtCore, QtWidgets, uic from pyqtgraph.Qt.QtCore import pyqtSignal -from bec_widgets.utils import Crosshair, Colors +from qtpy.QtCore import Slot as pyqtSlot +from qtpy.QtWidgets import QTableWidgetItem + +from bec_widgets.utils import Colors, Crosshair from bec_widgets.utils.bec_dispatcher import BECDispatcher diff --git a/bec_widgets/utils/__init__.py b/bec_widgets/utils/__init__.py index a505a639..f23ab653 100644 --- a/bec_widgets/utils/__init__.py +++ b/bec_widgets/utils/__init__.py @@ -1,8 +1,8 @@ -from .crosshair import Crosshair -from .colors import Colors -from .validator_delegate import DoubleValidationDelegate -from .bec_table import BECTable from .bec_connector import BECConnector, ConnectionConfig from .bec_dispatcher import BECDispatcher -from .rpc_decorator import rpc_public, register_rpc_methods +from .bec_table import BECTable +from .colors import Colors +from .crosshair import Crosshair from .entry_validator import EntryValidator +from .rpc_decorator import register_rpc_methods, rpc_public +from .validator_delegate import DoubleValidationDelegate diff --git a/bec_widgets/utils/bec_connector.py b/bec_widgets/utils/bec_connector.py index a69f75aa..9f249f17 100644 --- a/bec_widgets/utils/bec_connector.py +++ b/bec_widgets/utils/bec_connector.py @@ -2,7 +2,7 @@ from __future__ import annotations import time -from typing import Type, Optional +from typing import Optional, Type from pydantic import BaseModel, Field, field_validator from qtpy.QtCore import Slot as pyqtSlot diff --git a/bec_widgets/utils/bec_dispatcher.py b/bec_widgets/utils/bec_dispatcher.py index 3abb8132..2444d039 100644 --- a/bec_widgets/utils/bec_dispatcher.py +++ b/bec_widgets/utils/bec_dispatcher.py @@ -8,11 +8,10 @@ from typing import Union import redis from bec_lib import BECClient, ServiceConfig +from bec_lib.endpoints import EndpointInfo from qtpy.QtCore import QObject from qtpy.QtCore import Signal as pyqtSignal -from bec_lib.endpoints import EndpointInfo - # Adding a new pyqt signal requires a class factory, as they must be part of the class definition # and cannot be dynamically added as class attributes after the class has been defined. _signal_class_factory = ( diff --git a/bec_widgets/utils/bec_table.py b/bec_widgets/utils/bec_table.py index f30ec3ed..9fbbea26 100644 --- a/bec_widgets/utils/bec_table.py +++ b/bec_widgets/utils/bec_table.py @@ -1,5 +1,5 @@ -from qtpy.QtWidgets import QTableWidget from qtpy.QtCore import Qt +from qtpy.QtWidgets import QTableWidget class BECTable(QTableWidget): diff --git a/bec_widgets/utils/crosshair.py b/bec_widgets/utils/crosshair.py index de708ce6..4c05d844 100644 --- a/bec_widgets/utils/crosshair.py +++ b/bec_widgets/utils/crosshair.py @@ -2,7 +2,8 @@ import numpy as np import pyqtgraph as pg # from qtpy.QtCore import QObject, pyqtSignal -from qtpy.QtCore import QObject, Signal as pyqtSignal +from qtpy.QtCore import QObject +from qtpy.QtCore import Signal as pyqtSignal class Crosshair(QObject): diff --git a/bec_widgets/utils/validator_delegate.py b/bec_widgets/utils/validator_delegate.py index ac8dcdf4..a64d3587 100644 --- a/bec_widgets/utils/validator_delegate.py +++ b/bec_widgets/utils/validator_delegate.py @@ -2,7 +2,7 @@ # from qtpy.QtWidgets import QStyledItemDelegate, QLineEdit from qtpy.QtGui import QDoubleValidator -from qtpy.QtWidgets import QStyledItemDelegate, QLineEdit +from qtpy.QtWidgets import QLineEdit, QStyledItemDelegate class DoubleValidationDelegate(QStyledItemDelegate): diff --git a/bec_widgets/utils/widget_io.py b/bec_widgets/utils/widget_io.py index d5c7ccca..7e40a4d8 100644 --- a/bec_widgets/utils/widget_io.py +++ b/bec_widgets/utils/widget_io.py @@ -3,16 +3,16 @@ from abc import ABC, abstractmethod from qtpy.QtWidgets import ( QApplication, - QWidget, - QLineEdit, + QCheckBox, QComboBox, - QTableWidget, - QSpinBox, QDoubleSpinBox, + QLabel, + QLineEdit, + QSpinBox, + QTableWidget, QTableWidgetItem, QVBoxLayout, - QCheckBox, - QLabel, + QWidget, ) diff --git a/bec_widgets/utils/yaml_dialog.py b/bec_widgets/utils/yaml_dialog.py index 515b5634..07be67a7 100644 --- a/bec_widgets/utils/yaml_dialog.py +++ b/bec_widgets/utils/yaml_dialog.py @@ -1,6 +1,7 @@ # pylint: disable=no-name-in-module from typing import Union + import yaml from qtpy.QtWidgets import QFileDialog diff --git a/bec_widgets/widgets/__init__.py b/bec_widgets/widgets/__init__.py index 7f63bff4..76c264a6 100644 --- a/bec_widgets/widgets/__init__.py +++ b/bec_widgets/widgets/__init__.py @@ -1,15 +1,15 @@ -from .monitor import BECMonitor, ConfigDialog -from .motor_map import MotorMap -from .scan_control import ScanControl -from .toolbar import ModularToolBar from .editor import BECEditor +from .figure import BECFigure, FigureConfig +from .monitor import BECMonitor, ConfigDialog from .monitor_scatter_2D import BECMonitor2DScatter from .motor_control import ( - MotorControlRelative, MotorControlAbsolute, + MotorControlRelative, MotorControlSelection, - MotorThread, MotorCoordinateTable, + MotorThread, ) -from .figure import FigureConfig, BECFigure -from .plots import BECWaveform1D, BECCurve, BECPlotBase +from .motor_map import MotorMap +from .plots import BECCurve, BECPlotBase, BECWaveform1D +from .scan_control import ScanControl +from .toolbar import ModularToolBar diff --git a/bec_widgets/widgets/editor/editor.py b/bec_widgets/widgets/editor/editor.py index 006bc5da..ecb8acdf 100644 --- a/bec_widgets/widgets/editor/editor.py +++ b/bec_widgets/widgets/editor/editor.py @@ -3,23 +3,15 @@ import subprocess import qdarktheme from jedi import Script from jedi.api import Completion - -# pylint: disable=no-name-in-module -from qtpy.Qsci import QsciScintilla, QsciLexerPython, QsciAPIs -from qtpy.QtCore import Qt -from qtpy.QtCore import Signal, QThread -from qtpy.QtGui import QColor, QFont -from qtpy.QtWidgets import ( - QApplication, - QFileDialog, - QTextEdit, - QVBoxLayout, - QWidget, -) -from qtpy.QtWidgets import QSplitter from qtconsole.manager import QtKernelManager from qtconsole.rich_jupyter_widget import RichJupyterWidget +# pylint: disable=no-name-in-module +from qtpy.Qsci import QsciAPIs, QsciLexerPython, QsciScintilla +from qtpy.QtCore import Qt, QThread, Signal +from qtpy.QtGui import QColor, QFont +from qtpy.QtWidgets import QApplication, QFileDialog, QSplitter, QTextEdit, QVBoxLayout, QWidget + from bec_widgets.widgets import ModularToolBar diff --git a/bec_widgets/widgets/figure/__init__.py b/bec_widgets/widgets/figure/__init__.py index 0d6e0a15..7970307e 100644 --- a/bec_widgets/widgets/figure/__init__.py +++ b/bec_widgets/widgets/figure/__init__.py @@ -1 +1 @@ -from .figure import FigureConfig, BECFigure +from .figure import BECFigure, FigureConfig diff --git a/bec_widgets/widgets/figure/figure.py b/bec_widgets/widgets/figure/figure.py index 10a37903..ac68f94e 100644 --- a/bec_widgets/widgets/figure/figure.py +++ b/bec_widgets/widgets/figure/figure.py @@ -11,17 +11,16 @@ import pyqtgraph as pg import qdarktheme from pydantic import Field from pyqtgraph.Qt import uic -from qtpy.QtWidgets import QApplication, QWidget -from qtpy.QtWidgets import QVBoxLayout, QMainWindow from qtpy.QtCore import Signal as pyqtSignal +from qtpy.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget from bec_widgets.utils import BECConnector, BECDispatcher, ConnectionConfig from bec_widgets.widgets.plots import ( + BECImageShow, BECPlotBase, BECWaveform1D, Waveform1DConfig, WidgetConfig, - BECImageShow, ) from bec_widgets.widgets.plots.image import ImageConfig diff --git a/bec_widgets/widgets/monitor/__init__.py b/bec_widgets/widgets/monitor/__init__.py index 49161f1a..3be54f6d 100644 --- a/bec_widgets/widgets/monitor/__init__.py +++ b/bec_widgets/widgets/monitor/__init__.py @@ -1,2 +1,2 @@ -from .monitor import BECMonitor from .config_dialog import ConfigDialog +from .monitor import BECMonitor diff --git a/bec_widgets/widgets/monitor/config_dialog.py b/bec_widgets/widgets/monitor/config_dialog.py index 1641c11c..9450be25 100644 --- a/bec_widgets/widgets/monitor/config_dialog.py +++ b/bec_widgets/widgets/monitor/config_dialog.py @@ -1,23 +1,22 @@ import os +from pydantic import ValidationError from qtpy import uic from qtpy.QtCore import Signal as pyqtSignal from qtpy.QtWidgets import ( QApplication, - QWidget, - QVBoxLayout, - QTableWidget, - QTabWidget, - QTableWidgetItem, QLineEdit, + QMessageBox, + QTableWidget, + QTableWidgetItem, + QTabWidget, + QVBoxLayout, + QWidget, ) +from bec_widgets.utils.bec_dispatcher import BECDispatcher from bec_widgets.utils.yaml_dialog import load_yaml, save_yaml from bec_widgets.validation import MonitorConfigValidator -from pydantic import ValidationError -from qtpy.QtWidgets import QApplication, QMessageBox -from bec_widgets.utils.bec_dispatcher import BECDispatcher - current_path = os.path.dirname(__file__) Ui_Form, BaseClass = uic.loadUiType(os.path.join(current_path, "config_dialog.ui")) diff --git a/bec_widgets/widgets/motor_control/__init__.py b/bec_widgets/widgets/motor_control/__init__.py index fe609636..ce52ec53 100644 --- a/bec_widgets/widgets/motor_control/__init__.py +++ b/bec_widgets/widgets/motor_control/__init__.py @@ -1,7 +1,7 @@ from .motor_control import ( - MotorControlRelative, MotorControlAbsolute, + MotorControlRelative, MotorControlSelection, - MotorThread, MotorCoordinateTable, + MotorThread, ) diff --git a/bec_widgets/widgets/motor_control/motor_control.py b/bec_widgets/widgets/motor_control/motor_control.py index ceab7734..309f1075 100644 --- a/bec_widgets/widgets/motor_control/motor_control.py +++ b/bec_widgets/widgets/motor_control/motor_control.py @@ -2,25 +2,26 @@ import os from enum import Enum -from qtpy import uic -from qtpy.QtCore import QThread, Slot as pyqtSlot -from qtpy.QtCore import Signal as pyqtSignal, Qt -from qtpy.QtGui import QKeySequence, QDoubleValidator -from qtpy.QtWidgets import QMessageBox -from qtpy.QtWidgets import ( - QComboBox, - QWidget, - QDoubleSpinBox, - QShortcut, - QTableWidget, - QPushButton, - QTableWidgetItem, - QCheckBox, - QLineEdit, -) - from bec_lib.alarm_handler import AlarmBase from bec_lib.device import Positioner +from qtpy import uic +from qtpy.QtCore import Qt, QThread +from qtpy.QtCore import Signal as pyqtSignal +from qtpy.QtCore import Slot as pyqtSlot +from qtpy.QtGui import QDoubleValidator, QKeySequence +from qtpy.QtWidgets import ( + QCheckBox, + QComboBox, + QDoubleSpinBox, + QLineEdit, + QMessageBox, + QPushButton, + QShortcut, + QTableWidget, + QTableWidgetItem, + QWidget, +) + from bec_widgets.utils.bec_dispatcher import BECDispatcher CONFIG_DEFAULT = { diff --git a/bec_widgets/widgets/motor_map/motor_map.py b/bec_widgets/widgets/motor_map/motor_map.py index ff82bf47..7229a8e9 100644 --- a/bec_widgets/widgets/motor_map/motor_map.py +++ b/bec_widgets/widgets/motor_map/motor_map.py @@ -7,14 +7,13 @@ from typing import Any, Union import numpy as np import pyqtgraph as pg from bec_lib import MessageEndpoints -from qtpy import QtCore -from qtpy import QtGui +from qtpy import QtCore, QtGui from qtpy.QtCore import Signal as pyqtSignal from qtpy.QtCore import Slot as pyqtSlot from qtpy.QtWidgets import QApplication -from bec_widgets.utils.yaml_dialog import load_yaml from bec_widgets.utils.bec_dispatcher import BECDispatcher +from bec_widgets.utils.yaml_dialog import load_yaml CONFIG_DEFAULT = { "plot_settings": { diff --git a/bec_widgets/widgets/plots/__init__.py b/bec_widgets/widgets/plots/__init__.py index 9519fbb0..8b45f0d9 100644 --- a/bec_widgets/widgets/plots/__init__.py +++ b/bec_widgets/widgets/plots/__init__.py @@ -1,3 +1,3 @@ -from .plot_base import AxisConfig, WidgetConfig, BECPlotBase -from .waveform1d import Waveform1DConfig, BECWaveform1D, BECCurve -from .image import BECImageShow, ImageItemConfig, BECImageItem +from .image import BECImageItem, BECImageShow, ImageItemConfig +from .plot_base import AxisConfig, BECPlotBase, WidgetConfig +from .waveform1d import BECCurve, BECWaveform1D, Waveform1DConfig diff --git a/bec_widgets/widgets/plots/image.py b/bec_widgets/widgets/plots/image.py index 9f150624..20fe90a0 100644 --- a/bec_widgets/widgets/plots/image.py +++ b/bec_widgets/widgets/plots/image.py @@ -1,18 +1,18 @@ from __future__ import annotations from collections import defaultdict -from typing import Literal, Optional, Any +from typing import Any, Literal, Optional import numpy as np import pyqtgraph as pg -from pydantic import Field, BaseModel, ValidationError -from qtpy.QtCore import QThread, QObject +from bec_lib import MessageEndpoints +from pydantic import BaseModel, Field, ValidationError +from qtpy.QtCore import QObject, QThread from qtpy.QtCore import Signal as pyqtSignal from qtpy.QtCore import Slot as pyqtSlot from qtpy.QtWidgets import QWidget -from bec_lib import MessageEndpoints -from bec_widgets.utils import ConnectionConfig, BECConnector +from bec_widgets.utils import BECConnector, ConnectionConfig from bec_widgets.widgets.plots import BECPlotBase, WidgetConfig diff --git a/bec_widgets/widgets/plots/plot_base.py b/bec_widgets/widgets/plots/plot_base.py index 9b01d48d..10f7ffc6 100644 --- a/bec_widgets/widgets/plots/plot_base.py +++ b/bec_widgets/widgets/plots/plot_base.py @@ -4,7 +4,6 @@ from typing import Literal, Optional import numpy as np import pyqtgraph as pg - from pydantic import BaseModel, Field from qtpy.QtWidgets import QWidget diff --git a/bec_widgets/widgets/scan_control/scan_control.py b/bec_widgets/widgets/scan_control/scan_control.py index e7b5670f..b89e3b02 100644 --- a/bec_widgets/widgets/scan_control/scan_control.py +++ b/bec_widgets/widgets/scan_control/scan_control.py @@ -1,28 +1,28 @@ import msgpack +from bec_lib import MessageEndpoints from qtpy.QtWidgets import ( QApplication, - QWidget, - QComboBox, - QPushButton, - QVBoxLayout, - QGroupBox, - QLabel, - QLineEdit, - QDoubleSpinBox, - QSpinBox, QCheckBox, + QComboBox, + QDoubleSpinBox, QFrame, - QHBoxLayout, - QLayout, QGridLayout, + QGroupBox, + QHBoxLayout, + QHeaderView, + QLabel, + QLayout, + QLineEdit, + QPushButton, + QSpinBox, QTableWidget, QTableWidgetItem, - QHeaderView, + QVBoxLayout, + QWidget, ) -from bec_lib import MessageEndpoints -from bec_widgets.utils.widget_io import WidgetIO from bec_widgets.utils.bec_dispatcher import BECDispatcher +from bec_widgets.utils.widget_io import WidgetIO class ScanArgType: diff --git a/bec_widgets/widgets/toolbar/toolbar.py b/bec_widgets/widgets/toolbar/toolbar.py index 58f742a7..294e6449 100644 --- a/bec_widgets/widgets/toolbar/toolbar.py +++ b/bec_widgets/widgets/toolbar/toolbar.py @@ -1,11 +1,9 @@ from abc import ABC, abstractmethod # pylint: disable=no-name-in-module -from qtpy.QtCore import QSize -from qtpy.QtWidgets import QToolBar, QStyle, QApplication -from qtpy.QtCore import QTimer +from qtpy.QtCore import QSize, QTimer from qtpy.QtGui import QAction -from qtpy.QtWidgets import QWidget +from qtpy.QtWidgets import QApplication, QStyle, QToolBar, QWidget class ToolBarAction(ABC): diff --git a/setup.py b/setup.py index f0166e80..d0de04e8 100644 --- a/setup.py +++ b/setup.py @@ -1,5 +1,5 @@ # pylint: disable= missing-module-docstring -from setuptools import setup, find_packages +from setuptools import find_packages, setup __version__ = "0.44.4" @@ -40,6 +40,7 @@ if __name__ == "__main__": "coverage", "pytest-qt", "black", + "isort", ], "pyqt5": ["PyQt5>=5.9"], "pyqt6": ["PyQt6>=6.0"], diff --git a/tests/client_mocks.py b/tests/client_mocks.py index 2a0aa428..29a9f766 100644 --- a/tests/client_mocks.py +++ b/tests/client_mocks.py @@ -1,8 +1,9 @@ # pylint: disable = no-name-in-module,missing-class-docstring, missing-module-docstring -import pytest from unittest.mock import MagicMock +import pytest + class FakeDevice: """Fake minimal positioner class for testing.""" diff --git a/tests/conftest.py b/tests/conftest.py index f4e08632..67e843f1 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,7 +1,8 @@ -import pytest import threading +import pytest from bec_lib.bec_service import BECService + from bec_widgets.utils import bec_dispatcher as bec_dispatcher_module diff --git a/tests/test_bec_connector.py b/tests/test_bec_connector.py index a3ef3384..888f0427 100644 --- a/tests/test_bec_connector.py +++ b/tests/test_bec_connector.py @@ -1,9 +1,10 @@ # pylint: disable = no-name-in-module,missing-class-docstring, missing-module-docstring import pytest -from .client_mocks import mocked_client from bec_widgets.utils import BECConnector, ConnectionConfig +from .client_mocks import mocked_client + @pytest.fixture def bec_connector(mocked_client): diff --git a/tests/test_bec_figure.py b/tests/test_bec_figure.py index d47c460b..07aea329 100644 --- a/tests/test_bec_figure.py +++ b/tests/test_bec_figure.py @@ -1,12 +1,13 @@ # pylint: disable=missing-function-docstring, missing-module-docstring, unused-import import os +from unittest.mock import MagicMock import numpy as np import pytest -from unittest.mock import MagicMock + +from bec_widgets.widgets import BECFigure from .client_mocks import mocked_client -from bec_widgets.widgets import BECFigure @pytest.fixture diff --git a/tests/test_config_dialog.py b/tests/test_config_dialog.py index 21d8bd9d..8ec5d4a5 100644 --- a/tests/test_config_dialog.py +++ b/tests/test_config_dialog.py @@ -2,10 +2,9 @@ import os from unittest.mock import MagicMock -import yaml - import pytest -from qtpy.QtWidgets import QTabWidget, QTableWidgetItem +import yaml +from qtpy.QtWidgets import QTableWidgetItem, QTabWidget from bec_widgets.widgets import ConfigDialog diff --git a/tests/test_editor.py b/tests/test_editor.py index 9592accb..99611d24 100644 --- a/tests/test_editor.py +++ b/tests/test_editor.py @@ -2,13 +2,11 @@ import os import tempfile -from unittest.mock import MagicMock -from unittest.mock import patch, mock_open +from unittest.mock import MagicMock, mock_open, patch import pytest - -from qtpy.QtWidgets import QTextEdit from qtpy.Qsci import QsciScintilla +from qtpy.QtWidgets import QTextEdit from bec_widgets.widgets.editor.editor import AutoCompleter, BECEditor diff --git a/tests/test_eiger_plot.py b/tests/test_eiger_plot.py index 41316e74..af25f319 100644 --- a/tests/test_eiger_plot.py +++ b/tests/test_eiger_plot.py @@ -1,10 +1,12 @@ # pylint: disable = no-name-in-module,missing-class-docstring, missing-module-docstring import json from unittest.mock import MagicMock, patch + import numpy as np import pyqtgraph as pg import pytest import zmq + from bec_widgets.examples.eiger_plot.eiger_plot import EigerPlot diff --git a/tests/test_generate_cli_client.py b/tests/test_generate_cli_client.py index 59f067a9..b02abb98 100644 --- a/tests/test_generate_cli_client.py +++ b/tests/test_generate_cli_client.py @@ -1,7 +1,9 @@ -import pytest -from bec_widgets.cli.generate_cli import ClientGenerator from textwrap import dedent + import black +import pytest + +from bec_widgets.cli.generate_cli import ClientGenerator # Mock classes to test the generator diff --git a/tests/test_motor_control.py b/tests/test_motor_control.py index 6491d6ed..137efbe6 100644 --- a/tests/test_motor_control.py +++ b/tests/test_motor_control.py @@ -1,16 +1,9 @@ # pylint: disable = no-name-in-module,missing-class-docstring, missing-module-docstring -from unittest.mock import patch -from bec_lib.device import Positioner -import pytest -from unittest.mock import MagicMock +from unittest.mock import MagicMock, patch + +import pytest +from bec_lib.device import Positioner -from bec_widgets.widgets import ( - MotorControlSelection, - MotorControlAbsolute, - MotorControlRelative, - MotorThread, - MotorCoordinateTable, -) from bec_widgets.examples import ( MotorControlApp, MotorControlMap, @@ -18,9 +11,15 @@ from bec_widgets.examples import ( MotorControlPanelAbsolute, MotorControlPanelRelative, ) +from bec_widgets.widgets import ( + MotorControlAbsolute, + MotorControlRelative, + MotorControlSelection, + MotorCoordinateTable, + MotorThread, +) from bec_widgets.widgets.motor_control.motor_control import MotorActions - CONFIG_DEFAULT = { "motor_control": { "motor_x": "samx", diff --git a/tests/test_motor_map.py b/tests/test_motor_map.py index 04da110c..26bde3d8 100644 --- a/tests/test_motor_map.py +++ b/tests/test_motor_map.py @@ -1,5 +1,6 @@ # pylint: disable = no-name-in-module,missing-module-docstring, missing-function-docstring from unittest.mock import MagicMock + import pytest from bec_widgets.widgets import MotorMap diff --git a/tests/test_plot_base.py b/tests/test_plot_base.py index 8571b0bf..112c7546 100644 --- a/tests/test_plot_base.py +++ b/tests/test_plot_base.py @@ -1,5 +1,6 @@ # pylint: disable=missing-function-docstring, missing-module-docstring, unused-import import pytest + from .client_mocks import mocked_client from .test_bec_figure import bec_figure diff --git a/tests/test_scan_control.py b/tests/test_scan_control.py index 3951953a..92b4f3d6 100644 --- a/tests/test_scan_control.py +++ b/tests/test_scan_control.py @@ -6,8 +6,8 @@ from unittest.mock import MagicMock import pytest from qtpy.QtWidgets import QLineEdit -from bec_widgets.widgets import ScanControl from bec_widgets.utils.widget_io import WidgetIO +from bec_widgets.widgets import ScanControl from .test_msgs.available_scans_message import available_scans_message diff --git a/tests/test_stream_plot.py b/tests/test_stream_plot.py index c2ba9635..078a6300 100644 --- a/tests/test_stream_plot.py +++ b/tests/test_stream_plot.py @@ -1,11 +1,11 @@ # pylint: disable = no-name-in-module,missing-class-docstring, missing-module-docstring +import threading from unittest import mock import numpy as np import pytest -from bec_lib import messages, RedisConnector +from bec_lib import RedisConnector, messages from pytestqt import qtbot -import threading from bec_widgets.examples.stream_plot.stream_plot import StreamPlot diff --git a/tests/test_widget_io.py b/tests/test_widget_io.py index 6702ed4f..6e32a3b8 100644 --- a/tests/test_widget_io.py +++ b/tests/test_widget_io.py @@ -1,13 +1,6 @@ # pylint: disable = no-name-in-module,missing-class-docstring, missing-module-docstring import pytest -from qtpy.QtWidgets import ( - QWidget, - QVBoxLayout, - QLineEdit, - QComboBox, - QTableWidget, - QSpinBox, -) +from qtpy.QtWidgets import QComboBox, QLineEdit, QSpinBox, QTableWidget, QVBoxLayout, QWidget from bec_widgets.utils.widget_io import WidgetHierarchy diff --git a/tests/test_yaml_dialog.py b/tests/test_yaml_dialog.py index a538a1be..568d21f1 100644 --- a/tests/test_yaml_dialog.py +++ b/tests/test_yaml_dialog.py @@ -2,9 +2,10 @@ import os import tempfile from unittest.mock import patch + import pytest import yaml -from qtpy.QtWidgets import QWidget, QVBoxLayout, QPushButton +from qtpy.QtWidgets import QPushButton, QVBoxLayout, QWidget from bec_widgets.utils.yaml_dialog import load_yaml, save_yaml