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
|
@@ -15,7 +15,7 @@ from mxcubecore.TaskUtils import cleanup
|
|
|
15
15
|
|
|
16
16
|
class SOLEILEnergyScan(HardwareObject):
|
|
17
17
|
def init(self):
|
|
18
|
-
|
|
18
|
+
self.log.info(
|
|
19
19
|
"############################# EnergyScan: INIT HWOBJ ###################"
|
|
20
20
|
)
|
|
21
21
|
self.ready_event = gevent.event.Event()
|
|
@@ -48,7 +48,7 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
48
48
|
try:
|
|
49
49
|
self.energyScanArgs = self.get_channel_object("escan_args")
|
|
50
50
|
except KeyError:
|
|
51
|
-
|
|
51
|
+
self.log.warning(
|
|
52
52
|
"EnergyScan: error initializing energy scan arguments (missing channel)"
|
|
53
53
|
)
|
|
54
54
|
self.energyScanArgs = None
|
|
@@ -57,7 +57,7 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
57
57
|
self.scanStatusMessage = self.get_channel_object("scanStatusMsg")
|
|
58
58
|
except KeyError:
|
|
59
59
|
self.scanStatusMessage = None
|
|
60
|
-
|
|
60
|
+
self.log.warning(
|
|
61
61
|
"EnergyScan: energy messages will not appear (missing channel)"
|
|
62
62
|
)
|
|
63
63
|
else:
|
|
@@ -83,7 +83,7 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
83
83
|
"commandNotReady", self.scanCommandNotReady
|
|
84
84
|
)
|
|
85
85
|
except AttributeError as diag:
|
|
86
|
-
|
|
86
|
+
self.log.warning(
|
|
87
87
|
"EnergyScan: error initializing energy scan (%s)" % str(diag)
|
|
88
88
|
)
|
|
89
89
|
self.do_energy_scan = Xanes # .xanes(None, None) #None
|
|
@@ -95,26 +95,26 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
95
95
|
self.lastResolution = None
|
|
96
96
|
|
|
97
97
|
if HWR.beamline.lims is None:
|
|
98
|
-
|
|
98
|
+
self.log.warning(
|
|
99
99
|
"EnergyScan: you should specify the database hardware object"
|
|
100
100
|
)
|
|
101
101
|
self.scanInfo = None
|
|
102
102
|
|
|
103
103
|
self.cryostreamHO = self.get_object_by_role("cryostream")
|
|
104
104
|
if self.cryostreamHO is None:
|
|
105
|
-
|
|
105
|
+
self.log.warning(
|
|
106
106
|
"EnergyScan: you should specify the cryo stream hardware object"
|
|
107
107
|
)
|
|
108
108
|
|
|
109
109
|
self.machcurrentHO = self.get_object_by_role("machcurrent")
|
|
110
110
|
if self.machcurrentHO is None:
|
|
111
|
-
|
|
111
|
+
self.log.warning(
|
|
112
112
|
"EnergyScan: you should specify the machine current hardware object"
|
|
113
113
|
)
|
|
114
114
|
|
|
115
115
|
self.fluodetectorHO = self.get_object_by_role("fluodetector")
|
|
116
116
|
if self.fluodetectorHO is None:
|
|
117
|
-
|
|
117
|
+
self.log.warning(
|
|
118
118
|
"EnergyScan: you should specify the fluorescence detector hardware object"
|
|
119
119
|
)
|
|
120
120
|
|
|
@@ -128,7 +128,7 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
128
128
|
"commandNotReady", self.moveEnergyCmdNotReady
|
|
129
129
|
)
|
|
130
130
|
except AttributeError as diag:
|
|
131
|
-
|
|
131
|
+
self.log.warning(
|
|
132
132
|
"EnergyScan: error initializing move energy (%s)" % str(diag)
|
|
133
133
|
)
|
|
134
134
|
self.moveEnergy = None
|
|
@@ -138,7 +138,7 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
138
138
|
HWR.beamline.energy.connect("stateChanged", self.energyStateChanged)
|
|
139
139
|
HWR.beamline.energy.connect("limitsChanged", self.energyLimitsChanged)
|
|
140
140
|
if HWR.beamline.resolution is None:
|
|
141
|
-
|
|
141
|
+
self.log.warning(
|
|
142
142
|
"EnergyScan: no resolution motor (unable to restore it after moving the energy)"
|
|
143
143
|
)
|
|
144
144
|
else:
|
|
@@ -152,7 +152,7 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
152
152
|
|
|
153
153
|
if self.is_connected():
|
|
154
154
|
self.sConnected()
|
|
155
|
-
|
|
155
|
+
self.log.info(
|
|
156
156
|
"############################# EnergyScan: INIT HWOBJ IS FINISHED ###################"
|
|
157
157
|
)
|
|
158
158
|
|
|
@@ -186,17 +186,17 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
186
186
|
self.emit("disconnected", ())
|
|
187
187
|
|
|
188
188
|
def setElement(self):
|
|
189
|
-
|
|
189
|
+
self.log.debug("EnergyScan: setElement")
|
|
190
190
|
self.emit("setElement", (self._element, self._edge))
|
|
191
191
|
|
|
192
192
|
def newPoint(self, x, y):
|
|
193
|
-
|
|
193
|
+
self.log.debug("EnergyScan:newPoint")
|
|
194
194
|
logging.info("EnergyScan newPoint %s, %s" % (x, y))
|
|
195
195
|
self.emit("addNewPoint", (x, y))
|
|
196
196
|
self.emit("newScanPoint", (x, y))
|
|
197
197
|
|
|
198
198
|
def newScan(self, scanParameters):
|
|
199
|
-
|
|
199
|
+
self.log.debug("EnergyScan:newScan")
|
|
200
200
|
self.emit("newScan", (scanParameters,))
|
|
201
201
|
|
|
202
202
|
# # Energy scan commands
|
|
@@ -212,7 +212,7 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
212
212
|
):
|
|
213
213
|
self._element = element
|
|
214
214
|
self._edge = edge
|
|
215
|
-
|
|
215
|
+
self.log.debug(
|
|
216
216
|
"EnergyScan: starting energy scan %s, %s" % (self._element, self._edge)
|
|
217
217
|
)
|
|
218
218
|
self.setElement()
|
|
@@ -236,13 +236,11 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
236
236
|
if self.fluodetectorHO is not None:
|
|
237
237
|
self.scanInfo["fluorescenceDetector"] = self.fluodetectorHO.username
|
|
238
238
|
if not os.path.isdir(directory):
|
|
239
|
-
|
|
240
|
-
"EnergyScan: creating directory %s" % directory
|
|
241
|
-
)
|
|
239
|
+
self.log.debug("EnergyScan: creating directory %s" % directory)
|
|
242
240
|
try:
|
|
243
241
|
os.makedirs(directory)
|
|
244
242
|
except OSError as diag:
|
|
245
|
-
|
|
243
|
+
self.log.error(
|
|
246
244
|
"EnergyScan: error creating directory %s (%s)"
|
|
247
245
|
% (directory, str(diag))
|
|
248
246
|
)
|
|
@@ -258,7 +256,7 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
258
256
|
# try:
|
|
259
257
|
# curr=self.energyScanArgs.get_value()
|
|
260
258
|
# except:
|
|
261
|
-
#
|
|
259
|
+
# self.log.exception('EnergyScan: error getting energy scan parameters')
|
|
262
260
|
# self.emit('scanStatusChanged', ("Error getting energy scan parameters",))
|
|
263
261
|
# return False
|
|
264
262
|
# try:
|
|
@@ -273,14 +271,12 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
273
271
|
|
|
274
272
|
try:
|
|
275
273
|
# self.energyScanArgs.set_value(curr)
|
|
276
|
-
|
|
274
|
+
self.log.debug(
|
|
277
275
|
"EnergyScan: current energy scan parameters (%s, %s, %s, %s)"
|
|
278
276
|
% (element, edge, directory, prefix)
|
|
279
277
|
)
|
|
280
278
|
except Exception:
|
|
281
|
-
|
|
282
|
-
"EnergyScan: error setting energy scan parameters"
|
|
283
|
-
)
|
|
279
|
+
self.log.exception("EnergyScan: error setting energy scan parameters")
|
|
284
280
|
self.emit("scanStatusChanged", ("Error setting energy scan parameters",))
|
|
285
281
|
return False
|
|
286
282
|
try:
|
|
@@ -291,7 +287,7 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
291
287
|
except Exception:
|
|
292
288
|
import traceback
|
|
293
289
|
|
|
294
|
-
|
|
290
|
+
self.log.error(
|
|
295
291
|
"EnergyScan: problem calling sequence %s" % traceback.format_exc()
|
|
296
292
|
)
|
|
297
293
|
self.emit("scanStatusChanged", ("Error problem spec macro",))
|
|
@@ -330,12 +326,10 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
330
326
|
self.ready_event.set()
|
|
331
327
|
|
|
332
328
|
def scanCommandFinished(self, result, *args):
|
|
333
|
-
|
|
329
|
+
self.log.debug("EnergyScan: energy scan result is %s" % result)
|
|
334
330
|
with cleanup(self.ready_event.set):
|
|
335
331
|
self.scanInfo["endTime"] = time.strftime("%Y-%m-%d %H:%M:%S")
|
|
336
|
-
|
|
337
|
-
"EnergyScan: energy scan result is %s" % result
|
|
338
|
-
)
|
|
332
|
+
self.log.debug("EnergyScan: energy scan result is %s" % result)
|
|
339
333
|
self.scanning = False
|
|
340
334
|
if result == -1:
|
|
341
335
|
self.storeEnergyScan()
|
|
@@ -413,7 +407,7 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
413
407
|
# f=open(rawScanFile, "w")
|
|
414
408
|
# pyarch_f=open(archiveRawScanFile, "w")
|
|
415
409
|
# except:
|
|
416
|
-
#
|
|
410
|
+
# self.log.exception("could not create raw scan files")
|
|
417
411
|
# self.storeEnergyScan()
|
|
418
412
|
# self.emit("energyScanFailed", ())
|
|
419
413
|
# return
|
|
@@ -462,14 +456,14 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
462
456
|
comm = ""
|
|
463
457
|
|
|
464
458
|
self.thEdge = self.xanes.e_edge
|
|
465
|
-
|
|
459
|
+
self.log.info(
|
|
466
460
|
"th. Edge %s ; chooch results are pk=%f, ip=%f, rm=%f"
|
|
467
461
|
% (self.thEdge, pk, ip, rm)
|
|
468
462
|
)
|
|
469
463
|
logging.info("math.fabs(self.thEdge - ip) %s" % math.fabs(self.thEdge - ip))
|
|
470
464
|
logging.info("self.thEdgeThreshold %s" % self.thEdgeThreshold)
|
|
471
465
|
|
|
472
|
-
|
|
466
|
+
self.log.warning(
|
|
473
467
|
"EnergyScan: calculated peak (%f) is more that 20eV %s the theoretical value (%f). Please check your scan and choose the energies manually"
|
|
474
468
|
% (
|
|
475
469
|
savpk,
|
|
@@ -488,7 +482,7 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
488
482
|
% (savpk, self.thEdge)
|
|
489
483
|
)
|
|
490
484
|
|
|
491
|
-
|
|
485
|
+
self.log.warning(
|
|
492
486
|
"EnergyScan: calculated peak (%f) is more that 20eV %s the theoretical value (%f). Please check your scan and choose the energies manually"
|
|
493
487
|
% (
|
|
494
488
|
savpk,
|
|
@@ -563,7 +557,7 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
563
557
|
for i in range(len(chooch_graph_x)):
|
|
564
558
|
chooch_graph_x[i] = chooch_graph_x[i] / 1000.0
|
|
565
559
|
|
|
566
|
-
|
|
560
|
+
self.log.info("<chooch> Saving png")
|
|
567
561
|
# prepare to save png files
|
|
568
562
|
title = "%10s %6s %6s\n%10s %6.2f %6.2f\n%10s %6.2f %6.2f" % (
|
|
569
563
|
"energy",
|
|
@@ -596,25 +590,25 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
596
590
|
escan_archivepng = os.path.extsep.join((scanArchiveFilePrefix, "png"))
|
|
597
591
|
self.scanInfo["jpegChoochFileFullPath"] = str(escan_archivepng)
|
|
598
592
|
try:
|
|
599
|
-
|
|
593
|
+
self.log.info(
|
|
600
594
|
"Rendering energy scan and Chooch graphs to PNG file : %s", escan_png
|
|
601
595
|
)
|
|
602
596
|
canvas.print_figure(escan_png, dpi=80)
|
|
603
597
|
except Exception:
|
|
604
|
-
|
|
598
|
+
self.log.exception("could not print figure")
|
|
605
599
|
try:
|
|
606
|
-
|
|
600
|
+
self.log.info(
|
|
607
601
|
"Saving energy scan to archive directory for ISPyB : %s",
|
|
608
602
|
escan_archivepng,
|
|
609
603
|
)
|
|
610
604
|
canvas.print_figure(escan_archivepng, dpi=80)
|
|
611
605
|
except Exception:
|
|
612
|
-
|
|
606
|
+
self.log.exception("could not save figure")
|
|
613
607
|
|
|
614
608
|
self.storeEnergyScan()
|
|
615
609
|
self.scanInfo = None
|
|
616
610
|
|
|
617
|
-
|
|
611
|
+
self.log.info("<chooch> returning")
|
|
618
612
|
self.emit(
|
|
619
613
|
"chooch_finished",
|
|
620
614
|
(
|
|
@@ -686,7 +680,7 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
686
680
|
try:
|
|
687
681
|
return HWR.beamline.energy.get_value()
|
|
688
682
|
except Exception:
|
|
689
|
-
|
|
683
|
+
self.log.exception("EnergyScan: couldn't read energy")
|
|
690
684
|
return None
|
|
691
685
|
elif (
|
|
692
686
|
self.energy2WavelengthConstant is not None
|
|
@@ -711,7 +705,7 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
711
705
|
try:
|
|
712
706
|
return self.energy2wavelength(HWR.beamline.energy.get_value())
|
|
713
707
|
except Exception:
|
|
714
|
-
|
|
708
|
+
self.log.exception("EnergyScan: couldn't read energy")
|
|
715
709
|
return None
|
|
716
710
|
else:
|
|
717
711
|
return self.defaultWavelength
|
|
@@ -724,41 +718,37 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
724
718
|
return limits
|
|
725
719
|
|
|
726
720
|
def startMoveEnergy(self, value, wait=True):
|
|
727
|
-
|
|
721
|
+
self.log.info("Moving energy to (%s)" % value)
|
|
728
722
|
try:
|
|
729
723
|
value = float(value)
|
|
730
724
|
except (TypeError, ValueError) as diag:
|
|
731
|
-
|
|
725
|
+
self.log.error("EnergyScan: invalid energy (%s)" % value)
|
|
732
726
|
return False
|
|
733
727
|
|
|
734
728
|
try:
|
|
735
729
|
curr_energy = HWR.beamline.energy.get_value()
|
|
736
730
|
except Exception:
|
|
737
|
-
|
|
738
|
-
"EnergyScan: couldn't get current energy"
|
|
739
|
-
)
|
|
731
|
+
self.log.exception("EnergyScan: couldn't get current energy")
|
|
740
732
|
curr_energy = None
|
|
741
733
|
|
|
742
734
|
if value != curr_energy:
|
|
743
|
-
|
|
735
|
+
self.log.info("Moving energy: checking limits")
|
|
744
736
|
try:
|
|
745
737
|
lims = HWR.beamline.energy.get_limits()
|
|
746
738
|
except Exception:
|
|
747
|
-
|
|
748
|
-
"EnergyScan: couldn't get energy limits"
|
|
749
|
-
)
|
|
739
|
+
self.log.exception("EnergyScan: couldn't get energy limits")
|
|
750
740
|
in_limits = False
|
|
751
741
|
else:
|
|
752
742
|
in_limits = value >= lims[0] and value <= lims[1]
|
|
753
743
|
|
|
754
744
|
if in_limits:
|
|
755
|
-
|
|
745
|
+
self.log.info("Moving energy: limits ok")
|
|
756
746
|
self.previousResolution = None
|
|
757
747
|
if HWR.beamline.resolution is not None:
|
|
758
748
|
try:
|
|
759
749
|
self.previousResolution = HWR.beamline.resolution.get_value()
|
|
760
750
|
except Exception:
|
|
761
|
-
|
|
751
|
+
self.log.exception(
|
|
762
752
|
"EnergyScan: couldn't get current resolution"
|
|
763
753
|
)
|
|
764
754
|
self.moveEnergyCmdStarted()
|
|
@@ -776,7 +766,7 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
776
766
|
else:
|
|
777
767
|
gevent.spawn(change_egy)
|
|
778
768
|
else:
|
|
779
|
-
|
|
769
|
+
self.log.error(
|
|
780
770
|
"EnergyScan: energy (%f) out of limits (%s)" % (value, lims)
|
|
781
771
|
)
|
|
782
772
|
return False
|
|
@@ -788,9 +778,7 @@ class SOLEILEnergyScan(HardwareObject):
|
|
|
788
778
|
def set_wavelength(self, value, wait=True):
|
|
789
779
|
energy_val = self.energy2wavelength(value)
|
|
790
780
|
if energy_val is None:
|
|
791
|
-
|
|
792
|
-
"EnergyScan: unable to convert wavelength to energy"
|
|
793
|
-
)
|
|
781
|
+
self.log.error("EnergyScan: unable to convert wavelength to energy")
|
|
794
782
|
return False
|
|
795
783
|
return self.startMoveEnergy(energy_val, wait)
|
|
796
784
|
|
|
@@ -125,7 +125,7 @@ class SOLEILGuillotine(BaseHardwareObjects.HardwareObject):
|
|
|
125
125
|
"tangoname_pss"
|
|
126
126
|
) # PyTango.DeviceProxy('I11-MA-CE/PSS/DB_DATA')
|
|
127
127
|
except Exception:
|
|
128
|
-
|
|
128
|
+
self.log.error(
|
|
129
129
|
"Guillotine I11-MA-CE/PSS/DB_DATA: tangopssDevice is not defined "
|
|
130
130
|
)
|
|
131
131
|
|
|
@@ -133,7 +133,7 @@ class SOLEILGuillotine(BaseHardwareObjects.HardwareObject):
|
|
|
133
133
|
self.memIntChan = self.get_channel_object("memInt")
|
|
134
134
|
self.connect(self.memIntChan, "update", self.updateGuillotine)
|
|
135
135
|
else:
|
|
136
|
-
|
|
136
|
+
self.log.error("Guillotine: tangopssDevice is not defined ")
|
|
137
137
|
|
|
138
138
|
def shutterStateChanged(self, value):
|
|
139
139
|
#
|
|
@@ -45,7 +45,7 @@ class SOLEILISPyBClient(ISPyBClient):
|
|
|
45
45
|
hdlr.setFormatter(formatter)
|
|
46
46
|
logger.addHandler(hdlr)
|
|
47
47
|
except Exception:
|
|
48
|
-
|
|
48
|
+
self.log.exception("")
|
|
49
49
|
|
|
50
50
|
logger.setLevel(logging.INFO)
|
|
51
51
|
|
|
@@ -58,7 +58,7 @@ class SOLEILISPyBClient(ISPyBClient):
|
|
|
58
58
|
# Initialize ldap
|
|
59
59
|
self.ldapConnection = self.get_object_by_role("ldapServer")
|
|
60
60
|
if self.ldapConnection is None:
|
|
61
|
-
|
|
61
|
+
self.log.debug("LDAP Server is not available")
|
|
62
62
|
|
|
63
63
|
self.loginType = self.get_property("loginType") or "proposal"
|
|
64
64
|
self.loginTranslate = self.get_property("loginTranslate") or True
|
|
@@ -100,7 +100,7 @@ class SOLEILISPyBClient(ISPyBClient):
|
|
|
100
100
|
return
|
|
101
101
|
except Exception:
|
|
102
102
|
print(traceback.print_exc())
|
|
103
|
-
|
|
103
|
+
self.log.exception(_CONNECTION_ERROR_MSG)
|
|
104
104
|
return
|
|
105
105
|
try:
|
|
106
106
|
proposals = HWR.beamline.session["proposals"]
|
|
@@ -111,19 +111,19 @@ class SOLEILISPyBClient(ISPyBClient):
|
|
|
111
111
|
try:
|
|
112
112
|
self._translations[code]["ldap"] = proposal.ldap
|
|
113
113
|
except AttributeError:
|
|
114
|
-
|
|
114
|
+
self.log.exception("")
|
|
115
115
|
try:
|
|
116
116
|
self._translations[code]["ispyb"] = proposal.ispyb
|
|
117
117
|
except AttributeError:
|
|
118
|
-
|
|
118
|
+
self.log.exception("")
|
|
119
119
|
try:
|
|
120
120
|
self._translations[code]["gui"] = proposal.gui
|
|
121
121
|
except AttributeError:
|
|
122
|
-
|
|
122
|
+
self.log.exception("")
|
|
123
123
|
except IndexError:
|
|
124
|
-
|
|
124
|
+
self.log.exception("")
|
|
125
125
|
except Exception:
|
|
126
|
-
|
|
126
|
+
self.log.exception("")
|
|
127
127
|
|
|
128
128
|
def translate(self, code, what):
|
|
129
129
|
"""
|
|
@@ -187,7 +187,7 @@ class SOLEILISPyBClient(ISPyBClient):
|
|
|
187
187
|
logging.debug("SOLEIL ISPyBClient - %s is %s " % (prop, ispyb_path))
|
|
188
188
|
mx_collect_dict[prop] = ispyb_path
|
|
189
189
|
except Exception:
|
|
190
|
-
|
|
190
|
+
self.log.exception("")
|
|
191
191
|
|
|
192
192
|
def prepare_image_for_lims(self, image_dict):
|
|
193
193
|
for prop in ["jpegThumbnailFileFullPath", "jpegFileFullPath"]:
|
|
@@ -196,7 +196,7 @@ class SOLEILISPyBClient(ISPyBClient):
|
|
|
196
196
|
ispyb_path = HWR.beamline.session.path_to_ispyb(path)
|
|
197
197
|
image_dict[prop] = ispyb_path
|
|
198
198
|
except Exception:
|
|
199
|
-
|
|
199
|
+
self.log.exception("")
|
|
200
200
|
|
|
201
201
|
|
|
202
202
|
def test_hwo(hwo):
|
|
@@ -195,7 +195,7 @@ class SOLEILMachineInfo(HardwareObject):
|
|
|
195
195
|
self.cryojet_in_changed(self.chan_cryojet_in.get_value())
|
|
196
196
|
self.chan_cryojet_in.connect_signal("update", self.cryojet_in_changed)
|
|
197
197
|
else:
|
|
198
|
-
|
|
198
|
+
self.log.debug("MachineInfo: Cryojet channel not defined")
|
|
199
199
|
|
|
200
200
|
self.chan_sample_temperature = self.get_channel_object("sampleTemp")
|
|
201
201
|
if self.chan_sample_temperature is not None:
|
|
@@ -240,7 +240,7 @@ class SOLEILMachineInfo(HardwareObject):
|
|
|
240
240
|
|
|
241
241
|
def cryojet_in_changed(self, value):
|
|
242
242
|
"""Cryojet in/out value changed"""
|
|
243
|
-
|
|
243
|
+
self.log.debug("cryojet_in_changed: %s" % value)
|
|
244
244
|
self.values_list[4]["in_range"] = False
|
|
245
245
|
self.values_list[4]["bold"] = True
|
|
246
246
|
|
|
@@ -259,9 +259,7 @@ class SOLEILMachineInfo(HardwareObject):
|
|
|
259
259
|
% self.chan_sample_temperature.get_value()
|
|
260
260
|
)
|
|
261
261
|
else:
|
|
262
|
-
|
|
263
|
-
"chan_sample_temperature: %s" % self.chan_sample_temperature
|
|
264
|
-
)
|
|
262
|
+
self.log.debug("chan_sample_temperature: %s" % self.chan_sample_temperature)
|
|
265
263
|
self.re_emit_values()
|
|
266
264
|
|
|
267
265
|
def mach_current_changed(self, value):
|
|
@@ -363,9 +361,7 @@ class SOLEILMachineInfo(HardwareObject):
|
|
|
363
361
|
self.values_list[5]["value"] = "Dewar level in range"
|
|
364
362
|
self.values_list[5]["in_range"] = True
|
|
365
363
|
|
|
366
|
-
|
|
367
|
-
"chan_sc_auto_refill %s" % self.chan_sc_auto_refill.get_value()
|
|
368
|
-
)
|
|
364
|
+
self.log.error("chan_sc_auto_refill %s" % self.chan_sc_auto_refill.get_value())
|
|
369
365
|
if self.chan_sc_auto_refill.get_value() == 0:
|
|
370
366
|
self.values_list[5]["value"] += ", refill OFF"
|
|
371
367
|
else:
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# -*- coding: utf-8 -*-
|
|
2
|
-
import logging
|
|
3
2
|
|
|
4
3
|
from PyTango import DeviceProxy
|
|
5
4
|
|
|
@@ -25,12 +24,12 @@ class SOLEILPss(HardwareObject):
|
|
|
25
24
|
try:
|
|
26
25
|
self.device = DeviceProxy(self.get_property("tangoname"))
|
|
27
26
|
except Exception:
|
|
28
|
-
|
|
27
|
+
self.log.error(
|
|
29
28
|
"%s: unknown pss device name", self.get_property("tangoname")
|
|
30
29
|
)
|
|
31
30
|
|
|
32
31
|
if self.get_property("hutch") not in ("optical", "experimental"):
|
|
33
|
-
|
|
32
|
+
self.log.error(
|
|
34
33
|
"SOLEILPss.init Hutch property %s is not correct",
|
|
35
34
|
self.get_property("hutch"),
|
|
36
35
|
)
|
|
@@ -48,6 +47,6 @@ class SOLEILPss(HardwareObject):
|
|
|
48
47
|
return self.get_state(self.stateChan.get_value())
|
|
49
48
|
|
|
50
49
|
def value_changed(self, value):
|
|
51
|
-
|
|
50
|
+
self.log.info("%s: SOLEILPss.valueChanged, %s", self.id, value)
|
|
52
51
|
state = self.get_state(value)
|
|
53
52
|
self.emit("wagoStateChanged", (state,))
|
|
@@ -60,7 +60,7 @@ class TangoDCMotor(HardwareObject):
|
|
|
60
60
|
try:
|
|
61
61
|
self.threshold = float(threshold)
|
|
62
62
|
except Exception:
|
|
63
|
-
|
|
63
|
+
self.log.exception("")
|
|
64
64
|
|
|
65
65
|
self.set_is_ready(True)
|
|
66
66
|
try:
|
|
@@ -81,13 +81,11 @@ class TangoDCMotor(HardwareObject):
|
|
|
81
81
|
self.positionValue = value
|
|
82
82
|
if abs(float(value) - self.old_value) > self.threshold:
|
|
83
83
|
try:
|
|
84
|
-
#
|
|
84
|
+
# self.log.error("%s: TangoDCMotor new position , %s", self.name(), value)
|
|
85
85
|
self.emit("valueChanged", (value,))
|
|
86
86
|
self.old_value = value
|
|
87
87
|
except Exception:
|
|
88
|
-
|
|
89
|
-
"%s: TangoDCMotor not responding, %s", self.id, ""
|
|
90
|
-
)
|
|
88
|
+
self.log.error("%s: TangoDCMotor not responding, %s", self.id, "")
|
|
91
89
|
self.old_value = value
|
|
92
90
|
|
|
93
91
|
def is_ready(self):
|
|
@@ -116,14 +114,14 @@ class TangoDCMotor(HardwareObject):
|
|
|
116
114
|
|
|
117
115
|
def get_limits(self):
|
|
118
116
|
try:
|
|
119
|
-
|
|
117
|
+
self.log.info(
|
|
120
118
|
"TangoDCMotor.get_limits: trying to get limits for motor_name %s "
|
|
121
119
|
% (self.motor_name)
|
|
122
120
|
)
|
|
123
121
|
limits = self.ho.getMotorLimits(
|
|
124
122
|
self.motor_name
|
|
125
123
|
) # limitsCommand() # self.ho.getMotorLimits(self.motor_name)
|
|
126
|
-
|
|
124
|
+
self.log.info(
|
|
127
125
|
"TangoDCMotor.get_limits: Getting limits for %s -- %s "
|
|
128
126
|
% (self.motor_name, str(limits))
|
|
129
127
|
)
|
|
@@ -131,7 +129,7 @@ class TangoDCMotor(HardwareObject):
|
|
|
131
129
|
limits = numpy.array([-10000, 10000])
|
|
132
130
|
except Exception:
|
|
133
131
|
# import traceback
|
|
134
|
-
#
|
|
132
|
+
# self.log.info("TangoDCMotor.get_limits: Cannot get limits for %s.\nException %s " % (self.motor_name, traceback.print_exc()))
|
|
135
133
|
if self.motor_name in [
|
|
136
134
|
"detector_distance",
|
|
137
135
|
"detector_horizontal",
|
|
@@ -149,12 +147,10 @@ class TangoDCMotor(HardwareObject):
|
|
|
149
147
|
if limits is None:
|
|
150
148
|
try:
|
|
151
149
|
limits = self.get_property("min"), self.get_property("max")
|
|
152
|
-
|
|
153
|
-
"TangoDCMotor.get_limits: %.4f ***** %.4f" % limits
|
|
154
|
-
)
|
|
150
|
+
self.log.info("TangoDCMotor.get_limits: %.4f ***** %.4f" % limits)
|
|
155
151
|
limits = numpy.array(limits)
|
|
156
152
|
except Exception:
|
|
157
|
-
#
|
|
153
|
+
# self.log.info("TangoDCMotor.get_limits: Cannot get limits for %s" % self.name())
|
|
158
154
|
limits = None
|
|
159
155
|
return limits
|
|
160
156
|
|
|
@@ -210,9 +206,7 @@ class TangoDCMotor(HardwareObject):
|
|
|
210
206
|
type(value),
|
|
211
207
|
)
|
|
212
208
|
logging.info("TangoDCMotor: move. motor will go to %s " % str(value))
|
|
213
|
-
|
|
214
|
-
"TangoDCMotor.move to absolute position: %.3f" % value
|
|
215
|
-
)
|
|
209
|
+
self.log.info("TangoDCMotor.move to absolute position: %.3f" % value)
|
|
216
210
|
logging.getLogger("TangoClient").info(
|
|
217
211
|
"TangoDCMotor move. Trying to go to %s: that is a '%s'",
|
|
218
212
|
value,
|
|
@@ -232,7 +226,7 @@ class TangoDCMotor(HardwareObject):
|
|
|
232
226
|
# logging.info("TangoDCMotor: value %s " % str(value))
|
|
233
227
|
|
|
234
228
|
def stop(self):
|
|
235
|
-
|
|
229
|
+
self.log.info("TangoDCMotor.stop")
|
|
236
230
|
stopcmd = self.get_command_object("Stop")()
|
|
237
231
|
if not stopcmd:
|
|
238
232
|
stopcmd = TangoCommand("stopcmd", "Stop", self.tangoname)
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import enum
|
|
2
|
-
import logging
|
|
3
2
|
import time
|
|
4
3
|
|
|
5
4
|
from gevent import Timeout
|
|
@@ -72,27 +71,27 @@ class SardanaMotor(AbstractMotor):
|
|
|
72
71
|
|
|
73
72
|
self.actuator_name = self.get_property("actuator_name")
|
|
74
73
|
if not self.name:
|
|
75
|
-
|
|
74
|
+
self.log.info(
|
|
76
75
|
"Undefined property actuator_name in xml. Applying name during instance creation."
|
|
77
76
|
)
|
|
78
77
|
self.actuator_name = self.name
|
|
79
78
|
|
|
80
79
|
self.threshold = self.get_property("threshold", self.threshold_default)
|
|
81
|
-
|
|
80
|
+
self.log.debug(
|
|
82
81
|
"Motor {0} threshold = {1}".format(self.actuator_name, self.threshold)
|
|
83
82
|
)
|
|
84
83
|
|
|
85
84
|
self.move_threshold = self.get_property(
|
|
86
85
|
"move_threshold", self.move_threshold_default
|
|
87
86
|
)
|
|
88
|
-
|
|
87
|
+
self.log.debug(
|
|
89
88
|
"Motor {0} move_threshold = {1}".format(
|
|
90
89
|
self.actuator_name, self.move_threshold
|
|
91
90
|
)
|
|
92
91
|
)
|
|
93
92
|
|
|
94
93
|
self.polling = self.get_property("interval", self.polling_default)
|
|
95
|
-
|
|
94
|
+
self.log.debug(
|
|
96
95
|
"Motor {0} polling = {1}".format(self.actuator_name, self.polling)
|
|
97
96
|
)
|
|
98
97
|
|
|
@@ -5,7 +5,6 @@ Contains information regarding the current session and methods to
|
|
|
5
5
|
access and manipulate this information.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
import logging
|
|
9
8
|
import os
|
|
10
9
|
import socket
|
|
11
10
|
import time
|
|
@@ -94,7 +93,7 @@ class Session(HardwareObject):
|
|
|
94
93
|
domain = socket.getfqdn().split(".")
|
|
95
94
|
self.email_extension = ".".join((domain[-2], domain[-1]))
|
|
96
95
|
except (TypeError, IndexError):
|
|
97
|
-
|
|
96
|
+
self.log.exception("")
|
|
98
97
|
|
|
99
98
|
self.set_base_data_directories(
|
|
100
99
|
file_info["base_directory"],
|