opentrons 8.0.0a3__py2.py3-none-any.whl → 8.0.0a4__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- opentrons/protocol_api/core/engine/deck_conflict.py +41 -16
- opentrons/protocol_api/instrument_context.py +0 -1
- opentrons/protocol_api/protocol_context.py +1 -0
- opentrons/protocol_engine/state/addressable_areas.py +14 -0
- opentrons/protocol_engine/state/geometry.py +12 -1
- opentrons/protocol_engine/state/pipettes.py +0 -2
- {opentrons-8.0.0a3.dist-info → opentrons-8.0.0a4.dist-info}/METADATA +4 -4
- {opentrons-8.0.0a3.dist-info → opentrons-8.0.0a4.dist-info}/RECORD +12 -12
- {opentrons-8.0.0a3.dist-info → opentrons-8.0.0a4.dist-info}/LICENSE +0 -0
- {opentrons-8.0.0a3.dist-info → opentrons-8.0.0a4.dist-info}/WHEEL +0 -0
- {opentrons-8.0.0a3.dist-info → opentrons-8.0.0a4.dist-info}/entry_points.txt +0 -0
- {opentrons-8.0.0a3.dist-info → opentrons-8.0.0a4.dist-info}/top_level.txt +0 -0
|
@@ -416,23 +416,48 @@ def _is_within_pipette_extents(
|
|
|
416
416
|
pipette_bounding_box_at_loc: Tuple[Point, Point, Point, Point],
|
|
417
417
|
) -> bool:
|
|
418
418
|
"""Whether a given point is within the extents of a configured pipette on the specified robot."""
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
)
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
419
|
+
channels = engine_state.pipettes.get_channels(pipette_id)
|
|
420
|
+
robot_extents = engine_state.geometry.absolute_deck_extents
|
|
421
|
+
(
|
|
422
|
+
pip_back_left_bound,
|
|
423
|
+
pip_front_right_bound,
|
|
424
|
+
pip_back_right_bound,
|
|
425
|
+
pip_front_left_bound,
|
|
426
|
+
) = pipette_bounding_box_at_loc
|
|
427
|
+
|
|
428
|
+
# Given the padding values accounted for against the deck extents,
|
|
429
|
+
# a pipette is within extents when all of the following are true:
|
|
430
|
+
|
|
431
|
+
# Each corner slot full pickup case:
|
|
432
|
+
# A1: Front right nozzle is within the rear and left-side padding limits
|
|
433
|
+
# D1: Back right nozzle is within the front and left-side padding limits
|
|
434
|
+
# A3 Front left nozzle is within the rear and right-side padding limits
|
|
435
|
+
# D3: Back left nozzle is within the front and right-side padding limits
|
|
436
|
+
# Thermocycler Column A2: Front right nozzle is within padding limits
|
|
437
|
+
|
|
438
|
+
if channels == 96:
|
|
439
|
+
return (
|
|
440
|
+
pip_front_right_bound.y
|
|
441
|
+
<= robot_extents.deck_extents.y + robot_extents.padding_rear
|
|
442
|
+
and pip_front_right_bound.x >= robot_extents.padding_left_side
|
|
443
|
+
and pip_back_right_bound.y >= robot_extents.padding_front
|
|
444
|
+
and pip_back_right_bound.x >= robot_extents.padding_left_side
|
|
445
|
+
and pip_front_left_bound.y
|
|
446
|
+
<= robot_extents.deck_extents.y + robot_extents.padding_rear
|
|
447
|
+
and pip_front_left_bound.x
|
|
448
|
+
<= robot_extents.deck_extents.x + robot_extents.padding_right_side
|
|
449
|
+
and pip_back_left_bound.y >= robot_extents.padding_front
|
|
450
|
+
and pip_back_left_bound.x
|
|
451
|
+
<= robot_extents.deck_extents.x + robot_extents.padding_right_side
|
|
452
|
+
)
|
|
453
|
+
# For 8ch pipettes we only check the rear and front extents
|
|
431
454
|
return (
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
and
|
|
435
|
-
and
|
|
455
|
+
pip_front_right_bound.y
|
|
456
|
+
<= robot_extents.deck_extents.y + robot_extents.padding_rear
|
|
457
|
+
and pip_back_right_bound.y >= robot_extents.padding_front
|
|
458
|
+
and pip_front_left_bound.y
|
|
459
|
+
<= robot_extents.deck_extents.y + robot_extents.padding_rear
|
|
460
|
+
and pip_back_left_bound.y >= robot_extents.padding_front
|
|
436
461
|
)
|
|
437
462
|
|
|
438
463
|
|
|
@@ -915,6 +915,7 @@ class ProtocolContext(CommandPublisher):
|
|
|
915
915
|
from the Opentrons App or touchscreen.
|
|
916
916
|
:param bool liquid_presence_detection: If ``True``, enable automatic
|
|
917
917
|
:ref:`liquid presence detection <lpd>` for Flex 1-, 8-, or 96-channel pipettes.
|
|
918
|
+
|
|
918
919
|
.. versionadded:: 2.20
|
|
919
920
|
"""
|
|
920
921
|
instrument_name = validation.ensure_lowercase_name(instrument_name)
|
|
@@ -352,6 +352,20 @@ class AddressableAreaView(HasState[AddressableAreaState]):
|
|
|
352
352
|
"right": Point(x=right_offset[0], y=right_offset[1], z=right_offset[2]),
|
|
353
353
|
}
|
|
354
354
|
|
|
355
|
+
@cached_property
|
|
356
|
+
def padding_offsets(self) -> Dict[str, float]:
|
|
357
|
+
"""The padding offsets to be applied to the deck extents of the robot."""
|
|
358
|
+
rear_offset = self.state.robot_definition["paddingOffsets"]["rear"]
|
|
359
|
+
front_offset = self.state.robot_definition["paddingOffsets"]["front"]
|
|
360
|
+
left_side_offset = self.state.robot_definition["paddingOffsets"]["leftSide"]
|
|
361
|
+
right_side_offset = self.state.robot_definition["paddingOffsets"]["rightSide"]
|
|
362
|
+
return {
|
|
363
|
+
"rear": rear_offset,
|
|
364
|
+
"front": front_offset,
|
|
365
|
+
"left_side": left_side_offset,
|
|
366
|
+
"right_side": right_side_offset,
|
|
367
|
+
}
|
|
368
|
+
|
|
355
369
|
def get_addressable_area(self, addressable_area_name: str) -> AddressableArea:
|
|
356
370
|
"""Get addressable area."""
|
|
357
371
|
if not self._state.use_simulated_deck_config:
|
|
@@ -77,6 +77,11 @@ class _GripperMoveType(enum.Enum):
|
|
|
77
77
|
class _AbsoluteRobotExtents:
|
|
78
78
|
front_left: Dict[MountType, Point]
|
|
79
79
|
back_right: Dict[MountType, Point]
|
|
80
|
+
deck_extents: Point
|
|
81
|
+
padding_rear: float
|
|
82
|
+
padding_front: float
|
|
83
|
+
padding_left_side: float
|
|
84
|
+
padding_right_side: float
|
|
80
85
|
|
|
81
86
|
|
|
82
87
|
_LabwareLocation = TypeVar("_LabwareLocation", bound=LabwareLocation)
|
|
@@ -118,7 +123,13 @@ class GeometryView:
|
|
|
118
123
|
MountType.RIGHT: self._addressable_areas.deck_extents + right_offset,
|
|
119
124
|
}
|
|
120
125
|
return _AbsoluteRobotExtents(
|
|
121
|
-
front_left=front_left_abs,
|
|
126
|
+
front_left=front_left_abs,
|
|
127
|
+
back_right=back_right_abs,
|
|
128
|
+
deck_extents=self._addressable_areas.deck_extents,
|
|
129
|
+
padding_rear=self._addressable_areas.padding_offsets["rear"],
|
|
130
|
+
padding_front=self._addressable_areas.padding_offsets["front"],
|
|
131
|
+
padding_left_side=self._addressable_areas.padding_offsets["left_side"],
|
|
132
|
+
padding_right_side=self._addressable_areas.padding_offsets["right_side"],
|
|
122
133
|
)
|
|
123
134
|
|
|
124
135
|
def get_labware_highest_z(self, labware_id: str) -> float:
|
|
@@ -845,8 +845,6 @@ class PipetteView(HasState[PipetteState]):
|
|
|
845
845
|
- primary_nozzle_offset
|
|
846
846
|
+ pipette_bounds_offsets.front_right_corner
|
|
847
847
|
)
|
|
848
|
-
# TODO (spp, 2024-02-27): remove back right & front left;
|
|
849
|
-
# return only back left and front right points.
|
|
850
848
|
pip_back_right_bound = Point(
|
|
851
849
|
pip_front_right_bound.x, pip_back_left_bound.y, pip_front_right_bound.z
|
|
852
850
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: opentrons
|
|
3
|
-
Version: 8.0.
|
|
3
|
+
Version: 8.0.0a4
|
|
4
4
|
Summary: The Opentrons API is a simple framework designed to make writing automated biology lab protocols easy.
|
|
5
5
|
Author: Opentrons
|
|
6
6
|
Author-email: engineering@opentrons.com
|
|
@@ -21,7 +21,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
21
21
|
Classifier: Topic :: Scientific/Engineering
|
|
22
22
|
Requires-Python: >=3.10
|
|
23
23
|
License-File: ../LICENSE
|
|
24
|
-
Requires-Dist: opentrons-shared-data ==8.0.
|
|
24
|
+
Requires-Dist: opentrons-shared-data ==8.0.0a4
|
|
25
25
|
Requires-Dist: aionotify ==0.3.1
|
|
26
26
|
Requires-Dist: anyio <4.0.0,>=3.6.1
|
|
27
27
|
Requires-Dist: jsonschema <4.18.0,>=3.0.1
|
|
@@ -33,9 +33,9 @@ Requires-Dist: click <9,>=8.0.0
|
|
|
33
33
|
Requires-Dist: packaging >=21.0
|
|
34
34
|
Requires-Dist: importlib-metadata >=1.0 ; python_version < "3.8"
|
|
35
35
|
Provides-Extra: flex-hardware
|
|
36
|
-
Requires-Dist: opentrons-hardware[flex] ==8.0.
|
|
36
|
+
Requires-Dist: opentrons-hardware[flex] ==8.0.0a4 ; extra == 'flex-hardware'
|
|
37
37
|
Provides-Extra: ot2-hardware
|
|
38
|
-
Requires-Dist: opentrons-hardware ==8.0.
|
|
38
|
+
Requires-Dist: opentrons-hardware ==8.0.0a4 ; extra == 'ot2-hardware'
|
|
39
39
|
|
|
40
40
|
.. _Full API Documentation: http://docs.opentrons.com
|
|
41
41
|
|
|
@@ -219,11 +219,11 @@ opentrons/protocol_api/config.py,sha256=r9lyvXjagTX_g3q5FGURPpcz2IA9sSF7Oa_1mKx-
|
|
|
219
219
|
opentrons/protocol_api/create_protocol_context.py,sha256=wwsZje0L__oDnu1Yrihau320_f-ASloR9eL1QCtkOh8,7612
|
|
220
220
|
opentrons/protocol_api/deck.py,sha256=94vFceg1SC1bAGd7TvC1ZpYwnJR-VlzurEZ6jkacYeg,8910
|
|
221
221
|
opentrons/protocol_api/disposal_locations.py,sha256=NRiSGmDR0LnbyEkWSOM-o64uR2fUoB1NWJG7Y7SsJSs,7920
|
|
222
|
-
opentrons/protocol_api/instrument_context.py,sha256=
|
|
222
|
+
opentrons/protocol_api/instrument_context.py,sha256=TqzML0qqGKBKaU4FUEJKZJ23c5kLzZXQR1sfamZaNJw,95810
|
|
223
223
|
opentrons/protocol_api/labware.py,sha256=cxJp5wWMv-OKLmryEXwPgFL6T6pu8T7SXYlGWaVmB-g,47723
|
|
224
224
|
opentrons/protocol_api/module_contexts.py,sha256=4uXWnO-w4Znbz27Y8m0uMJ_CR0U3Qy1r1ODntFbYMd0,37325
|
|
225
225
|
opentrons/protocol_api/module_validation_and_errors.py,sha256=XL_m72P8rcvGO2fynY7UzXLcpGuI6X4s0V6Xf735Iyc,1464
|
|
226
|
-
opentrons/protocol_api/protocol_context.py,sha256=
|
|
226
|
+
opentrons/protocol_api/protocol_context.py,sha256=qaCMeIJIGSrGv_iORtkC8ANj5_36el1enBeB5BmJ9FM,53603
|
|
227
227
|
opentrons/protocol_api/robot_context.py,sha256=vph_ZqfdmREOwLwpjSkXiSZSpI1HO0HuilhqjhgT7Rw,2660
|
|
228
228
|
opentrons/protocol_api/validation.py,sha256=p9kwYn340lIGHJ88q7L3RsfEgr25Nv1uTMuw4yly7T0,18373
|
|
229
229
|
opentrons/protocol_api/core/__init__.py,sha256=-g74o8OtBB0LmmOvwkRvPgrHt7fF7T8FRHDj-x_-Onk,736
|
|
@@ -236,7 +236,7 @@ opentrons/protocol_api/core/protocol.py,sha256=C70tQe6ZTjYX56rvlSl8MW2CJl0Mb-yZt
|
|
|
236
236
|
opentrons/protocol_api/core/well.py,sha256=quBAF0UjcsRcqZy_Cb13NIkfnx4y1VbEHZgGcDIl-wI,2393
|
|
237
237
|
opentrons/protocol_api/core/well_grid.py,sha256=BU28DKaBgEU_JdZ6pEzrwNxmuh6TkO4zlg7Pq1Rf5Xk,1516
|
|
238
238
|
opentrons/protocol_api/core/engine/__init__.py,sha256=B_5T7zgkWDb1mXPg4NbT-wBkQaK-WVokMMnJRNu7xiM,582
|
|
239
|
-
opentrons/protocol_api/core/engine/deck_conflict.py,sha256=
|
|
239
|
+
opentrons/protocol_api/core/engine/deck_conflict.py,sha256=EBC15ROS9cEUSnKHzeaL9xOhN_WS3tSNic8S-kkFz-Q,24560
|
|
240
240
|
opentrons/protocol_api/core/engine/exceptions.py,sha256=aZgNrmYEeuPZm21nX_KZYtvyjv5h_zPjxxgPkEV7_bw,725
|
|
241
241
|
opentrons/protocol_api/core/engine/instrument.py,sha256=r_2ZF3i_5FZqMdFipu0hXpgx9Pl5mM5_AfX7La8H_TU,35686
|
|
242
242
|
opentrons/protocol_api/core/engine/labware.py,sha256=xb1osbmcHL80S9RLeqA9qKiA_CdyMNMW0In7Pukegf4,7008
|
|
@@ -392,17 +392,17 @@ opentrons/protocol_engine/resources/ot3_validation.py,sha256=0x81JoZBXcj2xUVcOF7
|
|
|
392
392
|
opentrons/protocol_engine/resources/pipette_data_provider.py,sha256=NYcQGJYQ-aeEME5nilUlkHF6oWfrNZt0op52bUH0czo,14623
|
|
393
393
|
opentrons/protocol_engine/state/__init__.py,sha256=l-VhTfs16xika3ZWPqfxovB1Z1GHuPRm-IHWrEOuzAw,1826
|
|
394
394
|
opentrons/protocol_engine/state/abstract_store.py,sha256=b5cqKZhI6ERZj6gyL0kDutD6ogdQngR3T-JmPATvhi8,631
|
|
395
|
-
opentrons/protocol_engine/state/addressable_areas.py,sha256=
|
|
395
|
+
opentrons/protocol_engine/state/addressable_areas.py,sha256=Al86_Qv-ikveekNPV4XS50yzFzXMGklUgEotvbg3O8s,28217
|
|
396
396
|
opentrons/protocol_engine/state/command_history.py,sha256=aNB1Oye3LxAVOvGppCEohv4KT84buJckgngDcDXDvj8,10252
|
|
397
397
|
opentrons/protocol_engine/state/commands.py,sha256=wNqBp-tb7rgzqp94mYy6vVjxshv50AearJ1y9QWvKi4,41287
|
|
398
398
|
opentrons/protocol_engine/state/config.py,sha256=7jSGxC6Vqj1eA8fqZ2I3zjlxVXg8pxvcBYMztRIx9Mg,1515
|
|
399
|
-
opentrons/protocol_engine/state/geometry.py,sha256=
|
|
399
|
+
opentrons/protocol_engine/state/geometry.py,sha256=YT3ILruOwRvAUtDt_C8EV8k_puXAm5oxmhe1wBnWi1I,51129
|
|
400
400
|
opentrons/protocol_engine/state/labware.py,sha256=sKbX7uN26m3C_84WnSxM-BJ38n1PlPDlxWf6mkYsY_4,37285
|
|
401
401
|
opentrons/protocol_engine/state/liquids.py,sha256=W7cf-mmVaZ3aNyiormFEy79aSvU__QwDfPVgjFb3lF4,1885
|
|
402
402
|
opentrons/protocol_engine/state/modules.py,sha256=bylqsYZyVjrnx6BUhDjJb-TofnqPNk0EUYV8j12UINE,50673
|
|
403
403
|
opentrons/protocol_engine/state/motion.py,sha256=nh0UGOVvmpYynOchGJkVLTyIyiJ9CszRTUvp4Czr_GI,13955
|
|
404
404
|
opentrons/protocol_engine/state/move_types.py,sha256=zSQj_qYHBi7_-wrpaZBKmX_O-wNZCpLZkCzagOwI-zY,2132
|
|
405
|
-
opentrons/protocol_engine/state/pipettes.py,sha256=
|
|
405
|
+
opentrons/protocol_engine/state/pipettes.py,sha256=wS7q9Sau86zK5vCcHiSGRdMhWNm26GPKUDNJnSEjEHw,36053
|
|
406
406
|
opentrons/protocol_engine/state/state.py,sha256=jx044yBfXFV1YO5aqXhJmy7iFx-tXEQ5rIl3lMcrY04,13562
|
|
407
407
|
opentrons/protocol_engine/state/state_summary.py,sha256=8VCxEOBeUflx8IBYUYtgNdwcwgdVZv3R8rSfzsbai7U,923
|
|
408
408
|
opentrons/protocol_engine/state/tips.py,sha256=gU2GsmaWPDyIIjWHj3KXv6NqxphfOd4eeNxF40hm5ok,22621
|
|
@@ -499,9 +499,9 @@ opentrons/util/helpers.py,sha256=3hr801bWGbxEcOFAS7f-iOhmnUhoK5qahbB8SIvaCfY,165
|
|
|
499
499
|
opentrons/util/linal.py,sha256=IlKAP9HkNBBgULeSf4YVwSKHdx9jnCjSr7nvDvlRALg,5753
|
|
500
500
|
opentrons/util/logging_config.py,sha256=g3TdzDKa1pL_N3eKhRYCdqPaZYe_hpLV-e8llObTcT4,5657
|
|
501
501
|
opentrons/util/performance_helpers.py,sha256=ew7H8XD20iS6-2TJAzbQeyzStZkkE6PzHt_Adx3wbZQ,5172
|
|
502
|
-
opentrons-8.0.
|
|
503
|
-
opentrons-8.0.
|
|
504
|
-
opentrons-8.0.
|
|
505
|
-
opentrons-8.0.
|
|
506
|
-
opentrons-8.0.
|
|
507
|
-
opentrons-8.0.
|
|
502
|
+
opentrons-8.0.0a4.dist-info/LICENSE,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
503
|
+
opentrons-8.0.0a4.dist-info/METADATA,sha256=gYJjRVCWBigp6_HZem-YgMle4g8vSdMAwswF53rXvUk,4990
|
|
504
|
+
opentrons-8.0.0a4.dist-info/WHEEL,sha256=_4XEmVmaBFWtekSGrbfOGNjC2I5lUr0lZSRblBllIFA,109
|
|
505
|
+
opentrons-8.0.0a4.dist-info/entry_points.txt,sha256=fTa6eGCYkvOtv0ov-KVE8LLGetgb35LQLF9x85OWPVw,106
|
|
506
|
+
opentrons-8.0.0a4.dist-info/top_level.txt,sha256=wk6whpbMZdBQpcK0Fg0YVfUGrAgVOFON7oQAhOMGMW8,10
|
|
507
|
+
opentrons-8.0.0a4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|