import logging _log=logging.getLogger(__name__) import time from epics.ca import pend_event class PositionsNotReached(Exception): pass def assert_tweaker_positions(targets, timeout=60.0): """ wait for each of the given motors to have specified positions within tolerance :param targets: [ (motor, target_position, tolerance), ... ] :return: None :raises: PositionsNotReached """ num_motors=len(targets) timeisup=timeout+time.time() while time.time()=abs(cur-target): count+=1 if notSim: pend_event(0.1) if count==num_motors: break if notSim: pend_event(0.1) if count!=num_motors: raise PositionsNotReached("failed to reach target positions: {}".format("#".join(summary))) def assert_motor_positions(targets, timeout=60.0): """ wait for each of the given motors to have specified positions within tolerance :param targets: [ (motor, target_position, tolerance), ... ] :return: None :raises: PositionsNotReached """ num_motors=len(targets) timeisup=timeout+time.time() while time.time()=abs(cur-target): count+=1 pend_event(0.1) if count==num_motors: break pend_event() if count!=num_motors: raise PositionsNotReached("failed to reach target positions: {}".format("#".join(summary)))