(
        self,
        mount: Union[top_types.Mount, PipettePair],
        volume: Optional[float] = None,
        rate: float = 1.0,
    )
Dispense a volume of liquid in microliters(uL) using this pipette
        at the current location. If no volume is specified, `dispense` will
        dispense all volume currently present in pipette

        mount : Mount.LEFT or Mount.RIGHT
        volume : [float] The number of microliters to dispense
        rate : [float] Set plunger speed for this dispense, where
            speed = rate * dispense_speed
Dispense a volume of liquid in microliters(uL) using this pipette
        at the current location. If no volume is specified, `dispense` will
        dispense all volume currently present in pipette
Dispense a volume of liquid in microliters ( uL ) using this pipette at the current location . If no volume is specified dispense will dispense all volume currently present in pipette
async def dispense(
        self,
        mount: Union[top_types.Mount, PipettePair],
        volume: Optional[float] = None,
        rate: float = 1.0,
    ):
        """
        Dispense a volume of liquid in microliters(uL) using this pipette
        at the current location. If no volume is specified, `dispense` will
        dispense all volume currently present in pipette

        mount : Mount.LEFT or Mount.RIGHT
        volume : [float] The number of microliters to dispense
        rate : [float] Set plunger speed for this dispense, where
            speed = rate * dispense_speed
        """
        instruments = self._instruments_for(mount)
        self._ready_for_tip_action(instruments, HardwareAction.DISPENSE)

        plunger_currents = {
            Axis.of_plunger(instr[1]): instr[0].config.plunger_current
            for instr in instruments
        }
        if volume is None:
            disp_vol = tuple(instr[0].current_volume for instr in instruments)
            mod_log.debug(
                "No dispense volume specified. Dispensing all "
                "remaining liquid ({}uL) from pipette".format(disp_vol)
            )
        else:
            disp_vol = tuple(volume for instr in instruments)

        # Ensure we don't dispense more than the current volume
        disp_vol = tuple(
            min(instr[0].current_volume, vol)
            for instr, vol in zip(instruments, disp_vol)
        )

        if all([vol == 0 for vol in disp_vol]):
            return
        elif 0 in disp_vol:
            raise PairedPipetteConfigValueError("Cannot only dispense from one pipette")

        dist = tuple(
            self._plunger_position(instr[0], instr[0].current_volume - vol, "dispense")
            for instr, vol in zip(instruments, disp_vol)
        )
        speed = min(
            self._plunger_speed(
                instr[0], instr[0].dispense_flow_rate * rate, "dispense"
            )
            for instr in instruments
        )

        try:
            self._backend.set_active_current(plunger_currents)
            await self._move_plunger(mount, dist, speed=speed)
        except Exception:
            self._log.exception("Dispense failed")
            for instr in instruments:
                instr[0].set_current_volume(0)
            raise
        else:
            for instr, vol in zip(instruments, disp_vol):
                instr[0].remove_current_volume(vol)
async def dispense ( self , mount : Union [ top_types . Mount , PipettePair ] , volume : Optional [ float ] = None , rate : float = 1.0 , ) : instruments = self . _instruments_for ( mount ) self . _ready_for_tip_action ( instruments , HardwareAction . DISPENSE ) plunger_currents = { Axis . of_plunger ( instr [ 1 ] ) : instr [ 0 ] . config . plunger_current for instr in instruments } if volume is None : disp_vol = tuple ( instr [ 0 ] . current_volume for instr in instruments ) mod_log . debug ( "No dispense volume specified. Dispensing all " "remaining liquid ({}uL) from pipette" . format ( disp_vol ) ) else : disp_vol = tuple ( volume for instr in instruments ) # Ensure we don't dispense more than the current volume disp_vol = tuple ( min ( instr [ 0 ] . current_volume , vol ) for instr , vol in zip ( instruments , disp_vol ) ) if all ( [ vol == 0 for vol in disp_vol ] ) : return elif 0 in disp_vol : raise PairedPipetteConfigValueError ( "Cannot only dispense from one pipette" ) dist = tuple ( self . _plunger_position ( instr [ 0 ] , instr [ 0 ] . current_volume - vol , "dispense" ) for instr , vol in zip ( instruments , disp_vol ) ) speed = min ( self . _plunger_speed ( instr [ 0 ] , instr [ 0 ] . dispense_flow_rate * rate , "dispense" ) for instr in instruments ) try : self . _backend . set_active_current ( plunger_currents ) await self . _move_plunger ( mount , dist , speed = speed ) except Exception : self . _log . exception ( "Dispense failed" ) for instr in instruments : instr [ 0 ] . set_current_volume ( 0 ) raise else : for instr , vol in zip ( instruments , disp_vol ) : instr [ 0 ] . remove_current_volume ( vol )