|
9 | 9 | TouchTipProperties as SharedDataTouchTipProperties,
|
10 | 10 | MixProperties as SharedDataMixProperties,
|
11 | 11 | BlowoutProperties as SharedDataBlowoutProperties,
|
| 12 | + ByTipTypeSetting as SharedByTipTypeSetting, |
12 | 13 | Submerge as SharedDataSubmerge,
|
13 | 14 | RetractAspirate as SharedDataRetractAspirate,
|
14 | 15 | RetractDispense as SharedDataRetractDispense,
|
@@ -361,6 +362,30 @@ def disposal_by_volume(self) -> LiquidHandlingPropertyByVolume:
|
361 | 362 | return self._disposal_by_volume
|
362 | 363 |
|
363 | 364 |
|
| 365 | +# TODO (spp, 2024-10-17): create PAPI-equivalent types for all the properties |
| 366 | +# and have validation on value updates with user-facing error messages |
| 367 | +@dataclass |
| 368 | +class TransferProperties: |
| 369 | + _aspirate: AspirateProperties |
| 370 | + _dispense: SingleDispenseProperties |
| 371 | + _multi_dispense: Optional[MultiDispenseProperties] |
| 372 | + |
| 373 | + @property |
| 374 | + def aspirate(self) -> AspirateProperties: |
| 375 | + """Aspirate properties.""" |
| 376 | + return self._aspirate |
| 377 | + |
| 378 | + @property |
| 379 | + def dispense(self) -> SingleDispenseProperties: |
| 380 | + """Single dispense properties.""" |
| 381 | + return self._dispense |
| 382 | + |
| 383 | + @property |
| 384 | + def multi_dispense(self) -> Optional[MultiDispenseProperties]: |
| 385 | + """Multi dispense properties.""" |
| 386 | + return self._multi_dispense |
| 387 | + |
| 388 | + |
364 | 389 | def _build_delay_properties(
|
365 | 390 | delay_properties: SharedDataDelayProperties,
|
366 | 391 | ) -> DelayProperties:
|
@@ -501,3 +526,15 @@ def build_multi_dispense_properties(
|
501 | 526 | _disposal_by_volume=multi_dispense_properties.disposalByVolume,
|
502 | 527 | _delay=_build_delay_properties(multi_dispense_properties.delay),
|
503 | 528 | )
|
| 529 | + |
| 530 | + |
| 531 | +def build_transfer_properties( |
| 532 | + by_tip_type_setting: SharedByTipTypeSetting, |
| 533 | +) -> TransferProperties: |
| 534 | + return TransferProperties( |
| 535 | + _aspirate=build_aspirate_properties(by_tip_type_setting.aspirate), |
| 536 | + _dispense=build_single_dispense_properties(by_tip_type_setting.singleDispense), |
| 537 | + _multi_dispense=build_multi_dispense_properties( |
| 538 | + by_tip_type_setting.multiDispense |
| 539 | + ), |
| 540 | + ) |
0 commit comments