(
        self, location: Union[types.Location, Well] = None, home_after: bool = True
    )
return self
Drop the current tip.

        If no location is passed, both pipettes will drop their
        tips into :py:attr:`trash_container`, which if not specified defaults
        to the fixed trash in slot 12.

        If you pass in a location, you must pass in the tiprack location that
        you wish to move based on the primary pipette.

        The location in which to drop the tip can be manually specified with
        the ``location`` argument. The ``location`` argument can be specified
        several ways:

            - If the only thing to specify is which well into which to drop
              a tip, `location` can be a :py:class:`.Well`. For instance,
              if you have a tip rack in a variable called `tiprack`, you can
              drop a tip into a specific well on that tiprack with the call
              `instr.drop_tip(tiprack.wells()[0])`. This style of call can
              be used to make the robot drop a tip into arbitrary labware.
            - If the position to drop the tip from as well as the
              :py:class:`.Well` to drop the tip into needs to be specified,
              for instance to tell the robot to drop a tip from an unusually
              large height above the tiprack, `location`
              can be a :py:class:`.types.Location`; for instance, you can call
              `instr.drop_tip(tiprack.wells()[0].top())`.

        :param location: The location to drop the tip
        :type location: :py:class:`.types.Location` or :py:class:`.Well` or
                        None
        :param home_after: Whether to home the plunger after dropping the tip
                           (defaults to ``True``). The plunger must home after
                           dropping tips because the ejector shroud that pops
                           the tip off the end of the pipette is driven by the
                           plunger motor, and may skip steps when dropping the
                           tip.

        :returns: This instance

        :raises TypeError: If a location is not relative to a well.
Drop the current tip.
Drop the current tip .
def drop_tip(
        self, location: Union[types.Location, Well] = None, home_after: bool = True
    ) -> PairedInstrumentContext:
        """
        Drop the current tip.

        If no location is passed, both pipettes will drop their
        tips into :py:attr:`trash_container`, which if not specified defaults
        to the fixed trash in slot 12.

        If you pass in a location, you must pass in the tiprack location that
        you wish to move based on the primary pipette.

        The location in which to drop the tip can be manually specified with
        the ``location`` argument. The ``location`` argument can be specified
        several ways:

            - If the only thing to specify is which well into which to drop
              a tip, `location` can be a :py:class:`.Well`. For instance,
              if you have a tip rack in a variable called `tiprack`, you can
              drop a tip into a specific well on that tiprack with the call
              `instr.drop_tip(tiprack.wells()[0])`. This style of call can
              be used to make the robot drop a tip into arbitrary labware.
            - If the position to drop the tip from as well as the
              :py:class:`.Well` to drop the tip into needs to be specified,
              for instance to tell the robot to drop a tip from an unusually
              large height above the tiprack, `location`
              can be a :py:class:`.types.Location`; for instance, you can call
              `instr.drop_tip(tiprack.wells()[0].top())`.

        :param location: The location to drop the tip
        :type location: :py:class:`.types.Location` or :py:class:`.Well` or
                        None
        :param home_after: Whether to home the plunger after dropping the tip
                           (defaults to ``True``). The plunger must home after
                           dropping tips because the ejector shroud that pops
                           the tip off the end of the pipette is driven by the
                           plunger motor, and may skip steps when dropping the
                           tip.

        :returns: This instance

        :raises TypeError: If a location is not relative to a well.
        """
        is_trash = False
        tiprack = None
        if location and isinstance(location, types.Location):
            if location.labware.is_well:
                target = location
                tiprack = location.labware.as_well().parent
            else:
                raise TypeError(
                    "If a location is specified as a types.Location (for "
                    "instance, as the result of a call to "
                    "tiprack.wells()[0].top()) it must be a location "
                    "relative to a well, since that is where a tip is "
                    "dropped. The passed location, however, is in "
                    "reference to {}".format(location.labware)
                )
        elif location and isinstance(location, Well):
            if LabwareLike(location).is_fixed_trash():
                target = location.top()
            else:
                primary_pipette = self._instruments[self._pair_policy.primary]
                target = self._drop_tip_target(location, primary_pipette)
                tiprack = location.parent
        elif not location:
            target = self.trash_container.wells()[0].top()
            is_trash = True
        else:
            raise TypeError(
                "If specified, location should be an instance of "
                "types.Location (e.g. the return value from "
                "tiprack.wells()[0].top()) or a Well (e.g. tiprack.wells()[0]."
                " However, it is a {}".format(location)
            )

        instruments = list(self._instruments.values())
        if not is_trash and tiprack and isinstance(target.labware, Well):
            targets = [
                target,
                self._get_secondary_target(tiprack, target.labware.as_well()),
            ]
        else:
            targets = [target]

        with publish_context(
            broker=self.broker,
            command=cmds.paired_drop_tip(instruments=instruments, locations=targets),
        ):
            self._implementation.drop_tip(target, home_after)

        self._last_tip_picked_up_from = None
        return self
def drop_tip ( self , location : Union [ types . Location , Well ] = None , home_after : bool = True ) -> PairedInstrumentContext : is_trash = False tiprack = None if location and isinstance ( location , types . Location ) : if location . labware . is_well : target = location tiprack = location . labware . as_well ( ) . parent else : raise TypeError ( "If a location is specified as a types.Location (for " "instance, as the result of a call to " "tiprack.wells()[0].top()) it must be a location " "relative to a well, since that is where a tip is " "dropped. The passed location, however, is in " "reference to {}" . format ( location . labware ) ) elif location and isinstance ( location , Well ) : if LabwareLike ( location ) . is_fixed_trash ( ) : target = location . top ( ) else : primary_pipette = self . _instruments [ self . _pair_policy . primary ] target = self . _drop_tip_target ( location , primary_pipette ) tiprack = location . parent elif not location : target = self . trash_container . wells ( ) [ 0 ] . top ( ) is_trash = True else : raise TypeError ( "If specified, location should be an instance of " "types.Location (e.g. the return value from " "tiprack.wells()[0].top()) or a Well (e.g. tiprack.wells()[0]." " However, it is a {}" . format ( location ) ) instruments = list ( self . _instruments . values ( ) ) if not is_trash and tiprack and isinstance ( target . labware , Well ) : targets = [ target , self . _get_secondary_target ( tiprack , target . labware . as_well ( ) ) , ] else : targets = [ target ] with publish_context ( broker = self . broker , command = cmds . paired_drop_tip ( instruments = instruments , locations = targets ) , ) : self . _implementation . drop_tip ( target , home_after ) self . _last_tip_picked_up_from = None return self