|
16 | 16 | from opentrons.protocol_api.labware import Labware, Well
|
17 | 17 | from opentrons import types
|
18 | 18 | from opentrons.protocols.api_support.types import APIVersion
|
| 19 | +from opentrons.hardware_control.nozzle_manager import NozzleConfigurationType |
19 | 20 |
|
20 | 21 |
|
21 | 22 | if TYPE_CHECKING:
|
22 | 23 | from opentrons.protocol_api import InstrumentContext
|
23 | 24 | from opentrons.protocols.execution.dev_types import Dictable
|
24 | 25 |
|
| 26 | +_PARTIAL_TIP_SUPPORT_ADDED = APIVersion(2, 18) |
| 27 | +"""The version after which partial tip support and nozzle maps were made available.""" |
| 28 | + |
25 | 29 |
|
26 | 30 | class MixStrategy(enum.Enum):
|
27 | 31 | BOTH = enum.auto()
|
@@ -409,7 +413,15 @@ def __init__(
|
409 | 413 | # then avoid iterating through its Wells.
|
410 | 414 | # ii. if using single channel pipettes, flatten a multi-dimensional
|
411 | 415 | # list of Wells into a 1 dimensional list of Wells
|
412 |
| - if self._instr.channels > 1: |
| 416 | + pipette_configuration_type = NozzleConfigurationType.FULL |
| 417 | + if self._api_version >= _PARTIAL_TIP_SUPPORT_ADDED: |
| 418 | + pipette_configuration_type = ( |
| 419 | + self._instr._core.get_nozzle_map().configuration |
| 420 | + ) |
| 421 | + if ( |
| 422 | + self._instr.channels > 1 |
| 423 | + and pipette_configuration_type == NozzleConfigurationType.FULL |
| 424 | + ): |
413 | 425 | sources, dests = self._multichannel_transfer(sources, dests)
|
414 | 426 | else:
|
415 | 427 | if isinstance(sources, List) and isinstance(sources[0], List):
|
|
0 commit comments