fix: clean all imports from bec_lib, remove use of @threadlocked

This commit is contained in:
guijar_m 2024-05-08 14:39:02 +02:00 committed by guijar_m
parent 649502e364
commit 8a017ef3d7
92 changed files with 342 additions and 242 deletions

View File

@ -5,9 +5,9 @@ import numpy as np # not needed but always nice to have
from bec_ipython_client.main import BECIPythonClient as _BECIPythonClient from bec_ipython_client.main import BECIPythonClient as _BECIPythonClient
from bec_ipython_client.main import main_dict as _main_dict from bec_ipython_client.main import main_dict as _main_dict
from bec_lib import RedisConnector as _RedisConnector
from bec_lib import bec_logger as _bec_logger
from bec_lib import plugin_helper from bec_lib import plugin_helper
from bec_lib.logger import bec_logger as _bec_logger
from bec_lib.redis_connector import RedisConnector as _RedisConnector
try: try:
from bec_widgets.cli.client import BECDockArea as _BECDockArea from bec_widgets.cli.client import BECDockArea as _BECDockArea

View File

@ -5,8 +5,8 @@ import time
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from bec_ipython_client.callbacks.scan_progress import LiveUpdatesScanProgress from bec_ipython_client.callbacks.scan_progress import LiveUpdatesScanProgress
from bec_lib import bec_logger
from bec_lib.bec_errors import ScanInterruption from bec_lib.bec_errors import ScanInterruption
from bec_lib.logger import bec_logger
from .live_table import LiveUpdatesTable from .live_table import LiveUpdatesTable
from .move_device import LiveUpdatesReadbackProgressbar from .move_device import LiveUpdatesReadbackProgressbar

View File

@ -6,11 +6,12 @@ from typing import TYPE_CHECKING
from bec_ipython_client.prettytable import PrettyTable from bec_ipython_client.prettytable import PrettyTable
from bec_ipython_client.progressbar import ScanProgressBar from bec_ipython_client.progressbar import ScanProgressBar
from bec_lib import bec_logger, messages from bec_lib.logger import bec_logger
from .utils import LiveUpdatesBase, check_alarms from .utils import LiveUpdatesBase, check_alarms
if TYPE_CHECKING: if TYPE_CHECKING:
from bec_lib import messages
from bec_lib.client import BECClient from bec_lib.client import BECClient
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -6,7 +6,9 @@ from typing import TYPE_CHECKING
import numpy as np import numpy as np
from bec_ipython_client.progressbar import DeviceProgressBar from bec_ipython_client.progressbar import DeviceProgressBar
from bec_lib import DeviceManagerBase, MessageEndpoints, messages from bec_lib import messages
from bec_lib.devicemanager import DeviceManagerBase
from bec_lib.endpoints import MessageEndpoints
from .utils import LiveUpdatesBase, check_alarms from .utils import LiveUpdatesBase, check_alarms

View File

@ -1,7 +1,8 @@
import time import time
from bec_ipython_client.progressbar import ScanProgressBar from bec_ipython_client.progressbar import ScanProgressBar
from bec_lib import MessageEndpoints, bec_logger from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from .live_table import LiveUpdatesTable from .live_table import LiveUpdatesTable

View File

@ -7,10 +7,11 @@ import traceback
from collections.abc import Callable from collections.abc import Callable
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from bec_lib import bec_logger, messages from bec_lib.logger import bec_logger
from bec_lib.request_items import RequestItem from bec_lib.request_items import RequestItem
if TYPE_CHECKING: if TYPE_CHECKING:
from bec_lib import messages
from bec_lib.client import BECClient from bec_lib.client import BECClient
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -12,11 +12,13 @@ from bec_ipython_client.beamline_mixin import BeamlineMixin
from bec_ipython_client.bec_magics import BECMagics from bec_ipython_client.bec_magics import BECMagics
from bec_ipython_client.callbacks.ipython_live_updates import IPythonLiveUpdates from bec_ipython_client.callbacks.ipython_live_updates import IPythonLiveUpdates
from bec_ipython_client.signals import ScanInterruption, SigintHandler from bec_ipython_client.signals import ScanInterruption, SigintHandler
from bec_lib import ServiceConfig, bec_logger, plugin_helper from bec_lib import plugin_helper
from bec_lib.alarm_handler import AlarmBase from bec_lib.alarm_handler import AlarmBase
from bec_lib.callback_handler import EventType from bec_lib.callback_handler import EventType
from bec_lib.client import BECClient from bec_lib.client import BECClient
from bec_lib.connector import ConnectorBase from bec_lib.connector import ConnectorBase
from bec_lib.logger import bec_logger
from bec_lib.service_config import ServiceConfig
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -6,7 +6,7 @@ import numpy as np
import rich.progress import rich.progress
from rich.text import Text from rich.text import Text
from bec_lib import bec_logger from bec_lib.logger import bec_logger
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -1,5 +1,5 @@
from bec_ipython_client import BECIPythonClient from bec_ipython_client import BECIPythonClient
from bec_lib import bec_logger from bec_lib.logger import bec_logger
logger = bec_logger.logger logger = bec_logger.logger
bec_logger.level = bec_logger.LOGLEVEL.SUCCESS bec_logger.level = bec_logger.LOGLEVEL.SUCCESS

View File

@ -6,7 +6,8 @@ import IPython
import pytest import pytest
from bec_ipython_client import BECIPythonClient, main from bec_ipython_client import BECIPythonClient, main
from bec_lib import RedisConnector, ServiceConfig from bec_lib.redis_connector import RedisConnector
from bec_lib.service_config import ServiceConfig
def test_bec_entry_point_globals_and_post_startup(tmpdir): # , capfd): def test_bec_entry_point_globals_and_post_startup(tmpdir): # , capfd):

View File

@ -7,7 +7,8 @@ from bec_ipython_client.callbacks.move_device import (
LiveUpdatesReadbackProgressbar, LiveUpdatesReadbackProgressbar,
ReadbackDataMixin, ReadbackDataMixin,
) )
from bec_lib import MessageEndpoints, messages from bec_lib import messages
from bec_lib.endpoints import MessageEndpoints
@pytest.fixture @pytest.fixture

View File

@ -1,6 +1,6 @@
import pytest import pytest
from bec_lib import bec_logger from bec_lib.logger import bec_logger
# overwrite threads_check fixture from bec_lib, # overwrite threads_check fixture from bec_lib,
# to have it in autouse # to have it in autouse

View File

@ -8,9 +8,11 @@ import numpy as np
import pytest import pytest
from bec_ipython_client.callbacks.utils import ScanRequestError from bec_ipython_client.callbacks.utils import ScanRequestError
from bec_lib import MessageEndpoints, bec_logger, configs from bec_lib import configs
from bec_lib.alarm_handler import AlarmBase from bec_lib.alarm_handler import AlarmBase
from bec_lib.bec_errors import ScanAbortion, ScanInterruption from bec_lib.bec_errors import ScanAbortion, ScanInterruption
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -4,8 +4,9 @@ import numpy as np
import pytest import pytest
import yaml import yaml
from bec_lib import DeviceConfigError, bec_logger
from bec_lib.alarm_handler import AlarmBase from bec_lib.alarm_handler import AlarmBase
from bec_lib.devicemanager import DeviceConfigError
from bec_lib.logger import bec_logger
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -17,7 +17,7 @@ The documentation is part of the BEC documentation and can be found [here](https
## Usage ## Usage
```python ```python
from bec_lib import BECClient from bec_lib.client import BECClient
# Create a new BECClient instance and start it # Create a new BECClient instance and start it
bec = BECClient() bec = BECClient()

View File

@ -1,13 +1 @@
from bec_lib.alarm_handler import Alarms
from bec_lib.bec_service import BECService
from bec_lib.channel_monitor import channel_monitor_launch, log_monitor_launch
from bec_lib.client import BECClient
from bec_lib.config_helper import ConfigHelper
from bec_lib.device import DeviceBase, DeviceStatus, Status
from bec_lib.devicemanager import DeviceConfigError, DeviceContainer, DeviceManagerBase
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger from bec_lib.logger import bec_logger
from bec_lib.messages import BECStatus
from bec_lib.redis_connector import RedisConnector
from bec_lib.service_config import ServiceConfig
from bec_lib.utils import threadlocked

View File

@ -15,15 +15,15 @@ from typing import TYPE_CHECKING
import yaml import yaml
import bec_lib import bec_lib
from bec_lib import messages
from bec_lib.bec_errors import DeviceConfigError, ServiceConfigError from bec_lib.bec_errors import DeviceConfigError, ServiceConfigError
from bec_lib.bec_yaml_loader import yaml_load from bec_lib.bec_yaml_loader import yaml_load
from bec_lib.endpoints import MessageEndpoints from bec_lib.endpoints import MessageEndpoints
from bec_lib.file_utils import DeviceConfigWriter from bec_lib.file_utils import DeviceConfigWriter
from bec_lib.logger import bec_logger from bec_lib.logger import bec_logger
from bec_lib.messages import DeviceConfigMessage, RequestResponseMessage from bec_lib.messages import DeviceConfigMessage
if TYPE_CHECKING: if TYPE_CHECKING:
from bec_lib.messages import RequestResponseMessage, ServiceResponseMessage
from bec_lib.redis_connector import RedisConnector from bec_lib.redis_connector import RedisConnector
logger = bec_logger.logger logger = bec_logger.logger
@ -166,7 +166,7 @@ class ConfigHelper:
# wait for the device server and scan server to acknowledge the config change # wait for the device server and scan server to acknowledge the config change
self.wait_for_service_response(RID) self.wait_for_service_response(RID)
def wait_for_service_response(self, RID: str, timeout=10) -> messages.ServiceResponseMessage: def wait_for_service_response(self, RID: str, timeout=10) -> ServiceResponseMessage:
""" """
wait for service response wait for service response

View File

@ -12,16 +12,16 @@ from rich.console import Console
from rich.table import Table from rich.table import Table
from typeguard import typechecked from typeguard import typechecked
from bec_lib import messages
from bec_lib.bec_errors import DeviceConfigError from bec_lib.bec_errors import DeviceConfigError
from bec_lib.config_helper import ConfigHelper from bec_lib.config_helper import ConfigHelper
from bec_lib.device import ComputedSignal, Device, DeviceBase, Positioner, ReadoutPriority, Signal from bec_lib.device import ComputedSignal, Device, DeviceBase, Positioner, ReadoutPriority, Signal
from bec_lib.endpoints import MessageEndpoints from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger from bec_lib.logger import bec_logger
from bec_lib.messages import BECStatus, DeviceConfigMessage, DeviceInfoMessage from bec_lib.messages import BECStatus, ServiceResponseMessage
if TYPE_CHECKING: if TYPE_CHECKING:
from bec_lib import BECService from bec_lib.bec_service import BECService
from bec_lib.messages import DeviceConfigMessage, DeviceInfoMessage
logger = bec_logger.logger logger = bec_logger.logger
@ -470,7 +470,7 @@ class DeviceManagerBase:
return return
self.connector.lpush( self.connector.lpush(
MessageEndpoints.service_response(msg.metadata["RID"]), MessageEndpoints.service_response(msg.metadata["RID"]),
messages.ServiceResponseMessage( ServiceResponseMessage(
# pylint: disable=no-member # pylint: disable=no-member
response={"accepted": True, "service": self._service._service_name} response={"accepted": True, "service": self._service._service_name}
), ),
@ -545,7 +545,7 @@ class DeviceManagerBase:
return [] return []
return devices.content["resource"] return devices.content["resource"]
def _add_device(self, dev: dict, msg: messages.DeviceInfoMessage): def _add_device(self, dev: dict, msg: DeviceInfoMessage):
name = msg.content["device"] name = msg.content["device"]
info = msg.content["info"] info = msg.content["info"]

View File

@ -2,6 +2,8 @@
Endpoints for communication within the BEC. Endpoints for communication within the BEC.
""" """
from __future__ import annotations
# pylint: disable=too-many-public-methods # pylint: disable=too-many-public-methods
import enum import enum
from dataclasses import dataclass from dataclasses import dataclass

View File

@ -1,3 +1,5 @@
from __future__ import annotations
import enum import enum
import time import time
import warnings import warnings

View File

@ -12,7 +12,6 @@ from typing import TYPE_CHECKING
from bec_lib import messages from bec_lib import messages
from bec_lib.callback_handler import CallbackHandler from bec_lib.callback_handler import CallbackHandler
from bec_lib.logger import bec_logger from bec_lib.logger import bec_logger
from bec_lib.utils import threadlocked
logger = bec_logger.logger logger = bec_logger.logger
@ -134,54 +133,54 @@ class RequestStorage:
self._lock = threading.RLock() self._lock = threading.RLock()
self.scan_manager = scan_manager self.scan_manager = scan_manager
@threadlocked
def find_request_by_ID(self, requestID: str) -> RequestItem | None: def find_request_by_ID(self, requestID: str) -> RequestItem | None:
"""find a request item based on its requestID""" """find a request item based on its requestID"""
for request in self.storage: with self._lock:
if request.requestID == requestID: for request in self.storage:
return request if request.requestID == requestID:
return None return request
return None
@threadlocked
def update_with_response(self, response_msg: messages.RequestResponseMessage) -> None: def update_with_response(self, response_msg: messages.RequestResponseMessage) -> None:
"""create or update request item based on a new RequestResponseMessage""" """create or update request item based on a new RequestResponseMessage"""
request_item = self.find_request_by_ID(response_msg.metadata.get("RID")) with self._lock:
if request_item: request_item = self.find_request_by_ID(response_msg.metadata.get("RID"))
request_item.update_with_response(response_msg) if request_item:
logger.debug("Scan queue request exists. Updating with response.") request_item.update_with_response(response_msg)
return logger.debug("Scan queue request exists. Updating with response.")
return
# it could be that the response arrived before the request # it could be that the response arrived before the request
self.storage.append(RequestItem.from_response(self.scan_manager, response_msg)) self.storage.append(RequestItem.from_response(self.scan_manager, response_msg))
logger.debug("Scan queue request does not exist. Creating from response.") logger.debug("Scan queue request does not exist. Creating from response.")
@threadlocked
def update_with_request(self, request_msg: messages.ScanQueueMessage) -> None: def update_with_request(self, request_msg: messages.ScanQueueMessage) -> None:
"""create or update request item based on a new ScanQueueMessage (i.e. request message)""" """create or update request item based on a new ScanQueueMessage (i.e. request message)"""
if not request_msg.metadata: with self._lock:
if not request_msg.metadata:
return
if not request_msg.metadata.get("RID"):
return
request_item = self.find_request_by_ID(request_msg.metadata.get("RID"))
if request_item:
request_item.update_with_request(request_msg)
return
self.storage.append(RequestItem.from_request(self.scan_manager, request_msg))
return return
if not request_msg.metadata.get("RID"):
return
request_item = self.find_request_by_ID(request_msg.metadata.get("RID"))
if request_item:
request_item.update_with_request(request_msg)
return
self.storage.append(RequestItem.from_request(self.scan_manager, request_msg))
return
@threadlocked
def update_with_client_message(self, client_message: messages.ClientInfoMessage) -> None: def update_with_client_message(self, client_message: messages.ClientInfoMessage) -> None:
"""Update the request item with a new ClientInfoMessage""" """Update the request item with a new ClientInfoMessage"""
if not client_message.RID: with self._lock:
return if not client_message.RID:
return
request_item = self.find_request_by_ID(client_message.RID) request_item = self.find_request_by_ID(client_message.RID)
if request_item: if request_item:
request_item.update_with_client_message(client_message) request_item.update_with_client_message(client_message)
return return
self.storage.append(RequestItem.from_client_message(self.scan_manager, client_message)) self.storage.append(RequestItem.from_client_message(self.scan_manager, client_message))
return return

View File

@ -10,7 +10,8 @@ from typing import TYPE_CHECKING
import yaml import yaml
import bec_lib import bec_lib
from bec_lib import BECClient, messages from bec_lib import messages
from bec_lib.client import BECClient
from bec_lib.connector import ConnectorBase from bec_lib.connector import ConnectorBase
from bec_lib.devicemanager import DeviceManagerBase from bec_lib.devicemanager import DeviceManagerBase
from bec_lib.endpoints import EndpointInfo, MessageEndpoints from bec_lib.endpoints import EndpointInfo, MessageEndpoints

View File

@ -49,8 +49,8 @@ dev = [
] ]
[project.scripts] [project.scripts]
bec-channel-monitor = "bec_lib:channel_monitor_launch" bec-channel-monitor = "bec_lib.channel_monitor:channel_monitor_launch"
bec-log-monitor = "bec_lib:log_monitor_launch" bec-log-monitor = "bec_lib.channel_monitor:log_monitor_launch"
[project.entry-points.pytest11] [project.entry-points.pytest11]
bec_lib_fixtures = "bec_lib.tests.fixtures" bec_lib_fixtures = "bec_lib.tests.fixtures"

View File

@ -6,9 +6,10 @@ from unittest import mock
import pytest import pytest
import bec_lib import bec_lib
from bec_lib import bec_logger, messages from bec_lib import messages
from bec_lib.bec_service import BECService from bec_lib.bec_service import BECService
from bec_lib.endpoints import MessageEndpoints from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from bec_lib.messages import BECStatus from bec_lib.messages import BECStatus
from bec_lib.service_config import ServiceConfig from bec_lib.service_config import ServiceConfig

View File

@ -3,10 +3,11 @@ from unittest import mock
import pytest import pytest
from bec_lib import MessageEndpoints, messages from bec_lib import messages
from bec_lib.dap_plugin_objects import DAPPluginObject, LmfitService1D from bec_lib.dap_plugin_objects import DAPPluginObject, LmfitService1D
from bec_lib.dap_plugins import DAPPlugins from bec_lib.dap_plugins import DAPPlugins
from bec_lib.device import DeviceBase from bec_lib.device import DeviceBase
from bec_lib.endpoints import MessageEndpoints
from bec_lib.scan_items import ScanItem from bec_lib.scan_items import ScanItem
from bec_lib.scan_report import ScanReport from bec_lib.scan_report import ScanReport

View File

@ -6,7 +6,7 @@ from bec_lib import plugin_helper
@pytest.mark.parametrize( @pytest.mark.parametrize(
"class_spec, out_name", "class_spec, out_name",
[("bec_lib.messages.BECMessage", "BECMessage"), ("bec_lib.BECStatus", "BECStatus")], [("bec_lib.messages.BECMessage", "BECMessage"), ("bec_lib.messages.BECStatus", "BECStatus")],
) )
def test_get_plugin_class(class_spec, out_name): def test_get_plugin_class(class_spec, out_name):
cls = plugin_helper.get_plugin_class(class_spec, [bec_lib]) cls = plugin_helper.get_plugin_class(class_spec, [bec_lib])

View File

@ -2,7 +2,8 @@ from unittest import mock
import pytest import pytest
from bec_lib import MessageEndpoints, messages from bec_lib import messages
from bec_lib.endpoints import MessageEndpoints
from bec_lib.scan_manager import ScanManager from bec_lib.scan_manager import ScanManager

View File

@ -10,7 +10,7 @@ While command-line arguments have to be set in the pre-startup script, the
post-startup script can be used to load beamline specific information and post-startup script can be used to load beamline specific information and
to setup the prompts. to setup the prompts.
from bec_lib import bec_logger from bec_lib.logger import bec_logger
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -25,7 +25,9 @@ but they are executed in a specific order:
# import numpy as np # import numpy as np
# from bec_lib import MessageEndpoints, bec_logger, messages # from bec_lib.endpoints import MessageEndpoints
# from bec_lib.logger import bec_logger
# from bec_lib import messages
# from bec_server.scan_server.errors import ScanAbortion # from bec_server.scan_server.errors import ScanAbortion
# from bec_server.scan_server.scans import FlyScanBase, RequestBase, ScanArgType, ScanBase # from bec_server.scan_server.scans import FlyScanBase, RequestBase, ScanArgType, ScanBase

View File

@ -5,7 +5,9 @@ import argparse
import threading import threading
import bec_server.data_processing as data_processing import bec_server.data_processing as data_processing
from bec_lib import RedisConnector, ServiceConfig, bec_logger from bec_lib.logger import bec_logger
from bec_lib.redis_connector import RedisConnector
from bec_lib.service_config import ServiceConfig
from bec_server.data_processing.lmfit1d_service import LmfitService1D from bec_server.data_processing.lmfit1d_service import LmfitService1D
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -1,5 +1,7 @@
from bec_lib import BECClient, ServiceConfig, bec_logger from bec_lib.client import BECClient
from bec_lib.connector import ConnectorBase from bec_lib.connector import ConnectorBase
from bec_lib.logger import bec_logger
from bec_lib.service_config import ServiceConfig
from .dap_service_manager import DAPServiceManager from .dap_service_manager import DAPServiceManager

View File

@ -4,11 +4,11 @@ import abc
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
# import numpy as np # import numpy as np
from bec_lib import bec_logger from bec_lib.logger import bec_logger
from bec_lib.signature_serializer import signature_to_dict from bec_lib.signature_serializer import signature_to_dict
if TYPE_CHECKING: if TYPE_CHECKING:
from bec_lib import BECClient from bec_lib.client import BECClient
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -1,6 +1,9 @@
from __future__ import annotations from __future__ import annotations
from bec_lib import BECClient, MessageEndpoints, bec_logger, messages from bec_lib import messages
from bec_lib.client import BECClient
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from bec_lib.redis_connector import MessageObject from bec_lib.redis_connector import MessageObject
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -8,8 +8,11 @@ from typing import TYPE_CHECKING
import lmfit import lmfit
import numpy as np import numpy as np
from bec_lib import DeviceBase, MessageEndpoints, bec_logger, messages from bec_lib import messages
from bec_lib.device import DeviceBase
from bec_lib.endpoints import MessageEndpoints
from bec_lib.lmfit_serializer import deserialize_param_object, serialize_lmfit_params from bec_lib.lmfit_serializer import deserialize_param_object, serialize_lmfit_params
from bec_lib.logger import bec_logger
from bec_lib.serialization import MsgpackSerialization from bec_lib.serialization import MsgpackSerialization
from bec_server.data_processing.dap_service import DAPError, DAPServiceBase from bec_server.data_processing.dap_service import DAPError, DAPServiceBase

View File

@ -1,6 +1,6 @@
import logging import logging
from bec_lib import DeviceManagerBase from bec_lib.devicemanager import DeviceManagerBase
from . import devices from . import devices
from .cli.launch import main from .cli.launch import main

View File

@ -16,7 +16,9 @@ for entry_point in entry_points:
import argparse import argparse
import threading import threading
from bec_lib import RedisConnector, ServiceConfig, bec_logger from bec_lib.logger import bec_logger
from bec_lib.redis_connector import RedisConnector
from bec_lib.service_config import ServiceConfig
from bec_server import device_server from bec_server import device_server
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -8,9 +8,13 @@ import ophyd
from ophyd import Kind, OphydObject, Staged from ophyd import Kind, OphydObject, Staged
from ophyd.utils import errors as ophyd_errors from ophyd.utils import errors as ophyd_errors
from bec_lib import Alarms, BECService, MessageEndpoints, bec_logger, messages from bec_lib import messages
from bec_lib.alarm_handler import Alarms
from bec_lib.bec_service import BECService
from bec_lib.connector import ConnectorBase from bec_lib.connector import ConnectorBase
from bec_lib.device import OnFailure from bec_lib.device import OnFailure
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from bec_lib.messages import BECStatus from bec_lib.messages import BECStatus
from bec_server.device_server.devices.devicemanager import DeviceManagerDS from bec_server.device_server.devices.devicemanager import DeviceManagerDS
from bec_server.device_server.rpc_mixin import RPCMixin from bec_server.device_server.rpc_mixin import RPCMixin

View File

@ -4,7 +4,10 @@ import copy
import traceback import traceback
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from bec_lib import DeviceConfigError, MessageEndpoints, bec_logger, messages from bec_lib import messages
from bec_lib.devicemanager import DeviceConfigError
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
if TYPE_CHECKING: if TYPE_CHECKING:
from devicemanager import DeviceManagerDS from devicemanager import DeviceManagerDS

View File

@ -18,16 +18,13 @@ from ophyd.ophydobj import OphydObject
from ophyd.signal import EpicsSignalBase from ophyd.signal import EpicsSignalBase
from typeguard import typechecked from typeguard import typechecked
from bec_lib import ( from bec_lib import messages, plugin_helper
BECService, from bec_lib.bec_errors import DeviceConfigError
DeviceBase, from bec_lib.bec_service import BECService
DeviceConfigError, from bec_lib.device import DeviceBase
DeviceManagerBase, from bec_lib.devicemanager import DeviceManagerBase
MessageEndpoints, from bec_lib.endpoints import MessageEndpoints
bec_logger, from bec_lib.logger import bec_logger
messages,
plugin_helper,
)
from bec_server.device_server.devices.config_update_handler import ConfigUpdateHandler from bec_server.device_server.devices.config_update_handler import ConfigUpdateHandler
from bec_server.device_server.devices.device_serializer import get_device_info from bec_server.device_server.devices.device_serializer import get_device_info

View File

@ -5,7 +5,10 @@ from typing import Any
import ophyd import ophyd
from bec_lib import Alarms, MessageEndpoints, bec_logger, messages from bec_lib import messages
from bec_lib.alarm_handler import Alarms
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from bec_server.device_server.devices import is_serializable, rgetattr from bec_server.device_server.devices import is_serializable, rgetattr
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -4,7 +4,9 @@ import argparse
import os import os
import threading import threading
from bec_lib import RedisConnector, ServiceConfig, bec_logger from bec_lib.logger import bec_logger
from bec_lib.redis_connector import RedisConnector
from bec_lib.service_config import ServiceConfig
from bec_server import file_writer from bec_server import file_writer
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -3,7 +3,7 @@ from __future__ import annotations
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
if TYPE_CHECKING: if TYPE_CHECKING:
from bec_lib import DeviceManagerBase from bec_lib.devicemanager import DeviceManagerBase
from bec_server.file_writer.file_writer import HDF5Storage from bec_server.file_writer.file_writer import HDF5Storage

View File

@ -9,7 +9,9 @@ import typing
import h5py import h5py
from bec_lib import MessageEndpoints, bec_logger, messages, plugin_helper from bec_lib import messages, plugin_helper
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from .default_writer import NeXus_format as default_NeXus_format from .default_writer import NeXus_format as default_NeXus_format
from .merged_dicts import merge_dicts from .merged_dicts import merge_dicts

View File

@ -3,19 +3,16 @@ from __future__ import annotations
import threading import threading
import traceback import traceback
from bec_lib import ( from bec_lib import messages
BECService,
DeviceManagerBase,
MessageEndpoints,
ServiceConfig,
bec_logger,
messages,
threadlocked,
)
from bec_lib.alarm_handler import Alarms from bec_lib.alarm_handler import Alarms
from bec_lib.async_data import AsyncDataHandler from bec_lib.async_data import AsyncDataHandler
from bec_lib.bec_service import BECService
from bec_lib.devicemanager import DeviceManagerBase
from bec_lib.endpoints import MessageEndpoints
from bec_lib.file_utils import FileWriter from bec_lib.file_utils import FileWriter
from bec_lib.logger import bec_logger
from bec_lib.redis_connector import MessageObject, RedisConnector from bec_lib.redis_connector import MessageObject, RedisConnector
from bec_lib.service_config import ServiceConfig
from bec_server.file_writer.file_writer import NexusFileWriter from bec_server.file_writer.file_writer import NexusFileWriter
logger = bec_logger.logger logger = bec_logger.logger
@ -254,7 +251,6 @@ class FileWriterManager(BECService):
msgs msgs
) )
@threadlocked
def check_storage_status(self, scan_id: str) -> None: def check_storage_status(self, scan_id: str) -> None:
""" """
Check if the scan storage is ready to be written to file and write it if it is. Check if the scan storage is ready to be written to file and write it if it is.
@ -262,13 +258,14 @@ class FileWriterManager(BECService):
Args: Args:
scan_id (str): Scan ID scan_id (str): Scan ID
""" """
if not self.scan_storage.get(scan_id): with self._lock:
return if not self.scan_storage.get(scan_id):
self.update_baseline_reading(scan_id) return
self.update_file_references(scan_id) self.update_baseline_reading(scan_id)
if self.scan_storage[scan_id].ready_to_write(): self.update_file_references(scan_id)
self.update_async_data(scan_id) if self.scan_storage[scan_id].ready_to_write():
self.write_file(scan_id) self.update_async_data(scan_id)
self.write_file(scan_id)
def write_file(self, scan_id: str) -> None: def write_file(self, scan_id: str) -> None:
""" """

View File

@ -5,7 +5,7 @@ from typing import TYPE_CHECKING, Any
import numpy as np import numpy as np
if TYPE_CHECKING: if TYPE_CHECKING:
from bec_lib import DeviceManagerBase from bec_lib.devicemanager import DeviceManagerBase
from bec_server.file_writer.file_writer import HDF5Storage from bec_server.file_writer.file_writer import HDF5Storage

View File

@ -2,7 +2,9 @@ from __future__ import annotations
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from bec_lib import MessageEndpoints, bec_logger, messages from bec_lib import messages
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from .emitter import EmitterBase from .emitter import EmitterBase

View File

@ -6,7 +6,8 @@ from typing import TYPE_CHECKING
import msgpack import msgpack
from bec_lib import MessageEndpoints, bec_logger from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from .emitter import EmitterBase from .emitter import EmitterBase

View File

@ -4,7 +4,9 @@
import argparse import argparse
import threading import threading
from bec_lib import RedisConnector, ServiceConfig, bec_logger from bec_lib.logger import bec_logger
from bec_lib.redis_connector import RedisConnector
from bec_lib.service_config import ServiceConfig
from bec_server import scan_bundler from bec_server import scan_bundler
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -5,8 +5,12 @@ import traceback
from collections.abc import Callable from collections.abc import Callable
from concurrent.futures import ThreadPoolExecutor from concurrent.futures import ThreadPoolExecutor
from bec_lib import BECService, BECStatus, DeviceManagerBase, MessageEndpoints, bec_logger, messages from bec_lib import messages
from bec_lib.bec_service import BECService
from bec_lib.connector import ConnectorBase from bec_lib.connector import ConnectorBase
from bec_lib.devicemanager import DeviceManagerBase
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from .bec_emitter import BECEmitter from .bec_emitter import BECEmitter
from .bluesky_emitter import BlueskyEmitter from .bluesky_emitter import BlueskyEmitter
@ -52,7 +56,7 @@ class ScanBundler(BECService):
self._lock = threading.Lock() self._lock = threading.Lock()
self._emitter = [] self._emitter = []
self._initialize_emitters() self._initialize_emitters()
self.status = BECStatus.RUNNING self.status = messages.BECStatus.RUNNING
def _initialize_emitters(self): def _initialize_emitters(self):
self._emitter = [BECEmitter(self), BlueskyEmitter(self)] self._emitter = [BECEmitter(self), BlueskyEmitter(self)]

View File

@ -4,7 +4,9 @@
import argparse import argparse
import threading import threading
from bec_lib import RedisConnector, ServiceConfig, bec_logger from bec_lib.logger import bec_logger
from bec_lib.redis_connector import RedisConnector
from bec_lib.service_config import ServiceConfig
from bec_server import scan_server from bec_server import scan_server
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -1,6 +1,9 @@
from collections.abc import Callable from collections.abc import Callable
from bec_lib import DeviceStatus, MessageEndpoints, bec_logger, messages from bec_lib import messages
from bec_lib.device import DeviceStatus
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -1,6 +1,7 @@
import traceback import traceback
from bec_lib import bec_logger, messages from bec_lib import messages
from bec_lib.logger import bec_logger
from .errors import ScanAbortion from .errors import ScanAbortion
from .scans import RequestBase, unpack_scan_args from .scans import RequestBase, unpack_scan_args

View File

@ -1,6 +1,8 @@
import traceback import traceback
from bec_lib import MessageEndpoints, bec_logger, messages from bec_lib import messages
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -1,6 +1,8 @@
import inspect import inspect
from bec_lib import MessageEndpoints, bec_logger, plugin_helper from bec_lib import plugin_helper
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from bec_lib.messages import AvailableResourceMessage from bec_lib.messages import AvailableResourceMessage
from bec_lib.signature_serializer import signature_to_dict from bec_lib.signature_serializer import signature_to_dict

View File

@ -1,6 +1,6 @@
import time import time
from bec_lib import bec_logger from bec_lib.logger import bec_logger
from bec_server.scan_server.scans import ScanArgType, ScanBase, SyncFlyScanBase from bec_server.scan_server.scans import ScanArgType, ScanBase, SyncFlyScanBase
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -11,7 +11,10 @@ from enum import Enum
from rich.console import Console from rich.console import Console
from rich.table import Table from rich.table import Table
from bec_lib import Alarms, MessageEndpoints, bec_logger, messages, threadlocked from bec_lib import messages
from bec_lib.alarm_handler import Alarms
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from .errors import LimitError, ScanAbortion from .errors import LimitError, ScanAbortion
from .scan_assembler import ScanAssembler from .scan_assembler import ScanAssembler
@ -84,19 +87,19 @@ class QueueManager:
metadata=msg.metadata, metadata=msg.metadata,
) )
@threadlocked
def add_queue(self, queue_name: str) -> None: def add_queue(self, queue_name: str) -> None:
"""add a new queue to the queue manager""" """add a new queue to the queue manager"""
if queue_name in self.queues: with self._lock:
queue = self.queues[queue_name] if queue_name in self.queues:
if not queue.scan_worker.is_alive(): queue = self.queues[queue_name]
logger.info(f"Restarting worker for queue {queue_name}") if not queue.scan_worker.is_alive():
queue.clear() logger.info(f"Restarting worker for queue {queue_name}")
self.queues[queue_name] = ScanQueue(self, queue_name=queue_name) queue.clear()
self.queues[queue_name].start_worker() self.queues[queue_name] = ScanQueue(self, queue_name=queue_name)
return self.queues[queue_name].start_worker()
self.queues[queue_name] = ScanQueue(self, queue_name=queue_name) return
self.queues[queue_name].start_worker() self.queues[queue_name] = ScanQueue(self, queue_name=queue_name)
self.queues[queue_name].start_worker()
def _start_scan_queue_register(self) -> None: def _start_scan_queue_register(self) -> None:
self.connector.register( self.connector.register(
@ -125,7 +128,6 @@ class QueueManager:
parent.scan_interception(scan_mod_msg) parent.scan_interception(scan_mod_msg)
parent.send_queue_status() parent.send_queue_status()
@threadlocked
def scan_interception(self, scan_mod_msg: messages.ScanQueueModificationMessage) -> None: def scan_interception(self, scan_mod_msg: messages.ScanQueueModificationMessage) -> None:
"""handle a scan interception by compiling the requested method name and forwarding the request. """handle a scan interception by compiling the requested method name and forwarding the request.
@ -133,13 +135,14 @@ class QueueManager:
scan_mod_msg (messages.ScanQueueModificationMessage): ScanQueueModificationMessage scan_mod_msg (messages.ScanQueueModificationMessage): ScanQueueModificationMessage
""" """
logger.info(f"Scan interception: {scan_mod_msg}") with self._lock:
action = scan_mod_msg.content["action"] logger.info(f"Scan interception: {scan_mod_msg}")
parameter = scan_mod_msg.content["parameter"] action = scan_mod_msg.content["action"]
queue = scan_mod_msg.content.get("queue", "primary") parameter = scan_mod_msg.content["parameter"]
getattr(self, f"set_{action}")( queue = scan_mod_msg.content.get("queue", "primary")
scan_id=scan_mod_msg.content["scan_id"], queue=queue, parameter=parameter getattr(self, f"set_{action}")(
) scan_id=scan_mod_msg.content["scan_id"], queue=queue, parameter=parameter
)
@requires_queue @requires_queue
def set_pause(self, scan_id=None, queue="primary", parameter: dict = None) -> None: def set_pause(self, scan_id=None, queue="primary", parameter: dict = None) -> None:
@ -246,19 +249,19 @@ class QueueManager:
continue continue
return history[-1] return history[-1]
@threadlocked
def send_queue_status(self) -> None: def send_queue_status(self) -> None:
"""send the current queue to redis""" """send the current queue to redis"""
queue_export = self.export_queue() with self._lock:
if not queue_export: queue_export = self.export_queue()
return if not queue_export:
logger.info("New scan queue:") return
for queue in self.describe_queue(): logger.info("New scan queue:")
logger.info(f"\n {queue}") for queue in self.describe_queue():
self.connector.set_and_publish( logger.info(f"\n {queue}")
MessageEndpoints.scan_queue_status(), self.connector.set_and_publish(
messages.ScanQueueStatusMessage(queue=queue_export), MessageEndpoints.scan_queue_status(),
) messages.ScanQueueStatusMessage(queue=queue_export),
)
def describe_queue(self) -> list: def describe_queue(self) -> list:
"""create a rich.table description of the current scan queue""" """create a rich.table description of the current scan queue"""
@ -411,46 +414,46 @@ class ScanQueue:
if updated: if updated:
return self.active_instruction_queue return self.active_instruction_queue
@threadlocked
def _next_instruction_queue(self) -> bool: def _next_instruction_queue(self) -> bool:
"""get the next instruction queue from the queue. If no update is available, it will return False.""" """get the next instruction queue from the queue. If no update is available, it will return False."""
try: with self._lock:
aiq = self.active_instruction_queue try:
if ( aiq = self.active_instruction_queue
aiq is not None if (
and len(self.queue) > 0 aiq is not None
and self.queue[0].status != InstructionQueueStatus.PENDING and len(self.queue) > 0
): and self.queue[0].status != InstructionQueueStatus.PENDING
logger.info(f"Removing queue item {self.queue[0].describe()} from queue") ):
self.queue.popleft() logger.info(f"Removing queue item {self.queue[0].describe()} from queue")
self.queue_manager.send_queue_status() self.queue.popleft()
self.queue_manager.send_queue_status()
if self.status != ScanQueueStatus.PAUSED: if self.status != ScanQueueStatus.PAUSED:
if len(self.queue) == 0: if len(self.queue) == 0:
if aiq is None: if aiq is None:
time.sleep(0.1) time.sleep(0.1)
return False
self.active_instruction_queue = None
time.sleep(0.01)
return False return False
self.active_instruction_queue = None
time.sleep(0.01) self.active_instruction_queue = self.queue[0]
return False self.history_queue.append(self.active_instruction_queue)
return True
while self.status == ScanQueueStatus.PAUSED and not self.signal_event.is_set():
if len(self.queue) == 0 and self.auto_reset_enabled:
# we don't need to pause if there is no scan enqueued
self.status = ScanQueueStatus.RUNNING
logger.info("resetting queue status to running")
time.sleep(0.1)
self.active_instruction_queue = self.queue[0] self.active_instruction_queue = self.queue[0]
self.history_queue.append(self.active_instruction_queue) self.history_queue.append(self.active_instruction_queue)
return True return True
except IndexError:
while self.status == ScanQueueStatus.PAUSED and not self.signal_event.is_set(): time.sleep(0.01)
if len(self.queue) == 0 and self.auto_reset_enabled: return False
# we don't need to pause if there is no scan enqueued
self.status = ScanQueueStatus.RUNNING
logger.info("resetting queue status to running")
time.sleep(0.1)
self.active_instruction_queue = self.queue[0]
self.history_queue.append(self.active_instruction_queue)
return True
except IndexError:
time.sleep(0.01)
return False
def insert(self, msg: messages.ScanQueueMessage, position=-1, **_kwargs): def insert(self, msg: messages.ScanQueueMessage, position=-1, **_kwargs):
"""insert a new message to the queue""" """insert a new message to the queue"""

View File

@ -1,9 +1,13 @@
from __future__ import annotations from __future__ import annotations
from bec_lib import Alarms, BECService, BECStatus from bec_lib import messages
from bec_lib import DeviceManagerBase as DeviceManager from bec_lib.alarm_handler import Alarms
from bec_lib import MessageEndpoints, ServiceConfig, bec_logger, messages from bec_lib.bec_service import BECService
from bec_lib.connector import ConnectorBase from bec_lib.connector import ConnectorBase
from bec_lib.devicemanager import DeviceManagerBase as DeviceManager
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from bec_lib.service_config import ServiceConfig
from .scan_assembler import ScanAssembler from .scan_assembler import ScanAssembler
from .scan_guard import ScanGuard from .scan_guard import ScanGuard
@ -31,7 +35,7 @@ class ScanServer(BECService):
# self._start_scan_server() # self._start_scan_server()
self._start_alarm_handler() self._start_alarm_handler()
self._reset_scan_number() self._reset_scan_number()
self.status = BECStatus.RUNNING self.status = messages.BECStatus.RUNNING
def _start_device_manager(self): def _start_device_manager(self):
self.wait_for_service("DeviceServer") self.wait_for_service("DeviceServer")

View File

@ -8,8 +8,11 @@ from typing import Generator, Literal
import numpy as np import numpy as np
from bec_lib import MessageEndpoints, Status, bec_logger, messages from bec_lib import messages
from bec_lib.connector import ConnectorBase from bec_lib.connector import ConnectorBase
from bec_lib.device import Status
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from .errors import DeviceMessageError, ScanAbortion from .errors import DeviceMessageError, ScanAbortion

View File

@ -3,7 +3,11 @@ import threading
import time import time
import traceback import traceback
from bec_lib import Alarms, DeviceBase, MessageEndpoints, bec_logger, messages from bec_lib import messages
from bec_lib.alarm_handler import Alarms
from bec_lib.device import DeviceBase
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from .device_validation import DeviceValidation from .device_validation import DeviceValidation
from .errors import DeviceMessageError, ScanAbortion from .errors import DeviceMessageError, ScanAbortion

View File

@ -7,7 +7,9 @@ from typing import Any, Literal
import numpy as np import numpy as np
from bec_lib import DeviceManagerBase, MessageEndpoints, bec_logger from bec_lib.devicemanager import DeviceManagerBase
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from .errors import LimitError, ScanAbortion from .errors import LimitError, ScanAbortion
from .path_optimization import PathOptimizerMixin from .path_optimization import PathOptimizerMixin

View File

@ -1,5 +1,5 @@
from bec_lib import ServiceConfig
from bec_lib.messages import BECStatus from bec_lib.messages import BECStatus
from bec_lib.service_config import ServiceConfig
from bec_lib.tests.utils import ConnectorMock from bec_lib.tests.utils import ConnectorMock
from bec_server.scan_server.scan_server import ScanServer from bec_server.scan_server.scan_server import ScanServer
from bec_server.scan_server.scan_worker import InstructionQueueStatus from bec_server.scan_server.scan_worker import InstructionQueueStatus

View File

@ -4,7 +4,9 @@
import argparse import argparse
import threading import threading
from bec_lib import RedisConnector, ServiceConfig, bec_logger from bec_lib.logger import bec_logger
from bec_lib.redis_connector import RedisConnector
from bec_lib.service_config import ServiceConfig
from bec_server import scihub from bec_server import scihub
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -7,10 +7,12 @@ import uuid
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
import bec_lib import bec_lib
from bec_lib import DeviceConfigError from bec_lib import messages
from bec_lib import DeviceManagerBase as DeviceManager from bec_lib.bec_errors import DeviceConfigError
from bec_lib import MessageEndpoints, bec_logger, messages
from bec_lib.connector import ConnectorBase from bec_lib.connector import ConnectorBase
from bec_lib.devicemanager import DeviceManagerBase as DeviceManager
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from bec_lib.scibec_validator import SciBecValidator from bec_lib.scibec_validator import SciBecValidator
if TYPE_CHECKING: if TYPE_CHECKING:

View File

@ -7,8 +7,10 @@ import py_scibec
from dotenv import dotenv_values from dotenv import dotenv_values
from py_scibec import SciBecCore from py_scibec import SciBecCore
from bec_lib import MessageEndpoints, bec_logger, messages from bec_lib import messages
from bec_lib.connector import ConnectorBase from bec_lib.connector import ConnectorBase
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from bec_server.scihub.repeated_timer import RepeatedTimer from bec_server.scihub.repeated_timer import RepeatedTimer
from .config_handler import ConfigHandler from .config_handler import ConfigHandler

View File

@ -8,7 +8,8 @@ import numpy as np
import py_scibec import py_scibec
import py_scibec_openapi_client.models as py_scibec_models import py_scibec_openapi_client.models as py_scibec_models
from bec_lib import MessageEndpoints, bec_logger from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from bec_lib.serialization import json_ext from bec_lib.serialization import json_ext
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -1,5 +1,7 @@
from bec_lib import BECService, BECStatus, ServiceConfig from bec_lib import messages
from bec_lib.bec_service import BECService
from bec_lib.connector import ConnectorBase from bec_lib.connector import ConnectorBase
from bec_lib.service_config import ServiceConfig
from bec_server.scihub.scibec import SciBecConnector from bec_server.scihub.scibec import SciBecConnector
from bec_server.scihub.scilog import SciLogConnector from bec_server.scihub.scilog import SciLogConnector
@ -12,7 +14,7 @@ class SciHub(BECService):
self.scilog_connector = None self.scilog_connector = None
self._start_scibec_connector() self._start_scibec_connector()
self._start_scilog_connector() self._start_scilog_connector()
self.status = BECStatus.RUNNING self.status = messages.BECStatus.RUNNING
def _start_scibec_connector(self): def _start_scibec_connector(self):
self.wait_for_service("DeviceServer") self.wait_for_service("DeviceServer")

View File

@ -6,7 +6,10 @@ from typing import TYPE_CHECKING
import requests import requests
from dotenv import dotenv_values from dotenv import dotenv_values
from bec_lib import MessageEndpoints, RedisConnector, bec_logger, messages from bec_lib import messages
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger
from bec_lib.redis_connector import RedisConnector
from bec_server.scihub.repeated_timer import RepeatedTimer from bec_server.scihub.repeated_timer import RepeatedTimer
logger = bec_logger.logger logger = bec_logger.logger

View File

@ -1,6 +1,6 @@
import pytest import pytest
from bec_lib import bec_logger from bec_lib.logger import bec_logger
# overwrite threads_check fixture from bec_lib, # overwrite threads_check fixture from bec_lib,
# to have it in autouse # to have it in autouse

View File

@ -1,6 +1,6 @@
from unittest import mock from unittest import mock
from bec_lib import ServiceConfig from bec_lib.service_config import ServiceConfig
from bec_server.data_processing.dap_server import DAPServer from bec_server.data_processing.dap_server import DAPServer
from bec_server.data_processing.dap_service import DAPServiceBase from bec_server.data_processing.dap_service import DAPServiceBase

View File

@ -1,6 +1,6 @@
import pytest import pytest
from bec_lib import bec_logger from bec_lib.logger import bec_logger
### THE NEXT FIXTURE HAS TO BE RE-ACTIVATED ONCE ### THE NEXT FIXTURE HAS TO BE RE-ACTIVATED ONCE
### OPHYD "STATUS CALLBACKS" THREADS ARE CLEANED ### OPHYD "STATUS CALLBACKS" THREADS ARE CLEANED

View File

@ -7,8 +7,8 @@ import numpy as np
import pytest import pytest
import yaml import yaml
import bec_lib from bec_lib import messages
from bec_lib import MessageEndpoints, messages from bec_lib.endpoints import MessageEndpoints
from bec_server.device_server.devices.devicemanager import DeviceManagerDS from bec_server.device_server.devices.devicemanager import DeviceManagerDS
# pylint: disable=missing-function-docstring # pylint: disable=missing-function-docstring

View File

@ -5,9 +5,12 @@ import pytest
from ophyd import Staged from ophyd import Staged
from ophyd.utils import errors as ophyd_errors from ophyd.utils import errors as ophyd_errors
from bec_lib import Alarms, MessageEndpoints, ServiceConfig, messages from bec_lib import messages
from bec_lib.alarm_handler import Alarms
from bec_lib.endpoints import MessageEndpoints
from bec_lib.messages import BECStatus from bec_lib.messages import BECStatus
from bec_lib.redis_connector import MessageObject from bec_lib.redis_connector import MessageObject
from bec_lib.service_config import ServiceConfig
from bec_lib.tests.utils import ConnectorMock from bec_lib.tests.utils import ConnectorMock
from bec_server.device_server import DeviceServer from bec_server.device_server import DeviceServer
from bec_server.device_server.device_server import InvalidDeviceError from bec_server.device_server.device_server import InvalidDeviceError

View File

@ -5,7 +5,9 @@ from unittest import mock
import pytest import pytest
from ophyd import Device, Kind, Signal, Staged, StatusBase from ophyd import Device, Kind, Signal, Staged, StatusBase
from bec_lib import Alarms, MessageEndpoints, messages from bec_lib import messages
from bec_lib.alarm_handler import Alarms
from bec_lib.endpoints import MessageEndpoints
from bec_server.device_server.rpc_mixin import RPCMixin from bec_server.device_server.rpc_mixin import RPCMixin

View File

@ -1,6 +1,6 @@
import pytest import pytest
from bec_lib import bec_logger from bec_lib.logger import bec_logger
# overwrite threads_check fixture from bec_lib, # overwrite threads_check fixture from bec_lib,
# to have it in autouse # to have it in autouse

View File

@ -6,9 +6,11 @@ import numpy as np
import pytest import pytest
import bec_lib import bec_lib
from bec_lib import MessageEndpoints, ServiceConfig, messages from bec_lib import messages
from bec_lib.endpoints import MessageEndpoints
from bec_lib.logger import bec_logger from bec_lib.logger import bec_logger
from bec_lib.redis_connector import MessageObject from bec_lib.redis_connector import MessageObject
from bec_lib.service_config import ServiceConfig
from bec_lib.tests.utils import ConnectorMock from bec_lib.tests.utils import ConnectorMock
from bec_server.file_writer import FileWriterManager from bec_server.file_writer import FileWriterManager
from bec_server.file_writer.file_writer import FileWriter from bec_server.file_writer.file_writer import FileWriter

View File

@ -5,8 +5,10 @@ import pytest
import yaml import yaml
import bec_lib import bec_lib
from bec_lib import DeviceManagerBase, ServiceConfig, bec_logger, messages from bec_lib.devicemanager import DeviceManagerBase
from bec_lib.logger import bec_logger
from bec_lib.messages import BECStatus from bec_lib.messages import BECStatus
from bec_lib.service_config import ServiceConfig
from bec_lib.tests.utils import ConnectorMock from bec_lib.tests.utils import ConnectorMock
from bec_server.scan_bundler import ScanBundler from bec_server.scan_bundler import ScanBundler

View File

@ -2,7 +2,8 @@ from unittest import mock
import pytest import pytest
from bec_lib import MessageEndpoints, messages from bec_lib import messages
from bec_lib.endpoints import MessageEndpoints
from bec_server.scan_bundler.bec_emitter import BECEmitter from bec_server.scan_bundler.bec_emitter import BECEmitter

View File

@ -3,7 +3,7 @@ from unittest import mock
import msgpack import msgpack
import pytest import pytest
from bec_lib import MessageEndpoints from bec_lib.endpoints import MessageEndpoints
from bec_server.scan_bundler.bluesky_emitter import BlueskyEmitter from bec_server.scan_bundler.bluesky_emitter import BlueskyEmitter

View File

@ -2,8 +2,9 @@ from unittest import mock
import pytest import pytest
from bec_lib import MessageEndpoints, messages from bec_lib import messages
from bec_lib.connector import MessageObject from bec_lib.connector import MessageObject
from bec_lib.endpoints import MessageEndpoints
# pylint: disable=missing-function-docstring # pylint: disable=missing-function-docstring
# pylint: disable=protected-access # pylint: disable=protected-access

View File

@ -1,6 +1,6 @@
import pytest import pytest
from bec_lib import bec_logger from bec_lib.logger import bec_logger
# overwrite threads_check fixture from bec_lib, # overwrite threads_check fixture from bec_lib,
# to have it in autouse # to have it in autouse

View File

@ -2,7 +2,8 @@ from unittest import mock
import pytest import pytest
from bec_lib import MessageEndpoints, messages from bec_lib import messages
from bec_lib.endpoints import MessageEndpoints
from bec_lib.redis_connector import MessageObject from bec_lib.redis_connector import MessageObject
from bec_server.scan_server.scan_guard import ScanGuard, ScanRejection, ScanStatus from bec_server.scan_server.scan_guard import ScanGuard, ScanRejection, ScanStatus
from bec_server.scan_server.tests.fixtures import scan_server_mock from bec_server.scan_server.tests.fixtures import scan_server_mock

View File

@ -3,7 +3,9 @@ from unittest import mock
import pytest import pytest
from bec_lib import Alarms, MessageEndpoints, messages from bec_lib import messages
from bec_lib.alarm_handler import Alarms
from bec_lib.endpoints import MessageEndpoints
from bec_lib.redis_connector import MessageObject from bec_lib.redis_connector import MessageObject
from bec_server.scan_server.scan_assembler import ScanAssembler from bec_server.scan_server.scan_assembler import ScanAssembler
from bec_server.scan_server.scan_queue import ( from bec_server.scan_server.scan_queue import (

View File

@ -3,7 +3,8 @@ from unittest import mock
import pytest import pytest
from bec_lib import MessageEndpoints, messages from bec_lib import messages
from bec_lib.endpoints import MessageEndpoints
from bec_lib.tests.utils import ConnectorMock from bec_lib.tests.utils import ConnectorMock
from bec_server.scan_server.errors import DeviceMessageError from bec_server.scan_server.errors import DeviceMessageError
from bec_server.scan_server.scan_stubs import ScanAbortion, ScanStubs from bec_server.scan_server.scan_stubs import ScanAbortion, ScanStubs

View File

@ -4,7 +4,8 @@ from unittest import mock
import pytest import pytest
from bec_lib import MessageEndpoints, messages from bec_lib import messages
from bec_lib.endpoints import MessageEndpoints
from bec_lib.tests.utils import ConnectorMock from bec_lib.tests.utils import ConnectorMock
from bec_server.scan_server.errors import DeviceMessageError, ScanAbortion from bec_server.scan_server.errors import DeviceMessageError, ScanAbortion
from bec_server.scan_server.scan_assembler import ScanAssembler from bec_server.scan_server.scan_assembler import ScanAssembler

View File

@ -4,7 +4,7 @@ from py_scibec_openapi_client.models.dataset_with_relations import DatasetWithRe
from py_scibec_openapi_client.models.experiment_with_relations import ExperimentWithRelations from py_scibec_openapi_client.models.experiment_with_relations import ExperimentWithRelations
from py_scibec_openapi_client.models.scan_with_relations import ScanWithRelations from py_scibec_openapi_client.models.scan_with_relations import ScanWithRelations
from bec_lib import bec_logger from bec_lib.logger import bec_logger
# overwrite threads_check fixture from bec_lib, # overwrite threads_check fixture from bec_lib,
# to have it in autouse # to have it in autouse

View File

@ -8,9 +8,9 @@ from fastjsonschema import JsonSchemaException
from test_scibec_connector import SciBecMock, SciHubMock from test_scibec_connector import SciBecMock, SciHubMock
import bec_lib import bec_lib
from bec_lib import DeviceBase, messages from bec_lib import messages
from bec_lib.bec_errors import DeviceConfigError from bec_lib.bec_errors import DeviceConfigError
from bec_lib.device import OnFailure, ReadoutPriority from bec_lib.device import DeviceBase, OnFailure, ReadoutPriority
from bec_server.scihub import SciHub from bec_server.scihub import SciHub
from bec_server.scihub.scibec import ConfigHandler, SciBecConnector from bec_server.scihub.scibec import ConfigHandler, SciBecConnector

View File

@ -2,8 +2,10 @@ from unittest import mock
import pytest import pytest
from bec_lib import MessageEndpoints, ServiceConfig, messages from bec_lib import messages
from bec_lib.endpoints import MessageEndpoints
from bec_lib.messages import BECStatus from bec_lib.messages import BECStatus
from bec_lib.service_config import ServiceConfig
from bec_lib.tests.utils import ConnectorMock from bec_lib.tests.utils import ConnectorMock
from bec_server.scihub import SciHub from bec_server.scihub import SciHub
from bec_server.scihub.scibec import SciBecConnector from bec_server.scihub.scibec import SciBecConnector

View File

@ -2,7 +2,8 @@ from unittest import mock
from test_scibec_connector import SciHubMock from test_scibec_connector import SciHubMock
from bec_lib import MessageEndpoints, messages from bec_lib import messages
from bec_lib.endpoints import MessageEndpoints
from bec_server.scihub.scilog import SciLogConnector from bec_server.scihub.scilog import SciLogConnector

View File

@ -4,7 +4,9 @@ Large data sources typically have their own data pipeline, optimized for their s
As of now, only external data sources that are based on HDF5 files are supported. BEC can be informed about new HDF5 files by emitting a [FileMessage](#bec_lib.messages.FileMessage) to the [public_file endpoint](#bec_lib.endpoints.MessageEndpoints.public_file), e.g. As of now, only external data sources that are based on HDF5 files are supported. BEC can be informed about new HDF5 files by emitting a [FileMessage](#bec_lib.messages.FileMessage) to the [public_file endpoint](#bec_lib.endpoints.MessageEndpoints.public_file), e.g.
```python ```python
from bec_lib import MessageEndpoints, messages, RedisConnector from bec_lib.endpoints import MessageEndpoints
from bec_lib import messages
from bec_lib.redis_connector import RedisConnector
scan_id = "scan id of the current scan" scan_id = "scan id of the current scan"

View File

@ -29,7 +29,7 @@ The log level can be set for each service and even each sink individually. While
Using the logger in BEC is straightforward. The logger is already included in the BEC environment and can be imported via Using the logger in BEC is straightforward. The logger is already included in the BEC environment and can be imported via
```python ```python
from bec_lib import bec_logger from bec_lib.logger import bec_logger
logger = bec_logger.logger logger = bec_logger.logger
``` ```

View File

@ -59,7 +59,7 @@ It could be useful to automatically enable the threads check and `loguru` cleani
following fixture to a `conftest.py` file with your new test files: following fixture to a `conftest.py` file with your new test files:
``` ```
from bec_lib import bec_logger from bec_lib.logger import bec_logger
def auto_check_threads(threads_check): def auto_check_threads(threads_check):
yield yield
bec_logger.logger.remove() bec_logger.logger.remove()

View File

@ -12,7 +12,10 @@ from pytest_redis import factories as pytest_redis_factories
from redis import Redis from redis import Redis
from bec_ipython_client import BECIPythonClient from bec_ipython_client import BECIPythonClient
from bec_lib import BECClient, ConfigHelper, RedisConnector, ServiceConfig from bec_lib.client import BECClient
from bec_lib.config_helper import ConfigHelper
from bec_lib.redis_connector import RedisConnector
from bec_lib.service_config import ServiceConfig
from bec_lib.tests.utils import wait_for_empty_queue from bec_lib.tests.utils import wait_for_empty_queue