def scan_temperature(self, measure, temperature, rate, delay=1):
        """Performs a temperature scan.

        Measures until the target temperature is reached.

        :param measure: A callable called repeatedly until stability at target
            temperature is reached.
        :param temperature: The target temperature in kelvin.
        :param rate: The sweep rate in kelvin per minute.
        :param delay: The time delay between each call to measure in seconds.

        """
        if not hasattr(measure, '__call__'):
            raise TypeError('measure parameter not callable.')

        self.set_temperature(temperature, rate, 'no overshoot', wait_for_stability=False)
        start = datetime.datetime.now()
        while True:
            # The PPMS needs some time to update the status code, we therefore ignore it for 10s.
            if (self.system_status['temperature'] == 'normal stability at target temperature' and
                (datetime.datetime.now() - start > datetime.timedelta(seconds=10))):
                break
            measure()
            time.sleep(delay)
def scan_temperature ( self , measure , temperature , rate , delay = 1 ) : if not hasattr ( measure , '__call__' ) : raise TypeError ( 'measure parameter not callable.' ) self . set_temperature ( temperature , rate , 'no overshoot' , wait_for_stability = False ) start = datetime . datetime . now ( ) while True : if ( self . system_status [ 'temperature' ] == 'normal stability at target temperature' and ( datetime . datetime . now ( ) - start > datetime . timedelta ( seconds = 10 ) ) ) : break measure ( ) time . sleep ( delay )
Performs a temperature scan.

        Measures until the target temperature is reached.

        :param measure: A callable called repeatedly until stability at target
            temperature is reached.
        :param temperature: The target temperature in kelvin.
        :param rate: The sweep rate in kelvin per minute.
        :param delay: The time delay between each call to measure in seconds.