From bb6f692c6b9fcae9e03608462548119c320c4ad6 Mon Sep 17 00:00:00 2001 From: Markus Zolliker Date: Wed, 24 Feb 2021 09:21:08 +0100 Subject: [PATCH] after running isort Change-Id: I6d7dbb8dee9480fc9242529089a1b40f17f068e7 Reviewed-on: https://forge.frm2.tum.de/review/c/sine2020/secop/playground/+/25052 Tested-by: Jenkins Automated Tests Reviewed-by: Markus Zolliker --- secop/client/__init__.py | 21 +++++++++++---------- secop/client/baseclient.py | 12 +++++++----- secop/client/console.py | 4 ++-- secop/core.py | 19 ++++++++++--------- secop/datatypes.py | 4 ++-- secop/features.py | 2 +- secop/gui/cfg_editor/config_file.py | 10 +++++----- secop/gui/cfg_editor/mainwindow.py | 8 ++++---- secop/gui/cfg_editor/node_display.py | 2 +- secop/gui/cfg_editor/tree_widget_item.py | 9 +++++---- secop/gui/cfg_editor/utils.py | 9 +++++---- secop/gui/cfg_editor/widgets.py | 16 ++++++++-------- secop/gui/mainwindow.py | 6 +++--- secop/gui/nodectrl.py | 5 +++-- secop/gui/params/__init__.py | 4 ++-- secop/gui/valuewidgets.py | 8 ++++---- secop/iohandler.py | 2 +- secop/lib/__init__.py | 4 ++-- secop/lib/asynconn.py | 12 +++++++----- secop/lib/classdoc.py | 3 ++- secop/modules.py | 13 ++++++------- secop/params.py | 8 ++++---- secop/poller.py | 5 +++-- secop/properties.py | 4 ++-- secop/protocol/interface/tcp.py | 5 ++--- secop/protocol/router.py | 8 ++++---- secop/proxy.py | 11 ++++++----- secop/server.py | 14 ++++++++------ secop/simulation.py | 3 ++- secop/stringio.py | 14 +++++++++----- secop_demo/cryo.py | 5 ++--- secop_demo/modules.py | 4 +++- secop_mlz/amagnet.py | 2 +- secop_mlz/entangle.py | 11 +++++------ secop_psi/ah2700.py | 2 +- secop_psi/ccu4.py | 3 ++- secop_psi/k2601b.py | 4 ++-- secop_psi/ls370res.py | 11 ++++++----- secop_psi/ls370sim.py | 1 + secop_psi/ppms.py | 18 +++++++++--------- secop_psi/ppmssim.py | 3 ++- secop_psi/softcal.py | 11 ++++++----- test/test_basic_validators.py | 9 +++++---- test/test_datatypes.py | 7 ++++--- test/test_iohandler.py | 5 +++-- test/test_modules.py | 3 ++- test/test_msg.py | 2 +- test/test_params.py | 6 +++--- test/test_parse.py | 2 +- test/test_poller.py | 5 ++++- test/test_properties.py | 6 +++--- 51 files changed, 197 insertions(+), 168 deletions(-) diff --git a/secop/client/__init__.py b/secop/client/__init__.py index 27d53fd..b4e9922 100644 --- a/secop/client/__init__.py +++ b/secop/client/__init__.py @@ -22,21 +22,22 @@ # ***************************************************************************** """general SECoP client""" -import time -import queue import json -from threading import Event, RLock, current_thread +import queue +import time from collections import defaultdict +from threading import Event, RLock, current_thread -from secop.lib import mkthread, formatExtendedTraceback, formatExtendedStack -from secop.lib.asynconn import AsynConn, ConnectionClosed -from secop.datatypes import get_datatype -from secop.protocol.interface import encode_msg_frame, decode_msg -from secop.protocol.messages import REQUEST2REPLY, ERRORPREFIX, EVENTREPLY, WRITEREQUEST, WRITEREPLY, \ - READREQUEST, READREPLY, IDENTREQUEST, IDENTPREFIX, ENABLEEVENTSREQUEST, COMMANDREQUEST, \ - DESCRIPTIONREQUEST, HEARTBEATREQUEST import secop.errors import secop.params +from secop.datatypes import get_datatype +from secop.lib import formatExtendedStack, formatExtendedTraceback, mkthread +from secop.lib.asynconn import AsynConn, ConnectionClosed +from secop.protocol.interface import decode_msg, encode_msg_frame +from secop.protocol.messages import COMMANDREQUEST, \ + DESCRIPTIONREQUEST, ENABLEEVENTSREQUEST, ERRORPREFIX, \ + EVENTREPLY, HEARTBEATREQUEST, IDENTPREFIX, IDENTREQUEST, \ + READREPLY, READREQUEST, REQUEST2REPLY, WRITEREPLY, WRITEREQUEST # replies to be handled for cache UPDATE_MESSAGES = {EVENTREPLY, READREPLY, WRITEREPLY, ERRORPREFIX + READREQUEST, ERRORPREFIX + EVENTREPLY} diff --git a/secop/client/baseclient.py b/secop/client/baseclient.py index e46b81c..cea01f9 100644 --- a/secop/client/baseclient.py +++ b/secop/client/baseclient.py @@ -30,11 +30,6 @@ import time from collections import OrderedDict from select import select -try: - import mlzlog -except ImportError: - pass - import serial from secop.datatypes import CommandType, EnumType, get_datatype @@ -47,6 +42,13 @@ from secop.protocol.messages import BUFFERREQUEST, COMMANDREQUEST, \ HEARTBEATREQUEST, HELPREQUEST, IDENTREQUEST, READREPLY, \ READREQUEST, REQUEST2REPLY, WRITEREPLY, WRITEREQUEST +try: + import mlzlog +except ImportError: + pass + + + class TCPConnection: # disguise a TCP connection as serial one diff --git a/secop/client/console.py b/secop/client/console.py index df3d815..0e7cf0f 100644 --- a/secop/client/console.py +++ b/secop/client/console.py @@ -25,18 +25,18 @@ import code +import configparser import socket import threading from collections import deque from os import path -import configparser + import mlzlog from secop.protocol.interface import decode_msg, encode_msg_frame, get_msg from secop.protocol.messages import EVENTREPLY - class NameSpace(dict): def __init__(self): diff --git a/secop/core.py b/secop/core.py index 9a62b46..e6ca57f 100644 --- a/secop/core.py +++ b/secop/core.py @@ -26,13 +26,14 @@ # allow to import the most important classes from 'secop' # pylint: disable=unused-import -from secop.datatypes import FloatRange, IntRange, ScaledInteger, \ - BoolType, EnumType, BLOBType, StringType, TupleOf, ArrayOf, StructOf -from secop.lib.enum import Enum -from secop.modules import Module, Readable, Writable, Drivable, Communicator, Attached, Done -from secop.properties import Property -from secop.params import Parameter, Command -from secop.poller import AUTO, REGULAR, SLOW, DYNAMIC +from secop.datatypes import ArrayOf, BLOBType, BoolType, EnumType, \ + FloatRange, IntRange, ScaledInteger, StringType, StructOf, TupleOf from secop.iohandler import IOHandler, IOHandlerBase -from secop.stringio import StringIO, HasIodev -from secop.proxy import SecNode, Proxy, proxy_class +from secop.lib.enum import Enum +from secop.modules import Attached, Communicator, \ + Done, Drivable, Module, Readable, Writable +from secop.params import Command, Parameter +from secop.poller import AUTO, DYNAMIC, REGULAR, SLOW +from secop.properties import Property +from secop.proxy import Proxy, SecNode, proxy_class +from secop.stringio import HasIodev, StringIO diff --git a/secop/datatypes.py b/secop/datatypes.py index a291408..93c9b46 100644 --- a/secop/datatypes.py +++ b/secop/datatypes.py @@ -28,13 +28,13 @@ import sys from base64 import b64decode, b64encode -from secop.errors import ProgrammingError, ProtocolError, BadValueError, ConfigError +from secop.errors import BadValueError, \ + ConfigError, ProgrammingError, ProtocolError from secop.lib import clamp from secop.lib.enum import Enum from secop.parse import Parser from secop.properties import HasProperties, Property - # Only export these classes for 'from secop.datatypes import *' __all__ = [ 'DataType', 'get_datatype', diff --git a/secop/features.py b/secop/features.py index 5268f7e..522ac53 100644 --- a/secop/features.py +++ b/secop/features.py @@ -24,7 +24,7 @@ from secop.datatypes import ArrayOf, BoolType, EnumType, \ FloatRange, StringType, StructOf, TupleOf -from secop.modules import Command, Parameter, HasAccessibles +from secop.modules import Command, HasAccessibles, Parameter class Feature(HasAccessibles): diff --git a/secop/gui/cfg_editor/config_file.py b/secop/gui/cfg_editor/config_file.py index a707231..ea0c48c 100644 --- a/secop/gui/cfg_editor/config_file.py +++ b/secop/gui/cfg_editor/config_file.py @@ -21,13 +21,13 @@ # ***************************************************************************** import configparser -from configparser import NoOptionError from collections import OrderedDict -from secop.gui.cfg_editor.tree_widget_item import TreeWidgetItem -from secop.gui.cfg_editor.utils import get_all_items, get_params, get_props,\ - get_all_children_with_names, get_module_class_from_name, \ - get_interface_class_from_name +from configparser import NoOptionError +from secop.gui.cfg_editor.tree_widget_item import TreeWidgetItem +from secop.gui.cfg_editor.utils import get_all_children_with_names, \ + get_all_items, get_interface_class_from_name, \ + get_module_class_from_name, get_params, get_props NODE = 'node' INTERFACE = 'interface' diff --git a/secop/gui/cfg_editor/mainwindow.py b/secop/gui/cfg_editor/mainwindow.py index 66284b6..099686c 100644 --- a/secop/gui/cfg_editor/mainwindow.py +++ b/secop/gui/cfg_editor/mainwindow.py @@ -21,11 +21,11 @@ # ***************************************************************************** import os -from secop.gui.qt import QMainWindow, QMessageBox -from secop.gui.cfg_editor.node_display import NodeDisplay -from secop.gui.cfg_editor.utils import loadUi, get_file_paths -from secop.gui.cfg_editor.widgets import TabBar +from secop.gui.cfg_editor.node_display import NodeDisplay +from secop.gui.cfg_editor.utils import get_file_paths, loadUi +from secop.gui.cfg_editor.widgets import TabBar +from secop.gui.qt import QMainWindow, QMessageBox # TODO move secop mainwinodw to gui/client and all specific stuff NODE = 'node' diff --git a/secop/gui/cfg_editor/node_display.py b/secop/gui/cfg_editor/node_display.py index 4b80833..300d55c 100644 --- a/secop/gui/cfg_editor/node_display.py +++ b/secop/gui/cfg_editor/node_display.py @@ -20,8 +20,8 @@ # # ***************************************************************************** -from secop.gui.qt import QWidget, Qt, QHBoxLayout, QSpacerItem, QSizePolicy from secop.gui.cfg_editor.utils import loadUi +from secop.gui.qt import QHBoxLayout, QSizePolicy, QSpacerItem, Qt, QWidget class NodeDisplay(QWidget): diff --git a/secop/gui/cfg_editor/tree_widget_item.py b/secop/gui/cfg_editor/tree_widget_item.py index 72bf728..948d891 100644 --- a/secop/gui/cfg_editor/tree_widget_item.py +++ b/secop/gui/cfg_editor/tree_widget_item.py @@ -20,10 +20,11 @@ # # ***************************************************************************** -from secop.gui.qt import QTreeWidgetItem, QFont, QWidget, QVBoxLayout, QLabel, \ - QHBoxLayout, QPushButton, QSize, QSizePolicy, QDialog, QTextEdit, pyqtSignal -from secop.gui.cfg_editor.utils import setTreeIcon, setIcon, loadUi, \ - set_name_edit_style +from secop.gui.cfg_editor.utils import loadUi, \ + set_name_edit_style, setIcon, setTreeIcon +from secop.gui.qt import QDialog, QFont, QHBoxLayout, \ + QLabel, QPushButton, QSize, QSizePolicy, QTextEdit, \ + QTreeWidgetItem, QVBoxLayout, QWidget, pyqtSignal from secop.gui.valuewidgets import get_widget from secop.properties import Property diff --git a/secop/gui/cfg_editor/utils.py b/secop/gui/cfg_editor/utils.py index 1aa4b42..d85ee96 100644 --- a/secop/gui/cfg_editor/utils.py +++ b/secop/gui/cfg_editor/utils.py @@ -20,15 +20,16 @@ # # ***************************************************************************** -from os import path, listdir -import sys import inspect -from secop.gui.qt import uic, QIcon, QSize, QFileDialog, QDialogButtonBox -from secop.server import getGeneralConfig +import sys +from os import listdir, path + +from secop.gui.qt import QDialogButtonBox, QFileDialog, QIcon, QSize, uic from secop.modules import Module from secop.params import Parameter from secop.properties import Property from secop.protocol.interface.tcp import TCPServer +from secop.server import getGeneralConfig uipath = path.dirname(__file__) diff --git a/secop/gui/cfg_editor/widgets.py b/secop/gui/cfg_editor/widgets.py index 46c325c..577ac29 100644 --- a/secop/gui/cfg_editor/widgets.py +++ b/secop/gui/cfg_editor/widgets.py @@ -23,15 +23,15 @@ import os -from secop.gui.cfg_editor.config_file import write_config, read_config +from secop.gui.cfg_editor.config_file import read_config, write_config from secop.gui.cfg_editor.tree_widget_item import TreeWidgetItem -from secop.gui.cfg_editor.utils import get_file_paths, get_modules, \ - get_interfaces, loadUi, set_name_edit_style, get_module_class_from_name, \ - get_all_items, get_interface_class_from_name, get_params, get_props, \ - setActionIcon -from secop.gui.qt import QWidget, QDialog, QLabel, QTabBar, Qt, QPoint, QMenu, \ - QTreeWidget, QSize, pyqtSignal, QLineEdit, QComboBox, QDialogButtonBox, \ - QTextEdit, QTreeView, QStandardItemModel, QStandardItem +from secop.gui.cfg_editor.utils import get_all_items, \ + get_file_paths, get_interface_class_from_name, get_interfaces, \ + get_module_class_from_name, get_modules, get_params, \ + get_props, loadUi, set_name_edit_style, setActionIcon +from secop.gui.qt import QComboBox, QDialog, QDialogButtonBox, QLabel, \ + QLineEdit, QMenu, QPoint, QSize, QStandardItem, QStandardItemModel, \ + Qt, QTabBar, QTextEdit, QTreeView, QTreeWidget, QWidget, pyqtSignal NODE = 'node' MODULE = 'module' diff --git a/secop/gui/mainwindow.py b/secop/gui/mainwindow.py index b8b69e7..c3f605d 100644 --- a/secop/gui/mainwindow.py +++ b/secop/gui/mainwindow.py @@ -26,9 +26,9 @@ import secop.client from secop.gui.modulectrl import ModuleCtrl from secop.gui.nodectrl import NodeCtrl from secop.gui.paramview import ParameterView -from secop.gui.qt import QInputDialog, QMainWindow, QMessageBox, \ - QObject, QTreeWidgetItem, pyqtSignal, pyqtSlot, QBrush, QColor -from secop.gui.util import loadUi, Value +from secop.gui.qt import QBrush, QColor, QInputDialog, QMainWindow, \ + QMessageBox, QObject, QTreeWidgetItem, pyqtSignal, pyqtSlot +from secop.gui.util import Value, loadUi from secop.lib import formatExtendedTraceback ITEM_TYPE_NODE = QTreeWidgetItem.UserType + 1 diff --git a/secop/gui/nodectrl.py b/secop/gui/nodectrl.py index e6d0278..cc0c303 100644 --- a/secop/gui/nodectrl.py +++ b/secop/gui/nodectrl.py @@ -25,14 +25,15 @@ import json import pprint from time import sleep + import mlzlog +import secop.lib from secop.datatypes import EnumType, StringType from secop.errors import SECoPError from secop.gui.qt import QFont, QFontMetrics, QLabel, \ QMessageBox, QTextCursor, QWidget, pyqtSlot, toHtmlEscaped -from secop.gui.util import loadUi, Value -import secop.lib +from secop.gui.util import Value, loadUi class NodeCtrl(QWidget): diff --git a/secop/gui/params/__init__.py b/secop/gui/params/__init__.py index 18fc959..5ac5038 100644 --- a/secop/gui/params/__init__.py +++ b/secop/gui/params/__init__.py @@ -23,9 +23,9 @@ from secop.datatypes import EnumType, FloatRange, IntRange +from secop.gui.qt import QCheckBox, QLabel, QLineEdit, QMessageBox from secop.gui.qt import QPushButton as QButton -from secop.gui.qt import QCheckBox, QLabel, QLineEdit, \ - QMessageBox, QSizePolicy, Qt, QWidget, pyqtSignal, pyqtSlot +from secop.gui.qt import QSizePolicy, Qt, QWidget, pyqtSignal, pyqtSlot from secop.gui.util import loadUi from secop.lib import formatExtendedStack diff --git a/secop/gui/valuewidgets.py b/secop/gui/valuewidgets.py index 43ff3d5..e4ad5ca 100644 --- a/secop/gui/valuewidgets.py +++ b/secop/gui/valuewidgets.py @@ -23,10 +23,10 @@ from secop.datatypes import ArrayOf, BLOBType, BoolType, EnumType, \ - FloatRange, IntRange, StringType, StructOf, TupleOf, TextType -from secop.gui.qt import QCheckBox, QComboBox, QDialog, QDoubleSpinBox, \ - QFrame, QGridLayout, QGroupBox, QLabel, QLineEdit, QSpinBox, QVBoxLayout, \ - QTextEdit + FloatRange, IntRange, StringType, StructOf, TextType, TupleOf +from secop.gui.qt import QCheckBox, QComboBox, QDialog, \ + QDoubleSpinBox, QFrame, QGridLayout, QGroupBox, \ + QLabel, QLineEdit, QSpinBox, QTextEdit, QVBoxLayout from secop.gui.util import loadUi # XXX: implement live validators !!!! diff --git a/secop/iohandler.py b/secop/iohandler.py index cc9f3fe..594554b 100644 --- a/secop/iohandler.py +++ b/secop/iohandler.py @@ -54,8 +54,8 @@ method has to be called explicitly int the write_ method, if needed. """ import re -from secop.modules import Done from secop.errors import ProgrammingError +from secop.modules import Done class CmdParser: diff --git a/secop/lib/__init__.py b/secop/lib/__init__.py index c712950..40ac337 100644 --- a/secop/lib/__init__.py +++ b/secop/lib/__init__.py @@ -21,13 +21,13 @@ # ***************************************************************************** """Define helpers""" +import importlib import linecache import socket import sys import threading import traceback -import importlib -from os import path, environ +from os import environ, path repodir = path.abspath(path.join(path.dirname(__file__), '..', '..')) diff --git a/secop/lib/asynconn.py b/secop/lib/asynconn.py index 829b45f..83e7ffd 100644 --- a/secop/lib/asynconn.py +++ b/secop/lib/asynconn.py @@ -28,16 +28,18 @@ support for asynchronous communication, but may be used also for synchronous IO (see secop.stringio.StringIO) """ -import socket -import select -import time import ast +import select +import socket +import time + +from secop.errors import CommunicationFailedError, ConfigError +from secop.lib import closeSocket, parseHostPort, tcpSocket + try: from serial import Serial except ImportError: Serial = None -from secop.lib import parseHostPort, tcpSocket, closeSocket -from secop.errors import ConfigError, CommunicationFailedError class ConnectionClosed(ConnectionError): diff --git a/secop/lib/classdoc.py b/secop/lib/classdoc.py index d00d8fe..4cece4b 100644 --- a/secop/lib/classdoc.py +++ b/secop/lib/classdoc.py @@ -21,7 +21,8 @@ # ***************************************************************************** from textwrap import indent -from secop.modules import Module, HasProperties, Property, Parameter, Command + +from secop.modules import Command, HasProperties, Module, Parameter, Property def indent_description(p): diff --git a/secop/modules.py b/secop/modules.py index f4b493e..4b12382 100644 --- a/secop/modules.py +++ b/secop/modules.py @@ -26,16 +26,15 @@ import sys import time -from secop.datatypes import EnumType, FloatRange, BoolType, IntRange, \ - StringType, TupleOf, get_datatype, ArrayOf, TextType, StatusType -from secop.errors import ConfigError, ProgrammingError, SECoPError, BadValueError,\ - SilentError, InternalError, secop_error +from secop.datatypes import ArrayOf, BoolType, EnumType, FloatRange, \ + IntRange, StatusType, StringType, TextType, TupleOf, get_datatype +from secop.errors import BadValueError, ConfigError, InternalError, \ + ProgrammingError, SECoPError, SilentError, secop_error from secop.lib import formatException, formatExtendedStack, mkthread from secop.lib.enum import Enum -from secop.params import PREDEFINED_ACCESSIBLES, Command, Parameter, Accessible +from secop.params import PREDEFINED_ACCESSIBLES, Accessible, Command, Parameter +from secop.poller import BasicPoller, Poller from secop.properties import HasProperties, Property -from secop.poller import Poller, BasicPoller - Done = object() #: a special return value for a read/write function indicating that the setter is triggered already diff --git a/secop/params.py b/secop/params.py index c6e21a8..bae2011 100644 --- a/secop/params.py +++ b/secop/params.py @@ -25,12 +25,12 @@ import inspect -from secop.datatypes import CommandType, DataType, StringType, BoolType, EnumType, DataTypeType, ValueType, OrType, \ - NoneOr, TextType, IntRange, TupleOf, StructOf -from secop.errors import ProgrammingError, BadValueError +from secop.datatypes import BoolType, CommandType, DataType, \ + DataTypeType, EnumType, IntRange, NoneOr, OrType, \ + StringType, StructOf, TextType, TupleOf, ValueType +from secop.errors import BadValueError, ProgrammingError from secop.properties import HasProperties, Property - UNSET = object() # an argument not given, not even None diff --git a/secop/poller.py b/secop/poller.py index 0f29151..8bbbf87 100644 --- a/secop/poller.py +++ b/secop/poller.py @@ -34,10 +34,11 @@ Usage examples: """ import time -from threading import Event from heapq import heapify, heapreplace -from secop.lib import mkthread +from threading import Event + from secop.errors import ProgrammingError +from secop.lib import mkthread # poll types: AUTO = 1 #: equivalent to True, converted to REGULAR, SLOW or DYNAMIC diff --git a/secop/properties.py b/secop/properties.py index c413d63..36382ce 100644 --- a/secop/properties.py +++ b/secop/properties.py @@ -23,10 +23,10 @@ """Define validated data types.""" -import sys import inspect +import sys -from secop.errors import ConfigError, ProgrammingError, BadValueError +from secop.errors import BadValueError, ConfigError, ProgrammingError class HasDescriptorMeta(type): diff --git a/secop/protocol/interface/tcp.py b/secop/protocol/interface/tcp.py index 58ccc33..55d85a9 100644 --- a/secop/protocol/interface/tcp.py +++ b/secop/protocol/interface/tcp.py @@ -21,12 +21,12 @@ # ***************************************************************************** """provides tcp interface to the SECoP Server""" -import sys import socket import socketserver +import sys import threading -from secop.datatypes import StringType, BoolType +from secop.datatypes import BoolType, StringType from secop.errors import SECoPError from secop.lib import formatException, \ formatExtendedStack, formatExtendedTraceback @@ -35,7 +35,6 @@ from secop.protocol.interface import decode_msg, encode_msg_frame, get_msg from secop.protocol.messages import ERRORPREFIX, \ HELPREPLY, HELPREQUEST, HelpMessage - DEF_PORT = 10767 MESSAGE_READ_SIZE = 1024 HELP = HELPREQUEST.encode() diff --git a/secop/protocol/router.py b/secop/protocol/router.py index c2e8303..d49a74d 100644 --- a/secop/protocol/router.py +++ b/secop/protocol/router.py @@ -34,12 +34,12 @@ simplifications: import time -import secop.protocol.dispatcher -import secop.errors -from secop.protocol.messages import DESCRIPTIONREPLY, ENABLEEVENTSREPLY, ERRORPREFIX, EVENTREPLY,\ - READREQUEST, WRITEREQUEST, COMMANDREQUEST import secop.client +import secop.errors +import secop.protocol.dispatcher from secop.lib.multievent import MultiEvent +from secop.protocol.messages import COMMANDREQUEST, DESCRIPTIONREPLY, \ + ENABLEEVENTSREPLY, ERRORPREFIX, EVENTREPLY, READREQUEST, WRITEREQUEST class SecopClient(secop.client.SecopClient): diff --git a/secop/proxy.py b/secop/proxy.py index dc07545..433d90a 100644 --- a/secop/proxy.py +++ b/secop/proxy.py @@ -21,14 +21,15 @@ # ***************************************************************************** """SECoP proxy modules""" -from secop.params import Parameter, Command -from secop.modules import Module, Writable, Readable, Drivable +from secop.client import SecopClient, decode_msg, encode_msg_frame from secop.datatypes import StringType +from secop.errors import BadValueError, \ + CommunicationFailedError, ConfigError, make_secop_error +from secop.lib import get_class +from secop.modules import Drivable, Module, Readable, Writable +from secop.params import Command, Parameter from secop.properties import Property from secop.stringio import HasIodev -from secop.lib import get_class -from secop.client import SecopClient, decode_msg, encode_msg_frame -from secop.errors import ConfigError, make_secop_error, CommunicationFailedError, BadValueError class ProxyModule(HasIodev, Module): diff --git a/secop/server.py b/secop/server.py index 03228d8..5b9971f 100644 --- a/secop/server.py +++ b/secop/server.py @@ -23,12 +23,17 @@ # ***************************************************************************** """Define helpers""" -import os import ast -import time -import threading import configparser +import os +import threading +import time from collections import OrderedDict + +from secop.errors import ConfigError +from secop.lib import formatException, get_class, getGeneralConfig +from secop.modules import Attached + try: from daemon import DaemonContext try: @@ -38,9 +43,6 @@ try: except ImportError: DaemonContext = None -from secop.errors import ConfigError -from secop.lib import formatException, get_class, getGeneralConfig -from secop.modules import Attached try: import systemd.daemon diff --git a/secop/simulation.py b/secop/simulation.py index e51f015..d21b577 100644 --- a/secop/simulation.py +++ b/secop/simulation.py @@ -29,7 +29,8 @@ from time import sleep from secop.datatypes import FloatRange from secop.lib import mkthread -from secop.modules import Drivable, Module, Parameter, Readable, Writable, BasicPoller +from secop.modules import BasicPoller, Drivable, \ + Module, Parameter, Readable, Writable class SimBase: diff --git a/secop/stringio.py b/secop/stringio.py index 777ee33..5554990 100644 --- a/secop/stringio.py +++ b/secop/stringio.py @@ -23,13 +23,17 @@ implements TCP/IP and is be used as a base for SerialIO """ -import time -import threading import re +import threading +import time + +from secop.datatypes import ArrayOf, BoolType, \ + FloatRange, StringType, TupleOf, ValueType +from secop.errors import CommunicationFailedError, \ + CommunicationSilentError, ConfigError from secop.lib.asynconn import AsynConn, ConnectionClosed -from secop.modules import Module, Communicator, Parameter, Command, Property, Attached, Done -from secop.datatypes import StringType, FloatRange, ArrayOf, BoolType, TupleOf, ValueType -from secop.errors import CommunicationFailedError, CommunicationSilentError, ConfigError +from secop.modules import Attached, Command, \ + Communicator, Done, Module, Parameter, Property from secop.poller import REGULAR diff --git a/secop_demo/cryo.py b/secop_demo/cryo.py index c3e189a..89f7fa8 100644 --- a/secop_demo/cryo.py +++ b/secop_demo/cryo.py @@ -25,10 +25,9 @@ import random import time from math import atan -from secop.datatypes import EnumType, FloatRange, TupleOf, StringType, BoolType +from secop.datatypes import BoolType, EnumType, FloatRange, StringType, TupleOf from secop.lib import clamp, mkthread -from secop.modules import Drivable, Parameter, Command - +from secop.modules import Command, Drivable, Parameter # test custom property (value.test can be changed in config file) from secop.properties import Property diff --git a/secop_demo/modules.py b/secop_demo/modules.py index 29809cb..09a2f7f 100644 --- a/secop_demo/modules.py +++ b/secop_demo/modules.py @@ -28,7 +28,9 @@ import time from secop.datatypes import ArrayOf, BoolType, EnumType, \ FloatRange, IntRange, StringType, StructOf, TupleOf from secop.lib.enum import Enum -from secop.modules import Drivable, Parameter as SECoP_Parameter, Readable +from secop.modules import Drivable +from secop.modules import Parameter as SECoP_Parameter +from secop.modules import Readable from secop.properties import Property diff --git a/secop_mlz/amagnet.py b/secop_mlz/amagnet.py index 17c3d29..7b2491e 100644 --- a/secop_mlz/amagnet.py +++ b/secop_mlz/amagnet.py @@ -31,7 +31,7 @@ import math from secop.datatypes import ArrayOf, FloatRange, StringType, StructOf, TupleOf from secop.errors import ConfigError, DisabledError from secop.lib.sequence import SequencerMixin, Step -from secop.modules import Drivable, Parameter, BasicPoller +from secop.modules import BasicPoller, Drivable, Parameter class GarfieldMagnet(SequencerMixin, Drivable): diff --git a/secop_mlz/entangle.py b/secop_mlz/entangle.py index 95f3c6f..f3324f0 100644 --- a/secop_mlz/entangle.py +++ b/secop_mlz/entangle.py @@ -30,18 +30,17 @@ MLZ TANGO interface for the respective device classes. import re import threading -from time import time as currenttime from time import sleep +from time import time as currenttime import PyTango - -from secop.datatypes import ArrayOf, EnumType, \ - FloatRange, IntRange, StringType, TupleOf, LimitsType +from secop.datatypes import ArrayOf, EnumType, FloatRange, \ + IntRange, LimitsType, StringType, TupleOf from secop.errors import CommunicationFailedError, \ ConfigError, HardwareError, ProgrammingError from secop.lib import lazy_property -from secop.modules import Command, Drivable, \ - Module, Parameter, Readable, BasicPoller +from secop.modules import BasicPoller, Command, \ + Drivable, Module, Parameter, Readable ##### diff --git a/secop_psi/ah2700.py b/secop_psi/ah2700.py index 1b48175..f726f0f 100644 --- a/secop_psi/ah2700.py +++ b/secop_psi/ah2700.py @@ -20,7 +20,7 @@ # ***************************************************************************** """Andeen Hagerling capacitance bridge""" -from secop.core import Readable, Parameter, FloatRange, HasIodev, StringIO, Done +from secop.core import Done, FloatRange, HasIodev, Parameter, Readable, StringIO class Ah2700IO(StringIO): diff --git a/secop_psi/ccu4.py b/secop_psi/ccu4.py index 4742539..0aaaa52 100644 --- a/secop_psi/ccu4.py +++ b/secop_psi/ccu4.py @@ -22,7 +22,8 @@ """drivers for CCU4, the cryostat control unit at SINQ""" # the most common Frappy classes can be imported from secop.core -from secop.core import Readable, Parameter, FloatRange, EnumType, StringIO, HasIodev +from secop.core import EnumType, FloatRange, \ + HasIodev, Parameter, Readable, StringIO class CCU4IO(StringIO): diff --git a/secop_psi/k2601b.py b/secop_psi/k2601b.py index e8e8001..6a984e5 100644 --- a/secop_psi/k2601b.py +++ b/secop_psi/k2601b.py @@ -22,8 +22,8 @@ not tested yet""" -from secop.core import Writable, Module, Parameter, Attached,\ - BoolType, FloatRange, EnumType, HasIodev, StringIO +from secop.core import Attached, BoolType, EnumType, FloatRange, \ + HasIodev, Module, Parameter, StringIO, Writable class K2601bIO(StringIO): diff --git a/secop_psi/ls370res.py b/secop_psi/ls370res.py index 830e061..26786ae 100644 --- a/secop_psi/ls370res.py +++ b/secop_psi/ls370res.py @@ -22,12 +22,13 @@ import time -from secop.modules import Readable, Drivable, Parameter, Property, Attached, Done -from secop.datatypes import FloatRange, IntRange, EnumType, BoolType -from secop.stringio import HasIodev -from secop.poller import Poller, REGULAR -from secop.lib import formatStatusBits import secop.iohandler +from secop.datatypes import BoolType, EnumType, FloatRange, IntRange +from secop.lib import formatStatusBits +from secop.modules import Attached, Done, \ + Drivable, Parameter, Property, Readable +from secop.poller import REGULAR, Poller +from secop.stringio import HasIodev Status = Drivable.Status diff --git a/secop_psi/ls370sim.py b/secop_psi/ls370sim.py index c141d79..10e7d7d 100644 --- a/secop_psi/ls370sim.py +++ b/secop_psi/ls370sim.py @@ -22,6 +22,7 @@ from secop.modules import Communicator + class Ls370Sim(Communicator): CHANNEL_COMMANDS = [ ('RDGR?%d', '1.0'), diff --git a/secop_psi/ppms.py b/secop_psi/ppms.py index 5e6545a..7a76b38 100644 --- a/secop_psi/ppms.py +++ b/secop_psi/ppms.py @@ -31,18 +31,18 @@ Polling of value and status is done commonly for all modules. For each registere .update_value_status() is called in order to update their value and status. """ -import time import threading +import time -from secop.modules import Readable, Drivable, Parameter,\ - Communicator, Property, Attached, HasAccessibles, Done -from secop.datatypes import EnumType, FloatRange, IntRange, StringType,\ - BoolType, StatusType -from secop.lib.enum import Enum -from secop.lib import clamp -from secop.errors import HardwareError -from secop.poller import Poller import secop.iohandler +from secop.datatypes import BoolType, EnumType, \ + FloatRange, IntRange, StatusType, StringType +from secop.errors import HardwareError +from secop.lib import clamp +from secop.lib.enum import Enum +from secop.modules import Attached, Communicator, Done, \ + Drivable, HasAccessibles, Parameter, Property, Readable +from secop.poller import Poller from secop.stringio import HasIodev try: diff --git a/secop_psi/ppmssim.py b/secop_psi/ppmssim.py index 2079500..5ade05f 100644 --- a/secop_psi/ppmssim.py +++ b/secop_psi/ppmssim.py @@ -18,9 +18,10 @@ # Module authors: # Markus Zolliker # ***************************************************************************** -import time import json import math +import time + def num(string): return json.loads(string) diff --git a/secop_psi/softcal.py b/secop_psi/softcal.py index c47b2e5..e7baf00 100644 --- a/secop_psi/softcal.py +++ b/secop_psi/softcal.py @@ -20,13 +20,14 @@ # ***************************************************************************** """Software calibration""" -import os -from os.path import join, exists, basename import math -import numpy as np -from scipy.interpolate import splrep, splev # pylint: disable=import-error +import os +from os.path import basename, exists, join -from secop.core import Readable, Parameter, Attached, StringType, BoolType +import numpy as np +from scipy.interpolate import splev, splrep # pylint: disable=import-error + +from secop.core import Attached, BoolType, Parameter, Readable, StringType def linear(x): diff --git a/test/test_basic_validators.py b/test/test_basic_validators.py index e730bf4..450f8b5 100644 --- a/test/test_basic_validators.py +++ b/test/test_basic_validators.py @@ -24,10 +24,11 @@ # no fixtures needed import pytest -from secop.basic_validators import FloatProperty, PositiveFloatProperty, \ - NonNegativeFloatProperty, IntProperty, PositiveIntProperty, \ - NonNegativeIntProperty, BoolProperty, StringProperty, UnitProperty, \ - FmtStrProperty, OneOfProperty, NoneOr, EnumProperty, TupleProperty +from secop.basic_validators import BoolProperty, EnumProperty, FloatProperty, \ + FmtStrProperty, IntProperty, NoneOr, NonNegativeFloatProperty, \ + NonNegativeIntProperty, OneOfProperty, PositiveFloatProperty, \ + PositiveIntProperty, StringProperty, TupleProperty, UnitProperty + class unprintable: def __str__(self): diff --git a/test/test_datatypes.py b/test/test_datatypes.py index 59d6fa1..158be29 100644 --- a/test/test_datatypes.py +++ b/test/test_datatypes.py @@ -25,9 +25,10 @@ # no fixtures needed import pytest -from secop.datatypes import ArrayOf, BLOBType, BoolType, Enum, StatusType, \ - DataType, EnumType, FloatRange, IntRange, ProgrammingError, ConfigError, \ - ScaledInteger, StringType, TextType, StructOf, TupleOf, get_datatype, CommandType +from secop.datatypes import ArrayOf, BLOBType, BoolType, \ + CommandType, ConfigError, DataType, Enum, EnumType, FloatRange, \ + IntRange, ProgrammingError, ScaledInteger, StatusType, \ + StringType, StructOf, TextType, TupleOf, get_datatype def copytest(dt): diff --git a/test/test_iohandler.py b/test/test_iohandler.py index 4b7ba77..03dd95b 100644 --- a/test/test_iohandler.py +++ b/test/test_iohandler.py @@ -23,10 +23,11 @@ import pytest +from secop.datatypes import FloatRange, IntRange, Property, StringType +from secop.errors import ProgrammingError from secop.iohandler import CmdParser, IOHandler from secop.modules import Module, Parameter -from secop.datatypes import FloatRange, StringType, IntRange, Property -from secop.errors import ProgrammingError + @pytest.mark.parametrize('fmt, text, values, text2', [ ('%d,%d', '2,3', [2,3], None), diff --git a/test/test_modules.py b/test/test_modules.py index 06c3094..b082e0d 100644 --- a/test/test_modules.py +++ b/test/test_modules.py @@ -23,13 +23,14 @@ """test data types.""" import threading + import pytest from secop.datatypes import BoolType, FloatRange, StringType +from secop.errors import ProgrammingError from secop.modules import Communicator, Drivable, Module from secop.params import Command, Parameter from secop.poller import BasicPoller -from secop.errors import ProgrammingError class DispatcherStub: diff --git a/test/test_msg.py b/test/test_msg.py index 9116148..05c09c7 100644 --- a/test/test_msg.py +++ b/test/test_msg.py @@ -23,8 +23,8 @@ import pytest -from secop.protocol.interface import encode_msg_frame, decode_msg import secop.protocol.messages as m +from secop.protocol.interface import decode_msg, encode_msg_frame # args are: msg tuple, msg bytes MSG = [ diff --git a/test/test_params.py b/test/test_params.py index 0f9bfef..0976f8a 100644 --- a/test/test_params.py +++ b/test/test_params.py @@ -25,10 +25,10 @@ # no fixtures needed import pytest -from secop.datatypes import BoolType, IntRange, FloatRange -from secop.params import Command, Parameter -from secop.modules import HasAccessibles +from secop.datatypes import BoolType, FloatRange, IntRange from secop.errors import ProgrammingError +from secop.modules import HasAccessibles +from secop.params import Command, Parameter def test_Command(): diff --git a/test/test_parse.py b/test/test_parse.py index ebd9268..abb59a1 100644 --- a/test/test_parse.py +++ b/test/test_parse.py @@ -22,8 +22,8 @@ """test data types.""" -from collections import OrderedDict from ast import literal_eval +from collections import OrderedDict import pytest diff --git a/test/test_poller.py b/test/test_poller.py index d36eb67..2987a9e 100644 --- a/test/test_poller.py +++ b/test/test_poller.py @@ -23,9 +23,12 @@ import time from collections import OrderedDict + import pytest + from secop.modules import Drivable -from secop.poller import Poller, REGULAR, DYNAMIC, SLOW +from secop.poller import DYNAMIC, REGULAR, SLOW, Poller + Status = Drivable.Status class Time: diff --git a/test/test_properties.py b/test/test_properties.py index 9245059..a7dbb6f 100644 --- a/test/test_properties.py +++ b/test/test_properties.py @@ -23,9 +23,9 @@ import pytest -from secop.datatypes import IntRange, StringType, FloatRange, ValueType -from secop.errors import ProgrammingError, ConfigError, BadValueError -from secop.properties import Property, HasProperties +from secop.datatypes import FloatRange, IntRange, StringType, ValueType +from secop.errors import BadValueError, ConfigError, ProgrammingError +from secop.properties import HasProperties, Property def Prop(*args, name=None, **kwds):