Skip to content

Commit 7b38457

Browse files
committed
fix committing channel trackers on {asp,disp}96 with 1 container
1 parent 156fc8f commit 7b38457

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

pylabrobot/liquid_handling/liquid_handler.py

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1685,16 +1685,18 @@ async def aspirate96(
16851685
try:
16861686
await self.backend.aspirate96(aspiration=aspiration, **backend_kwargs)
16871687
except Exception as error:
1688-
for channel, container in zip(self.head96.values(), containers):
1688+
for channel in self.head96.values():
1689+
channel.get_tip().tracker.rollback()
1690+
for container in containers:
16891691
if does_volume_tracking() and not container.tracker.is_disabled:
16901692
container.tracker.rollback()
1691-
channel.get_tip().tracker.rollback()
1692-
raise error
1693+
raise
16931694
else:
1694-
for channel, container in zip(self.head96.values(), containers):
1695+
for channel in self.head96.values():
1696+
channel.get_tip().tracker.commit()
1697+
for container in containers:
16951698
if does_volume_tracking() and not container.tracker.is_disabled:
16961699
container.tracker.commit()
1697-
channel.get_tip().tracker.commit()
16981700

16991701
async def dispense96(
17001702
self,
@@ -1828,16 +1830,18 @@ async def dispense96(
18281830
try:
18291831
await self.backend.dispense96(dispense=dispense, **backend_kwargs)
18301832
except Exception as error:
1831-
for channel, container in zip(self.head96.values(), containers):
1833+
for channel in self.head96.values():
1834+
channel.get_tip().tracker.rollback()
1835+
for container in containers:
18321836
if does_volume_tracking() and not container.tracker.is_disabled:
18331837
container.tracker.rollback()
1834-
channel.get_tip().tracker.rollback()
1835-
raise error
1838+
raise
18361839
else:
1837-
for channel, container in zip(self.head96.values(), containers):
1840+
for channel in self.head96.values():
1841+
channel.get_tip().tracker.commit()
1842+
for container in containers:
18381843
if does_volume_tracking() and not container.tracker.is_disabled:
18391844
container.tracker.commit()
1840-
channel.get_tip().tracker.commit()
18411845

18421846
async def stamp(
18431847
self,

pylabrobot/liquid_handling/liquid_handler_tests.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import itertools
22
import tempfile
33
import unittest
4-
import unittest.mock
54
from typing import Any, Dict, List, Optional, Union, cast
65

76
import pytest
@@ -1115,10 +1114,14 @@ async def test_96_head_volume_tracking_single_container(self):
11151114

11161115
await self.lh.aspirate96(self.single_well_plate, volume=10)
11171116
assert all(self.lh.head96[i].get_tip().tracker.get_used_volume() == 10 for i in range(96))
1117+
assert all(
1118+
self.lh.head96[i].get_tip().tracker.liquids == [(Liquid.WATER, 10)] for i in range(96)
1119+
)
11181120
assert well.tracker.get_used_volume() == 0
11191121

11201122
await self.lh.dispense96(self.single_well_plate, volume=10)
11211123
assert all(self.lh.head96[i].get_tip().tracker.get_used_volume() == 0 for i in range(96))
1124+
assert all(self.lh.head96[i].get_tip().tracker.liquids == [] for i in range(96))
11221125
assert well.tracker.get_used_volume() == 10 * 96
11231126

11241127
await self.lh.return_tips96()

0 commit comments

Comments
 (0)