From f95fa5ee8ed0e3ec4beff8aa35a47e91e24d829f Mon Sep 17 00:00:00 2001 From: lukken <lukken@astron.nl> Date: Tue, 22 Jun 2021 15:31:07 +0000 Subject: [PATCH] L2SS-200: sys.path.append imports to find modules Finding modules relative to the location of the main methods requires some clever sys.path.append tricks. These tricks can be removed once packaging is in place as paths will then be relative to setup.py --- devices/clients/__init__.py | 0 devices/clients/attribute_wrapper.py | 2 +- devices/clients/opcua_client.py | 3 ++- devices/clients/sst_client.py | 16 +++++++--------- devices/common/__init__.py | 0 devices/devices/__init__.py | 0 devices/devices/apsctl.py | 14 ++++++++++---- devices/devices/hardware_device.py | 6 +++--- devices/devices/pcc.py | 18 ++++++++++++------ devices/devices/sdp/__init__.py | 0 devices/devices/{ => sdp}/sdp.py | 17 ++++++++++++----- devices/devices/sdp_statistics/__init__.py | 0 devices/devices/sdp_statistics/sst.py | 17 ++++++++++++----- devices/examples/HW_device_template.py | 10 ++++++++-- devices/examples/load_from_disk/__init__.py | 0 devices/examples/load_from_disk/ini_client.py | 2 +- devices/examples/load_from_disk/ini_device.py | 13 ++++++++++--- devices/examples/snmp/__init__.py | 0 devices/examples/snmp/snmp.py | 15 +++++++++++---- devices/examples/snmp/snmp_client.py | 6 +++--- devices/test/__init__.py | 0 devices/test/clients/__init__.py | 0 devices/test/clients/test_client.py | 2 +- devices/test/devices/__init__.py | 0 devices/test/devices/random_data.py | 7 +++++++ devices/test/devices/test_device.py | 13 ++++++++++--- devices/toolkit/__init__.py | 0 devices/toolkit/lts_cold_start.py | 11 +++++++++-- 28 files changed, 119 insertions(+), 53 deletions(-) delete mode 100644 devices/clients/__init__.py delete mode 100644 devices/common/__init__.py delete mode 100644 devices/devices/__init__.py delete mode 100644 devices/devices/sdp/__init__.py rename devices/devices/{ => sdp}/sdp.py (94%) delete mode 100644 devices/devices/sdp_statistics/__init__.py delete mode 100644 devices/examples/load_from_disk/__init__.py delete mode 100644 devices/examples/snmp/__init__.py delete mode 100644 devices/test/__init__.py delete mode 100644 devices/test/clients/__init__.py delete mode 100644 devices/test/devices/__init__.py delete mode 100644 devices/toolkit/__init__.py diff --git a/devices/clients/__init__.py b/devices/clients/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/devices/clients/attribute_wrapper.py b/devices/clients/attribute_wrapper.py index 5953a1c8c..73b8d2039 100644 --- a/devices/clients/attribute_wrapper.py +++ b/devices/clients/attribute_wrapper.py @@ -3,7 +3,7 @@ from tango import AttrWriteType import numpy -from util.wrappers import only_when_on, fault_on_error +from devices.device_decorators import only_when_on, fault_on_error import logging logger = logging.getLogger() diff --git a/devices/clients/opcua_client.py b/devices/clients/opcua_client.py index 0f7ca6dc4..de237d919 100644 --- a/devices/clients/opcua_client.py +++ b/devices/clients/opcua_client.py @@ -1,10 +1,11 @@ from threading import Thread import socket -from util.comms_client import CommClient import numpy import opcua from opcua import Client +from clients.comms_client import CommClient + __all__ = ["OPCUAConnection"] numpy_to_OPCua_dict = { diff --git a/devices/clients/sst_client.py b/devices/clients/sst_client.py index ab79fe125..ff2e28bc9 100644 --- a/devices/clients/sst_client.py +++ b/devices/clients/sst_client.py @@ -1,20 +1,18 @@ -import queue -from threading import Thread -import socket -from util.comms_client import CommClient - +from datetime import datetime +from multiprocessing import Value, Array from queue import Queue - -import numpy +from threading import Thread import logging +import numpy +import queue import socket -from datetime import datetime -from multiprocessing import Value, Array import time +from clients.comms_client import CommClient __all__ = ["sst_client"] + class sst_client(CommClient): """ Connects to OPC-UA in the foreground or background, and sends HELLO diff --git a/devices/common/__init__.py b/devices/common/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/devices/devices/__init__.py b/devices/devices/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/devices/devices/apsctl.py b/devices/devices/apsctl.py index 5187aa8eb..25d8e1080 100644 --- a/devices/devices/apsctl.py +++ b/devices/devices/apsctl.py @@ -11,6 +11,12 @@ """ +# TODO(Corne): Remove sys.path.append hack once packaging is in place! +import os, sys +currentdir = os.path.dirname(os.path.realpath(__file__)) +parentdir = os.path.dirname(currentdir) +sys.path.append(parentdir) + # PyTango imports from tango.server import run from tango.server import device_property, attribute @@ -18,11 +24,11 @@ from tango import AttrWriteType # Additional import from clients.opcua_client import OPCUAConnection -from devices.clients.attribute_wrapper import attribute_wrapper -from devices.devices.hardware_device import hardware_device +from clients.attribute_wrapper import attribute_wrapper +from devices.hardware_device import hardware_device -from devices.common.lofar_logging import device_logging_to_python, log_exceptions -from devices.common.lofar_git import get_version +from common.lofar_logging import device_logging_to_python, log_exceptions +from common.lofar_git import get_version import numpy diff --git a/devices/devices/hardware_device.py b/devices/devices/hardware_device.py index e0c9154c7..d244e79df 100644 --- a/devices/devices/hardware_device.py +++ b/devices/devices/hardware_device.py @@ -16,12 +16,12 @@ from tango.server import Device, command from tango import DevState, DebugIt # Additional import -from util.attribute_wrapper import attribute_wrapper -from util.lofar_logging import log_exceptions +from clients.attribute_wrapper import attribute_wrapper +from common.lofar_logging import log_exceptions __all__ = ["hardware_device"] -from util.wrappers import only_in_states, fault_on_error +from devices.device_decorators import only_in_states, fault_on_error #@log_exceptions() class hardware_device(Device): diff --git a/devices/devices/pcc.py b/devices/devices/pcc.py index fe2a1841d..f21bd39a2 100644 --- a/devices/devices/pcc.py +++ b/devices/devices/pcc.py @@ -11,6 +11,12 @@ """ +# TODO(Corne): Remove sys.path.append hack once packaging is in place! +import os, sys +currentdir = os.path.dirname(os.path.realpath(__file__)) +parentdir = os.path.dirname(currentdir) +sys.path.append(parentdir) + # PyTango imports from tango import DebugIt from tango.server import run, command @@ -19,13 +25,13 @@ from tango import AttrWriteType import numpy # Additional import -from devices.devices.device_decorators import * +from device_decorators import * from clients.opcua_client import OPCUAConnection -from devices.clients.attribute_wrapper import attribute_wrapper -from devices.devices.hardware_device import hardware_device -from devices.common.lofar_logging import device_logging_to_python, log_exceptions -from devices.common.lofar_git import get_version +from clients.attribute_wrapper import attribute_wrapper +from devices.hardware_device import hardware_device +from common.lofar_logging import device_logging_to_python, log_exceptions +from common.lofar_git import get_version __all__ = ["PCC", "main"] @@ -244,7 +250,7 @@ class PCC(hardware_device): def main(args=None, **kwargs): """Main function of the PCC module.""" - from devices.common.lofar_logging import configure_logger + from common.lofar_logging import configure_logger import logging configure_logger(logging.getLogger()) diff --git a/devices/devices/sdp/__init__.py b/devices/devices/sdp/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/devices/devices/sdp.py b/devices/devices/sdp/sdp.py similarity index 94% rename from devices/devices/sdp.py rename to devices/devices/sdp/sdp.py index f6eb07f27..ad19ab28b 100644 --- a/devices/devices/sdp.py +++ b/devices/devices/sdp/sdp.py @@ -11,6 +11,13 @@ """ +# TODO(Corne): Remove sys.path.append hack once packaging is in place! +import os, sys +currentdir = os.path.dirname(os.path.realpath(__file__)) +parentdir = os.path.dirname(currentdir) +parentdir = os.path.dirname(parentdir) +sys.path.append(parentdir) + # PyTango imports from tango.server import run from tango.server import device_property, attribute @@ -18,11 +25,11 @@ from tango import AttrWriteType # Additional import from clients.opcua_client import OPCUAConnection -from devices.clients.attribute_wrapper import attribute_wrapper -from devices.devices.hardware_device import hardware_device +from clients.attribute_wrapper import attribute_wrapper +from devices.hardware_device import hardware_device -from devices.common.lofar_logging import device_logging_to_python, log_exceptions -from devices.common.lofar_git import get_version +from common.lofar_logging import device_logging_to_python, log_exceptions +from common.lofar_git import get_version import numpy @@ -168,7 +175,7 @@ class SDP(hardware_device): def main(args=None, **kwargs): """Main function of the SDP module.""" - from devices.common.lofar_logging import configure_logger + from common.lofar_logging import configure_logger import logging configure_logger(logging.getLogger()) diff --git a/devices/devices/sdp_statistics/__init__.py b/devices/devices/sdp_statistics/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/devices/devices/sdp_statistics/sst.py b/devices/devices/sdp_statistics/sst.py index 28874a3d0..5ea315fd9 100644 --- a/devices/devices/sdp_statistics/sst.py +++ b/devices/devices/sdp_statistics/sst.py @@ -11,6 +11,13 @@ """ +# TODO(Corne): Remove sys.path.append hack once packaging is in place! +import os, sys +currentdir = os.path.dirname(os.path.realpath(__file__)) +parentdir = os.path.dirname(currentdir) +parentdir = os.path.dirname(parentdir) +sys.path.append(parentdir) + # PyTango imports from tango.server import run from tango.server import device_property @@ -18,10 +25,10 @@ from tango.server import device_property from clients.sst_client import sst_client -from devices.clients.attribute_wrapper import attribute_wrapper -from devices.devices.hardware_device import hardware_device +from clients.attribute_wrapper import attribute_wrapper +from devices.hardware_device import hardware_device -from devices.common.lofar_logging import device_logging_to_python, log_exceptions +from common.lofar_logging import device_logging_to_python, log_exceptions import numpy @@ -90,11 +97,11 @@ class SST(hardware_device): def main(args=None, **kwargs): """Main function of the Statistics Device module.""" - from devices.common.lofar_logging import configure_logger + from common.lofar_logging import configure_logger import logging configure_logger(logging.getLogger()) - return run((Statistics,), args=args, **kwargs) + return run((SST,), args=args, **kwargs) if __name__ == '__main__': diff --git a/devices/examples/HW_device_template.py b/devices/examples/HW_device_template.py index 66b6bdb19..605973302 100644 --- a/devices/examples/HW_device_template.py +++ b/devices/examples/HW_device_template.py @@ -9,13 +9,19 @@ """ +# TODO(Corne): Remove sys.path.append hack once packaging is in place! +import os, sys +currentdir = os.path.dirname(os.path.realpath(__file__)) +parentdir = os.path.dirname(currentdir) +sys.path.append(parentdir) + # PyTango imports from tango.server import run from tango import AttrWriteType # Additional import -from util.attribute_wrapper import attribute_wrapper -from util.hardware_device import hardware_device +from clients.attribute_wrapper import attribute_wrapper +from devices.hardware_device import hardware_device __all__ = ["HW_dev"] diff --git a/devices/examples/load_from_disk/__init__.py b/devices/examples/load_from_disk/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/devices/examples/load_from_disk/ini_client.py b/devices/examples/load_from_disk/ini_client.py index 2f4d714b5..dcc66a85a 100644 --- a/devices/examples/load_from_disk/ini_client.py +++ b/devices/examples/load_from_disk/ini_client.py @@ -1,4 +1,4 @@ -from util.comms_client import CommClient +from clients.comms_client import CommClient import configparser import numpy diff --git a/devices/examples/load_from_disk/ini_device.py b/devices/examples/load_from_disk/ini_device.py index c1c273171..e4aaef906 100644 --- a/devices/examples/load_from_disk/ini_device.py +++ b/devices/examples/load_from_disk/ini_device.py @@ -9,18 +9,25 @@ """ +# TODO(Corne): Remove sys.path.append hack once packaging is in place! +import os, sys +currentdir = os.path.dirname(os.path.realpath(__file__)) +parentdir = os.path.dirname(currentdir) +parentdir = os.path.dirname(parentdir) +sys.path.append(parentdir) + # PyTango imports from tango.server import run from tango import AttrWriteType # Additional import -from devices.clients.attribute_wrapper import attribute_wrapper -from devices.devices.hardware_device import hardware_device +from clients.attribute_wrapper import attribute_wrapper +from devices.hardware_device import hardware_device import configparser import numpy -from clients.ini_client import * +from ini_client import * __all__ = ["ini_device"] diff --git a/devices/examples/snmp/__init__.py b/devices/examples/snmp/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/devices/examples/snmp/snmp.py b/devices/examples/snmp/snmp.py index 7962d2fd7..b54c4fe90 100644 --- a/devices/examples/snmp/snmp.py +++ b/devices/examples/snmp/snmp.py @@ -11,15 +11,22 @@ """ +# TODO(Corne): Remove sys.path.append hack once packaging is in place! +import os, sys +currentdir = os.path.dirname(os.path.realpath(__file__)) +parentdir = os.path.dirname(currentdir) +parentdir = os.path.dirname(parentdir) +sys.path.append(parentdir) + # PyTango imports from tango.server import run from tango.server import device_property from tango import AttrWriteType # Additional import -from devices.examples.snmp.snmp_client import SNMP_client -from devices.clients.attribute_wrapper import attribute_wrapper -from devices.devices.hardware_device import hardware_device +from examples.snmp.snmp_client import SNMP_client +from clients.attribute_wrapper import attribute_wrapper +from devices.hardware_device import hardware_device import numpy @@ -111,7 +118,7 @@ class SNMP(hardware_device): def main(args=None, **kwargs): """Main function of the PCC module.""" - from devices.common.lofar_logging import configure_logger + from common.lofar_logging import configure_logger import logging configure_logger(logging.getLogger()) diff --git a/devices/examples/snmp/snmp_client.py b/devices/examples/snmp/snmp_client.py index 6230386aa..2c162abef 100644 --- a/devices/examples/snmp/snmp_client.py +++ b/devices/examples/snmp/snmp_client.py @@ -1,5 +1,7 @@ -from util.comms_client import CommClient +from clients.comms_client import CommClient + import snmp + import numpy import traceback @@ -156,5 +158,3 @@ class SNMP_client(CommClient): # return the read/write functions return _read_function, _write_function - - diff --git a/devices/test/__init__.py b/devices/test/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/devices/test/clients/__init__.py b/devices/test/clients/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/devices/test/clients/test_client.py b/devices/test/clients/test_client.py index 7465a6afc..355b4f72a 100644 --- a/devices/test/clients/test_client.py +++ b/devices/test/clients/test_client.py @@ -1,4 +1,4 @@ -from util.comms_client import CommClient +from clients.comms_client import CommClient import numpy import os diff --git a/devices/test/devices/__init__.py b/devices/test/devices/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/devices/test/devices/random_data.py b/devices/test/devices/random_data.py index 86836b73c..3ebff8615 100644 --- a/devices/test/devices/random_data.py +++ b/devices/test/devices/random_data.py @@ -7,6 +7,13 @@ # Distributed under the terms of the APACHE license. # See LICENSE.txt for more info. +# TODO(Corne): Remove sys.path.append hack once packaging is in place! +import os, sys +currentdir = os.path.dirname(os.path.realpath(__file__)) +parentdir = os.path.dirname(currentdir) +parentdir = os.path.dirname(parentdir) +sys.path.append(parentdir) + # PyTango imports from tango import DevState from tango.server import run, Device, attribute, command diff --git a/devices/test/devices/test_device.py b/devices/test/devices/test_device.py index 22fe3c2bb..f9a72ec88 100644 --- a/devices/test/devices/test_device.py +++ b/devices/test/devices/test_device.py @@ -10,15 +10,22 @@ """ test Device Server """ +# TODO(Corne): Remove sys.path.append hack once packaging is in place! +import os, sys +currentdir = os.path.dirname(os.path.realpath(__file__)) +parentdir = os.path.dirname(currentdir) +parentdir = os.path.dirname(parentdir) +sys.path.append(parentdir) + # PyTango imports from tango.server import run from tango.server import device_property from tango import DevState # Additional import -from clients.test_client import test_client -from devices.clients.attribute_wrapper import * -from devices.devices.hardware_device import * +from test.clients.test_client import test_client +from clients.attribute_wrapper import * +from devices.hardware_device import * __all__ = ["test_device", "main"] diff --git a/devices/toolkit/__init__.py b/devices/toolkit/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/devices/toolkit/lts_cold_start.py b/devices/toolkit/lts_cold_start.py index baaadade2..fb558ff2c 100644 --- a/devices/toolkit/lts_cold_start.py +++ b/devices/toolkit/lts_cold_start.py @@ -1,8 +1,15 @@ #! /usr/bin/env python3 import logging from time import sleep -from devices.toolkit.startup import startup -from devices.toolkit.lofar2_config import configure_logging + +# TODO(Corne): Remove sys.path.append hack once packaging is in place! +import os, sys +currentdir = os.path.dirname(os.path.realpath(__file__)) +parentdir = os.path.dirname(currentdir) +sys.path.append(parentdir) + +from toolkit.startup import startup +from toolkit.lofar2_config import configure_logging def start_device(device: str): -- GitLab