parameters: (
          self,
          mount: Union[top_types.Mount, PipettePair],
          volume: Optional[float] = None,
          rate: float = 1.0,
      )
docstring: 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
docstring_summary: 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
docstring_tokens: 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
function: 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)
function_tokens: 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 )