Skip to content

Commit fd71994

Browse files
committed
freeze the ops classes and remove doc strings
1 parent 515c8a0 commit fd71994

File tree

1 file changed

+21
-32
lines changed

1 file changed

+21
-32
lines changed

pylabrobot/liquid_handling/standard.py

Lines changed: 21 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -14,42 +14,34 @@
1414
from pylabrobot.resources.tip_rack import TipSpot
1515

1616

17-
@dataclass
17+
@dataclass(frozen=True)
1818
class Pickup:
19-
""" A pickup operation. """
2019
resource: TipSpot
2120
offset: Coordinate
2221
tip: Tip # TODO: perhaps we can remove this, because the tip spot has the tip?
2322

2423

25-
@dataclass
24+
@dataclass(frozen=True)
2625
class Drop:
27-
""" A drop operation. """
2826
resource: Resource
2927
offset: Coordinate
3028
tip: Tip
3129

3230

33-
@dataclass
31+
@dataclass(frozen=True)
3432
class PickupTipRack:
35-
""" A pickup operation for an entire tip rack. """
36-
3733
resource: TipRack
3834
offset: Coordinate
3935

4036

41-
@dataclass
37+
@dataclass(frozen=True)
4238
class DropTipRack:
43-
""" A drop operation for an entire tip rack. """
44-
4539
resource: Union[TipRack, Trash]
4640
offset: Coordinate
4741

4842

49-
@dataclass
43+
@dataclass(frozen=True)
5044
class Aspiration:
51-
""" Aspiration contains information about an aspiration. """
52-
5345
resource: Container
5446
offset: Coordinate
5547
tip: Tip
@@ -60,10 +52,8 @@ class Aspiration:
6052
liquids: List[Tuple[Optional[Liquid], float]]
6153

6254

63-
@dataclass
55+
@dataclass(frozen=True)
6456
class Dispense:
65-
""" Dispense contains information about an dispense. """
66-
6757
resource: Container
6858
offset: Coordinate
6959
tip: Tip
@@ -74,10 +64,17 @@ class Dispense:
7464
liquids: List[Tuple[Optional[Liquid], float]]
7565

7666

77-
@dataclass
78-
class AspirationPlate:
79-
""" Contains information about an aspiration from a plate (in a single movement). """
67+
class Transfer:
68+
aspiration: Aspiration
69+
dispense: Dispense
70+
71+
def __post_init__(self):
72+
if not self.aspiration.blow_out_air_volume == self.dispense.blow_out_air_volume:
73+
raise ValueError("Aspiration and dispense blow out air volumes must be equal")
74+
8075

76+
@dataclass(frozen=True)
77+
class AspirationPlate:
8178
wells: List[Well]
8279
offset: Coordinate
8380
tips: List[Tip]
@@ -88,10 +85,8 @@ class AspirationPlate:
8885
liquids: List[List[Tuple[Optional[Liquid], float]]]
8986

9087

91-
@dataclass
88+
@dataclass(frozen=True)
9289
class DispensePlate:
93-
""" Contains information about an aspiration from a plate (in a single movement). """
94-
9590
wells: List[Well]
9691
offset: Coordinate
9792
tips: List[Tip]
@@ -101,10 +96,8 @@ class DispensePlate:
10196
blow_out_air_volume: Optional[float]
10297
liquids: List[List[Tuple[Optional[Liquid], float]]]
10398

104-
@dataclass
99+
@dataclass(frozen=True)
105100
class AspirationContainer:
106-
""" Contains information about an aspiration from a plate (in a single movement). """
107-
108101
container: Container
109102
offset: Coordinate
110103
tips: List[Tip]
@@ -115,10 +108,8 @@ class AspirationContainer:
115108
liquids: List[List[Tuple[Optional[Liquid], float]]]
116109

117110

118-
@dataclass
111+
@dataclass(frozen=True)
119112
class DispenseContainer:
120-
""" Contains information about an aspiration from a plate (in a single movement). """
121-
122113
container: Container
123114
offset: Coordinate
124115
tips: List[Tip]
@@ -130,17 +121,15 @@ class DispenseContainer:
130121

131122

132123
class GripDirection(enum.Enum):
133-
""" A direction from which to grab the resource. """
134124
FRONT = enum.auto()
135125
BACK = enum.auto()
136126
LEFT = enum.auto()
137127
RIGHT = enum.auto()
138128

139129

140-
@dataclass
130+
@dataclass(frozen=True)
141131
class Move:
142-
""" A move operation.
143-
132+
"""
144133
Attributes:
145134
resource: The resource to move.
146135
destination: The destination of the move.

0 commit comments

Comments
 (0)