mxcubecore 1.393.0__py3-none-any.whl → 1.395.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of mxcubecore might be problematic. Click here for more details.
- mxcubecore/HardwareObjects/ALBA/ALBAAutoProcessing.py +4 -7
- mxcubecore/HardwareObjects/ALBA/ALBABackLight.py +6 -7
- mxcubecore/HardwareObjects/ALBA/ALBABeamInfo.py +2 -4
- mxcubecore/HardwareObjects/ALBA/ALBACats.py +19 -25
- mxcubecore/HardwareObjects/ALBA/ALBAClusterJob.py +10 -11
- mxcubecore/HardwareObjects/ALBA/ALBACollect.py +49 -71
- mxcubecore/HardwareObjects/ALBA/ALBADataAnalysis.py +26 -31
- mxcubecore/HardwareObjects/ALBA/ALBAEnergy.py +1 -5
- mxcubecore/HardwareObjects/ALBA/ALBAEpsActuator.py +1 -1
- mxcubecore/HardwareObjects/ALBA/ALBAFastShutter.py +1 -1
- mxcubecore/HardwareObjects/ALBA/ALBAFlux.py +2 -6
- mxcubecore/HardwareObjects/ALBA/ALBAFrontLight.py +5 -9
- mxcubecore/HardwareObjects/ALBA/ALBAISPyBClient.py +4 -4
- mxcubecore/HardwareObjects/ALBA/ALBAMiniDiff.py +20 -27
- mxcubecore/HardwareObjects/ALBA/ALBAPilatus.py +12 -15
- mxcubecore/HardwareObjects/ALBA/ALBASession.py +1 -4
- mxcubecore/HardwareObjects/ALBA/ALBAZoomMotor.py +10 -14
- mxcubecore/HardwareObjects/ALBA/ALBAZoomMotorAutoBrightness.py +7 -11
- mxcubecore/HardwareObjects/ALBA/XalocMiniDiff.py +7 -8
- mxcubecore/HardwareObjects/BeamInfo.py +4 -6
- mxcubecore/HardwareObjects/Beamline.py +6 -7
- mxcubecore/HardwareObjects/BeamlineActions.py +3 -7
- mxcubecore/HardwareObjects/BlissHutchTrigger.py +2 -4
- mxcubecore/HardwareObjects/BlissMotorWPositions.py +4 -7
- mxcubecore/HardwareObjects/Cats90.py +33 -43
- mxcubecore/HardwareObjects/CatsBessy.py +1 -2
- mxcubecore/HardwareObjects/CatsMaint.py +2 -2
- mxcubecore/HardwareObjects/CentringMath.py +5 -4
- mxcubecore/HardwareObjects/DESY/DigitalZoomMotor.py +3 -5
- mxcubecore/HardwareObjects/DESY/MjpgStreamVideo.py +1 -3
- mxcubecore/HardwareObjects/DESY/P11Collect.py +6 -8
- mxcubecore/HardwareObjects/DESY/P11EDNACharacterisation.py +14 -16
- mxcubecore/HardwareObjects/DESY/P11ISPyBClient.py +6 -10
- mxcubecore/HardwareObjects/DESY/P11NanoDiff.py +5 -5
- mxcubecore/HardwareObjects/DataPublisher.py +2 -3
- mxcubecore/HardwareObjects/EDNACharacterisation.py +2 -4
- mxcubecore/HardwareObjects/EMBL/EMBLBeam.py +3 -3
- mxcubecore/HardwareObjects/EMBL/EMBLBeamCentering.py +2 -4
- mxcubecore/HardwareObjects/EMBL/EMBLBeamFocusing.py +3 -3
- mxcubecore/HardwareObjects/EMBL/EMBLDoorInterlock.py +1 -1
- mxcubecore/HardwareObjects/EMBL/EMBLEnergy.py +10 -18
- mxcubecore/HardwareObjects/EMBL/EMBLEnergyScan.py +9 -13
- mxcubecore/HardwareObjects/EMBL/EMBLFlux.py +10 -12
- mxcubecore/HardwareObjects/EMBL/EMBLMachineInfo.py +2 -2
- mxcubecore/HardwareObjects/EMBL/EMBLMiniDiff.py +18 -18
- mxcubecore/HardwareObjects/EMBL/EMBLMotorsGroup.py +6 -9
- mxcubecore/HardwareObjects/EMBL/EMBLOnlineProcessing.py +6 -6
- mxcubecore/HardwareObjects/EMBL/EMBLPPUControl.py +1 -1
- mxcubecore/HardwareObjects/EMBL/EMBLSSXChip.py +1 -4
- mxcubecore/HardwareObjects/EMBL/EMBLSlitBox.py +1 -3
- mxcubecore/HardwareObjects/EMBL/EMBLTableMotor.py +2 -3
- mxcubecore/HardwareObjects/EMBL/EMBLXRFSpectrum.py +4 -4
- mxcubecore/HardwareObjects/EMBL/EMBLXrayImaging.py +1 -1
- mxcubecore/HardwareObjects/EMBL/TINEMotor.py +2 -4
- mxcubecore/HardwareObjects/EMBLFlexHCD.py +5 -5
- mxcubecore/HardwareObjects/EMBLFlexHarvester.py +2 -2
- mxcubecore/HardwareObjects/ESRF/ESRFBeam.py +3 -5
- mxcubecore/HardwareObjects/ESRF/ESRFBeamInfo.py +1 -5
- mxcubecore/HardwareObjects/ESRF/ESRFBeamlineActions.py +2 -3
- mxcubecore/HardwareObjects/ESRF/ESRFEnergyScan.py +3 -3
- mxcubecore/HardwareObjects/ESRF/ESRFMultiCollect.py +7 -7
- mxcubecore/HardwareObjects/ESRF/ESRFPhotonFlux.py +2 -8
- mxcubecore/HardwareObjects/ESRF/ESRFSC3.py +11 -18
- mxcubecore/HardwareObjects/ESRF/ID29HutchTrigger.py +2 -4
- mxcubecore/HardwareObjects/ESRF/MD2MultiCollect.py +4 -4
- mxcubecore/HardwareObjects/ESRF/SSXICATLIMS.py +9 -6
- mxcubecore/HardwareObjects/EdnaWorkflow.py +9 -11
- mxcubecore/HardwareObjects/Energy.py +11 -15
- mxcubecore/HardwareObjects/ExporterMotor.py +1 -2
- mxcubecore/HardwareObjects/FlexHCD.py +7 -8
- mxcubecore/HardwareObjects/FlexHCDMaintenance.py +1 -2
- mxcubecore/HardwareObjects/GenericDiffractometer.py +26 -46
- mxcubecore/HardwareObjects/Gphl/CollectEmulator.py +6 -7
- mxcubecore/HardwareObjects/Gphl/GphlQueueEntry.py +2 -2
- mxcubecore/HardwareObjects/Gphl/GphlWorkflow.py +29 -43
- mxcubecore/HardwareObjects/Gphl/GphlWorkflowConnection.py +25 -35
- mxcubecore/HardwareObjects/ICATLIMS.py +17 -13
- mxcubecore/HardwareObjects/LNLS/EPICSMotor.py +1 -4
- mxcubecore/HardwareObjects/LNLS/LNLSAperture.py +2 -5
- mxcubecore/HardwareObjects/LNLS/LNLSCamera.py +14 -16
- mxcubecore/HardwareObjects/LNLS/LNLSCollect.py +20 -30
- mxcubecore/HardwareObjects/LNLS/LNLSDetDistMotor.py +7 -11
- mxcubecore/HardwareObjects/LNLS/LNLSEnergy.py +4 -6
- mxcubecore/HardwareObjects/LNLS/LNLSPilatusDet.py +49 -57
- mxcubecore/HardwareObjects/LNLS/LNLSTransmission.py +4 -7
- mxcubecore/HardwareObjects/LdapAuthenticator.py +11 -15
- mxcubecore/HardwareObjects/Lima2Detector.py +1 -1
- mxcubecore/HardwareObjects/LimaEigerDetector.py +1 -1
- mxcubecore/HardwareObjects/LimaPilatusDetector.py +1 -4
- mxcubecore/HardwareObjects/MAXIV/MAXIVAutoProcessing.py +3 -5
- mxcubecore/HardwareObjects/MD3UP.py +1 -2
- mxcubecore/HardwareObjects/MachCurrent.py +5 -5
- mxcubecore/HardwareObjects/Marvin.py +23 -35
- mxcubecore/HardwareObjects/Microdiff.py +6 -8
- mxcubecore/HardwareObjects/MicrodiffActuator.py +1 -1
- mxcubecore/HardwareObjects/MicrodiffBeamstop.py +1 -3
- mxcubecore/HardwareObjects/MicrodiffInOut.py +1 -1
- mxcubecore/HardwareObjects/MicrodiffKappaMotor.py +3 -4
- mxcubecore/HardwareObjects/MiniDiff.py +35 -57
- mxcubecore/HardwareObjects/MotorWPositions.py +3 -3
- mxcubecore/HardwareObjects/PlateManipulator.py +2 -2
- mxcubecore/HardwareObjects/ProposalTypeISPyBLims.py +8 -16
- mxcubecore/HardwareObjects/PyISPyBClient.py +8 -5
- mxcubecore/HardwareObjects/QtGraphicsLib.py +2 -2
- mxcubecore/HardwareObjects/QtGraphicsManager.py +13 -19
- mxcubecore/HardwareObjects/QtInstanceServer.py +27 -55
- mxcubecore/HardwareObjects/QtLimaVideo.py +1 -5
- mxcubecore/HardwareObjects/QueueManager.py +7 -9
- mxcubecore/HardwareObjects/QueueModel.py +6 -8
- mxcubecore/HardwareObjects/RedisClient.py +12 -16
- mxcubecore/HardwareObjects/SC3.py +1 -2
- mxcubecore/HardwareObjects/SOLEIL/PX1/PX1Attenuator.py +1 -3
- mxcubecore/HardwareObjects/SOLEIL/PX1/PX1BeamInfo.py +1 -1
- mxcubecore/HardwareObjects/SOLEIL/PX1/PX1CatsMaint.py +3 -4
- mxcubecore/HardwareObjects/SOLEIL/PX1/PX1Collect.py +11 -11
- mxcubecore/HardwareObjects/SOLEIL/PX1/PX1Cryotong.py +8 -18
- mxcubecore/HardwareObjects/SOLEIL/PX1/PX1Energy.py +6 -7
- mxcubecore/HardwareObjects/SOLEIL/PX1/PX1EnergyScan.py +21 -31
- mxcubecore/HardwareObjects/SOLEIL/PX1/PX1Environment.py +1 -1
- mxcubecore/HardwareObjects/SOLEIL/PX1/PX1MiniDiff.py +11 -21
- mxcubecore/HardwareObjects/SOLEIL/PX1/PX1Pilatus.py +9 -9
- mxcubecore/HardwareObjects/SOLEIL/PX1/PX1Pss.py +1 -2
- mxcubecore/HardwareObjects/SOLEIL/PX1/PX1Resolution.py +1 -5
- mxcubecore/HardwareObjects/SOLEIL/PX1/PX1TangoLight.py +3 -8
- mxcubecore/HardwareObjects/SOLEIL/PX2/PX2Attenuator.py +9 -13
- mxcubecore/HardwareObjects/SOLEIL/PX2/PX2Collect.py +1 -1
- mxcubecore/HardwareObjects/SOLEIL/PX2/PX2Diffractometer.py +22 -22
- mxcubecore/HardwareObjects/SOLEIL/PX2/PX2Energy.py +4 -6
- mxcubecore/HardwareObjects/SOLEIL/PX2/PX2Guillotine.py +2 -2
- mxcubecore/HardwareObjects/SOLEIL/SOLEILCatsMaint.py +6 -8
- mxcubecore/HardwareObjects/SOLEIL/SOLEILEnergyScan.py +44 -56
- mxcubecore/HardwareObjects/SOLEIL/SOLEILGuillotine.py +2 -2
- mxcubecore/HardwareObjects/SOLEIL/SOLEILISPyBClient.py +10 -10
- mxcubecore/HardwareObjects/SOLEIL/SOLEILMachineInfo.py +4 -8
- mxcubecore/HardwareObjects/SOLEIL/SOLEILPss.py +3 -4
- mxcubecore/HardwareObjects/SOLEIL/SOLEILRuche.py +1 -1
- mxcubecore/HardwareObjects/SOLEIL/TangoDCMotor.py +10 -16
- mxcubecore/HardwareObjects/SardanaMotor.py +4 -5
- mxcubecore/HardwareObjects/Session.py +1 -2
- mxcubecore/HardwareObjects/SpecMotorWPositions.py +5 -9
- mxcubecore/HardwareObjects/SpecMotorWSpecPositions.py +2 -4
- mxcubecore/HardwareObjects/SpecShell.py +7 -9
- mxcubecore/HardwareObjects/SpecState.py +5 -7
- mxcubecore/HardwareObjects/StateMachine.py +9 -10
- mxcubecore/HardwareObjects/TangoLimaMpegVideo.py +2 -3
- mxcubecore/HardwareObjects/TangoLimaVideo.py +3 -4
- mxcubecore/HardwareObjects/TangoMachineInfo.py +1 -3
- mxcubecore/HardwareObjects/TangoMotor.py +1 -3
- mxcubecore/HardwareObjects/UserTypeISPyBLims.py +7 -9
- mxcubecore/HardwareObjects/XMLRPCServer.py +20 -22
- mxcubecore/HardwareObjects/abstract/AbstractAperture.py +6 -11
- mxcubecore/HardwareObjects/abstract/AbstractCollect.py +6 -16
- mxcubecore/HardwareObjects/abstract/AbstractDetector.py +2 -7
- mxcubecore/HardwareObjects/abstract/AbstractEnergyScan.py +1 -1
- mxcubecore/HardwareObjects/abstract/AbstractLims.py +3 -4
- mxcubecore/HardwareObjects/abstract/AbstractNState.py +1 -2
- mxcubecore/HardwareObjects/abstract/AbstractProcedure.py +3 -4
- mxcubecore/HardwareObjects/abstract/AbstractSampleChanger.py +1 -1
- mxcubecore/HardwareObjects/abstract/AbstractVideoDevice.py +4 -4
- mxcubecore/HardwareObjects/abstract/AbstractXRFSpectrum.py +1 -1
- mxcubecore/HardwareObjects/abstract/ISPyBAbstractLims.py +11 -13
- mxcubecore/HardwareObjects/mockup/BeamlineTestMockup.py +11 -14
- mxcubecore/HardwareObjects/mockup/EnergyScanMockup.py +10 -11
- mxcubecore/HardwareObjects/mockup/ISPyBClientMockup.py +6 -6
- mxcubecore/HardwareObjects/mockup/ISPyBRestClientMockup.py +1 -1
- mxcubecore/HardwareObjects/mockup/LimaDetectorMockup.py +1 -2
- mxcubecore/HardwareObjects/mockup/MDCameraMockup.py +5 -6
- mxcubecore/HardwareObjects/mockup/MicrodiffInOutMockup.py +1 -1
- mxcubecore/HardwareObjects/mockup/MultiCollectMockup.py +1 -1
- mxcubecore/HardwareObjects/mockup/ShapeHistoryMockup.py +1 -2
- mxcubecore/HardwareObjects/mockup/XRFMockup.py +3 -6
- {mxcubecore-1.393.0.dist-info → mxcubecore-1.395.0.dist-info}/METADATA +1 -1
- {mxcubecore-1.393.0.dist-info → mxcubecore-1.395.0.dist-info}/RECORD +176 -176
- {mxcubecore-1.393.0.dist-info → mxcubecore-1.395.0.dist-info}/COPYING +0 -0
- {mxcubecore-1.393.0.dist-info → mxcubecore-1.395.0.dist-info}/COPYING.LESSER +0 -0
- {mxcubecore-1.393.0.dist-info → mxcubecore-1.395.0.dist-info}/WHEEL +0 -0
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import logging
|
|
2
1
|
import time
|
|
3
2
|
|
|
4
3
|
import gevent
|
|
@@ -15,7 +14,7 @@ class XalocMiniDiff(GenericDiffractometer):
|
|
|
15
14
|
self.calibration = self.get_object_by_role("calibration")
|
|
16
15
|
self.centring_hwobj = self.get_object_by_role("centring")
|
|
17
16
|
if self.centring_hwobj is None:
|
|
18
|
-
|
|
17
|
+
self.log.debug("EMBLMinidiff: Centring math is not defined")
|
|
19
18
|
|
|
20
19
|
self.cmd_start_auto_focus = self.get_command_object("startAutoFocus")
|
|
21
20
|
|
|
@@ -33,7 +32,7 @@ class XalocMiniDiff(GenericDiffractometer):
|
|
|
33
32
|
)
|
|
34
33
|
self.connect(self.phi_motor_hwobj, "valueChanged", self.phi_motor_moved)
|
|
35
34
|
else:
|
|
36
|
-
|
|
35
|
+
self.log.error("EMBLMiniDiff: Phi motor is not defined")
|
|
37
36
|
|
|
38
37
|
if self.phiz_motor_hwobj is not None:
|
|
39
38
|
self.connect(
|
|
@@ -41,7 +40,7 @@ class XalocMiniDiff(GenericDiffractometer):
|
|
|
41
40
|
)
|
|
42
41
|
self.connect(self.phiz_motor_hwobj, "valueChanged", self.phiz_motor_moved)
|
|
43
42
|
else:
|
|
44
|
-
|
|
43
|
+
self.log.error("EMBLMiniDiff: Phiz motor is not defined")
|
|
45
44
|
|
|
46
45
|
if self.phiy_motor_hwobj is not None:
|
|
47
46
|
self.connect(
|
|
@@ -49,7 +48,7 @@ class XalocMiniDiff(GenericDiffractometer):
|
|
|
49
48
|
)
|
|
50
49
|
self.connect(self.phiy_motor_hwobj, "valueChanged", self.phiy_motor_moved)
|
|
51
50
|
else:
|
|
52
|
-
|
|
51
|
+
self.log.error("EMBLMiniDiff: Phiy motor is not defined")
|
|
53
52
|
|
|
54
53
|
if self.zoom_motor_hwobj is not None:
|
|
55
54
|
self.connect(
|
|
@@ -64,7 +63,7 @@ class XalocMiniDiff(GenericDiffractometer):
|
|
|
64
63
|
self.zoom_motor_hwobj, "stateChanged", self.zoom_motor_state_changed
|
|
65
64
|
)
|
|
66
65
|
else:
|
|
67
|
-
|
|
66
|
+
self.log.error("EMBLMiniDiff: Zoom motor is not defined")
|
|
68
67
|
|
|
69
68
|
if self.sample_x_motor_hwobj is not None:
|
|
70
69
|
self.connect(
|
|
@@ -76,7 +75,7 @@ class XalocMiniDiff(GenericDiffractometer):
|
|
|
76
75
|
self.sample_x_motor_hwobj, "valueChanged", self.sampleX_motor_moved
|
|
77
76
|
)
|
|
78
77
|
else:
|
|
79
|
-
|
|
78
|
+
self.log.error("EMBLMiniDiff: Sampx motor is not defined")
|
|
80
79
|
|
|
81
80
|
if self.sample_y_motor_hwobj is not None:
|
|
82
81
|
self.connect(
|
|
@@ -88,7 +87,7 @@ class XalocMiniDiff(GenericDiffractometer):
|
|
|
88
87
|
self.sample_y_motor_hwobj, "valueChanged", self.sampleY_motor_moved
|
|
89
88
|
)
|
|
90
89
|
else:
|
|
91
|
-
|
|
90
|
+
self.log.error("EMBLMiniDiff: Sampx motor is not defined")
|
|
92
91
|
|
|
93
92
|
if self.focus_motor_hwobj is not None:
|
|
94
93
|
self.connect(self.focus_motor_hwobj, "valueChanged", self.focus_motor_moved)
|
|
@@ -19,8 +19,6 @@ beamPosChanged
|
|
|
19
19
|
-----------------------------------------------------------------------
|
|
20
20
|
"""
|
|
21
21
|
|
|
22
|
-
import logging
|
|
23
|
-
|
|
24
22
|
from mxcubecore.BaseHardwareObjects import HardwareObject
|
|
25
23
|
|
|
26
24
|
|
|
@@ -66,20 +64,20 @@ class BeamInfo(HardwareObject):
|
|
|
66
64
|
self.aperture_hwobj, "apertureChanged", self.aperture_pos_changed
|
|
67
65
|
)
|
|
68
66
|
else:
|
|
69
|
-
|
|
67
|
+
self.log.debug("BeamInfo: Aperture hwobj not defined")
|
|
70
68
|
|
|
71
69
|
self.slits_hwobj = self.get_object_by_role("slits")
|
|
72
70
|
if self.slits_hwobj is not None:
|
|
73
71
|
self.connect(self.slits_hwobj, "gapSizeChanged", self.slits_gap_changed)
|
|
74
72
|
else:
|
|
75
|
-
|
|
73
|
+
self.log.debug("BeamInfo: Slits hwobj not defined")
|
|
76
74
|
|
|
77
75
|
if self.beam_definer is not None:
|
|
78
76
|
self.connect(
|
|
79
77
|
self.beam_definer, "definerPosChanged", self.definer_pos_changed
|
|
80
78
|
)
|
|
81
79
|
else:
|
|
82
|
-
|
|
80
|
+
self.log.debug("BeamInfo: Beam definer hwobj not defined")
|
|
83
81
|
|
|
84
82
|
default_beam_divergence_vertical = None
|
|
85
83
|
default_beam_divergence_horizontal = None
|
|
@@ -91,7 +89,7 @@ class BeamInfo(HardwareObject):
|
|
|
91
89
|
self.get_property("beam_divergence_horizontal")
|
|
92
90
|
)
|
|
93
91
|
except Exception:
|
|
94
|
-
|
|
92
|
+
self.log.exception("")
|
|
95
93
|
self.default_beam_divergence = [
|
|
96
94
|
default_beam_divergence_horizontal,
|
|
97
95
|
default_beam_divergence_vertical,
|
|
@@ -42,7 +42,6 @@ __copyright__ = """ Copyright © 2019 by the MXCuBE collaboration """
|
|
|
42
42
|
__license__ = "LGPLv3+"
|
|
43
43
|
__author__ = "Rasmus H Fogh"
|
|
44
44
|
|
|
45
|
-
import logging
|
|
46
45
|
|
|
47
46
|
from mxcubecore.BaseHardwareObjects import (
|
|
48
47
|
ConfiguredObject,
|
|
@@ -330,7 +329,7 @@ class Beamline(HardwareObject):
|
|
|
330
329
|
if acquisition_type != "default":
|
|
331
330
|
dd0 = self.config.default_acquisition_parameters.get(acquisition_type)
|
|
332
331
|
if dd0 is None:
|
|
333
|
-
|
|
332
|
+
self.log.warning(
|
|
334
333
|
"No separate parameters for acquisition type: %s - using default."
|
|
335
334
|
% acquisition_type
|
|
336
335
|
)
|
|
@@ -362,7 +361,7 @@ class Beamline(HardwareObject):
|
|
|
362
361
|
try:
|
|
363
362
|
acq_parameters.resolution = self.resolution.get_value()
|
|
364
363
|
except Exception:
|
|
365
|
-
|
|
364
|
+
self.log.warning(
|
|
366
365
|
"get_default_acquisition_parameters: "
|
|
367
366
|
"No current resolution, setting to 0.0"
|
|
368
367
|
)
|
|
@@ -371,7 +370,7 @@ class Beamline(HardwareObject):
|
|
|
371
370
|
try:
|
|
372
371
|
acq_parameters.energy = self.energy.get_value()
|
|
373
372
|
except Exception:
|
|
374
|
-
|
|
373
|
+
self.log.warning(
|
|
375
374
|
"get_default_acquisition_parameters: No current energy, setting to 0.0"
|
|
376
375
|
)
|
|
377
376
|
acq_parameters.energy = 0.0
|
|
@@ -379,7 +378,7 @@ class Beamline(HardwareObject):
|
|
|
379
378
|
try:
|
|
380
379
|
acq_parameters.transmission = self.transmission.get_value()
|
|
381
380
|
except Exception:
|
|
382
|
-
|
|
381
|
+
self.log.warning(
|
|
383
382
|
"get_default_acquisition_parameters: "
|
|
384
383
|
"No current transmission, setting to 0.0"
|
|
385
384
|
)
|
|
@@ -390,7 +389,7 @@ class Beamline(HardwareObject):
|
|
|
390
389
|
try:
|
|
391
390
|
acq_parameters.detector_binning_mode = self.detector.get_binning_mode()
|
|
392
391
|
except Exception:
|
|
393
|
-
|
|
392
|
+
self.log.warning(
|
|
394
393
|
"get_default_acquisition_parameters: "
|
|
395
394
|
"Could not get detector mode, setting to ''"
|
|
396
395
|
)
|
|
@@ -399,7 +398,7 @@ class Beamline(HardwareObject):
|
|
|
399
398
|
try:
|
|
400
399
|
acq_parameters.detector_roi_mode = self.detector.get_roi_mode()
|
|
401
400
|
except Exception:
|
|
402
|
-
|
|
401
|
+
self.log.warning(
|
|
403
402
|
"get_default_acquisition_parameters: "
|
|
404
403
|
"Could not get roi mode, setting to ''"
|
|
405
404
|
)
|
|
@@ -53,9 +53,7 @@ class ControllerCommand(CommandObject):
|
|
|
53
53
|
res = cmd_execution.get()
|
|
54
54
|
res = res if res else ""
|
|
55
55
|
except Exception:
|
|
56
|
-
|
|
57
|
-
"%s: execution failed", str(self.name())
|
|
58
|
-
)
|
|
56
|
+
self.log.exception("%s: execution failed", str(self.name()))
|
|
59
57
|
self.emit("commandFailed", (str(self.name()),))
|
|
60
58
|
else:
|
|
61
59
|
if isinstance(res, gevent.GreenletExit):
|
|
@@ -199,7 +197,7 @@ class BeamlineActions(HardwareObject):
|
|
|
199
197
|
"Command with name %s already exists"
|
|
200
198
|
% command["command"].split(".")[-1]
|
|
201
199
|
)
|
|
202
|
-
|
|
200
|
+
self.log.warning(msg)
|
|
203
201
|
continue
|
|
204
202
|
|
|
205
203
|
if command["type"] == "annotated":
|
|
@@ -292,9 +290,7 @@ class BeamlineActions(HardwareObject):
|
|
|
292
290
|
try:
|
|
293
291
|
result = greenlet.get()
|
|
294
292
|
except Exception:
|
|
295
|
-
|
|
296
|
-
"%s: execution failed", self._current_command.cmd_name
|
|
297
|
-
)
|
|
293
|
+
self.log.exception("%s: execution failed", self._current_command.cmd_name)
|
|
298
294
|
cmd_obj.emit("commandFailed", (self._current_command.cmd_name,))
|
|
299
295
|
else:
|
|
300
296
|
self._current_command.set_last_result(result)
|
|
@@ -44,9 +44,7 @@ class BlissHutchTrigger(BaseHardwareObjects.HardwareObject):
|
|
|
44
44
|
self.device = PyTango.gevent.DeviceProxy(self.get_property("pss_tangoname"))
|
|
45
45
|
except PyTango.DevFailed as traceback:
|
|
46
46
|
last_error = traceback[-1]
|
|
47
|
-
|
|
48
|
-
"%s: %s", str(self.name()), last_error["desc"]
|
|
49
|
-
)
|
|
47
|
+
self.log.error("%s: %s", str(self.name()), last_error["desc"])
|
|
50
48
|
self.device = None
|
|
51
49
|
|
|
52
50
|
self.pollingTask = None
|
|
@@ -61,7 +59,7 @@ class BlissHutchTrigger(BaseHardwareObjects.HardwareObject):
|
|
|
61
59
|
except Exception:
|
|
62
60
|
logging.getLogger().error("%s: cannot find PSS number", self.name())
|
|
63
61
|
|
|
64
|
-
|
|
62
|
+
self.log.exception("")
|
|
65
63
|
return
|
|
66
64
|
|
|
67
65
|
if self.device is not None:
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import logging
|
|
2
1
|
from warnings import warn
|
|
3
2
|
|
|
4
3
|
from BlissMotor import BlissMotor
|
|
@@ -22,9 +21,7 @@ class BlissMotorWPositions(BlissMotor):
|
|
|
22
21
|
try:
|
|
23
22
|
positions = self["positions"]
|
|
24
23
|
except Exception:
|
|
25
|
-
|
|
26
|
-
"%s does not define positions.", str(self.name())
|
|
27
|
-
)
|
|
24
|
+
self.log.error("%s does not define positions.", str(self.name()))
|
|
28
25
|
else:
|
|
29
26
|
for definedPosition in positions:
|
|
30
27
|
positionUsername = definedPosition.get_property("username")
|
|
@@ -32,7 +29,7 @@ class BlissMotorWPositions(BlissMotor):
|
|
|
32
29
|
try:
|
|
33
30
|
offset = float(definedPosition.get_property("offset"))
|
|
34
31
|
except Exception:
|
|
35
|
-
|
|
32
|
+
self.log.warning(
|
|
36
33
|
"%s, ignoring position %s: invalid offset.",
|
|
37
34
|
str(self.name()),
|
|
38
35
|
positionUsername,
|
|
@@ -93,7 +90,7 @@ class BlissMotorWPositions(BlissMotor):
|
|
|
93
90
|
try:
|
|
94
91
|
self.set_value(self.predefinedPositions[positionName])
|
|
95
92
|
except Exception:
|
|
96
|
-
|
|
93
|
+
self.log.exception(
|
|
97
94
|
"Cannot move motor %s: invalid position name.", str(self.username)
|
|
98
95
|
)
|
|
99
96
|
|
|
@@ -116,4 +113,4 @@ class BlissMotorWPositions(BlissMotor):
|
|
|
116
113
|
self.predefinedPositions[str(positionName)] = float(positionOffset)
|
|
117
114
|
self.sortPredefinedPositionsList()
|
|
118
115
|
except Exception:
|
|
119
|
-
|
|
116
|
+
self.log.exception("Cannot set new predefined position")
|
|
@@ -429,7 +429,7 @@ class Cats90(SampleChanger):
|
|
|
429
429
|
self.basket_types = self.cats_device.read_attribute("CassetteType").value
|
|
430
430
|
self.number_of_baskets = len(self.basket_types)
|
|
431
431
|
except PyTango.DevFailed:
|
|
432
|
-
|
|
432
|
+
self.log.exception("")
|
|
433
433
|
|
|
434
434
|
# find number of baskets and number of samples per basket
|
|
435
435
|
if self.number_of_baskets is not None:
|
|
@@ -495,7 +495,7 @@ class Cats90(SampleChanger):
|
|
|
495
495
|
"di_Cassette%dPresence" % (basket_index + 1),
|
|
496
496
|
)
|
|
497
497
|
self.basket_channels[basket_index] = chan
|
|
498
|
-
|
|
498
|
+
self.log.debug(
|
|
499
499
|
"Creating channel for cassette presence %d" % (basket_index + 1)
|
|
500
500
|
)
|
|
501
501
|
|
|
@@ -539,7 +539,7 @@ class Cats90(SampleChanger):
|
|
|
539
539
|
if unipuck_tool:
|
|
540
540
|
self.set_unipuck_tool(unipuck_tool)
|
|
541
541
|
except Exception:
|
|
542
|
-
|
|
542
|
+
self.log.exception("")
|
|
543
543
|
|
|
544
544
|
self.update_info()
|
|
545
545
|
|
|
@@ -560,7 +560,7 @@ class Cats90(SampleChanger):
|
|
|
560
560
|
:returns: None
|
|
561
561
|
:rtype: None
|
|
562
562
|
"""
|
|
563
|
-
|
|
563
|
+
self.log.warning("Cats90: initializing contents")
|
|
564
564
|
|
|
565
565
|
self.basket_presence = [None] * self.number_of_baskets
|
|
566
566
|
|
|
@@ -601,7 +601,7 @@ class Cats90(SampleChanger):
|
|
|
601
601
|
sample._set_loaded(loaded, has_been_loaded)
|
|
602
602
|
sample._set_holder_length(spl[4])
|
|
603
603
|
|
|
604
|
-
|
|
604
|
+
self.log.warning("Cats90: initializing contents done")
|
|
605
605
|
|
|
606
606
|
def get_sample_properties(self):
|
|
607
607
|
"""
|
|
@@ -690,7 +690,7 @@ class Cats90(SampleChanger):
|
|
|
690
690
|
Pin.get_sample_address(basket_no, sample_no)
|
|
691
691
|
)
|
|
692
692
|
except Exception:
|
|
693
|
-
|
|
693
|
+
self.log.exception("")
|
|
694
694
|
self._set_selected_component(basket)
|
|
695
695
|
self._set_selected_sample(sample)
|
|
696
696
|
|
|
@@ -780,9 +780,7 @@ class Cats90(SampleChanger):
|
|
|
780
780
|
return
|
|
781
781
|
|
|
782
782
|
self._update_state() # remove software flags like Loading.
|
|
783
|
-
|
|
784
|
-
" ==========CATS== load cmd .state is: %s " % (self.state)
|
|
785
|
-
)
|
|
783
|
+
self.log.debug(" ==========CATS== load cmd .state is: %s " % (self.state))
|
|
786
784
|
|
|
787
785
|
sample = self._resolve_component(sample)
|
|
788
786
|
self.assert_not_charging()
|
|
@@ -843,7 +841,7 @@ class Cats90(SampleChanger):
|
|
|
843
841
|
yshift,
|
|
844
842
|
zshift,
|
|
845
843
|
]
|
|
846
|
-
|
|
844
|
+
self.log.debug(
|
|
847
845
|
" ==========CATS=== doLoad argin: %s / %s:%s"
|
|
848
846
|
% (argin, basketno, sampleno)
|
|
849
847
|
)
|
|
@@ -857,37 +855,37 @@ class Cats90(SampleChanger):
|
|
|
857
855
|
)
|
|
858
856
|
else:
|
|
859
857
|
if self.read_datamatrix and self._cmdChainedLoadBarcode is not None:
|
|
860
|
-
|
|
858
|
+
self.log.warning(
|
|
861
859
|
" ==========CATS=== chained load sample (brcd), sending to cats: %s"
|
|
862
860
|
% argin
|
|
863
861
|
)
|
|
864
862
|
self._execute_server_task(self._cmdChainedLoadBarcode, argin)
|
|
865
863
|
else:
|
|
866
|
-
|
|
864
|
+
self.log.warning(
|
|
867
865
|
" ==========CATS=== chained load sample, sending to cats: %s"
|
|
868
866
|
% argin
|
|
869
867
|
)
|
|
870
868
|
self._execute_server_task(self._cmdChainedLoad, argin)
|
|
871
869
|
else:
|
|
872
870
|
if self.cats_sample_on_diffr() == 1:
|
|
873
|
-
|
|
871
|
+
self.log.warning(
|
|
874
872
|
" ==========CATS=== trying to load sample, but sample detected on diffr. aborting"
|
|
875
873
|
)
|
|
876
874
|
self._update_state() # remove software flags like Loading.
|
|
877
875
|
elif self.cats_sample_on_diffr() == -1:
|
|
878
|
-
|
|
876
|
+
self.log.warning(
|
|
879
877
|
" ==========CATS=== trying to load sample, but there is a conflict on loaded sample info. aborting"
|
|
880
878
|
)
|
|
881
879
|
self._update_state() # remove software flags like Loading.
|
|
882
880
|
else:
|
|
883
881
|
if self.read_datamatrix and self._cmdLoadBarcode is not None:
|
|
884
|
-
|
|
882
|
+
self.log.warning(
|
|
885
883
|
" ==========CATS=== load sample (bcrd), sending to cats: %s"
|
|
886
884
|
% argin
|
|
887
885
|
)
|
|
888
886
|
self._execute_server_task(self._cmdLoadBarcode, argin)
|
|
889
887
|
else:
|
|
890
|
-
|
|
888
|
+
self.log.warning(
|
|
891
889
|
" ==========CATS=== load sample, sending to cats: %s" % argin
|
|
892
890
|
)
|
|
893
891
|
self._execute_server_task(self._cmdLoad, argin)
|
|
@@ -905,7 +903,7 @@ class Cats90(SampleChanger):
|
|
|
905
903
|
)
|
|
906
904
|
|
|
907
905
|
if not self.has_loaded_sample() or not self._chnSampleIsDetected.get_value():
|
|
908
|
-
|
|
906
|
+
self.log.warning(
|
|
909
907
|
" Trying do unload sample, but it does not seem to be any on diffr: %s"
|
|
910
908
|
% argin
|
|
911
909
|
)
|
|
@@ -922,7 +920,7 @@ class Cats90(SampleChanger):
|
|
|
922
920
|
loaded_num = self._chnNumLoadedSample.get_value()
|
|
923
921
|
|
|
924
922
|
if loaded_lid == -1:
|
|
925
|
-
|
|
923
|
+
self.log.warning(
|
|
926
924
|
" ==========CATS=== unload sample, no sample mounted detected"
|
|
927
925
|
)
|
|
928
926
|
return
|
|
@@ -935,14 +933,14 @@ class Cats90(SampleChanger):
|
|
|
935
933
|
|
|
936
934
|
argin = [str(tool), "0", xshift, yshift, zshift]
|
|
937
935
|
|
|
938
|
-
|
|
936
|
+
self.log.warning(
|
|
939
937
|
" ==========CATS=== unload sample, sending to cats: %s" % argin
|
|
940
938
|
)
|
|
941
939
|
self._execute_server_task(self._cmdUnload, argin)
|
|
942
940
|
|
|
943
941
|
def _on_task_failed(self, task, exception):
|
|
944
942
|
if task in [SampleChangerState.Loading, SampleChangerState.Unloading]:
|
|
945
|
-
|
|
943
|
+
self.log.warning(
|
|
946
944
|
" ==========CATS=== load/unload operation failed : %s" % exception
|
|
947
945
|
)
|
|
948
946
|
self.emit("taskFailed", str(exception))
|
|
@@ -975,7 +973,7 @@ class Cats90(SampleChanger):
|
|
|
975
973
|
while value in [PyTango.DevState.ALARM, PyTango.DevState.ON]:
|
|
976
974
|
time.sleep(0.1)
|
|
977
975
|
trials += 1
|
|
978
|
-
|
|
976
|
+
self.log.warning(
|
|
979
977
|
"SAMPLE CHANGER could be in transient state. trying again"
|
|
980
978
|
)
|
|
981
979
|
value = self._chnState.get_value()
|
|
@@ -1017,15 +1015,13 @@ class Cats90(SampleChanger):
|
|
|
1017
1015
|
presence[basket_index] = value
|
|
1018
1016
|
|
|
1019
1017
|
if presence != self.basket_presence:
|
|
1020
|
-
|
|
1021
|
-
"Basket presence changed. Updating contents"
|
|
1022
|
-
)
|
|
1018
|
+
self.log.warning("Basket presence changed. Updating contents")
|
|
1023
1019
|
self.basket_presence = presence
|
|
1024
1020
|
self._update_cats_contents()
|
|
1025
1021
|
self._update_loaded_sample()
|
|
1026
1022
|
|
|
1027
1023
|
def cats_baskets_changed(self, value):
|
|
1028
|
-
|
|
1024
|
+
self.log.warning("Baskets changed. %s" % value)
|
|
1029
1025
|
for idx, val in enumerate(value):
|
|
1030
1026
|
self.basket_presence[idx] = val
|
|
1031
1027
|
self._update_cats_contents()
|
|
@@ -1053,7 +1049,7 @@ class Cats90(SampleChanger):
|
|
|
1053
1049
|
return
|
|
1054
1050
|
|
|
1055
1051
|
basketno, sampleno = self.lidsample_to_basketsample(lid_on_tool, sample_on_tool)
|
|
1056
|
-
|
|
1052
|
+
self.log.warning(
|
|
1057
1053
|
"Barcode %s read. Assigning it to sample %s:%s"
|
|
1058
1054
|
% (value, basketno, sampleno)
|
|
1059
1055
|
)
|
|
@@ -1090,14 +1086,12 @@ class Cats90(SampleChanger):
|
|
|
1090
1086
|
except Exception:
|
|
1091
1087
|
import traceback
|
|
1092
1088
|
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
)
|
|
1096
|
-
logging.getLogger("HWR").debug(traceback.format_exc())
|
|
1089
|
+
self.log.debug("Cats90. exception while executing server task")
|
|
1090
|
+
self.log.debug(traceback.format_exc())
|
|
1097
1091
|
task_id = None
|
|
1098
1092
|
|
|
1099
1093
|
waitsafe = kwargs.get("waitsafe", False)
|
|
1100
|
-
|
|
1094
|
+
self.log.debug(
|
|
1101
1095
|
"Cats90. executing method %s / task_id %s / waiting only for safe status is %s"
|
|
1102
1096
|
% (str(method), task_id, waitsafe)
|
|
1103
1097
|
)
|
|
@@ -1114,13 +1108,13 @@ class Cats90(SampleChanger):
|
|
|
1114
1108
|
while True:
|
|
1115
1109
|
if waitsafe:
|
|
1116
1110
|
if self.path_safe():
|
|
1117
|
-
|
|
1111
|
+
self.log.debug(
|
|
1118
1112
|
"Cats90. server execution polling finished as path is safe"
|
|
1119
1113
|
)
|
|
1120
1114
|
break
|
|
1121
1115
|
else:
|
|
1122
1116
|
if not self.path_running():
|
|
1123
|
-
|
|
1117
|
+
self.log.debug(
|
|
1124
1118
|
"Cats90. server execution polling finished as path is not running"
|
|
1125
1119
|
)
|
|
1126
1120
|
break
|
|
@@ -1180,9 +1174,7 @@ class Cats90(SampleChanger):
|
|
|
1180
1174
|
while _state in [PyTango.DevState.ALARM, PyTango.DevState.ON]:
|
|
1181
1175
|
time.sleep(0.1)
|
|
1182
1176
|
trials += 1
|
|
1183
|
-
|
|
1184
|
-
"SAMPLE CHANGER could be in transient state. trying again"
|
|
1185
|
-
)
|
|
1177
|
+
self.log.warning("SAMPLE CHANGER could be in transient state. trying again")
|
|
1186
1178
|
_state = self._chnState.get_value()
|
|
1187
1179
|
if trials > 2:
|
|
1188
1180
|
break
|
|
@@ -1211,7 +1203,7 @@ class Cats90(SampleChanger):
|
|
|
1211
1203
|
elif has_loaded ^ on_diff:
|
|
1212
1204
|
# go to Unknown state if a sample is detected on the gonio but not registered in the internal database
|
|
1213
1205
|
# or registered but not on the gonio anymore
|
|
1214
|
-
|
|
1206
|
+
self.log.warning(
|
|
1215
1207
|
"SAMPLE CHANGER Unknown 2 (hasLoaded: %s / detected: %s)"
|
|
1216
1208
|
% (self.has_loaded_sample(), self._chnSampleIsDetected.get_value())
|
|
1217
1209
|
)
|
|
@@ -1325,7 +1317,7 @@ class Cats90(SampleChanger):
|
|
|
1325
1317
|
else:
|
|
1326
1318
|
tool = -1
|
|
1327
1319
|
|
|
1328
|
-
|
|
1320
|
+
self.log.debug(
|
|
1329
1321
|
" finding basket type for %s - is %s / tool is %s"
|
|
1330
1322
|
% (basketno, basket_type, tool)
|
|
1331
1323
|
)
|
|
@@ -1362,7 +1354,7 @@ class Cats90(SampleChanger):
|
|
|
1362
1354
|
self.cats_loaded_lid = loadedSampleLid
|
|
1363
1355
|
self.cats_loaded_num = loadedSampleNum
|
|
1364
1356
|
|
|
1365
|
-
|
|
1357
|
+
self.log.info(
|
|
1366
1358
|
"Updating loaded sample %s:%s" % (loadedSampleLid, loadedSampleNum)
|
|
1367
1359
|
)
|
|
1368
1360
|
|
|
@@ -1379,7 +1371,7 @@ class Cats90(SampleChanger):
|
|
|
1379
1371
|
|
|
1380
1372
|
old_sample = self.get_loaded_sample()
|
|
1381
1373
|
|
|
1382
|
-
|
|
1374
|
+
self.log.debug(
|
|
1383
1375
|
"----- Cats90 -----. Sample has changed. Dealing with it - new_sample = %s / old_sample = %s"
|
|
1384
1376
|
% (new_sample, old_sample)
|
|
1385
1377
|
)
|
|
@@ -1445,9 +1437,7 @@ class Cats90(SampleChanger):
|
|
|
1445
1437
|
self._update_cats_contents()
|
|
1446
1438
|
|
|
1447
1439
|
def _update_cats_contents(self):
|
|
1448
|
-
|
|
1449
|
-
"Updating contents %s" % str(self.basket_presence)
|
|
1450
|
-
)
|
|
1440
|
+
self.log.warning("Updating contents %s" % str(self.basket_presence))
|
|
1451
1441
|
for basket_index in range(self.number_of_baskets):
|
|
1452
1442
|
# get saved presence information from object's internal bookkeeping
|
|
1453
1443
|
basket = self.get_components()[basket_index]
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import logging
|
|
2
1
|
import time
|
|
3
2
|
|
|
4
3
|
from mxcubecore.HardwareObjects.abstract.AbstractSampleChanger import (
|
|
@@ -372,7 +371,7 @@ class CatsBessy(SampleChanger):
|
|
|
372
371
|
Pin.get_sample_address(basket_no, sample_no)
|
|
373
372
|
)
|
|
374
373
|
except Exception:
|
|
375
|
-
|
|
374
|
+
self.log.exception("")
|
|
376
375
|
self._set_selected_component(basket)
|
|
377
376
|
self._set_selected_sample(sample)
|
|
378
377
|
|
|
@@ -396,7 +396,7 @@ class CatsMaint(HardwareObject):
|
|
|
396
396
|
:returns: None
|
|
397
397
|
:rtype: None
|
|
398
398
|
"""
|
|
399
|
-
|
|
399
|
+
self.log.debug("CatsMaint. doing reset")
|
|
400
400
|
return
|
|
401
401
|
self._cmdReset()
|
|
402
402
|
|
|
@@ -516,7 +516,7 @@ class CatsMaint(HardwareObject):
|
|
|
516
516
|
:returns: None
|
|
517
517
|
:rtype: None
|
|
518
518
|
"""
|
|
519
|
-
|
|
519
|
+
self.log.debug(" running power state command ")
|
|
520
520
|
if state:
|
|
521
521
|
self._cmdPowerOn()
|
|
522
522
|
else:
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import logging
|
|
2
1
|
import math
|
|
3
2
|
|
|
4
3
|
import numpy
|
|
@@ -38,8 +37,10 @@ class CentringMath(Procedure):
|
|
|
38
37
|
"type": axis["type"],
|
|
39
38
|
"direction": eval(axis["direction"]),
|
|
40
39
|
"motor_name": axis["motorname"],
|
|
41
|
-
"motor_HO":
|
|
42
|
-
|
|
40
|
+
"motor_HO": (
|
|
41
|
+
HWR.get_hardware_repository().get_hardware_object(
|
|
42
|
+
axis["motorHO"]
|
|
43
|
+
)
|
|
43
44
|
),
|
|
44
45
|
}
|
|
45
46
|
|
|
@@ -80,7 +81,7 @@ class CentringMath(Procedure):
|
|
|
80
81
|
def listOfCentringsToScreen(self, list_of_centring_dicts):
|
|
81
82
|
self.factorize()
|
|
82
83
|
lst = []
|
|
83
|
-
|
|
84
|
+
self.log.debug(
|
|
84
85
|
" in listOfCentringToScreen - %s points in list "
|
|
85
86
|
% len(list_of_centring_dicts)
|
|
86
87
|
)
|
|
@@ -24,8 +24,6 @@ __author__ = "Jan Meyer"
|
|
|
24
24
|
__email__ = "jan.meyer@desy.de"
|
|
25
25
|
|
|
26
26
|
|
|
27
|
-
import logging
|
|
28
|
-
|
|
29
27
|
from mxcubecore.BaseHardwareObjects import HardwareObject
|
|
30
28
|
from mxcubecore.HardwareObjects.abstract.AbstractMotor import (
|
|
31
29
|
AbstractMotor,
|
|
@@ -54,9 +52,9 @@ class DigitalZoomMotor(AbstractMotor, HardwareObject):
|
|
|
54
52
|
try:
|
|
55
53
|
self.camera = self.get_object_by_role("camera")
|
|
56
54
|
except KeyError:
|
|
57
|
-
|
|
55
|
+
self.log.warning("DigitalZoomMotor: camera not defined")
|
|
58
56
|
|
|
59
|
-
|
|
57
|
+
self.log.exception("")
|
|
60
58
|
return
|
|
61
59
|
try:
|
|
62
60
|
self.read_only = not (self.camera.zoom_exists())
|
|
@@ -73,7 +71,7 @@ class DigitalZoomMotor(AbstractMotor, HardwareObject):
|
|
|
73
71
|
self.update_state(self.STATES.READY)
|
|
74
72
|
else:
|
|
75
73
|
self.update_state(self.STATES.OFF)
|
|
76
|
-
|
|
74
|
+
self.log.warning(
|
|
77
75
|
"DigitalZoomMotor: digital zoom is not supported by camera object"
|
|
78
76
|
)
|
|
79
77
|
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import logging
|
|
2
|
-
|
|
3
1
|
# encoding: utf-8
|
|
4
2
|
#
|
|
5
3
|
# Project name: MXCuBE
|
|
@@ -378,7 +376,7 @@ class MjpgStreamVideo(AbstractVideoDevice):
|
|
|
378
376
|
)
|
|
379
377
|
)
|
|
380
378
|
|
|
381
|
-
|
|
379
|
+
self.log.exception("")
|
|
382
380
|
return None
|
|
383
381
|
if response.status != 200:
|
|
384
382
|
self.log.error(
|