diff --git a/.zed/debug.json b/.zed/debug.json
new file mode 100644
index 00000000..781f00f9
--- /dev/null
+++ b/.zed/debug.json
@@ -0,0 +1,9 @@
+[
+ {
+ "label": "Python Active File",
+ "adapter": "Debugpy",
+ "program": "$ZED_FILE",
+ "request": "launch",
+ "justMyCode": false,
+ },
+]
diff --git a/scripts/camera_stat_thread.py b/scripts/camera_stat_thread.py
index 0c97325c..8db972d2 100644
--- a/scripts/camera_stat_thread.py
+++ b/scripts/camera_stat_thread.py
@@ -368,7 +368,7 @@ class ImageStatsReceiver:
self.print_thread_obj = threading.Thread(target=self.print_stats_thread, daemon=True)
self.print_thread_obj.start()
- print(f"Image stats receiver started - printing every 1 second")
+ print("Image stats receiver started - printing every 1 second")
def stop(self):
"""Stop the receiver and all threads"""
diff --git a/scripts/demo_scan_ingest.py b/scripts/demo_scan_ingest.py
index 2ad114cd..742fac66 100644
--- a/scripts/demo_scan_ingest.py
+++ b/scripts/demo_scan_ingest.py
@@ -1,6 +1,4 @@
from aarecommon.config.beamline import mx_beamline
-from aarecommon.math.diffraction_geometry import DiffractionGeometry
-from aarecommon.models.beamline import MXBeamline
from aare.daq.aaredb import AareWrapper
from aare.daq.config import BeamlineConfig
diff --git a/scripts/gui_desginer.py b/scripts/gui_desginer.py
index 82cd2ca9..dacc544d 100644
--- a/scripts/gui_desginer.py
+++ b/scripts/gui_desginer.py
@@ -8,7 +8,6 @@ from PySide6.QtWidgets import (
QPushButton,
QScrollArea,
QStackedWidget,
- QSizePolicy,
)
from PySide6.QtCore import Qt, QPointF, QRectF
from PySide6.QtGui import QPainter, QColor, QPen, QLinearGradient, QFont, QFontMetrics
diff --git a/src/aare/daq/aaredb.py b/src/aare/daq/aaredb.py
index f12d05c7..3cd5f535 100644
--- a/src/aare/daq/aaredb.py
+++ b/src/aare/daq/aaredb.py
@@ -1,9 +1,7 @@
import datetime
-import functools
import io
import json
import os
-import time
from typing import List, Optional
import aareDB
diff --git a/src/aare/daq/auth.py b/src/aare/daq/auth.py
index 00eed9cc..e724e7a7 100644
--- a/src/aare/daq/auth.py
+++ b/src/aare/daq/auth.py
@@ -16,8 +16,8 @@ from aarecommon.errors.exception_handler import (
)
from aarecommon.models.auth import BatonRequest, BatonRequestStatus, BatonStatus, BatonTransferQueue
from aarecommon.models.models import SessionsStateEnum
-from fastapi import Depends, HTTPException, Request, status
-from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
+from fastapi import Depends, Request
+from fastapi.security import OAuth2PasswordBearer
from pydantic import BaseModel
from aare.daq.config import BeamlineConfig
@@ -148,7 +148,7 @@ def check_jwt_rw(cfg: BeamlineConfig, data: TokenData) -> None:
try:
cfg.try_extend_active_session(data.session, SESSION_EXPIRE_SECONDS)
- except Exception as e:
+ except Exception:
# In case something is wrong but you are holder (maybe redis expiry?)
cfg.try_set_active_session(data.session, SESSION_EXPIRE_SECONDS)
diff --git a/src/aare/daq/daq.py b/src/aare/daq/daq.py
index e80fc444..6ab758d6 100644
--- a/src/aare/daq/daq.py
+++ b/src/aare/daq/daq.py
@@ -7,8 +7,6 @@ from math import ceil
from pathlib import Path
from typing import Callable, List, Optional, Tuple
-import cv2
-import numpy as np
from aarecommon.config.beamline import cfg_get
from aarecommon.config.logger import setup_logger
from aarecommon.config.logger_events import (
@@ -68,7 +66,6 @@ from aarecommon.models.raster_grid import CompletedRasterGrid, RasterGridRequest
from aarecommon.models.rotation_scan import CompletedRotationScan, RotationScanRequest
from aarecommon.models.tell import TellPhaseEnum, TellStateModel
from aareDB import SampleEventType
-from jfjoch_client import ScanResult, ScanResultImagesInner
from aare.daq import workflows
from aare.daq.aaredb import AareWrapper
@@ -990,7 +987,7 @@ class AareDAQ:
self.__aare.send_sample_event(
sample_id=sample_id, event_type=event_type, comment=comment
)
- except Exception as db_error:
+ except Exception:
logger.exception(
"Failed to report operation error to database",
extra={
@@ -1291,7 +1288,7 @@ class AareDAQ:
self.__setup_datacollection(request=grid_request)
logger.debug(f"Is detector simulated? {self.__cfg.simulated_detector}")
if not self.__cfg.simulated_detector:
- logger.info(f"initialise detector for raster")
+ logger.info("initialise detector for raster")
status = self.status
self.__jfjoch.measure_raster(grid_request, status)
logger.info("detector initialised")
@@ -1607,7 +1604,7 @@ class AareDAQ:
def state(self, target: BeamlineStateEnum):
if target == BeamlineStateEnum.Moving:
logger.error(
- f"Cannot explicitly move to busy state",
+ "Cannot explicitly move to busy state",
extra={"target": target, "state": self.__cfg.state},
)
raise Exception("Cannot explicitly move to busy state")
@@ -1868,7 +1865,7 @@ class AareDAQ:
self.__set_state(BeamlineStateEnum.RobotSampleExchange)
except TransformationInvalidException as e:
logger.error(f"Failed to go to robot sample exchange: {e}")
- logger.warning(f"trying to day and park without unmounting first")
+ logger.warning("trying to day and park without unmounting first")
try:
self._execute_dry(park=park, unmount=unmount)
self.__cfg.state_busy = False
@@ -2102,7 +2099,7 @@ class AareDAQ:
self.__set_state(BeamlineStateEnum.SampleAlignment)
self.__cfg.state_busy = False
return result
- except Exception as e:
+ except Exception:
self.__set_state(BeamlineStateEnum.SampleAlignment)
self.__cfg.state_busy = False
raise
@@ -2270,7 +2267,7 @@ class AareDAQ:
self.__devs.smargon_pos = sc
self.__devs.smargon_wait()
self.__cfg.state_busy = False
- except Exception as e:
+ except Exception:
self.__cfg.state_busy = False
raise
pass
@@ -2280,7 +2277,7 @@ class AareDAQ:
try:
self.__cfg.mark_beam(x_pxl, y_pxl, self.__devs.zoom)
self.__cfg.state_busy = False
- except Exception as e:
+ except Exception:
self.__cfg.state_busy = False
raise
@@ -2411,7 +2408,7 @@ class AareDAQ:
self.__cfg.state_busy = False
- except Exception as e:
+ except Exception:
self.__cfg.zoom_mode = ZoomModeEnum.User
self.__cfg.state_busy = False
raise
@@ -2617,7 +2614,7 @@ class AareDAQ:
msg = f"Ended automation operation after {operation.value}"
if error:
- msg += f"with an error"
+ msg += "with an error"
logger.error(f"{msg}, time taken {time.perf_counter() - start} seconds.")
try:
if self.__cfg.state_busy:
@@ -2634,7 +2631,7 @@ class AareDAQ:
)
else:
- msg += f" successfully"
+ msg += " successfully"
logger.info(f"{msg}, time taken {time.perf_counter() - start} seconds.")
self.__cfg.state_busy = False
end = time.perf_counter()
@@ -3329,7 +3326,7 @@ class AareDAQ:
aerotech_connected = False
smargon_connected = False
zoom = self.__devs.zoom
- logger.warning(f"Safe geometry failed: falling back to default settings")
+ logger.warning("Safe geometry failed: falling back to default settings")
fallback = SampleGeometryModel(
beam_location_pxl=self.__cfg.beam_mark_coeff.apply(zoom),
pixel_in_mm=self.__cfg.pixel_to_mm(zoom),
@@ -3534,7 +3531,7 @@ class AareDAQ:
self.__set_state(BeamlineStateEnum.SampleAlignment)
self.__cfg.state_busy = False
return None
- except Exception as e:
+ except Exception:
self.__set_state(BeamlineStateEnum.SampleAlignment)
self.__cfg.state_busy = False
raise
diff --git a/src/aare/daq/devices.py b/src/aare/daq/devices.py
index c7f204a5..a70374b7 100644
--- a/src/aare/daq/devices.py
+++ b/src/aare/daq/devices.py
@@ -5,7 +5,6 @@ import time
# - property to read device value
# - setter with option to do sync/async move
# - property setter, which assumes that sync move is done (excl. zoom, which is async by default)
-import numpy as np
from aarecommon.config.beamline import cfg_get
from aarecommon.config.logger import setup_logger
from aarecommon.config.logger_events import log_timing
@@ -16,14 +15,13 @@ from epics import PV
from aare.devices import aerotech, smargon
from aare.devices.area_detector import AutoEnum, epicsAD
-from aare.devices.bec_worker import BECClientWorker, DetectorCoverEnum
+from aare.devices.bec_worker import BECClientWorker
from aare.devices.enum_pv import EnumPV
from aare.devices.experimental_hutch_shutter import ExperimentalHutchShutter
from aare.devices.my_motor import MyMotor
from aare.devices.pss_state import PssState
from aare.devices.set_get_pv import PredefinedPV, SetGetPV
from aare.devices.tell_client import make_tell_client
-from aare.devices.zmq_client import ZMQCameraClient
logger = setup_logger("aareDAQ")
@@ -76,7 +74,7 @@ class BeamlineDevices:
self.__ringcurrent = self.bec_worker.ring_current
self.__zoom = SetGetPV(
- name=f"zoom", setpv=f"{BEAMLINE}-ES-MS:ZOOM.VAL", getpv=f"{BEAMLINE}-ES-MS:ZOOM.RBV"
+ name="zoom", setpv=f"{BEAMLINE}-ES-MS:ZOOM.VAL", getpv=f"{BEAMLINE}-ES-MS:ZOOM.RBV"
)
self.__cryojet_pos = EnumPV(
diff --git a/src/aare/daq/operations/face_detection/service.py b/src/aare/daq/operations/face_detection/service.py
index c162a654..880d3abc 100644
--- a/src/aare/daq/operations/face_detection/service.py
+++ b/src/aare/daq/operations/face_detection/service.py
@@ -187,7 +187,7 @@ class FaceDetectionService:
self.ctx.deps.devs.aerotech_omega = flat_face_angle
samples_out = fd.get_samples_out(boxes)
- self.logger.info(f"Face detection sequence complete")
+ self.logger.info("Face detection sequence complete")
payload = {
"running": False,
diff --git a/src/aare/daq/operations/raster/service.py b/src/aare/daq/operations/raster/service.py
index ccda79a6..3d4e7c56 100644
--- a/src/aare/daq/operations/raster/service.py
+++ b/src/aare/daq/operations/raster/service.py
@@ -2,7 +2,6 @@ import copy
import time
from math import ceil, floor
-import cv2
from aarecommon.config.beamline import cfg_get
from aarecommon.config.logger_events import (
geom_log_context,
@@ -11,7 +10,7 @@ from aarecommon.config.logger_events import (
raster_request_log_context,
sample_log_context,
)
-from aarecommon.errors.exception_handler import AutoRasterSampleSkipped, RasterScanException
+from aarecommon.errors.exception_handler import RasterScanException
from aarecommon.math.coordinate import AerotechCoordinate, Coordinate, SmargonCoordinate
from aarecommon.math.find_xtal import (
compute_crystal_score_array,
@@ -37,7 +36,7 @@ from aare.daq.operations.common.ml_bounding_box import (
build_ml_raster_plan,
get_ml_bounding_box,
)
-from aare.daq.operations.raster.models import RasterBoundingBoxResult, RasterContext
+from aare.daq.operations.raster.models import RasterContext
from aare.devices.area_detector import AutoEnum
diff --git a/src/aare/daq/server.py b/src/aare/daq/server.py
index 62900c80..8735924b 100644
--- a/src/aare/daq/server.py
+++ b/src/aare/daq/server.py
@@ -9,7 +9,6 @@ from contextlib import asynccontextmanager
from typing import AsyncGenerator, Optional
import cv2
-import urllib3
import uvicorn
from aarecommon.config.beamline import mx_beamline
from aarecommon.config.logger import get_uvicorn_logging_config, setup_logger
@@ -46,7 +45,7 @@ from aareDB import SampleEventType
from fastapi import Depends, FastAPI, HTTPException, Request
from fastapi import status as api_status
from fastapi.concurrency import run_in_threadpool
-from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
+from fastapi.security import OAuth2PasswordBearer
from starlette.responses import StreamingResponse
from aare.daq import auth
@@ -89,35 +88,35 @@ async def lifespan(application: FastAPI):
each worker gets its own fresh Redis, BEC, EPICS, and TELL connections.
"""
global bl, cfg, daq
- logger.warning(f"something!!!")
+ logger.warning("something!!!")
await asyncio.sleep(random.uniform(0.5, 3.0))
logger.info(f"Worker {os.getpid()} starting initialisation...")
# ── Core objects (Redis, EPICS PVs, BEC, TELL, JFJoch, etc.) ──
bl = mx_beamline()
- logger.warning(f"something after bl!!!")
+ logger.warning("something after bl!!!")
cfg = BeamlineConfig(bl)
- logger.warning(f"something after cfg!!!")
+ logger.warning("something after cfg!!!")
daq = AareDAQ(cfg, bl)
- logger.warning(f"something after daq!!!")
+ logger.warning("something after daq!!!")
try:
cfg.reset_automation_progress()
except Exception as e:
logger.warning(f"Failed to reset automation progress Redis keys: {e}")
- logger.warning(f"something after reset automation!!!")
+ logger.warning("something after reset automation!!!")
try:
daq.refresh_detector_metadata_cache()
except Exception as e:
logger.warning(f"Initial hardware metadata refresh failed: {e}")
- logger.warning(f"something after refresh detector metadata!!!")
+ logger.warning("something after refresh detector metadata!!!")
# ── Initial TELL sync ──
try:
daq.sync_current_sample_from_tell(force=True)
except Exception as e:
logger.warning(f"Initial sample sync from TELL failed: {e}")
- logger.warning(f"something after sync current sample!!!")
+ logger.warning("something after sync current sample!!!")
# ── Wire callbacks ──
daq.set_face_detection_progress_callback(_push_face_detection_progress)
daq.set_automation_progress_callback(_push_automation_progress)
@@ -546,7 +545,7 @@ async def save_abr_meas_pos(token: str = Depends(oauth2_scheme)):
Returns:
"OK" on success.
"""
- logger.debug(f"Save abr")
+ logger.debug("Save abr")
auth.check_jwt_staff(cfg, auth.parse_token(token))
daq.save_abr_meas_pos()
return "OK"
@@ -841,7 +840,7 @@ async def goto_abr_meas_pos(token: str = Depends(oauth2_scheme)):
Returns:
"OK" on success.
"""
- logger.debug(f"Go to ABR meas pos")
+ logger.debug("Go to ABR meas pos")
auth.check_jwt_rw(cfg, auth.parse_token(token))
daq.goto_abr_meas_pos()
return "OK"
@@ -877,7 +876,7 @@ async def clear_beam_mark(token: str = Depends(oauth2_scheme)):
Returns:
"OK" on success.
"""
- logger.debug(f"Clear beam mark")
+ logger.debug("Clear beam mark")
auth.check_jwt_staff(cfg, auth.parse_token(token))
daq.clear_mark_beam()
return "OK"
@@ -968,7 +967,7 @@ async def samcam_autofocus(s: AutofocusSettings, token: str = Depends(oauth2_sch
Returns:
"OK" on success.
"""
- logger.debug(f"SamCam AutoFocus")
+ logger.debug("SamCam AutoFocus")
auth.check_jwt_rw(cfg, auth.parse_token(token))
daq.auto_focus(s)
return "OK"
@@ -1146,7 +1145,7 @@ async def unmount(token: str = Depends(oauth2_scheme)):
Returns:
"OK" on success.
"""
- logger.debug(f"Unmount")
+ logger.debug("Unmount")
auth.check_jwt_rw(cfg, auth.parse_token(token))
daq.sample = None
return "OK"
@@ -1725,7 +1724,7 @@ async def cancel(token: str = Depends(oauth2_scheme)):
Args:
token: OAuth2 access token.
"""
- logger.debug(f"Scan Cancel")
+ logger.debug("Scan Cancel")
auth.check_jwt_rw(cfg, auth.parse_token(token))
daq.cancel()
@@ -1742,7 +1741,7 @@ async def alc_center_loop(token: str = Depends(oauth2_scheme)) -> str:
Returns:
"OK" on success.
"""
- logger.debug(f"ALC")
+ logger.debug("ALC")
auth.check_jwt_rw(cfg, auth.parse_token(token))
daq.auto_loop_center()
return "OK"
@@ -1992,7 +1991,7 @@ async def end_session(token: str = Depends(oauth2_scheme)) -> str:
Returns:
"OK" on success.
"""
- logger.debug(f"Try to end Session")
+ logger.debug("Try to end Session")
# End active session will only delete session, if it is equal to token value
# so no need to check R/W permissions
token_data = auth.parse_token(token)
@@ -2012,7 +2011,7 @@ async def force_current_session(token: str = Depends(oauth2_scheme)) -> str:
Returns:
"OK" on success.
"""
- logger.debug(f"Try to grab session")
+ logger.debug("Try to grab session")
data = auth.parse_token(token)
# Counterintuitive, this operation requires only R/O permission
# as this is actually acquiring R/W permissions
@@ -2233,7 +2232,7 @@ async def get_settings(token: str = Depends(oauth2_scheme)) -> BeamlineSettingsM
Returns:
BeamlineSettingsModel.
"""
- logger.debug(f"Get settings")
+ logger.debug("Get settings")
auth.check_jwt_staff(cfg, auth.parse_token(token))
return cfg.settings
@@ -2263,7 +2262,7 @@ async def get_cryo_settings(token: str = Depends(oauth2_scheme)) -> CryojetSetti
Returns:
CryojetSettingsModel.
"""
- logger.debug(f"Get Cryo Settings")
+ logger.debug("Get Cryo Settings")
auth.check_jwt_staff(cfg, auth.parse_token(token))
return cfg.cryojet_settings
@@ -2293,7 +2292,7 @@ async def get_all_pgroups(token: str = Depends(oauth2_scheme)):
Returns:
List of pgroup strings.
"""
- logger.debug(f"Get all pgroups")
+ logger.debug("Get all pgroups")
auth.check_jwt_staff(cfg, auth.parse_token(token))
base_path = "/sls/mx/data/"
diff --git a/src/aare/daq/server_exception_handler.py b/src/aare/daq/server_exception_handler.py
index 89678b69..7f48dbdb 100644
--- a/src/aare/daq/server_exception_handler.py
+++ b/src/aare/daq/server_exception_handler.py
@@ -33,7 +33,6 @@ from aarecommon.config.logger import setup_logger
from aarecommon.errors.codes import AareErrorCode, code_for_exception_class
from aarecommon.errors.exception_handler import (
AareAuthError,
- AareException,
AareUserError,
AuthenticationException,
AutomationError,
diff --git a/src/aare/devices/bec_worker.py b/src/aare/devices/bec_worker.py
index fc2322ab..c6224d92 100644
--- a/src/aare/devices/bec_worker.py
+++ b/src/aare/devices/bec_worker.py
@@ -1,6 +1,6 @@
import time
from enum import Enum
-from typing import Any, List, Optional
+from typing import List, Optional
from aarecommon.config.beamline import cfg_get, mx_beamline
from aarecommon.config.logger import setup_logger
@@ -9,7 +9,7 @@ from aarecommon.errors.exception_handler import BECCommunicationError
from aarecommon.models.beamline import MXBeamline
from bec_ipython_client import BECIPythonClient
from bec_ipython_client.signals import OperationMode
-from bec_lib.procedures.helper import BackendProcedureHelper, FrontendProcedureHelper
+from bec_lib.procedures.helper import FrontendProcedureHelper
from bec_lib.service_config import ServiceConfig
logger = setup_logger("aareDAQ")
@@ -281,7 +281,7 @@ class BECClientWorker:
def current_state(self):
if self.simulated:
- logger.debug(f"Simulating check_beamline_state")
+ logger.debug("Simulating check_beamline_state")
return BeamlineState.MAINTENANCE
return self.planner.current_state()
@@ -428,7 +428,7 @@ class BECClientWorker:
try:
return self.dev.det_z.position
except Exception as e:
- self._raise_bec_error(e, operation=f"get_det_z", tags=["det_z"])
+ self._raise_bec_error(e, operation="get_det_z", tags=["det_z"])
def det_z(self, value: float, timeout: int | None = None):
"""timeout is None or integer in s"""
@@ -444,7 +444,7 @@ class BECClientWorker:
try:
return self.dev.det_y.position
except Exception as e:
- self._raise_bec_error(e, operation=f"get_det_z", tags=["det_z"])
+ self._raise_bec_error(e, operation="get_det_z", tags=["det_z"])
def det_y(self, value: float, timeout: int | None = None):
"""timeout is None or integer in s"""
@@ -465,7 +465,7 @@ class BECClientWorker:
except Exception as e:
self._raise_bec_error(
e,
- operation=f"backlight brightness, could not get backlight brightness",
+ operation="backlight brightness, could not get backlight brightness",
tags=["backlight"],
)
raise
@@ -499,7 +499,7 @@ class BECClientWorker:
except Exception as e:
self._raise_bec_error(
e,
- operation=f"backlight toggle, could not change backlight on/off ",
+ operation="backlight toggle, could not change backlight on/off ",
tags=["backlight"],
)
diff --git a/src/aare/devices/set_get_pv.py b/src/aare/devices/set_get_pv.py
index 355ff857..79fea92d 100644
--- a/src/aare/devices/set_get_pv.py
+++ b/src/aare/devices/set_get_pv.py
@@ -3,7 +3,7 @@ from __future__ import annotations
from dataclasses import dataclass
from typing import Any, Mapping, Optional, Union, Callable
-from epics import PV, poll
+from epics import PV
from aare.devices.mx_lib import pv_wait
RawValue = Union[str, float, int]
diff --git a/src/aare/devices/smargon.py b/src/aare/devices/smargon.py
index 3927066a..326ed482 100644
--- a/src/aare/devices/smargon.py
+++ b/src/aare/devices/smargon.py
@@ -99,7 +99,7 @@ class Smargon(object):
@property
def mode(self) -> SmargonMode:
- mode = self.gonget(f"mode")
+ mode = self.gonget("mode")
return SmargonMode(mode)
@mode.setter
diff --git a/src/aare/devices/tell_client.py b/src/aare/devices/tell_client.py
index 89c3fbc8..e279a7b1 100755
--- a/src/aare/devices/tell_client.py
+++ b/src/aare/devices/tell_client.py
@@ -372,7 +372,7 @@ class TellClient:
if wait:
try:
self.check_command_ok(timeout=timeout, msg="Unmount message: ")
- except MountingFailed as e:
+ except MountingFailed:
result = self.get_result(self._last_cmd_id)
logger.error(
f"Unmount failed with status '{result.get('status')}' and payload: {result}"
diff --git a/src/aare/devices/zmq_client.py b/src/aare/devices/zmq_client.py
index 9494fbaf..a627d2a4 100644
--- a/src/aare/devices/zmq_client.py
+++ b/src/aare/devices/zmq_client.py
@@ -5,7 +5,6 @@ with fallback to area_detector if ZMQ is unavailable.
"""
import json
-import time
from typing import Optional
import cv2
diff --git a/src/aare/gui/auth.py b/src/aare/gui/auth.py
index 5b7a9522..235d0cd5 100644
--- a/src/aare/gui/auth.py
+++ b/src/aare/gui/auth.py
@@ -6,7 +6,9 @@ from aarecommon.config.logger import setup_logger
from aarecommon.models.auth import get_user
from aarecommon.models.models import TokenData
-logger = setup_logger("aareGUI")
+from aare.gui.constants import LOGGER_NAME
+
+logger = setup_logger(LOGGER_NAME)
def auth(base_url: str | None, cert_path: str | None) -> str:
diff --git a/src/aare/gui/constants.py b/src/aare/gui/constants.py
new file mode 100644
index 00000000..9697a10f
--- /dev/null
+++ b/src/aare/gui/constants.py
@@ -0,0 +1,10 @@
+import getpass
+import socket
+
+
+def _try_clean_hostname(raw_name: str) -> str:
+ return raw_name.removesuffix(".psi.ch")
+
+
+CLEAN_HOSTNAME = _try_clean_hostname(socket.gethostname())
+LOGGER_NAME = f"AareGUI: {CLEAN_HOSTNAME} - {getpass.getuser()}"
diff --git a/src/aare/gui/gui.py b/src/aare/gui/gui.py
index 7274c6d2..bd103da2 100644
--- a/src/aare/gui/gui.py
+++ b/src/aare/gui/gui.py
@@ -7,13 +7,14 @@ from aarecommon.config.logger import setup_logger
from aarecommon.models.beamline import MXBeamline
from PySide6 import QtGui
from PySide6.QtCore import QCommandLineOption, QCommandLineParser
-from PySide6.QtWidgets import QApplication, QMessageBox, QProgressBar, QSplashScreen
+from PySide6.QtWidgets import QApplication, QMessageBox
from aare.gui.auth import auth
+from aare.gui.constants import LOGGER_NAME
from aare.gui.main_window import MainWindow
from aare.gui.widgets.splash_screen import LoadingSplashScreen
-logger = setup_logger("aareGUI")
+logger = setup_logger(LOGGER_NAME)
def main():
diff --git a/src/aare/gui/main_window.py b/src/aare/gui/main_window.py
index a16cf3bd..30603679 100644
--- a/src/aare/gui/main_window.py
+++ b/src/aare/gui/main_window.py
@@ -15,7 +15,7 @@ from aarecommon.models.models import (
TokenData,
)
from PySide6.QtCore import QEvent, QSettings, Qt, QTimer, Signal, Slot
-from PySide6.QtGui import QAction, QActionGroup, QGuiApplication, QKeySequence, QPixmap
+from PySide6.QtGui import QAction, QActionGroup, QGuiApplication, QKeySequence
from PySide6.QtWidgets import (
QDockWidget,
QHBoxLayout,
@@ -27,6 +27,8 @@ from PySide6.QtWidgets import (
QWidget,
)
+from aare.gui.constants import LOGGER_NAME
+
# Gui Models
from aare.gui.models.gui_state_manager import UIStateManager
from aare.gui.panels.automation_panel import AutomationProgressWidget
@@ -84,7 +86,7 @@ from aare.gui.widgets.no_wheel_scroll_area import NoWheelScrollArea
from aare.gui.widgets.status_bar import StatusBar
from aare.gui.widgets.video_image import VideoGraphicsView
-logger = setup_logger("aareGUI")
+logger = setup_logger(LOGGER_NAME)
class MainWindow(QMainWindow):
diff --git a/src/aare/gui/panels/automation_panel.py b/src/aare/gui/panels/automation_panel.py
index e1b95266..e5bcf9cf 100644
--- a/src/aare/gui/panels/automation_panel.py
+++ b/src/aare/gui/panels/automation_panel.py
@@ -9,7 +9,9 @@ from aarecommon.models.automation import AutomationProgress, StepStatus, Workflo
from PySide6.QtCore import QTimer, Slot
from PySide6.QtWidgets import QLabel, QVBoxLayout, QWidget
-logger = setup_logger("aareGUI")
+from aare.gui.constants import LOGGER_NAME
+
+logger = setup_logger(LOGGER_NAME)
class AutomationProgressWidget(QWidget):
diff --git a/src/aare/gui/panels/face_detection_panel.py b/src/aare/gui/panels/face_detection_panel.py
index 6f174662..46c949f7 100644
--- a/src/aare/gui/panels/face_detection_panel.py
+++ b/src/aare/gui/panels/face_detection_panel.py
@@ -5,10 +5,11 @@ from matplotlib.figure import Figure
from PySide6.QtCore import Signal
from PySide6.QtWidgets import QGridLayout, QLabel, QPushButton, QVBoxLayout, QWidget
+from aare.gui.constants import LOGGER_NAME
from aare.gui.widgets.number_line_edit import NumberLineEdit
from aare.gui.widgets.title_label import TitleLabel
-logger = setup_logger("aareGUI")
+logger = setup_logger(LOGGER_NAME)
class FaceDetectionPanel(QWidget):
diff --git a/src/aare/gui/panels/fluorescence_panel.py b/src/aare/gui/panels/fluorescence_panel.py
index fb83d5e5..e1304508 100644
--- a/src/aare/gui/panels/fluorescence_panel.py
+++ b/src/aare/gui/panels/fluorescence_panel.py
@@ -6,7 +6,9 @@ from PySide6.QtCore import QEvent, QPointF, Qt, Slot
from PySide6.QtGui import QColor, QPainter, QPen
from PySide6.QtWidgets import QGraphicsSimpleTextItem, QGridLayout, QLabel, QWidget
-logger = setup_logger("aareGUI")
+from aare.gui.constants import LOGGER_NAME
+
+logger = setup_logger(LOGGER_NAME)
class FluorescencePanel(QWidget):
diff --git a/src/aare/gui/panels/local_contact_panel.py b/src/aare/gui/panels/local_contact_panel.py
index ce1c676b..52716c54 100644
--- a/src/aare/gui/panels/local_contact_panel.py
+++ b/src/aare/gui/panels/local_contact_panel.py
@@ -25,14 +25,14 @@ from PySide6.QtWidgets import (
QWidget,
)
+from aare.gui.constants import LOGGER_NAME
from aare.gui.panels.beamline_recovery_panel import RecoveryPanel
from aare.gui.threads.daq_worker import DAQWorker
from aare.gui.widgets.local_contact_status_widget import LocalContactStatusWidget
-from aare.gui.widgets.number_line_edit import NumberLineEdit
from aare.gui.widgets.text_list_dialog import TextListDialog
from aare.gui.widgets.title_label import TitleLabel
-logger = setup_logger("aareGUI")
+logger = setup_logger(LOGGER_NAME)
class LocalContactPanel(QFrame):
diff --git a/src/aare/gui/panels/portrait_mode.py b/src/aare/gui/panels/portrait_mode.py
index 8f01449a..43adf8f7 100644
--- a/src/aare/gui/panels/portrait_mode.py
+++ b/src/aare/gui/panels/portrait_mode.py
@@ -1,11 +1,9 @@
from __future__ import annotations
-import math
-
from aarecommon.config.logger import setup_logger
from aarecommon.models.automation import AutomationProgress, StepStatus, WorkflowStateKind
from PySide6.QtCore import QPointF, QRectF, Qt, QTimer, Signal, Slot
-from PySide6.QtGui import QColor, QFont, QFontMetrics, QLinearGradient, QPainter, QPen
+from PySide6.QtGui import QColor, QFont, QFontMetrics, QPainter, QPen
from PySide6.QtWidgets import (
QFrame,
QHBoxLayout,
@@ -19,7 +17,9 @@ from PySide6.QtWidgets import (
QWidget,
)
-logger = setup_logger("aareGUI")
+from aare.gui.constants import LOGGER_NAME
+
+logger = setup_logger(LOGGER_NAME)
# ---------------------------------------------------------------------------
# Colour palette (kept identical to gui_designer.py)
@@ -290,19 +290,19 @@ class PortraitModePanel(QWidget):
# ── Portrait alert toast (hidden by default) ───────────────────────
self._alert_toast = QFrame()
self._alert_toast.setVisible(False)
- self._alert_toast.setStyleSheet(f"""
- QFrame {{
+ self._alert_toast.setStyleSheet("""
+ QFrame {
background: #1A0E0E;
border: 1px solid #8f1d2c;
border-radius: 10px;
- }}
+ }
""")
toast_layout = QHBoxLayout(self._alert_toast)
toast_layout.setContentsMargins(12, 8, 12, 8)
self._alert_toast_label = QLabel("")
self._alert_toast_label.setWordWrap(True)
self._alert_toast_label.setStyleSheet(
- f"color: #ffb3bc; font-size: 11px; font-weight: 600; background: transparent;"
+ "color: #ffb3bc; font-size: 11px; font-weight: 600; background: transparent;"
)
toast_layout.addWidget(self._alert_toast_label)
# Dismiss button
diff --git a/src/aare/gui/panels/prediction_metrics_panel.py b/src/aare/gui/panels/prediction_metrics_panel.py
index 7ac54152..906ab9b9 100644
--- a/src/aare/gui/panels/prediction_metrics_panel.py
+++ b/src/aare/gui/panels/prediction_metrics_panel.py
@@ -40,7 +40,9 @@ from PySide6.QtWidgets import (
QWidget,
)
-logger = setup_logger("aareGUI")
+from aare.gui.constants import LOGGER_NAME
+
+logger = setup_logger(LOGGER_NAME)
# ─────────────────────────────────────────────────────────────────────────────
diff --git a/src/aare/gui/panels/raster_data_collection.py b/src/aare/gui/panels/raster_data_collection.py
index 4027317a..3ff854fe 100644
--- a/src/aare/gui/panels/raster_data_collection.py
+++ b/src/aare/gui/panels/raster_data_collection.py
@@ -12,12 +12,13 @@ from PySide6.QtWidgets import (
QSpacerItem,
)
+from aare.gui.constants import LOGGER_NAME
from aare.gui.panels.scan_settings_panel import ScanSettingsPanel
from aare.gui.scan_logic.raster_grid_manager import RasterGridManager, RasterGridMetric
from aare.gui.widgets.number_line_edit import DbOverrideLineEdit
from aare.gui.widgets.raster_grid_table import RasterGridTable
-logger = setup_logger("aareGUI")
+logger = setup_logger(LOGGER_NAME)
# TODO prevent raster if no grid, or at least rpevent smargon from doing danngerous move to 0,0,0!!!
diff --git a/src/aare/gui/panels/reference_tools_panel.py b/src/aare/gui/panels/reference_tools_panel.py
index ba85b143..c4d9c467 100644
--- a/src/aare/gui/panels/reference_tools_panel.py
+++ b/src/aare/gui/panels/reference_tools_panel.py
@@ -16,9 +16,10 @@ from PySide6.QtWidgets import (
QTableView,
)
+from aare.gui.constants import LOGGER_NAME
from aare.gui.widgets.title_label import TitleLabel
-logger = setup_logger("aareGUI")
+logger = setup_logger(LOGGER_NAME)
def get_entry(sample: SampleShortInfo, column: int):
diff --git a/src/aare/gui/panels/rotation_data_collection.py b/src/aare/gui/panels/rotation_data_collection.py
index bda9cc79..81dae846 100644
--- a/src/aare/gui/panels/rotation_data_collection.py
+++ b/src/aare/gui/panels/rotation_data_collection.py
@@ -7,10 +7,11 @@ from aarecommon.models.rotation_scan import RotationScanRequest
from PySide6.QtCore import Qt, Signal, Slot
from PySide6.QtWidgets import QComboBox, QLabel, QMessageBox, QPushButton
+from aare.gui.constants import LOGGER_NAME
from aare.gui.panels.scan_settings_panel import ScanSettingsPanel
-from aare.gui.widgets.number_line_edit import CheckedLineEdit, DbOverrideLineEdit, NumberLineEdit
+from aare.gui.widgets.number_line_edit import DbOverrideLineEdit, NumberLineEdit
-logger = setup_logger("aareGUI")
+logger = setup_logger(LOGGER_NAME)
def add_screening_to_path(path):
diff --git a/src/aare/gui/panels/sample_queue_panel.py b/src/aare/gui/panels/sample_queue_panel.py
index 846cd5f7..5b0f609c 100644
--- a/src/aare/gui/panels/sample_queue_panel.py
+++ b/src/aare/gui/panels/sample_queue_panel.py
@@ -20,11 +20,12 @@ from PySide6.QtWidgets import (
QVBoxLayout,
)
+from aare.gui.constants import LOGGER_NAME
from aare.gui.models.sample_queue_model import SampleQueueSpreadsheet
from aare.gui.widgets.message_box import LOW_CURRENT_THRESHOLD, conditions_auto_check
from aare.gui.widgets.title_label import TitleLabel
-logger = setup_logger("aareGUI")
+logger = setup_logger(LOGGER_NAME)
class SampleQueuePanel(QFrame):
diff --git a/src/aare/gui/panels/scan_settings_panel.py b/src/aare/gui/panels/scan_settings_panel.py
index ce71e80a..f506456e 100644
--- a/src/aare/gui/panels/scan_settings_panel.py
+++ b/src/aare/gui/panels/scan_settings_panel.py
@@ -13,10 +13,11 @@ from PySide6.QtWidgets import (
QWidget,
)
+from aare.gui.constants import LOGGER_NAME
from aare.gui.widgets.message_box import precondition_check
from aare.gui.widgets.number_line_edit import DbOverrideLineEdit
-logger = setup_logger("aareGUI")
+logger = setup_logger(LOGGER_NAME)
class ScanSettingsPanel(QWidget):
diff --git a/src/aare/gui/panels/smart_rotation_panel.py b/src/aare/gui/panels/smart_rotation_panel.py
index e0c2442b..021a0555 100644
--- a/src/aare/gui/panels/smart_rotation_panel.py
+++ b/src/aare/gui/panels/smart_rotation_panel.py
@@ -6,10 +6,11 @@ from aarecommon.models.rotation_scan import RotationScanRequest
from PySide6.QtCore import Qt, Signal, Slot
from PySide6.QtWidgets import QGridLayout, QLabel, QPushButton, QSizePolicy, QSpacerItem, QWidget
+from aare.gui.constants import LOGGER_NAME
from aare.gui.panels.rotation_data_collection import add_data_to_path
from aare.gui.widgets.number_line_edit import NumberLineEdit
-logger = setup_logger("aareGUI")
+logger = setup_logger(LOGGER_NAME)
class SimpleRotationSettingsPanel(QWidget):
@@ -107,13 +108,13 @@ class SimpleRotationSettingsPanel(QWidget):
self._layout.addWidget(QLabel("%", parent=self), 7, 4)
self._layout.addWidget(QLabel("Detector distance", parent=self), 8, 0)
- self.dtz_label = QLabel(f"--", parent=self)
+ self.dtz_label = QLabel("--", parent=self)
self.dtz_label.setAlignment(Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter)
self._layout.addWidget(self.dtz_label, 8, 1, 1, 3)
self._layout.addWidget(QLabel("mm", parent=self), 8, 4)
self._layout.addWidget(QLabel("Target Dose", parent=self), 9, 0)
- self.target_dose_label = QLabel(f"--", parent=self)
+ self.target_dose_label = QLabel("--", parent=self)
self.target_dose_label.setAlignment(
Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter
)
@@ -121,7 +122,7 @@ class SimpleRotationSettingsPanel(QWidget):
self._layout.addWidget(QLabel("MGy", parent=self), 9, 4)
self._layout.addWidget(QLabel("Calculated Dose Rate", parent=self), 10, 0)
- self.calculated_dose_rate_label = QLabel(f"--", parent=self)
+ self.calculated_dose_rate_label = QLabel("--", parent=self)
self.calculated_dose_rate_label.setAlignment(
Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter
)
@@ -129,7 +130,7 @@ class SimpleRotationSettingsPanel(QWidget):
self._layout.addWidget(QLabel("MGy s-1", parent=self), 10, 4)
self._layout.addWidget(QLabel("Wilson B Factor", parent=self), 11, 0)
- self.wilson_b_label = QLabel(f"--", parent=self)
+ self.wilson_b_label = QLabel("--", parent=self)
self.wilson_b_label.setAlignment(
Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter
)
@@ -137,25 +138,25 @@ class SimpleRotationSettingsPanel(QWidget):
self._layout.addWidget(QLabel("Å2", parent=self), 11, 4)
self._layout.addWidget(QLabel("Crystal Size x", parent=self), 12, 0)
- self.xtal_x_label = QLabel(f"--", parent=self)
+ self.xtal_x_label = QLabel("--", parent=self)
self.xtal_x_label.setAlignment(Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter)
self._layout.addWidget(self.xtal_x_label, 12, 1, 1, 3)
self._layout.addWidget(QLabel("um", parent=self), 12, 4)
self._layout.addWidget(QLabel("Crystal Size y", parent=self), 13, 0)
- self.xtal_y_label = QLabel(f"--", parent=self)
+ self.xtal_y_label = QLabel("--", parent=self)
self.xtal_y_label.setAlignment(Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter)
self._layout.addWidget(self.xtal_y_label, 13, 1, 1, 3)
self._layout.addWidget(QLabel("um", parent=self), 13, 4)
self._layout.addWidget(QLabel("Crystal Size z", parent=self), 14, 0)
- self.xtal_z_label = QLabel(f"--", parent=self)
+ self.xtal_z_label = QLabel("--", parent=self)
self.xtal_z_label.setAlignment(Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter)
self._layout.addWidget(self.xtal_z_label, 14, 1, 1, 3)
self._layout.addWidget(QLabel("um", parent=self), 14, 4)
self._layout.addWidget(QLabel("Calculated Dose (xtal size)", parent=self), 15, 0)
- self.xtal_size_dose_label = QLabel(f"--", parent=self)
+ self.xtal_size_dose_label = QLabel("--", parent=self)
self.xtal_size_dose_label.setAlignment(
Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter
)
@@ -171,13 +172,13 @@ class SimpleRotationSettingsPanel(QWidget):
self._layout.addWidget(QLabel("Å", parent=self), 16, 4)
self._layout.addWidget(QLabel("Flux", parent=self), 17, 0)
- self.flux_label = QLabel(f"--", parent=self)
+ self.flux_label = QLabel("--", parent=self)
self.flux_label.setAlignment(Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter)
self._layout.addWidget(self.flux_label, 17, 1, 1, 3)
self._layout.addWidget(QLabel("x 109 ph s-1", parent=self), 17, 4)
self._layout.addWidget(QLabel("Beam Size", parent=self), 18, 0)
- self.beam_size_label = QLabel(f"--", parent=self)
+ self.beam_size_label = QLabel("--", parent=self)
self.beam_size_label.setAlignment(
Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter
)
@@ -185,7 +186,7 @@ class SimpleRotationSettingsPanel(QWidget):
self._layout.addWidget(QLabel("um2", parent=self), 18, 4)
self._layout.addWidget(QLabel("Calculated Dose", parent=self), 19, 0)
- self.calculated_dose_label = QLabel(f"--", parent=self)
+ self.calculated_dose_label = QLabel("--", parent=self)
self.calculated_dose_label.setAlignment(
Qt.AlignmentFlag.AlignRight | Qt.AlignmentFlag.AlignVCenter
)
@@ -355,7 +356,7 @@ class SimpleRotationSettingsPanel(QWidget):
self.image_time_label.setText(f"{self.image_time_s:.4f}")
if self.dtz <= 0.0:
- self.dtz_label.setText(f"""-""")
+ self.dtz_label.setText("""-""")
elif self.dtz < self.__d.bl.dtz_min:
self.dtz_label.setText(f"""{self.dtz:.2f}""")
self.dtz = self.__d.bl.dtz_min
diff --git a/src/aare/gui/panels/target_stability_panel.py b/src/aare/gui/panels/target_stability_panel.py
index 76bb80d0..3a67a6c1 100644
--- a/src/aare/gui/panels/target_stability_panel.py
+++ b/src/aare/gui/panels/target_stability_panel.py
@@ -22,7 +22,9 @@ from PySide6.QtWidgets import (
QWidget,
)
-logger = setup_logger("aareGUI")
+from aare.gui.constants import LOGGER_NAME
+
+logger = setup_logger(LOGGER_NAME)
class InteractiveChartView(QChartView):
diff --git a/src/aare/gui/panels/tell_sample_panel.py b/src/aare/gui/panels/tell_sample_panel.py
index 16f0a17c..a0bc1075 100644
--- a/src/aare/gui/panels/tell_sample_panel.py
+++ b/src/aare/gui/panels/tell_sample_panel.py
@@ -17,10 +17,11 @@ from PySide6.QtWidgets import (
QTableView,
)
+from aare.gui.constants import LOGGER_NAME
from aare.gui.models.user_sample_model import UserSampleSpreadsheet
from aare.gui.widgets.title_label import TitleLabel
-logger = setup_logger("aareGUI")
+logger = setup_logger(LOGGER_NAME)
class TellSamplePanel(QFrame):
diff --git a/src/aare/gui/scan_logic/raster_grid_manager.py b/src/aare/gui/scan_logic/raster_grid_manager.py
index 417d7544..a088d93c 100644
--- a/src/aare/gui/scan_logic/raster_grid_manager.py
+++ b/src/aare/gui/scan_logic/raster_grid_manager.py
@@ -17,7 +17,9 @@ from aarecommon.models.raster_grid import (
from PySide6.QtCore import QLineF, QObject, QPointF, QRect, QRectF, Qt, Signal, Slot
from PySide6.QtGui import QBrush, QColor, QImage, QPainter, QPen
-logger = setup_logger("aareGUI")
+from aare.gui.constants import LOGGER_NAME
+
+logger = setup_logger(LOGGER_NAME)
class RasterGridMetric(Enum):
diff --git a/src/aare/gui/threads/axis_video_thread.py b/src/aare/gui/threads/axis_video_thread.py
index 9dd84a6f..26f868ea 100644
--- a/src/aare/gui/threads/axis_video_thread.py
+++ b/src/aare/gui/threads/axis_video_thread.py
@@ -1,9 +1,8 @@
import cv2
import requests
import numpy as np
-from PySide6.QtCore import QThread, Signal, QRect, QPoint
-from PySide6.QtGui import QImage, QPainter, QPen, QColor, Qt, QFontMetrics, QFont
-from io import BytesIO
+from PySide6.QtCore import QThread, Signal
+from PySide6.QtGui import QImage
class VideoThread(QThread):
diff --git a/src/aare/gui/threads/daq_worker.py b/src/aare/gui/threads/daq_worker.py
index a84a5e5d..29831a8c 100644
--- a/src/aare/gui/threads/daq_worker.py
+++ b/src/aare/gui/threads/daq_worker.py
@@ -50,7 +50,9 @@ from jfjoch_client import ScanResult, ScanResultImagesInner
from PySide6.QtCore import QByteArray, QObject, QTimer, QUrl, Signal, Slot
from PySide6.QtNetwork import QNetworkAccessManager, QNetworkReply, QNetworkRequest, QSslError
-logger = setup_logger("aareGUI")
+from aare.gui.constants import LOGGER_NAME
+
+logger = setup_logger(LOGGER_NAME)
SPREADHSEET_FREQUENCY = 25 # Every 5 seconds
@@ -796,11 +798,11 @@ class DAQWorker(QObject):
@Slot()
def close_shutter(self):
- self.generic_post(f"beamline/shutter?val=false")
+ self.generic_post("beamline/shutter?val=false")
@Slot()
def open_shutter(self):
- self.generic_post(f"beamline/shutter?val=true")
+ self.generic_post("beamline/shutter?val=true")
@Slot()
def center_loop(self):
@@ -1152,7 +1154,7 @@ class DAQWorker(QObject):
@Slot()
def load_spreadsheet(self):
if self.__base_url is None:
- logger.info(f"GET /sample/spreadsheet")
+ logger.info("GET /sample/spreadsheet")
return
request = QNetworkRequest(QUrl(f"{self.__base_url}/sample/spreadsheet"))
@@ -1163,7 +1165,7 @@ class DAQWorker(QObject):
@Slot()
def load_reference_tools(self):
if self.__base_url is None:
- logger.info(f"GET /sample/reference_tools")
+ logger.info("GET /sample/reference_tools")
return
request = QNetworkRequest(QUrl(f"{self.__base_url}/sample/reference_tools"))
request.setRawHeader(b"Authorization", f"Bearer {self.__token}".encode("utf-8"))
@@ -1395,7 +1397,7 @@ class DAQWorker(QObject):
@Slot()
def beam_mark_clear(self):
- self.generic_post(f"beam_mark/clear")
+ self.generic_post("beam_mark/clear")
@Slot(float, float)
def beam_center(self, x: float, y: float):
@@ -1729,7 +1731,7 @@ class DAQWorker(QObject):
@Slot(SampleShortInfo)
def sample_manual(self, s: SampleShortInfo):
- self.generic_post(f"sample/manual", s.model_dump_json())
+ self.generic_post("sample/manual", s.model_dump_json())
@Slot()
def cancel(self):
@@ -1751,7 +1753,7 @@ class DAQWorker(QObject):
Request an ML-based bounding box for the current sample.
"""
if self.__base_url is None:
- logger.info(f"POST /alc/ml_bounding_box")
+ logger.info("POST /alc/ml_bounding_box")
return
request = QNetworkRequest(QUrl(f"{self.__base_url}/alc/ml_bounding_box"))
@@ -2200,7 +2202,7 @@ class DAQWorker(QObject):
if int(status) == 404 and url.endswith("/meta/error-codes"):
reply.deleteLater()
- logger.error(f"Error codes not found on server.")
+ logger.error("Error codes not found on server.")
return
payload = self.handle_response(reply)
diff --git a/src/aare/gui/threads/prediction_subscriber.py b/src/aare/gui/threads/prediction_subscriber.py
index 1fa18698..2d03e4d5 100644
--- a/src/aare/gui/threads/prediction_subscriber.py
+++ b/src/aare/gui/threads/prediction_subscriber.py
@@ -10,7 +10,9 @@ from aarecommon.models.models import DAQStatusModel
from PySide6.QtCore import QThread, Signal, Slot
from PySide6.QtGui import QImage, QPixmap
-logger = setup_logger("aareGUI")
+from aare.gui.constants import LOGGER_NAME
+
+logger = setup_logger(LOGGER_NAME)
class PredictionSubscriber(QThread):
diff --git a/src/aare/gui/tutorials/tutorial_manager.py b/src/aare/gui/tutorials/tutorial_manager.py
index 1cc9ef6b..099019d2 100644
--- a/src/aare/gui/tutorials/tutorial_manager.py
+++ b/src/aare/gui/tutorials/tutorial_manager.py
@@ -7,7 +7,6 @@ from typing import Any
from PySide6.QtCore import (
QEasingCurve,
QObject,
- QPoint,
QPropertyAnimation,
Property,
QRect,
diff --git a/src/aare/gui/tutorials/tutorial_runtime.py b/src/aare/gui/tutorials/tutorial_runtime.py
index 9ab3763e..5ddfd145 100644
--- a/src/aare/gui/tutorials/tutorial_runtime.py
+++ b/src/aare/gui/tutorials/tutorial_runtime.py
@@ -14,7 +14,6 @@ from aare.gui.tutorials.tutorial_models import (
TutorialContext,
TutorialEvent,
TutorialScenario,
- TutorialStepDefinition,
TutorialTarget,
TutorialTextRef,
)
diff --git a/src/aare/gui/widgets/alert_banner.py b/src/aare/gui/widgets/alert_banner.py
index adc44902..aaf0ae4d 100644
--- a/src/aare/gui/widgets/alert_banner.py
+++ b/src/aare/gui/widgets/alert_banner.py
@@ -3,7 +3,9 @@ from PySide6.QtCore import Qt, QTimer, Slot
from PySide6.QtGui import QColor
from PySide6.QtWidgets import QFrame, QGraphicsDropShadowEffect, QHBoxLayout, QLabel, QSizePolicy
-logger = setup_logger("aareGUI")
+from aare.gui.constants import LOGGER_NAME
+
+logger = setup_logger(LOGGER_NAME)
class AlertBanner(QFrame):
diff --git a/src/aare/gui/widgets/camera_image.py b/src/aare/gui/widgets/camera_image.py
index e769119f..07d43042 100644
--- a/src/aare/gui/widgets/camera_image.py
+++ b/src/aare/gui/widgets/camera_image.py
@@ -37,11 +37,12 @@ from PySide6.QtWidgets import (
QToolTip,
)
+from aare.gui.constants import LOGGER_NAME
from aare.gui.models.bookmark import SmargonBookmarkList
from aare.gui.scan_logic.raster_grid_manager import RasterGridManager
from aare.gui.widgets.busy_overlay import BusyOverlayStyle, build_busy_overlay_style
-logger = setup_logger("aareGUI")
+logger = setup_logger(LOGGER_NAME)
class SampleCameraImageState(Enum):
diff --git a/src/aare/gui/widgets/login.py b/src/aare/gui/widgets/login.py
index be807a31..4c947b25 100644
--- a/src/aare/gui/widgets/login.py
+++ b/src/aare/gui/widgets/login.py
@@ -1,5 +1,4 @@
import json
-import os
import jwt
from aarecommon.models.auth import get_user
diff --git a/src/aare/gui/widgets/message_box.py b/src/aare/gui/widgets/message_box.py
index 9cf7cd6c..ad3779b9 100644
--- a/src/aare/gui/widgets/message_box.py
+++ b/src/aare/gui/widgets/message_box.py
@@ -4,7 +4,9 @@ from aarecommon.config.logger import setup_logger
from PySide6.QtCore import QEventLoop, QTimer
from PySide6.QtWidgets import QCheckBox, QMessageBox
-logger = setup_logger("aareGUI")
+from aare.gui.constants import LOGGER_NAME
+
+logger = setup_logger(LOGGER_NAME)
LOW_CURRENT_THRESHOLD = 100.0
SNOOZE_SECONDS = 3600.0 # "Don't ask again for 1 hour"
@@ -150,7 +152,7 @@ def experiment_hutch_shutter_check(parent, shutter_state) -> bool:
return True
else:
reply = reply_box(
- parent, title="Experiment shutter open", msg=f"Experiment shutter is Closed."
+ parent, title="Experiment shutter open", msg="Experiment shutter is Closed."
)
return reply == QMessageBox.StandardButton.Yes
diff --git a/src/aare/gui/widgets/status_bar.py b/src/aare/gui/widgets/status_bar.py
index 5752da94..ad8f4af3 100644
--- a/src/aare/gui/widgets/status_bar.py
+++ b/src/aare/gui/widgets/status_bar.py
@@ -1,18 +1,19 @@
import math
from aarecommon.config.logger import setup_logger
-from aarecommon.models.auth import BatonRequestStatus, BatonStatus
+from aarecommon.models.auth import BatonStatus
from aarecommon.models.models import BeamlineStateEnum, DAQStatusModel, SessionsStateEnum, TokenData
from PySide6.QtCore import QPoint, QTimer, Signal, Slot
from PySide6.QtGui import QFont
from PySide6.QtWidgets import QDialog, QLabel, QMenu, QMessageBox, QSizePolicy, QStatusBar
+from aare.gui.constants import LOGGER_NAME
from aare.gui.widgets.baton_request_dialog import BatonRequestDialog
from aare.gui.widgets.clickable_label import ClickableLabel
from aare.gui.widgets.pgroup_dialog import PGroupDialog
from aare.gui.widgets.value_label import ValueLabel
-logger = setup_logger("aareGUI")
+logger = setup_logger(LOGGER_NAME)
class StatusBar(QStatusBar):
@@ -135,12 +136,12 @@ class StatusBar(QStatusBar):
try:
self.__status = status
if status.bl.flux_ph_s is None:
- self.flux.set_value(f"0")
+ self.flux.set_value("0")
else:
self.flux.set_value(f"{(status.bl.flux_ph_s / 1e9):.0f}")
if status.bl.transmission is None:
- self.transmission.set_value(f"(moving)")
+ self.transmission.set_value("(moving)")
else:
self.transmission.set_value(f"{status.bl.transmission:.5f}")
@@ -163,11 +164,11 @@ class StatusBar(QStatusBar):
if status.bl.shutter_open:
self.shutter_label.setText(
- f"""Fast Shutter: Open ☢️ """
+ """Fast Shutter: Open ☢️ """
)
else:
self.shutter_label.setText(
- f"""Fast Shutter: Closed 🚪 """
+ """Fast Shutter: Closed 🚪 """
)
if status.bl.exp_shutter_open:
@@ -182,7 +183,7 @@ class StatusBar(QStatusBar):
if status.session.current_pgroup is not None:
self.pgroup_label.setText(f"""p-group: {status.session.current_pgroup} """)
else:
- self.pgroup_label.setText(f"Inactive p-group ")
+ self.pgroup_label.setText("Inactive p-group ")
self.state_label.setText(f"""State: {status.state.display_name()} """)
diff --git a/tests/unit/common/test_aare_exception.py b/tests/unit/common/test_aare_exception.py
index c218a00d..9a1e9034 100644
--- a/tests/unit/common/test_aare_exception.py
+++ b/tests/unit/common/test_aare_exception.py
@@ -9,7 +9,6 @@ These cover:
from __future__ import annotations
-import pytest
from aarecommon.errors.exception_handler import (
AareAuthError,
AareDBCommunicationError,
diff --git a/tests/unit/common/test_aerotech_models.py b/tests/unit/common/test_aerotech_models.py
index 094e927b..e682e6ba 100644
--- a/tests/unit/common/test_aerotech_models.py
+++ b/tests/unit/common/test_aerotech_models.py
@@ -1,4 +1,3 @@
-import pytest
from aarecommon.models.aerotech import (
AerotechAxisStatus,
AerotechRotationScanRequest,
diff --git a/tests/unit/common/test_autofocus_tools.py b/tests/unit/common/test_autofocus_tools.py
index 222834f5..97d64f6f 100644
--- a/tests/unit/common/test_autofocus_tools.py
+++ b/tests/unit/common/test_autofocus_tools.py
@@ -1,5 +1,4 @@
import numpy as np
-import pytest
from aarecommon.math.autofocus import focus_measure_blob_size, focus_measure_edges
diff --git a/tests/unit/common/test_models_extra.py b/tests/unit/common/test_models_extra.py
index e7f863e7..5905a6e4 100644
--- a/tests/unit/common/test_models_extra.py
+++ b/tests/unit/common/test_models_extra.py
@@ -1,4 +1,3 @@
-import pytest
from aarecommon.models.models import (
BeamlineStateEnum,
BeamMarkCoeffModel,
diff --git a/tests/unit/daq/operations/test_ml_raster_plan.py b/tests/unit/daq/operations/test_ml_raster_plan.py
index c985aaa0..a3102978 100644
--- a/tests/unit/daq/operations/test_ml_raster_plan.py
+++ b/tests/unit/daq/operations/test_ml_raster_plan.py
@@ -2,7 +2,6 @@ import logging
import types
import numpy as np
-import pytest
from aarecommon.math.coordinate import Coordinate, SmargonCoordinate
from aarecommon.math.sample_geometry import SampleGeometryModel
from aarecommon.models.models import MLBoxType, MLOutputModel
diff --git a/tests/unit/daq/test_auth.py b/tests/unit/daq/test_auth.py
index c673f479..4fbe4eb4 100644
--- a/tests/unit/daq/test_auth.py
+++ b/tests/unit/daq/test_auth.py
@@ -1,11 +1,8 @@
import time
-import uuid
-from datetime import UTC, datetime
from unittest.mock import MagicMock, patch
import jwt
import pytest
-from fastapi import HTTPException
# Mock environment variable before importing auth
with patch.dict("os.environ", {"JWT_AAREDAQ_KEY": "test_secret"}):
@@ -15,7 +12,6 @@ with patch.dict("os.environ", {"JWT_AAREDAQ_KEY": "test_secret"}):
cancel_baton_request,
check_jwt_ro,
check_jwt_rw,
- check_jwt_staff,
check_jwt_staff_only,
create_access_token,
force_current_sesion,
@@ -32,7 +28,6 @@ from aarecommon.models.auth import (
BatonRequest,
BatonRequestStatus,
BatonStatus,
- BatonTransferQueue,
)
from aarecommon.models.models import SessionsStateEnum
diff --git a/tests/unit/daq/test_beamcenterfit.py b/tests/unit/daq/test_beamcenterfit.py
index 5fdb0277..b42cedda 100644
--- a/tests/unit/daq/test_beamcenterfit.py
+++ b/tests/unit/daq/test_beamcenterfit.py
@@ -1,6 +1,5 @@
import pytest
import numpy as np
-import cv2
from aare.daq.beamcenterfit import beamcenter_fit, Gaussian2Dfit
diff --git a/tests/unit/daq/test_mount.py b/tests/unit/daq/test_mount.py
index 144ffb14..caf6a2c6 100644
--- a/tests/unit/daq/test_mount.py
+++ b/tests/unit/daq/test_mount.py
@@ -11,7 +11,6 @@ from aareDB import SampleEventType
from aare.daq.config import ABR_POS_MOUNT, BeamlineStateEnum
from aare.daq.daq import AareDAQ
from aare.daq.operations.mounting.models import MountingContext, MountingResult
-from aare.daq.operations.mounting.service import MountingService
from aare.daq.operations.screenshot.service import ScreenshotService
diff --git a/tests/unit/daq/test_raster_logic.py b/tests/unit/daq/test_raster_logic.py
index 6b34dbc6..98b9fc2d 100644
--- a/tests/unit/daq/test_raster_logic.py
+++ b/tests/unit/daq/test_raster_logic.py
@@ -1,5 +1,4 @@
import types
-from types import SimpleNamespace
from unittest.mock import MagicMock
import pytest
diff --git a/tests/unit/daq/test_server.py b/tests/unit/daq/test_server.py
index eb965d3a..f9ba4794 100644
--- a/tests/unit/daq/test_server.py
+++ b/tests/unit/daq/test_server.py
@@ -1,6 +1,6 @@
import os
from types import SimpleNamespace
-from unittest.mock import MagicMock, patch
+from unittest.mock import patch
import numpy as np
diff --git a/tests/unit/daq/test_server_exception_handler.py b/tests/unit/daq/test_server_exception_handler.py
index 94c66ac2..d57e4b85 100644
--- a/tests/unit/daq/test_server_exception_handler.py
+++ b/tests/unit/daq/test_server_exception_handler.py
@@ -13,11 +13,10 @@ import json
from unittest.mock import MagicMock
import pytest
-from aarecommon.errors.codes import AareErrorCode, AuthErrorCode
+from aarecommon.errors.codes import AuthErrorCode
from aarecommon.errors.exception_handler import (
AareAuthError,
AareDBCommunicationError,
- AareException,
AareUserError,
AuthenticationException,
AutomationError,
@@ -262,13 +261,10 @@ def test_only_four_root_handlers_plus_fallbacks(app):
"""
from aarecommon.errors.exception_handler import (
AareDBCommunicationError,
- CriticalTellException,
LoopCenteringFailed,
MountingFailed,
SmargonCommunicationError,
TellCommunicationError,
- UnmountingFailed,
- WarningTellException,
)
registered = set(app.exception_handlers.keys())
diff --git a/tests/unit/daq/test_spreadsheetupdater.py b/tests/unit/daq/test_spreadsheetupdater.py
index 0e995ebf..c14213bd 100644
--- a/tests/unit/daq/test_spreadsheetupdater.py
+++ b/tests/unit/daq/test_spreadsheetupdater.py
@@ -3,7 +3,6 @@ from types import SimpleNamespace
from unittest.mock import MagicMock, patch
import pytest
-from aarecommon.models.models import SampleShortInfoList
from aare.daq.spreadsheetupdater import get_ws_headers, on_message, set_spreadsheet_in_redis
diff --git a/tests/unit/daq/test_tellupdater.py b/tests/unit/daq/test_tellupdater.py
index 22e7d264..7147558a 100644
--- a/tests/unit/daq/test_tellupdater.py
+++ b/tests/unit/daq/test_tellupdater.py
@@ -1,4 +1,3 @@
-import pytest
import json
from unittest.mock import MagicMock, patch
from aare.daq import tellupdater
diff --git a/tests/unit/daq/test_workflows.py b/tests/unit/daq/test_workflows.py
index a62d3514..4612b4e3 100644
--- a/tests/unit/daq/test_workflows.py
+++ b/tests/unit/daq/test_workflows.py
@@ -1,8 +1,6 @@
-from types import SimpleNamespace
-from unittest.mock import MagicMock, patch
+from unittest.mock import MagicMock
import pytest
-from aarecommon.models.models import StagePositionEnum
from aare.daq.config import ABR_OMEGA_MOUNT, ABR_POS_MOUNT
from aare.daq.workflows import (
diff --git a/tests/unit/devices/test_aerotech.py b/tests/unit/devices/test_aerotech.py
index 53cad3c6..a8fdc3b4 100644
--- a/tests/unit/devices/test_aerotech.py
+++ b/tests/unit/devices/test_aerotech.py
@@ -5,7 +5,7 @@ from aarecommon.errors.exception_handler import AerotechCommunicationError
from aarecommon.math.coordinate import AerotechCoordinate, Coordinate
from aarecommon.models.beamline import MXBeamline
-from aare.devices.aerotech import AEROTECH_HOME, AerotechController
+from aare.devices.aerotech import AerotechController
@pytest.fixture
diff --git a/tests/unit/devices/test_enum_pv.py b/tests/unit/devices/test_enum_pv.py
index b8c613be..6ae6cd4d 100644
--- a/tests/unit/devices/test_enum_pv.py
+++ b/tests/unit/devices/test_enum_pv.py
@@ -1,8 +1,7 @@
import pytest
-from unittest.mock import MagicMock, patch
+from unittest.mock import patch
from enum import Enum
from aare.devices.enum_pv import EnumPV
-from aare.devices.set_get_pv import MoveResult
class MockPV:
diff --git a/tests/unit/devices/test_experimental_hutch_shutter.py b/tests/unit/devices/test_experimental_hutch_shutter.py
index b03ecf61..5e4335d3 100644
--- a/tests/unit/devices/test_experimental_hutch_shutter.py
+++ b/tests/unit/devices/test_experimental_hutch_shutter.py
@@ -1,6 +1,5 @@
from unittest.mock import MagicMock, patch
-import pytest
from aarecommon.models.beamline import MXBeamline
from aare.devices.experimental_hutch_shutter import ExperimentalHutchShutter
diff --git a/tests/unit/devices/test_fluorimeter.py b/tests/unit/devices/test_fluorimeter.py
index 5aae0587..b21b0ef1 100644
--- a/tests/unit/devices/test_fluorimeter.py
+++ b/tests/unit/devices/test_fluorimeter.py
@@ -8,7 +8,7 @@ from aare.devices.fluorimeter import Fluorimeter
@patch("aare.devices.fluorimeter.PV")
def test_fluorimeter_init(mock_pv):
- fluo = Fluorimeter(MXBeamline.X06DA)
+ _ = Fluorimeter(MXBeamline.X06DA)
# Lots of PVs in __init__
assert mock_pv.call_count >= 20
diff --git a/tests/unit/devices/test_my_motor.py b/tests/unit/devices/test_my_motor.py
index 575b3f4a..eefd4cad 100644
--- a/tests/unit/devices/test_my_motor.py
+++ b/tests/unit/devices/test_my_motor.py
@@ -1,5 +1,7 @@
+from unittest.mock import MagicMock, PropertyMock, patch
+
import pytest
-from unittest.mock import MagicMock, patch, PropertyMock
+
from aare.devices.my_motor import MyMotor
@@ -27,7 +29,7 @@ def mock_motor_base():
def test_my_motor_init(mock_motor_base):
mock_init, _, _, _ = mock_motor_base
- m = MyMotor("X10SA-DI-MTR-01")
+ _ = MyMotor("X10SA-DI-MTR-01")
mock_init.assert_called_with("X10SA-DI-MTR-01", timeout=5.0)
diff --git a/tests/unit/devices/test_workflow_tools.py b/tests/unit/devices/test_workflow_tools.py
index 486f7e9a..d25419a0 100644
--- a/tests/unit/devices/test_workflow_tools.py
+++ b/tests/unit/devices/test_workflow_tools.py
@@ -1,7 +1,5 @@
import pytest
-from unittest.mock import MagicMock
from aare.devices.workflow_tools import wait_position
-import time
class MockMotor:
diff --git a/tests/unit/gui/test_auth_mock.py b/tests/unit/gui/test_auth_mock.py
index a339df5b..8685fa43 100644
--- a/tests/unit/gui/test_auth_mock.py
+++ b/tests/unit/gui/test_auth_mock.py
@@ -1,5 +1,4 @@
import json
-import subprocess
import pytest
diff --git a/tests/unit/gui/test_automation_progress_parser.py b/tests/unit/gui/test_automation_progress_parser.py
index f948d585..09d06607 100644
--- a/tests/unit/gui/test_automation_progress_parser.py
+++ b/tests/unit/gui/test_automation_progress_parser.py
@@ -1,6 +1,10 @@
import sys
import types
+from aarecommon.models.automation import StepStatus, WorkflowStateKind
+
+from aare.gui.threads.daq_worker import DAQWorker
+
jfjoch_client_module = types.ModuleType("jfjoch_client")
jfjoch_client_module.ScanResult = object
jfjoch_client_module.ScanResultImagesInner = object
@@ -13,10 +17,6 @@ sys.modules.setdefault("jfjoch_client", jfjoch_client_module)
sys.modules.setdefault("jfjoch_client.models", jfjoch_client_models_module)
sys.modules.setdefault("jfjoch_client.models.scan_result", jfjoch_client_scan_result_module)
-from aarecommon.models.automation import StepStatus, WorkflowStateKind
-
-from aare.gui.threads.daq_worker import DAQWorker
-
def test_parse_automation_progress_from_sse_payload():
progress_payload = {
diff --git a/tests/unit/gui/test_camera_thread.py b/tests/unit/gui/test_camera_thread.py
index 1e3c3950..f9246367 100644
--- a/tests/unit/gui/test_camera_thread.py
+++ b/tests/unit/gui/test_camera_thread.py
@@ -5,8 +5,6 @@ import cv2
import numpy as np
import pytest
import zmq
-from aarecommon.models.models import DAQStatusModel
-from PySide6.QtGui import QPixmap
from aare.gui.threads.camera_thread import SampleCameraThread
diff --git a/tests/unit/gui/test_error_classifier.py b/tests/unit/gui/test_error_classifier.py
index 7507e2e4..25206679 100644
--- a/tests/unit/gui/test_error_classifier.py
+++ b/tests/unit/gui/test_error_classifier.py
@@ -1,6 +1,8 @@
import sys
import types
+from aare.gui.threads.daq_worker import DAQWorker
+
jfjoch_client_module = types.ModuleType("jfjoch_client")
jfjoch_client_module.ScanResult = object
jfjoch_client_module.ScanResultImagesInner = object
@@ -13,8 +15,6 @@ sys.modules.setdefault("jfjoch_client", jfjoch_client_module)
sys.modules.setdefault("jfjoch_client.models", jfjoch_client_models_module)
sys.modules.setdefault("jfjoch_client.models.scan_result", jfjoch_client_scan_result_module)
-from aare.gui.threads.daq_worker import DAQWorker
-
def test_is_critical_uses_body_flag_when_present():
assert DAQWorker._is_critical({"critical": False}) is False
diff --git a/tests/unit/gui/test_main_window.py b/tests/unit/gui/test_main_window.py
index 231ddb2d..701a1d5c 100644
--- a/tests/unit/gui/test_main_window.py
+++ b/tests/unit/gui/test_main_window.py
@@ -1,7 +1,6 @@
from unittest.mock import MagicMock, patch
import pytest
-from PySide6.QtCore import Qt
from aare.gui.main_window import MainWindow
@@ -84,7 +83,7 @@ def test_main_window_mount_view(qtbot, mock_ui_state):
def test_mark_user_interaction_reports_backend(qtbot, mock_ui_state):
with (
patch("requests.get"),
- patch("aare.gui.main_window.DAQWorker") as mock_daq_cls,
+ patch("aare.gui.main_window.DAQWorker"),
patch("aare.gui.main_window.PredictionSubscriber"),
patch("aare.gui.main_window.VideoThread"),
patch("aare.gui.main_window.JFJochDBusClient"),
diff --git a/tests/unit/gui/test_message_box.py b/tests/unit/gui/test_message_box.py
index 61a3f5eb..bbfacf58 100644
--- a/tests/unit/gui/test_message_box.py
+++ b/tests/unit/gui/test_message_box.py
@@ -1,4 +1,3 @@
-import pytest
from unittest.mock import MagicMock, patch
from PySide6.QtWidgets import QMessageBox
from aare.gui.widgets.message_box import (
diff --git a/tests/unit/gui/test_panels.py b/tests/unit/gui/test_panels.py
index a481a93b..424fcc78 100644
--- a/tests/unit/gui/test_panels.py
+++ b/tests/unit/gui/test_panels.py
@@ -2,7 +2,6 @@ import pytest
from aarecommon.math.coordinate import Coordinate, SmargonCoordinate
from aarecommon.math.diffraction_geometry import DiffractionGeometry
from aarecommon.math.sample_geometry import SampleGeometryModel
-from aarecommon.models.beamline import MXBeamline
from aarecommon.models.models import (
BeamlineStateEnum,
BeamlineStatus,
@@ -10,7 +9,6 @@ from aarecommon.models.models import (
SampleCameraSettings,
SessionStatus,
)
-from PySide6.QtCore import Qt
from aare.gui.panels.status_panel import StatusPanel
diff --git a/tests/unit/gui/test_prediction_subscriber.py b/tests/unit/gui/test_prediction_subscriber.py
index 2e135470..e69de29b 100644
--- a/tests/unit/gui/test_prediction_subscriber.py
+++ b/tests/unit/gui/test_prediction_subscriber.py
@@ -1,2 +0,0 @@
-import sys
-import pytest
diff --git a/tests/unit/gui/test_sse_client.py b/tests/unit/gui/test_sse_client.py
index 7fcca073..b1e20f1d 100644
--- a/tests/unit/gui/test_sse_client.py
+++ b/tests/unit/gui/test_sse_client.py
@@ -1,8 +1,8 @@
import pytest
-from PySide6.QtCore import QByteArray, QUrl
-from PySide6.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply
+from PySide6.QtCore import QByteArray
+from PySide6.QtNetwork import QNetworkReply
from aare.gui.threads.sse_client import SSEClient
-from unittest.mock import MagicMock, patch
+from unittest.mock import MagicMock
@pytest.fixture
diff --git a/tests/unit/gui/test_threads_logic.py b/tests/unit/gui/test_threads_logic.py
index 18a3f4be..a59f21fb 100644
--- a/tests/unit/gui/test_threads_logic.py
+++ b/tests/unit/gui/test_threads_logic.py
@@ -1,6 +1,5 @@
from unittest.mock import MagicMock
-import pytest
from aarecommon.models.models import DAQStatusModel, DewarAddress, SampleShortInfo
from aare.gui.scan_logic.sample_mount_logic import SampleMountLogic
diff --git a/tests/unit/gui/test_tutorials.py b/tests/unit/gui/test_tutorials.py
index 3608aa4c..2955477e 100644
--- a/tests/unit/gui/test_tutorials.py
+++ b/tests/unit/gui/test_tutorials.py
@@ -1,5 +1,4 @@
import pytest
-from unittest.mock import MagicMock
from PySide6.QtWidgets import QWidget
from aare.gui.tutorials.tutorial_manager import TutorialManager
from aare.gui.tutorials.tutorial_models import (
diff --git a/tests/unit/gui/test_widgets.py b/tests/unit/gui/test_widgets.py
index 92746fa4..3b3083a9 100644
--- a/tests/unit/gui/test_widgets.py
+++ b/tests/unit/gui/test_widgets.py
@@ -1,5 +1,3 @@
-import pytest
-from PySide6.QtCore import Qt
from aare.gui.widgets.alert_banner import AlertBanner
from aare.gui.widgets.status_label import StatusLabel