parameters: (
          self,
          location: Optional[Well] = None,
          radius: float = 1.0,
          v_offset: float = -1.0,
          speed: float = 60.0,
      )
return_statement: return self
docstring: Touch the pipette tip to the sides of a well, with the intent of
          removing left-over droplets
  
          :param location: If no location is passed, pipette will
                           touch tip at current well's edges
          :type location: :py:class:`.Well` or None
          :param radius: Describes the proportion of the target well's
                         radius. When `radius=1.0`, the pipette tip will move to
                         the edge of the target well; when `radius=0.5`, it will
                         move to 50% of the well's radius. Default: 1.0 (100%)
          :type radius: float
          :param v_offset: The offset in mm from the top of the well to touch tip
                           A positive offset moves the tip higher above the well,
                           while a negative offset moves it lower into the well
                           Default: -1.0 mm
          :type v_offset: float
          :param speed: The speed for touch tip motion, in mm/s.
                        Default: 60.0 mm/s, Max: 80.0 mm/s, Min: 20.0 mm/s
          :type speed: float
          :raises: ``NoTipAttachedError`` -- if no tip is attached to the pipette
          :raises RuntimeError: If no location is specified and location cache is
                                None. This should happen if `touch_tip` is called
                                without first calling a method that takes a
                                location (eg, :py:meth:`.aspirate`,
                                :py:meth:`dispense`)
          :returns: This instance
  
          .. note::
  
              This is behavior change from legacy API (which accepts any
              ``Placeable`` as the ``location`` parameter)
docstring_summary: Touch the pipette tip to the sides of a well, with the intent of
          removing left-over droplets
docstring_tokens: Touch the pipette tip to the sides of a well with the intent of removing left - over droplets
function: def touch_tip(
          self,
          location: Optional[Well] = None,
          radius: float = 1.0,
          v_offset: float = -1.0,
          speed: float = 60.0,
      ) -> InstrumentContext:
          """
          Touch the pipette tip to the sides of a well, with the intent of
          removing left-over droplets
  
          :param location: If no location is passed, pipette will
                           touch tip at current well's edges
          :type location: :py:class:`.Well` or None
          :param radius: Describes the proportion of the target well's
                         radius. When `radius=1.0`, the pipette tip will move to
                         the edge of the target well; when `radius=0.5`, it will
                         move to 50% of the well's radius. Default: 1.0 (100%)
          :type radius: float
          :param v_offset: The offset in mm from the top of the well to touch tip
                           A positive offset moves the tip higher above the well,
                           while a negative offset moves it lower into the well
                           Default: -1.0 mm
          :type v_offset: float
          :param speed: The speed for touch tip motion, in mm/s.
                        Default: 60.0 mm/s, Max: 80.0 mm/s, Min: 20.0 mm/s
          :type speed: float
          :raises: ``NoTipAttachedError`` -- if no tip is attached to the pipette
          :raises RuntimeError: If no location is specified and location cache is
                                None. This should happen if `touch_tip` is called
                                without first calling a method that takes a
                                location (eg, :py:meth:`.aspirate`,
                                :py:meth:`dispense`)
          :returns: This instance
  
          .. note::
  
              This is behavior change from legacy API (which accepts any
              ``Placeable`` as the ``location`` parameter)
  
          """
          if not self._implementation.has_tip():
              raise hc.NoTipAttachedError("Pipette has no tip to touch_tip()")
  
          checked_speed = self._determine_speed(speed)
  
          # If location is a valid well, move to the well first
          if location is None:
              last_location = self._ctx.location_cache
              if not last_location:
                  raise RuntimeError("No valid current location cache present")
              else:
                  well = last_location.labware
                  # type checked below
          else:
              well = LabwareLike(location)
  
          if well.is_well:
              if "touchTipDisabled" in well.quirks_from_any_parent():
                  logger.info(f"Ignoring touch tip on labware {well}")
                  return self
              if well.parent.as_labware().is_tiprack:
                  logger.warning(
                      "Touch_tip being performed on a tiprack. "
                      "Please re-check your code"
                  )
  
              if self.api_version < APIVersion(2, 4):
                  to_loc = well.as_well().top()
              else:
                  move_with_z_offset = well.as_well().top().point + types.Point(
                      0, 0, v_offset
                  )
                  to_loc = types.Location(move_with_z_offset, well)
              self.move_to(to_loc, publish=False)
          else:
              raise TypeError("location should be a Well, but it is {}".format(location))
  
          self._implementation.touch_tip(
              location=well.as_well()._impl,
              radius=radius,
              v_offset=v_offset,
              speed=checked_speed,
          )
          return self
function_tokens: def touch_tip ( self , location : Optional [ Well ] = None , radius : float = 1.0 , v_offset : float = - 1.0 , speed : float = 60.0 , ) -> InstrumentContext : if not self . _implementation . has_tip ( ) : raise hc . NoTipAttachedError ( "Pipette has no tip to touch_tip()" ) checked_speed = self . _determine_speed ( speed ) # If location is a valid well, move to the well first if location is None : last_location = self . _ctx . location_cache if not last_location : raise RuntimeError ( "No valid current location cache present" ) else : well = last_location . labware # type checked below else : well = LabwareLike ( location ) if well . is_well : if "touchTipDisabled" in well . quirks_from_any_parent ( ) : logger . info ( f"Ignoring touch tip on labware {well}" ) return self if well . parent . as_labware ( ) . is_tiprack : logger . warning ( "Touch_tip being performed on a tiprack. " "Please re-check your code" ) if self . api_version < APIVersion ( 2 , 4 ) : to_loc = well . as_well ( ) . top ( ) else : move_with_z_offset = well . as_well ( ) . top ( ) . point + types . Point ( 0 , 0 , v_offset ) to_loc = types . Location ( move_with_z_offset , well ) self . move_to ( to_loc , publish = False ) else : raise TypeError ( "location should be a Well, but it is {}" . format ( location ) ) self . _implementation . touch_tip ( location = well . as_well ( ) . _impl , radius = radius , v_offset = v_offset , speed = checked_speed , ) return self