Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix tests #147

Merged
merged 10 commits into from
Nov 16, 2023
Prev Previous commit
Next Next commit
Black and isort.
canismarko committed Nov 16, 2023
commit 6e2350b6f6f53aaf642e38ea6565b22deff170cc
8 changes: 6 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -36,10 +36,14 @@ jobs:
env
micromamba info
micromamba list
- name: Lint with flake8
- name: Lint
run: |
# stop the build if there are Python syntax errors or undefined names
# Check for syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# Make sure black code formatting is applied
black --check --preview src/
# Make sure import orders are correct
isort --check src/
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Test with pytest in Xvfb
2 changes: 1 addition & 1 deletion environment.yml
Original file line number Diff line number Diff line change
@@ -34,7 +34,7 @@ dependencies:
- numba>=0.56 # Ensures 0.53 (broken) isn't installed

# --- testing and quality assurance
- black
- black >=22.1
- flake8
- pre-commit
- pylint
3 changes: 3 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -37,3 +37,6 @@ firefly_cameras = "firefly.launcher:cameras"
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[tool.isort]
profile = "black"
33 changes: 18 additions & 15 deletions src/conftest.py
Original file line number Diff line number Diff line change
@@ -1,35 +1,38 @@
from unittest import mock
import os
import subprocess
import psutil
from pathlib import Path
import os
from unittest import mock

from bluesky import RunEngine
import psutil

# from pydm.data_plugins import plugin_modules, add_plugin
import pydm
import pytest
from ophyd import DynamicDeviceComponent as DDC, Kind
from bluesky import RunEngine
from ophyd import DynamicDeviceComponent as DDC
from ophyd import Kind
from ophyd.sim import (
FakeEpicsSignal,
fake_device_cache,
instantiate_fake_device,
make_fake_device,
fake_device_cache,
FakeEpicsSignal,
)
# from pydm.data_plugins import plugin_modules, add_plugin
import pydm
from pytestqt.qt_compat import qt_api

import haven
from firefly.application import FireflyApplication
from firefly.main_window import FireflyMainWindow
from haven._iconfig import beamline_connected as _beamline_connected
from haven.instrument.aerotech import AerotechStage
from haven.instrument.aps import ApsMachine
from haven.instrument.shutter import Shutter
from haven.instrument.camera import AravisDetector
from haven.instrument.delay import EpicsSignalWithIO
from haven.instrument.dxp import DxpDetector, add_mcas as add_dxp_mcas
from haven.instrument.dxp import DxpDetector
from haven.instrument.dxp import add_mcas as add_dxp_mcas
from haven.instrument.ion_chamber import IonChamber
from haven.instrument.xspress import Xspress3Detector, add_mcas as add_xspress_mcas
from firefly.application import FireflyApplication
from firefly.main_window import FireflyMainWindow

from haven.instrument.shutter import Shutter
from haven.instrument.xspress import Xspress3Detector
from haven.instrument.xspress import add_mcas as add_xspress_mcas

top_dir = Path(__file__).parent.resolve()
haven_dir = top_dir / "haven"
1 change: 0 additions & 1 deletion src/firefly/__init__.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,2 @@
from . import display

from .application import FireflyApplication
33 changes: 19 additions & 14 deletions src/firefly/application.py
Original file line number Diff line number Diff line change
@@ -1,27 +1,28 @@
import logging
import subprocess
from collections import OrderedDict
from pathlib import Path
from dataclasses import dataclass, field
from typing import Optional, Union, Mapping, Sequence
from functools import partial
import subprocess
from pathlib import Path
from typing import Mapping, Optional, Sequence, Union

from qtpy import QtWidgets, QtCore
from qtpy.QtWidgets import QAction
from qtpy.QtCore import Slot, QThread, Signal, QObject
from PyQt5.QtWidgets import QStyleFactory
import qtawesome as qta
import pydm
import pyqtgraph as pg
import qtawesome as qta
from bluesky_queueserver_api import BPlan
from bluesky_queueserver_api.zmq import REManagerAPI
from pydm.application import PyDMApplication
from pydm.display import load_file
from pydm.utilities.stylesheet import apply_stylesheet
from bluesky_queueserver_api import BPlan
from bluesky_queueserver_api.zmq import REManagerAPI
import pyqtgraph as pg
from PyQt5.QtWidgets import QStyleFactory
from qtpy import QtCore, QtWidgets
from qtpy.QtCore import QObject, QThread, Signal, Slot
from qtpy.QtWidgets import QAction

from haven.exceptions import ComponentNotFound
from haven import HavenMotor, registry, load_config
import haven
from haven import HavenMotor, load_config, registry
from haven.exceptions import ComponentNotFound

from .main_window import FireflyMainWindow, PlanMainWindow
from .queue_client import QueueClient, QueueClientThread, queueserver_api

@@ -339,7 +340,11 @@ def prepare_queue_client(self, api=None):
thread = QueueClientThread()
self._queue_thread = thread
# Create the client object
client = QueueClient(api=api, autoplay_action=self.queue_autoplay_action, open_environment_action=self.queue_open_environment_action)
client = QueueClient(
api=api,
autoplay_action=self.queue_autoplay_action,
open_environment_action=self.queue_open_environment_action,
)
client.moveToThread(thread)
thread.timer.timeout.connect(client.update)
self._queue_client = client
9 changes: 4 additions & 5 deletions src/firefly/area_detector_viewer.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
import logging
import subprocess
import sys

import pyqtgraph
import pydm
import numpy as np
import matplotlib.pyplot as plt
import numpy as np
import pydm
import pyqtgraph

import haven
from firefly import display

import sys

np.set_printoptions(threshold=sys.maxsize)


4 changes: 2 additions & 2 deletions src/firefly/bss.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import logging
from functools import lru_cache

import qtawesome as qta
from apsbss import apsbss
from qtpy.QtGui import QStandardItemModel, QStandardItem
from qtpy.QtCore import Signal, Slot
import qtawesome as qta
from qtpy.QtGui import QStandardItem, QStandardItemModel

import haven
from firefly import display
2 changes: 1 addition & 1 deletion src/firefly/button.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import qtawesome as qta
from qtpy import QtWidgets
from qtpy.QtGui import QIcon
import qtawesome as qta


class RevealButton(QtWidgets.QPushButton):
14 changes: 6 additions & 8 deletions src/firefly/camera.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
from enum import IntEnum
from pathlib import Path
import datetime as dt
import subprocess
import logging
import os

import haven
import subprocess
from enum import IntEnum
from pathlib import Path

# from pydm.data_plugins.epics_plugin import EPICSPlugin
from pydm.widgets.channel import PyDMChannel
from qtpy.QtGui import QColor
from qtpy.QtCore import Slot
from qtpy.QtGui import QColor

from firefly import display, FireflyApplication

import haven
from firefly import FireflyApplication, display

log = logging.getLogger(__name__)

3 changes: 1 addition & 2 deletions src/firefly/cameras.py
Original file line number Diff line number Diff line change
@@ -2,11 +2,10 @@
import logging

from pydm.widgets import PyDMEmbeddedDisplay
import haven

import haven
from firefly import display


log = logging.getLogger(__name__)


2 changes: 1 addition & 1 deletion src/firefly/detector_list.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from PyQt5.QtGui import QStandardItemModel, QStandardItem
from PyQt5.QtGui import QStandardItem, QStandardItemModel
from qtpy.QtWidgets import QListView

from haven import registry
6 changes: 3 additions & 3 deletions src/firefly/display.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
from typing import Sequence
import subprocess
from pathlib import Path
from typing import Sequence

from qtpy.QtCore import Signal, Slot
from qtpy import QtWidgets
from pydm import Display
from qtpy import QtWidgets
from qtpy.QtCore import Signal, Slot


class FireflyDisplay(Display):
7 changes: 3 additions & 4 deletions src/firefly/energy.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import logging

from qtpy import QtWidgets, QtCore
import qtawesome as qta
from bluesky_queueserver_api import BPlan
from haven import registry, load_config, exceptions
from qtpy import QtCore, QtWidgets
from xraydb.xraydb import XrayDB
import qtawesome as qta

from firefly import display

from haven import exceptions, load_config, registry

log = logging.getLogger(__name__)

1 change: 0 additions & 1 deletion src/firefly/ion_chamber.py
Original file line number Diff line number Diff line change
@@ -5,6 +5,5 @@


class IonChamberDisplay(display.FireflyDisplay):

def ui_filename(self):
return "ion_chamber.ui"
13 changes: 8 additions & 5 deletions src/firefly/launcher.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
import time
import argparse
import cProfile
import logging
import pstats
import sys
import time
from pathlib import Path


import haven


@@ -29,10 +28,11 @@ def main(default_fullscreen=False, default_display="status"):
except ImportError:
logger.debug("QtWebEngine is not supported.")

from qtpy import QtCore
from qtpy.QtGui import QPixmap
from qtpy.QtWidgets import QSplashScreen

from .application import FireflyApplication
from qtpy.QtGui import QPixmap
from qtpy import QtCore

# Set up splash screen
fake_app = FireflyApplication(sys.argv)
@@ -70,7 +70,10 @@ def main(default_fullscreen=False, default_display="status"):
parser.add_argument(
"--no-instrument",
action="store_true",
help="Do not try to create devices. Useful for development if much beamline hardware is offline.",
help=(
"Do not try to create devices. Useful for development if much beamline"
" hardware is offline."
),
)
parser.add_argument(
"--perfmon",
8 changes: 4 additions & 4 deletions src/firefly/main_window.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
import logging
from pathlib import Path
import warnings
from pathlib import Path

from pydm import data_plugins
from pydm.main_window import PyDMMainWindow

# from qtpy.QtCore import Slot
from qtpy import QtCore, QtGui, QtWidgets
from pydm import data_plugins
from haven.instrument import motor
from haven.instrument import motor

from haven import load_config
from haven.instrument import motor

log = logging.getLogger(__name__)

2 changes: 1 addition & 1 deletion src/firefly/plans/count.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import logging

from qtpy import QtWidgets
from bluesky_queueserver_api import BPlan
from qtpy import QtWidgets

from firefly import display

8 changes: 3 additions & 5 deletions src/firefly/queue_button.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""A QPushButton that responds to the state of the queue server."""

from qtpy import QtWidgets, QtGui
import qtawesome as qta
from qtpy import QtGui, QtWidgets

from firefly import FireflyApplication

@@ -26,17 +26,15 @@ def handle_queue_status_change(self, status: dict):
if status["re_state"] == "idle" and app.queue_autoplay_action.isChecked():
# Will play immediately
self.setStyleSheet(
"background-color: rgb(25, 135, 84);\n"
"border-color: rgb(25, 135, 84);"
"background-color: rgb(25, 135, 84);\nborder-color: rgb(25, 135, 84);"
)
self.setIcon(qta.icon("fa5s.play"))
self.setText("Run")
self.setToolTip("Add this plan to the queue and start it immediately.")
elif status["worker_environment_exists"]:
# Will be added to the queue
self.setStyleSheet(
"background-color: rgb(0, 123, 255);\n"
"border-color: rgb(0, 123, 255);"
"background-color: rgb(0, 123, 255);\nborder-color: rgb(0, 123, 255);"
)
self.setIcon(qta.icon("fa5s.list"))
self.setText("Add to Queue")
Loading