Source code for QInstrument.instruments.IPGPhotonics.IPGLaser.fake

from QInstrument.lib.QFakeInstrument import QFakeInstrument
from QInstrument.instruments.IPGPhotonics.IPGLaser.instrument import QIPGLaser


[docs] class QFakeIPGLaser(QFakeInstrument, QIPGLaser): '''Fake IPG laser for UI development without hardware. IPGLaser properties do not use the ``_register()`` helper pattern — they derive from a hardware status word via bespoke getters — so this fake registers each property explicitly with ``_store``-backed getters rather than relying on MRO auto-mock interception. '''
[docs] def status(self) -> dict[str, bool | float]: '''Return all polled status properties from the in-memory store. Overrides the real ``status()`` to avoid calling ``_flags()`` and ``_getPower()``, which would attempt serial communication. ''' return { 'power_supply': self._store.get('power_supply', True), 'keyswitch': self._store.get('keyswitch', True), 'aiming': self._store.get('aiming', False), 'emission': self._store.get('emission', False), 'fault': self._store.get('fault', False), 'power': self._store.get('power', 0.), }
def _registerProperties(self) -> None: self._minimum_current = 10. self.registerProperty( 'current', ptype=float, getter=lambda: self._store.get('current', 0.), setter=lambda v: self._store.__setitem__( 'current', min(float(v), self._store.get('maximum_current', 100.))), minimum=0., maximum=100., debounce=500) self.registerProperty( 'maximum_current', ptype=float, getter=lambda: self._store.get('maximum_current', 100.), setter=lambda v: self._store.__setitem__( 'maximum_current', float(v)), minimum=0., maximum=100.) self.registerProperty( 'aiming', ptype=bool, getter=lambda: self._store.get('aiming', False), setter=lambda v: self._store.__setitem__('aiming', bool(v))) self.registerProperty( 'emission', ptype=bool, getter=lambda: self._store.get('emission', False), setter=lambda v: self._store.__setitem__('emission', bool(v))) self.registerProperty( 'power', ptype=float, setter=None, getter=lambda: self._store.get('power', 0.)) self.registerProperty( 'power_supply', ptype=bool, setter=None, getter=lambda: self._store.get('power_supply', True)) self.registerProperty( 'keyswitch', ptype=bool, setter=None, getter=lambda: self._store.get('keyswitch', True)) self.registerProperty( 'fault', ptype=bool, setter=None, getter=lambda: self._store.get('fault', False)) self.registerProperty( 'minimum_current', ptype=float, setter=None, getter=lambda: self._minimum_current) self.registerProperty( 'firmware', ptype=str, setter=None, getter=lambda: self._store.get('firmware', 'Fake IPG v1.0')) self.registerProperty( 'temperature', ptype=float, setter=None, getter=lambda: self._store.get('temperature', 25.)) self.identification = 'Fake IPG Fiber Laser'
[docs] def identify(self) -> bool: return True
__all__ = ['QFakeIPGLaser']