def saveEntries(self, type="float", iters=None):
     timeEntry = self.time.get()
     if not iters:
         time = float(timeEntry)
         if time < 0:
             raise ValueError(
                 "Invalid pause time: " + self.timeEntry +
                 "; you cannot pause for a negative amount of time.")
         self.time.expression = False
     else:
         self.recursiveIterCheck(iters, timeEntry, self.inputCheckForPause,
                                 ())
         self.time.expression = True
     Step.saveEntries(self)
    def saveEntries(self, type="int", iters=None):
        rate = self.rate.get()
        cycles = self.nCycles.get()

        # Check if valve entries are ok for all loop iterations.
        valves = []
        allInt = True
        for v in self.valveEntries:
            v0 = v.get()
            valves.append(v0)
            try:
                v1 = int(v0)
                if v1 not in self.btndict:
                    raise ValueError(
                        v0 +
                        " in pump step is not a valid valve. Valid valves are "
                        + self.btndict["AvailablePinsStatement"] + ".")
                v.expression = False
            except:
                if not iters:
                    raise ValueError(
                        v0 +
                        " in pump step is not a valid valve. Valid valves are "
                        + self.btndict["AvailablePinsStatement"] + ".")
                else:  #check if valid expression fo valve
                    self.recursiveIterCheck(iters, v0,
                                            self.checkValidValveEntry, ())
                    v.expression = True
                    allInt = False
        if allInt:
            if len(set(valves)) < 3:
                raise ValueError("There are duplicate valve entries")
        else:
            self.recursiveIterCheck(iters, valves, self.checkDuplicateValves,
                                    ())

        try:
            rate1 = int(rate)
            if rate1 < 0:
                raise ValueError(
                    rate +
                    " is not a valid rate for a pump step. Rates must be positive integers."
                )
            self.rate.expression = False
        except:
            if not iters:
                raise ValueError(
                    rate +
                    " is not a valid rate for a pump step. Rates must be positive integers."
                )
            else:  #check if valid expression.
                self.recursiveIterCheck(iters, rate, self.checkValidRate, ())
                self.rate.expression = True

        try:
            try:
                cycles1 = int(cycles)
            except:
                if not iters:
                    raise ValueError(
                        cycles +
                        " is not a valid number of cycles for a pump step. The number of cycles must"
                        " be either a positive integer or -1 to pump indefinitely until interupted."
                    )
                else:  # check if valid expression
                    self.recursiveIterCheck(iters, cycles,
                                            self.checkValidCycles, ())
                    self.nCycles.expression = True
                    Step.saveEntries(self, type="int", iters=iters)
                    return

            if cycles1 == -1:
                if iters:
                    raise ValueError(
                        "Pump steps can pump indefinitely only if they"
                        " are the final step in a protocol.")
                else:
                    if hasattr(self, 'last') and not self.last:
                        raise ValueError(
                            "Pump steps can pump indefinitely only if they"
                            " are the final step in a protocol.")

            if cycles1 < -1:
                if iters:
                    raise ValueError(
                        cycles +
                        " is not a valid number of cycles for a pump step. The number of cycles must be"
                        " a positive integer.")
                else:
                    raise ValueError(
                        cycles +
                        " is not a valid number of cycles for a pump step. The number of cycles must be"
                        " a positive integer, or -1 on the final step of a protocol to pump indefinitely."
                    )
            self.nCycles.expression = False
        except ValueError as E:
            raise E

        Step.saveEntries(self, type="int", iters=iters)