benchling-api-client 2.0.418__py3-none-any.whl → 2.0.419__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.
@@ -4,6 +4,7 @@ import attr
4
4
 
5
5
  from ..extensions import NotPresentError
6
6
  from ..models.entry_beta_review_record_status import EntryBetaReviewRecordStatus
7
+ from ..models.entry_review_process import EntryReviewProcess
7
8
  from ..models.review_change import ReviewChange
8
9
  from ..types import UNSET, Unset
9
10
 
@@ -16,6 +17,7 @@ class EntryBetaReviewRecord:
16
17
 
17
18
  _comment: Union[Unset, str] = UNSET
18
19
  _review_changes: Union[Unset, List[ReviewChange]] = UNSET
20
+ _review_processes: Union[Unset, None, List[EntryReviewProcess]] = UNSET
19
21
  _status: Union[Unset, EntryBetaReviewRecordStatus] = UNSET
20
22
  additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
21
23
 
@@ -23,6 +25,7 @@ class EntryBetaReviewRecord:
23
25
  fields = []
24
26
  fields.append("comment={}".format(repr(self._comment)))
25
27
  fields.append("review_changes={}".format(repr(self._review_changes)))
28
+ fields.append("review_processes={}".format(repr(self._review_processes)))
26
29
  fields.append("status={}".format(repr(self._status)))
27
30
  fields.append("additional_properties={}".format(repr(self.additional_properties)))
28
31
  return "EntryBetaReviewRecord({})".format(", ".join(fields))
@@ -37,6 +40,17 @@ class EntryBetaReviewRecord:
37
40
 
38
41
  review_changes.append(review_changes_item)
39
42
 
43
+ review_processes: Union[Unset, None, List[Any]] = UNSET
44
+ if not isinstance(self._review_processes, Unset):
45
+ if self._review_processes is None:
46
+ review_processes = None
47
+ else:
48
+ review_processes = []
49
+ for review_processes_item_data in self._review_processes:
50
+ review_processes_item = review_processes_item_data.to_dict()
51
+
52
+ review_processes.append(review_processes_item)
53
+
40
54
  status: Union[Unset, int] = UNSET
41
55
  if not isinstance(self._status, Unset):
42
56
  status = self._status.value
@@ -48,6 +62,8 @@ class EntryBetaReviewRecord:
48
62
  field_dict["comment"] = comment
49
63
  if review_changes is not UNSET:
50
64
  field_dict["reviewChanges"] = review_changes
65
+ if review_processes is not UNSET:
66
+ field_dict["reviewProcesses"] = review_processes
51
67
  if status is not UNSET:
52
68
  field_dict["status"] = status
53
69
 
@@ -85,6 +101,23 @@ class EntryBetaReviewRecord:
85
101
  raise
86
102
  review_changes = cast(Union[Unset, List[ReviewChange]], UNSET)
87
103
 
104
+ def get_review_processes() -> Union[Unset, None, List[EntryReviewProcess]]:
105
+ review_processes = []
106
+ _review_processes = d.pop("reviewProcesses")
107
+ for review_processes_item_data in _review_processes or []:
108
+ review_processes_item = EntryReviewProcess.from_dict(review_processes_item_data, strict=False)
109
+
110
+ review_processes.append(review_processes_item)
111
+
112
+ return review_processes
113
+
114
+ try:
115
+ review_processes = get_review_processes()
116
+ except KeyError:
117
+ if strict:
118
+ raise
119
+ review_processes = cast(Union[Unset, None, List[EntryReviewProcess]], UNSET)
120
+
88
121
  def get_status() -> Union[Unset, EntryBetaReviewRecordStatus]:
89
122
  status = UNSET
90
123
  _status = d.pop("status")
@@ -106,6 +139,7 @@ class EntryBetaReviewRecord:
106
139
  entry_beta_review_record = cls(
107
140
  comment=comment,
108
141
  review_changes=review_changes,
142
+ review_processes=review_processes,
109
143
  status=status,
110
144
  )
111
145
 
@@ -161,6 +195,21 @@ class EntryBetaReviewRecord:
161
195
  def review_changes(self) -> None:
162
196
  self._review_changes = UNSET
163
197
 
198
+ @property
199
+ def review_processes(self) -> Optional[List[EntryReviewProcess]]:
200
+ """ Review Processes associated with the Entry """
201
+ if isinstance(self._review_processes, Unset):
202
+ raise NotPresentError(self, "review_processes")
203
+ return self._review_processes
204
+
205
+ @review_processes.setter
206
+ def review_processes(self, value: Optional[List[EntryReviewProcess]]) -> None:
207
+ self._review_processes = value
208
+
209
+ @review_processes.deleter
210
+ def review_processes(self) -> None:
211
+ self._review_processes = UNSET
212
+
164
213
  @property
165
214
  def status(self) -> EntryBetaReviewRecordStatus:
166
215
  """ Review Status of the entry """
@@ -0,0 +1,252 @@
1
+ from typing import Any, cast, Dict, List, Optional, Type, TypeVar, Union
2
+
3
+ import attr
4
+
5
+ from ..extensions import NotPresentError
6
+ from ..models.entry_review_process_completion_status import EntryReviewProcessCompletionStatus
7
+ from ..models.entry_review_process_stages_item import EntryReviewProcessStagesItem
8
+ from ..models.entry_review_process_type import EntryReviewProcessType
9
+ from ..types import UNSET, Unset
10
+
11
+ T = TypeVar("T", bound="EntryReviewProcess")
12
+
13
+
14
+ @attr.s(auto_attribs=True, repr=False)
15
+ class EntryReviewProcess:
16
+ """ """
17
+
18
+ _completion_status: Union[Unset, EntryReviewProcessCompletionStatus] = UNSET
19
+ _id: Union[Unset, str] = UNSET
20
+ _name: Union[Unset, str] = UNSET
21
+ _stages: Union[Unset, List[EntryReviewProcessStagesItem]] = UNSET
22
+ _type: Union[Unset, EntryReviewProcessType] = UNSET
23
+ additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
24
+
25
+ def __repr__(self):
26
+ fields = []
27
+ fields.append("completion_status={}".format(repr(self._completion_status)))
28
+ fields.append("id={}".format(repr(self._id)))
29
+ fields.append("name={}".format(repr(self._name)))
30
+ fields.append("stages={}".format(repr(self._stages)))
31
+ fields.append("type={}".format(repr(self._type)))
32
+ fields.append("additional_properties={}".format(repr(self.additional_properties)))
33
+ return "EntryReviewProcess({})".format(", ".join(fields))
34
+
35
+ def to_dict(self) -> Dict[str, Any]:
36
+ completion_status: Union[Unset, int] = UNSET
37
+ if not isinstance(self._completion_status, Unset):
38
+ completion_status = self._completion_status.value
39
+
40
+ id = self._id
41
+ name = self._name
42
+ stages: Union[Unset, List[Any]] = UNSET
43
+ if not isinstance(self._stages, Unset):
44
+ stages = []
45
+ for stages_item_data in self._stages:
46
+ stages_item = stages_item_data.to_dict()
47
+
48
+ stages.append(stages_item)
49
+
50
+ type: Union[Unset, int] = UNSET
51
+ if not isinstance(self._type, Unset):
52
+ type = self._type.value
53
+
54
+ field_dict: Dict[str, Any] = {}
55
+ field_dict.update(self.additional_properties)
56
+ # Allow the model to serialize even if it was created outside of the constructor, circumventing validation
57
+ if completion_status is not UNSET:
58
+ field_dict["completionStatus"] = completion_status
59
+ if id is not UNSET:
60
+ field_dict["id"] = id
61
+ if name is not UNSET:
62
+ field_dict["name"] = name
63
+ if stages is not UNSET:
64
+ field_dict["stages"] = stages
65
+ if type is not UNSET:
66
+ field_dict["type"] = type
67
+
68
+ return field_dict
69
+
70
+ @classmethod
71
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any], strict: bool = False) -> T:
72
+ d = src_dict.copy()
73
+
74
+ def get_completion_status() -> Union[Unset, EntryReviewProcessCompletionStatus]:
75
+ completion_status = UNSET
76
+ _completion_status = d.pop("completionStatus")
77
+ if _completion_status is not None and _completion_status is not UNSET:
78
+ try:
79
+ completion_status = EntryReviewProcessCompletionStatus(_completion_status)
80
+ except ValueError:
81
+ completion_status = EntryReviewProcessCompletionStatus.of_unknown(_completion_status)
82
+
83
+ return completion_status
84
+
85
+ try:
86
+ completion_status = get_completion_status()
87
+ except KeyError:
88
+ if strict:
89
+ raise
90
+ completion_status = cast(Union[Unset, EntryReviewProcessCompletionStatus], UNSET)
91
+
92
+ def get_id() -> Union[Unset, str]:
93
+ id = d.pop("id")
94
+ return id
95
+
96
+ try:
97
+ id = get_id()
98
+ except KeyError:
99
+ if strict:
100
+ raise
101
+ id = cast(Union[Unset, str], UNSET)
102
+
103
+ def get_name() -> Union[Unset, str]:
104
+ name = d.pop("name")
105
+ return name
106
+
107
+ try:
108
+ name = get_name()
109
+ except KeyError:
110
+ if strict:
111
+ raise
112
+ name = cast(Union[Unset, str], UNSET)
113
+
114
+ def get_stages() -> Union[Unset, List[EntryReviewProcessStagesItem]]:
115
+ stages = []
116
+ _stages = d.pop("stages")
117
+ for stages_item_data in _stages or []:
118
+ stages_item = EntryReviewProcessStagesItem.from_dict(stages_item_data, strict=False)
119
+
120
+ stages.append(stages_item)
121
+
122
+ return stages
123
+
124
+ try:
125
+ stages = get_stages()
126
+ except KeyError:
127
+ if strict:
128
+ raise
129
+ stages = cast(Union[Unset, List[EntryReviewProcessStagesItem]], UNSET)
130
+
131
+ def get_type() -> Union[Unset, EntryReviewProcessType]:
132
+ type = UNSET
133
+ _type = d.pop("type")
134
+ if _type is not None and _type is not UNSET:
135
+ try:
136
+ type = EntryReviewProcessType(_type)
137
+ except ValueError:
138
+ type = EntryReviewProcessType.of_unknown(_type)
139
+
140
+ return type
141
+
142
+ try:
143
+ type = get_type()
144
+ except KeyError:
145
+ if strict:
146
+ raise
147
+ type = cast(Union[Unset, EntryReviewProcessType], UNSET)
148
+
149
+ entry_review_process = cls(
150
+ completion_status=completion_status,
151
+ id=id,
152
+ name=name,
153
+ stages=stages,
154
+ type=type,
155
+ )
156
+
157
+ entry_review_process.additional_properties = d
158
+ return entry_review_process
159
+
160
+ @property
161
+ def additional_keys(self) -> List[str]:
162
+ return list(self.additional_properties.keys())
163
+
164
+ def __getitem__(self, key: str) -> Any:
165
+ return self.additional_properties[key]
166
+
167
+ def __setitem__(self, key: str, value: Any) -> None:
168
+ self.additional_properties[key] = value
169
+
170
+ def __delitem__(self, key: str) -> None:
171
+ del self.additional_properties[key]
172
+
173
+ def __contains__(self, key: str) -> bool:
174
+ return key in self.additional_properties
175
+
176
+ def get(self, key, default=None) -> Optional[Any]:
177
+ return self.additional_properties.get(key, default)
178
+
179
+ @property
180
+ def completion_status(self) -> EntryReviewProcessCompletionStatus:
181
+ """ State of the Entry at the end of the Review Process """
182
+ if isinstance(self._completion_status, Unset):
183
+ raise NotPresentError(self, "completion_status")
184
+ return self._completion_status
185
+
186
+ @completion_status.setter
187
+ def completion_status(self, value: EntryReviewProcessCompletionStatus) -> None:
188
+ self._completion_status = value
189
+
190
+ @completion_status.deleter
191
+ def completion_status(self) -> None:
192
+ self._completion_status = UNSET
193
+
194
+ @property
195
+ def id(self) -> str:
196
+ """ ID of the Review Process """
197
+ if isinstance(self._id, Unset):
198
+ raise NotPresentError(self, "id")
199
+ return self._id
200
+
201
+ @id.setter
202
+ def id(self, value: str) -> None:
203
+ self._id = value
204
+
205
+ @id.deleter
206
+ def id(self) -> None:
207
+ self._id = UNSET
208
+
209
+ @property
210
+ def name(self) -> str:
211
+ """ Name of the Review Process """
212
+ if isinstance(self._name, Unset):
213
+ raise NotPresentError(self, "name")
214
+ return self._name
215
+
216
+ @name.setter
217
+ def name(self, value: str) -> None:
218
+ self._name = value
219
+
220
+ @name.deleter
221
+ def name(self) -> None:
222
+ self._name = UNSET
223
+
224
+ @property
225
+ def stages(self) -> List[EntryReviewProcessStagesItem]:
226
+ """ Array of Stages for the Review Process """
227
+ if isinstance(self._stages, Unset):
228
+ raise NotPresentError(self, "stages")
229
+ return self._stages
230
+
231
+ @stages.setter
232
+ def stages(self, value: List[EntryReviewProcessStagesItem]) -> None:
233
+ self._stages = value
234
+
235
+ @stages.deleter
236
+ def stages(self) -> None:
237
+ self._stages = UNSET
238
+
239
+ @property
240
+ def type(self) -> EntryReviewProcessType:
241
+ """ Type of the Review Process """
242
+ if isinstance(self._type, Unset):
243
+ raise NotPresentError(self, "type")
244
+ return self._type
245
+
246
+ @type.setter
247
+ def type(self, value: EntryReviewProcessType) -> None:
248
+ self._type = value
249
+
250
+ @type.deleter
251
+ def type(self) -> None:
252
+ self._type = UNSET
@@ -0,0 +1,27 @@
1
+ from enum import Enum
2
+ from functools import lru_cache
3
+ from typing import cast
4
+
5
+ from ..extensions import Enums
6
+
7
+
8
+ class EntryReviewProcessCompletionStatus(Enums.KnownString):
9
+ APPROVED = "APPROVED"
10
+ COMPLETED = "COMPLETED"
11
+ ACCEPTED = "ACCEPTED"
12
+ REVIEWED = "REVIEWED"
13
+ WITNESSED = "WITNESSED"
14
+ SELF_REVIEWED = "SELF_REVIEWED"
15
+
16
+ def __str__(self) -> str:
17
+ return str(self.value)
18
+
19
+ @staticmethod
20
+ @lru_cache(maxsize=None)
21
+ def of_unknown(val: str) -> "EntryReviewProcessCompletionStatus":
22
+ if not isinstance(val, str):
23
+ raise ValueError(
24
+ f"Value of EntryReviewProcessCompletionStatus must be a string (encountered: {val})"
25
+ )
26
+ newcls = Enum("EntryReviewProcessCompletionStatus", {"_UNKNOWN": val}, type=Enums.UnknownString) # type: ignore
27
+ return cast(EntryReviewProcessCompletionStatus, getattr(newcls, "_UNKNOWN"))
@@ -0,0 +1,211 @@
1
+ from typing import Any, cast, Dict, List, Optional, Type, TypeVar, Union
2
+
3
+ import attr
4
+
5
+ from ..extensions import NotPresentError
6
+ from ..models.entry_review_process_stages_item_action_label import EntryReviewProcessStagesItemActionLabel
7
+ from ..models.entry_review_process_stages_item_reviewers_item import EntryReviewProcessStagesItemReviewersItem
8
+ from ..types import UNSET, Unset
9
+
10
+ T = TypeVar("T", bound="EntryReviewProcessStagesItem")
11
+
12
+
13
+ @attr.s(auto_attribs=True, repr=False)
14
+ class EntryReviewProcessStagesItem:
15
+ """ """
16
+
17
+ _action_label: Union[Unset, EntryReviewProcessStagesItemActionLabel] = UNSET
18
+ _id: Union[Unset, str] = UNSET
19
+ _name: Union[Unset, str] = UNSET
20
+ _reviewers: Union[Unset, List[EntryReviewProcessStagesItemReviewersItem]] = UNSET
21
+ additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
22
+
23
+ def __repr__(self):
24
+ fields = []
25
+ fields.append("action_label={}".format(repr(self._action_label)))
26
+ fields.append("id={}".format(repr(self._id)))
27
+ fields.append("name={}".format(repr(self._name)))
28
+ fields.append("reviewers={}".format(repr(self._reviewers)))
29
+ fields.append("additional_properties={}".format(repr(self.additional_properties)))
30
+ return "EntryReviewProcessStagesItem({})".format(", ".join(fields))
31
+
32
+ def to_dict(self) -> Dict[str, Any]:
33
+ action_label: Union[Unset, int] = UNSET
34
+ if not isinstance(self._action_label, Unset):
35
+ action_label = self._action_label.value
36
+
37
+ id = self._id
38
+ name = self._name
39
+ reviewers: Union[Unset, List[Any]] = UNSET
40
+ if not isinstance(self._reviewers, Unset):
41
+ reviewers = []
42
+ for reviewers_item_data in self._reviewers:
43
+ reviewers_item = reviewers_item_data.to_dict()
44
+
45
+ reviewers.append(reviewers_item)
46
+
47
+ field_dict: Dict[str, Any] = {}
48
+ field_dict.update(self.additional_properties)
49
+ # Allow the model to serialize even if it was created outside of the constructor, circumventing validation
50
+ if action_label is not UNSET:
51
+ field_dict["actionLabel"] = action_label
52
+ if id is not UNSET:
53
+ field_dict["id"] = id
54
+ if name is not UNSET:
55
+ field_dict["name"] = name
56
+ if reviewers is not UNSET:
57
+ field_dict["reviewers"] = reviewers
58
+
59
+ return field_dict
60
+
61
+ @classmethod
62
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any], strict: bool = False) -> T:
63
+ d = src_dict.copy()
64
+
65
+ def get_action_label() -> Union[Unset, EntryReviewProcessStagesItemActionLabel]:
66
+ action_label = UNSET
67
+ _action_label = d.pop("actionLabel")
68
+ if _action_label is not None and _action_label is not UNSET:
69
+ try:
70
+ action_label = EntryReviewProcessStagesItemActionLabel(_action_label)
71
+ except ValueError:
72
+ action_label = EntryReviewProcessStagesItemActionLabel.of_unknown(_action_label)
73
+
74
+ return action_label
75
+
76
+ try:
77
+ action_label = get_action_label()
78
+ except KeyError:
79
+ if strict:
80
+ raise
81
+ action_label = cast(Union[Unset, EntryReviewProcessStagesItemActionLabel], UNSET)
82
+
83
+ def get_id() -> Union[Unset, str]:
84
+ id = d.pop("id")
85
+ return id
86
+
87
+ try:
88
+ id = get_id()
89
+ except KeyError:
90
+ if strict:
91
+ raise
92
+ id = cast(Union[Unset, str], UNSET)
93
+
94
+ def get_name() -> Union[Unset, str]:
95
+ name = d.pop("name")
96
+ return name
97
+
98
+ try:
99
+ name = get_name()
100
+ except KeyError:
101
+ if strict:
102
+ raise
103
+ name = cast(Union[Unset, str], UNSET)
104
+
105
+ def get_reviewers() -> Union[Unset, List[EntryReviewProcessStagesItemReviewersItem]]:
106
+ reviewers = []
107
+ _reviewers = d.pop("reviewers")
108
+ for reviewers_item_data in _reviewers or []:
109
+ reviewers_item = EntryReviewProcessStagesItemReviewersItem.from_dict(
110
+ reviewers_item_data, strict=False
111
+ )
112
+
113
+ reviewers.append(reviewers_item)
114
+
115
+ return reviewers
116
+
117
+ try:
118
+ reviewers = get_reviewers()
119
+ except KeyError:
120
+ if strict:
121
+ raise
122
+ reviewers = cast(Union[Unset, List[EntryReviewProcessStagesItemReviewersItem]], UNSET)
123
+
124
+ entry_review_process_stages_item = cls(
125
+ action_label=action_label,
126
+ id=id,
127
+ name=name,
128
+ reviewers=reviewers,
129
+ )
130
+
131
+ entry_review_process_stages_item.additional_properties = d
132
+ return entry_review_process_stages_item
133
+
134
+ @property
135
+ def additional_keys(self) -> List[str]:
136
+ return list(self.additional_properties.keys())
137
+
138
+ def __getitem__(self, key: str) -> Any:
139
+ return self.additional_properties[key]
140
+
141
+ def __setitem__(self, key: str, value: Any) -> None:
142
+ self.additional_properties[key] = value
143
+
144
+ def __delitem__(self, key: str) -> None:
145
+ del self.additional_properties[key]
146
+
147
+ def __contains__(self, key: str) -> bool:
148
+ return key in self.additional_properties
149
+
150
+ def get(self, key, default=None) -> Optional[Any]:
151
+ return self.additional_properties.get(key, default)
152
+
153
+ @property
154
+ def action_label(self) -> EntryReviewProcessStagesItemActionLabel:
155
+ """ Action reviewer is doing during the review """
156
+ if isinstance(self._action_label, Unset):
157
+ raise NotPresentError(self, "action_label")
158
+ return self._action_label
159
+
160
+ @action_label.setter
161
+ def action_label(self, value: EntryReviewProcessStagesItemActionLabel) -> None:
162
+ self._action_label = value
163
+
164
+ @action_label.deleter
165
+ def action_label(self) -> None:
166
+ self._action_label = UNSET
167
+
168
+ @property
169
+ def id(self) -> str:
170
+ """ ID of the Review Stage """
171
+ if isinstance(self._id, Unset):
172
+ raise NotPresentError(self, "id")
173
+ return self._id
174
+
175
+ @id.setter
176
+ def id(self, value: str) -> None:
177
+ self._id = value
178
+
179
+ @id.deleter
180
+ def id(self) -> None:
181
+ self._id = UNSET
182
+
183
+ @property
184
+ def name(self) -> str:
185
+ """ Name of the Review Stage """
186
+ if isinstance(self._name, Unset):
187
+ raise NotPresentError(self, "name")
188
+ return self._name
189
+
190
+ @name.setter
191
+ def name(self, value: str) -> None:
192
+ self._name = value
193
+
194
+ @name.deleter
195
+ def name(self) -> None:
196
+ self._name = UNSET
197
+
198
+ @property
199
+ def reviewers(self) -> List[EntryReviewProcessStagesItemReviewersItem]:
200
+ """ Reviewers for the Review Stage """
201
+ if isinstance(self._reviewers, Unset):
202
+ raise NotPresentError(self, "reviewers")
203
+ return self._reviewers
204
+
205
+ @reviewers.setter
206
+ def reviewers(self, value: List[EntryReviewProcessStagesItemReviewersItem]) -> None:
207
+ self._reviewers = value
208
+
209
+ @reviewers.deleter
210
+ def reviewers(self) -> None:
211
+ self._reviewers = UNSET
@@ -0,0 +1,27 @@
1
+ from enum import Enum
2
+ from functools import lru_cache
3
+ from typing import cast
4
+
5
+ from ..extensions import Enums
6
+
7
+
8
+ class EntryReviewProcessStagesItemActionLabel(Enums.KnownString):
9
+ APPROVE = "APPROVE"
10
+ COMPLETE = "COMPLETE"
11
+ ACCEPT = "ACCEPT"
12
+ REVIEW = "REVIEW"
13
+ WITNESS = "WITNESS"
14
+ SELF_REVIEW = "SELF_REVIEW"
15
+
16
+ def __str__(self) -> str:
17
+ return str(self.value)
18
+
19
+ @staticmethod
20
+ @lru_cache(maxsize=None)
21
+ def of_unknown(val: str) -> "EntryReviewProcessStagesItemActionLabel":
22
+ if not isinstance(val, str):
23
+ raise ValueError(
24
+ f"Value of EntryReviewProcessStagesItemActionLabel must be a string (encountered: {val})"
25
+ )
26
+ newcls = Enum("EntryReviewProcessStagesItemActionLabel", {"_UNKNOWN": val}, type=Enums.UnknownString) # type: ignore
27
+ return cast(EntryReviewProcessStagesItemActionLabel, getattr(newcls, "_UNKNOWN"))
@@ -0,0 +1,195 @@
1
+ from typing import Any, cast, Dict, List, Optional, Type, TypeVar, Union
2
+
3
+ import attr
4
+
5
+ from ..extensions import NotPresentError
6
+ from ..models.entry_review_process_stages_item_reviewers_item_status import (
7
+ EntryReviewProcessStagesItemReviewersItemStatus,
8
+ )
9
+ from ..types import UNSET, Unset
10
+
11
+ T = TypeVar("T", bound="EntryReviewProcessStagesItemReviewersItem")
12
+
13
+
14
+ @attr.s(auto_attribs=True, repr=False)
15
+ class EntryReviewProcessStagesItemReviewersItem:
16
+ """ """
17
+
18
+ _status: Union[Unset, EntryReviewProcessStagesItemReviewersItemStatus] = UNSET
19
+ _handle: Union[Unset, str] = UNSET
20
+ _id: Union[Unset, str] = UNSET
21
+ _name: Union[Unset, str] = UNSET
22
+ additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
23
+
24
+ def __repr__(self):
25
+ fields = []
26
+ fields.append("status={}".format(repr(self._status)))
27
+ fields.append("handle={}".format(repr(self._handle)))
28
+ fields.append("id={}".format(repr(self._id)))
29
+ fields.append("name={}".format(repr(self._name)))
30
+ fields.append("additional_properties={}".format(repr(self.additional_properties)))
31
+ return "EntryReviewProcessStagesItemReviewersItem({})".format(", ".join(fields))
32
+
33
+ def to_dict(self) -> Dict[str, Any]:
34
+ status: Union[Unset, int] = UNSET
35
+ if not isinstance(self._status, Unset):
36
+ status = self._status.value
37
+
38
+ handle = self._handle
39
+ id = self._id
40
+ name = self._name
41
+
42
+ field_dict: Dict[str, Any] = {}
43
+ field_dict.update(self.additional_properties)
44
+ # Allow the model to serialize even if it was created outside of the constructor, circumventing validation
45
+ if status is not UNSET:
46
+ field_dict["status"] = status
47
+ if handle is not UNSET:
48
+ field_dict["handle"] = handle
49
+ if id is not UNSET:
50
+ field_dict["id"] = id
51
+ if name is not UNSET:
52
+ field_dict["name"] = name
53
+
54
+ return field_dict
55
+
56
+ @classmethod
57
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any], strict: bool = False) -> T:
58
+ d = src_dict.copy()
59
+
60
+ def get_status() -> Union[Unset, EntryReviewProcessStagesItemReviewersItemStatus]:
61
+ status = UNSET
62
+ _status = d.pop("status")
63
+ if _status is not None and _status is not UNSET:
64
+ try:
65
+ status = EntryReviewProcessStagesItemReviewersItemStatus(_status)
66
+ except ValueError:
67
+ status = EntryReviewProcessStagesItemReviewersItemStatus.of_unknown(_status)
68
+
69
+ return status
70
+
71
+ try:
72
+ status = get_status()
73
+ except KeyError:
74
+ if strict:
75
+ raise
76
+ status = cast(Union[Unset, EntryReviewProcessStagesItemReviewersItemStatus], UNSET)
77
+
78
+ def get_handle() -> Union[Unset, str]:
79
+ handle = d.pop("handle")
80
+ return handle
81
+
82
+ try:
83
+ handle = get_handle()
84
+ except KeyError:
85
+ if strict:
86
+ raise
87
+ handle = cast(Union[Unset, str], UNSET)
88
+
89
+ def get_id() -> Union[Unset, str]:
90
+ id = d.pop("id")
91
+ return id
92
+
93
+ try:
94
+ id = get_id()
95
+ except KeyError:
96
+ if strict:
97
+ raise
98
+ id = cast(Union[Unset, str], UNSET)
99
+
100
+ def get_name() -> Union[Unset, str]:
101
+ name = d.pop("name")
102
+ return name
103
+
104
+ try:
105
+ name = get_name()
106
+ except KeyError:
107
+ if strict:
108
+ raise
109
+ name = cast(Union[Unset, str], UNSET)
110
+
111
+ entry_review_process_stages_item_reviewers_item = cls(
112
+ status=status,
113
+ handle=handle,
114
+ id=id,
115
+ name=name,
116
+ )
117
+
118
+ entry_review_process_stages_item_reviewers_item.additional_properties = d
119
+ return entry_review_process_stages_item_reviewers_item
120
+
121
+ @property
122
+ def additional_keys(self) -> List[str]:
123
+ return list(self.additional_properties.keys())
124
+
125
+ def __getitem__(self, key: str) -> Any:
126
+ return self.additional_properties[key]
127
+
128
+ def __setitem__(self, key: str, value: Any) -> None:
129
+ self.additional_properties[key] = value
130
+
131
+ def __delitem__(self, key: str) -> None:
132
+ del self.additional_properties[key]
133
+
134
+ def __contains__(self, key: str) -> bool:
135
+ return key in self.additional_properties
136
+
137
+ def get(self, key, default=None) -> Optional[Any]:
138
+ return self.additional_properties.get(key, default)
139
+
140
+ @property
141
+ def status(self) -> EntryReviewProcessStagesItemReviewersItemStatus:
142
+ """ Status of the Reviewer """
143
+ if isinstance(self._status, Unset):
144
+ raise NotPresentError(self, "status")
145
+ return self._status
146
+
147
+ @status.setter
148
+ def status(self, value: EntryReviewProcessStagesItemReviewersItemStatus) -> None:
149
+ self._status = value
150
+
151
+ @status.deleter
152
+ def status(self) -> None:
153
+ self._status = UNSET
154
+
155
+ @property
156
+ def handle(self) -> str:
157
+ if isinstance(self._handle, Unset):
158
+ raise NotPresentError(self, "handle")
159
+ return self._handle
160
+
161
+ @handle.setter
162
+ def handle(self, value: str) -> None:
163
+ self._handle = value
164
+
165
+ @handle.deleter
166
+ def handle(self) -> None:
167
+ self._handle = UNSET
168
+
169
+ @property
170
+ def id(self) -> str:
171
+ if isinstance(self._id, Unset):
172
+ raise NotPresentError(self, "id")
173
+ return self._id
174
+
175
+ @id.setter
176
+ def id(self, value: str) -> None:
177
+ self._id = value
178
+
179
+ @id.deleter
180
+ def id(self) -> None:
181
+ self._id = UNSET
182
+
183
+ @property
184
+ def name(self) -> str:
185
+ if isinstance(self._name, Unset):
186
+ raise NotPresentError(self, "name")
187
+ return self._name
188
+
189
+ @name.setter
190
+ def name(self, value: str) -> None:
191
+ self._name = value
192
+
193
+ @name.deleter
194
+ def name(self) -> None:
195
+ self._name = UNSET
@@ -0,0 +1,25 @@
1
+ from enum import Enum
2
+ from functools import lru_cache
3
+ from typing import cast
4
+
5
+ from ..extensions import Enums
6
+
7
+
8
+ class EntryReviewProcessStagesItemReviewersItemStatus(Enums.KnownString):
9
+ BLOCKED = "BLOCKED"
10
+ PENDING = "PENDING"
11
+ FINISHED = "FINISHED"
12
+ REJECTED = "REJECTED"
13
+
14
+ def __str__(self) -> str:
15
+ return str(self.value)
16
+
17
+ @staticmethod
18
+ @lru_cache(maxsize=None)
19
+ def of_unknown(val: str) -> "EntryReviewProcessStagesItemReviewersItemStatus":
20
+ if not isinstance(val, str):
21
+ raise ValueError(
22
+ f"Value of EntryReviewProcessStagesItemReviewersItemStatus must be a string (encountered: {val})"
23
+ )
24
+ newcls = Enum("EntryReviewProcessStagesItemReviewersItemStatus", {"_UNKNOWN": val}, type=Enums.UnknownString) # type: ignore
25
+ return cast(EntryReviewProcessStagesItemReviewersItemStatus, getattr(newcls, "_UNKNOWN"))
@@ -0,0 +1,22 @@
1
+ from enum import Enum
2
+ from functools import lru_cache
3
+ from typing import cast
4
+
5
+ from ..extensions import Enums
6
+
7
+
8
+ class EntryReviewProcessType(Enums.KnownString):
9
+ SELF_REVIEW = "SELF_REVIEW"
10
+ SEQUENTIAL = "SEQUENTIAL"
11
+ PARALLEL = "PARALLEL"
12
+
13
+ def __str__(self) -> str:
14
+ return str(self.value)
15
+
16
+ @staticmethod
17
+ @lru_cache(maxsize=None)
18
+ def of_unknown(val: str) -> "EntryReviewProcessType":
19
+ if not isinstance(val, str):
20
+ raise ValueError(f"Value of EntryReviewProcessType must be a string (encountered: {val})")
21
+ newcls = Enum("EntryReviewProcessType", {"_UNKNOWN": val}, type=Enums.UnknownString) # type: ignore
22
+ return cast(EntryReviewProcessType, getattr(newcls, "_UNKNOWN"))
@@ -3,6 +3,7 @@ from typing import Any, cast, Dict, List, Optional, Type, TypeVar, Union
3
3
  import attr
4
4
 
5
5
  from ..extensions import NotPresentError
6
+ from ..models.entry_review_process import EntryReviewProcess
6
7
  from ..models.review_change import ReviewChange
7
8
  from ..models.worksheet_review_changes_review_record_status import WorksheetReviewChangesReviewRecordStatus
8
9
  from ..types import UNSET, Unset
@@ -16,6 +17,7 @@ class WorksheetReviewChangesReviewRecord:
16
17
 
17
18
  _comment: Union[Unset, str] = UNSET
18
19
  _review_changes: Union[Unset, List[ReviewChange]] = UNSET
20
+ _review_processes: Union[Unset, None, List[EntryReviewProcess]] = UNSET
19
21
  _status: Union[Unset, WorksheetReviewChangesReviewRecordStatus] = UNSET
20
22
  additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
21
23
 
@@ -23,6 +25,7 @@ class WorksheetReviewChangesReviewRecord:
23
25
  fields = []
24
26
  fields.append("comment={}".format(repr(self._comment)))
25
27
  fields.append("review_changes={}".format(repr(self._review_changes)))
28
+ fields.append("review_processes={}".format(repr(self._review_processes)))
26
29
  fields.append("status={}".format(repr(self._status)))
27
30
  fields.append("additional_properties={}".format(repr(self.additional_properties)))
28
31
  return "WorksheetReviewChangesReviewRecord({})".format(", ".join(fields))
@@ -37,6 +40,17 @@ class WorksheetReviewChangesReviewRecord:
37
40
 
38
41
  review_changes.append(review_changes_item)
39
42
 
43
+ review_processes: Union[Unset, None, List[Any]] = UNSET
44
+ if not isinstance(self._review_processes, Unset):
45
+ if self._review_processes is None:
46
+ review_processes = None
47
+ else:
48
+ review_processes = []
49
+ for review_processes_item_data in self._review_processes:
50
+ review_processes_item = review_processes_item_data.to_dict()
51
+
52
+ review_processes.append(review_processes_item)
53
+
40
54
  status: Union[Unset, int] = UNSET
41
55
  if not isinstance(self._status, Unset):
42
56
  status = self._status.value
@@ -48,6 +62,8 @@ class WorksheetReviewChangesReviewRecord:
48
62
  field_dict["comment"] = comment
49
63
  if review_changes is not UNSET:
50
64
  field_dict["reviewChanges"] = review_changes
65
+ if review_processes is not UNSET:
66
+ field_dict["reviewProcesses"] = review_processes
51
67
  if status is not UNSET:
52
68
  field_dict["status"] = status
53
69
 
@@ -85,6 +101,23 @@ class WorksheetReviewChangesReviewRecord:
85
101
  raise
86
102
  review_changes = cast(Union[Unset, List[ReviewChange]], UNSET)
87
103
 
104
+ def get_review_processes() -> Union[Unset, None, List[EntryReviewProcess]]:
105
+ review_processes = []
106
+ _review_processes = d.pop("reviewProcesses")
107
+ for review_processes_item_data in _review_processes or []:
108
+ review_processes_item = EntryReviewProcess.from_dict(review_processes_item_data, strict=False)
109
+
110
+ review_processes.append(review_processes_item)
111
+
112
+ return review_processes
113
+
114
+ try:
115
+ review_processes = get_review_processes()
116
+ except KeyError:
117
+ if strict:
118
+ raise
119
+ review_processes = cast(Union[Unset, None, List[EntryReviewProcess]], UNSET)
120
+
88
121
  def get_status() -> Union[Unset, WorksheetReviewChangesReviewRecordStatus]:
89
122
  status = UNSET
90
123
  _status = d.pop("status")
@@ -106,6 +139,7 @@ class WorksheetReviewChangesReviewRecord:
106
139
  worksheet_review_changes_review_record = cls(
107
140
  comment=comment,
108
141
  review_changes=review_changes,
142
+ review_processes=review_processes,
109
143
  status=status,
110
144
  )
111
145
 
@@ -161,6 +195,21 @@ class WorksheetReviewChangesReviewRecord:
161
195
  def review_changes(self) -> None:
162
196
  self._review_changes = UNSET
163
197
 
198
+ @property
199
+ def review_processes(self) -> Optional[List[EntryReviewProcess]]:
200
+ """ Review Processes associated with the Worksheet """
201
+ if isinstance(self._review_processes, Unset):
202
+ raise NotPresentError(self, "review_processes")
203
+ return self._review_processes
204
+
205
+ @review_processes.setter
206
+ def review_processes(self, value: Optional[List[EntryReviewProcess]]) -> None:
207
+ self._review_processes = value
208
+
209
+ @review_processes.deleter
210
+ def review_processes(self) -> None:
211
+ self._review_processes = UNSET
212
+
164
213
  @property
165
214
  def status(self) -> WorksheetReviewChangesReviewRecordStatus:
166
215
  """ Review Status of the worksheet """
@@ -5046,6 +5046,12 @@ components:
5046
5046
  items:
5047
5047
  $ref: '#/components/schemas/ReviewChange'
5048
5048
  type: array
5049
+ reviewProcesses:
5050
+ description: Review Processes associated with the Entry
5051
+ items:
5052
+ $ref: '#/components/schemas/EntryReviewProcess'
5053
+ nullable: true
5054
+ type: array
5049
5055
  status:
5050
5056
  description: Review Status of the entry
5051
5057
  enum:
@@ -5185,6 +5191,70 @@ components:
5185
5191
  - $ref: '#/components/schemas/ChartNotePart'
5186
5192
  - $ref: '#/components/schemas/AppCanvasNotePart'
5187
5193
  type: object
5194
+ EntryReviewProcess:
5195
+ properties:
5196
+ completionStatus:
5197
+ description: State of the Entry at the end of the Review Process
5198
+ enum:
5199
+ - APPROVED
5200
+ - COMPLETED
5201
+ - ACCEPTED
5202
+ - REVIEWED
5203
+ - WITNESSED
5204
+ - SELF_REVIEWED
5205
+ type: string
5206
+ id:
5207
+ description: ID of the Review Process
5208
+ type: string
5209
+ name:
5210
+ description: Name of the Review Process
5211
+ type: string
5212
+ stages:
5213
+ description: Array of Stages for the Review Process
5214
+ items:
5215
+ properties:
5216
+ actionLabel:
5217
+ description: Action reviewer is doing during the review
5218
+ enum:
5219
+ - APPROVE
5220
+ - COMPLETE
5221
+ - ACCEPT
5222
+ - REVIEW
5223
+ - WITNESS
5224
+ - SELF_REVIEW
5225
+ type: string
5226
+ id:
5227
+ description: ID of the Review Stage
5228
+ type: string
5229
+ name:
5230
+ description: Name of the Review Stage
5231
+ type: string
5232
+ reviewers:
5233
+ description: Reviewers for the Review Stage
5234
+ items:
5235
+ allOf:
5236
+ - $ref: '#/components/schemas/PartySummary'
5237
+ - properties:
5238
+ status:
5239
+ description: Status of the Reviewer
5240
+ enum:
5241
+ - BLOCKED
5242
+ - PENDING
5243
+ - FINISHED
5244
+ - REJECTED
5245
+ type: string
5246
+ type: object
5247
+ type: array
5248
+ type: object
5249
+ type: array
5250
+ type:
5251
+ description: Type of the Review Process
5252
+ enum:
5253
+ - SELF_REVIEW
5254
+ - SEQUENTIAL
5255
+ - PARALLEL
5256
+ type: string
5257
+ type: object
5188
5258
  EntrySchema:
5189
5259
  description: Entry schema
5190
5260
  properties:
@@ -7811,6 +7881,12 @@ components:
7811
7881
  items:
7812
7882
  $ref: '#/components/schemas/ReviewChange'
7813
7883
  type: array
7884
+ reviewProcesses:
7885
+ description: Review Processes associated with the Worksheet
7886
+ items:
7887
+ $ref: '#/components/schemas/EntryReviewProcess'
7888
+ nullable: true
7889
+ type: array
7814
7890
  status:
7815
7891
  description: Review Status of the worksheet
7816
7892
  enum:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: benchling-api-client
3
- Version: 2.0.418
3
+ Version: 2.0.419
4
4
  Summary: Autogenerated Python client from OpenAPI Python Client generator
5
5
  License: Apache-2.0
6
6
  Author: Benchling Support
@@ -2343,13 +2343,20 @@ benchling_api_client/v2/beta/models/entity_worklist_items_list.py,sha256=R_3RP7w
2343
2343
  benchling_api_client/v2/beta/models/entity_worklist_items_list_type.py,sha256=Ihceu0Zjic5suYDEeKwKg5ttpXxnMrQEAdyAAgdUAXE,704
2344
2344
  benchling_api_client/v2/beta/models/entry.py,sha256=Z5FS0JWfZPvUT-B3h1F-yWM6tyk9PXoIGSfwXN2pRsI,24857
2345
2345
  benchling_api_client/v2/beta/models/entry_beta.py,sha256=_ua70XEjvNb_c0VDT3xTDOitTrx_8nYbs2-fZnd8CRY,24917
2346
- benchling_api_client/v2/beta/models/entry_beta_review_record.py,sha256=8UdDecwDTEqpYEIAM3sshtf5w0-YqZLHop5Lgc_bdTQ,5995
2346
+ benchling_api_client/v2/beta/models/entry_beta_review_record.py,sha256=2XneX28rIZXmqKYBxMkhGbIWYzXmSdPM-rmShRglfxw,8097
2347
2347
  benchling_api_client/v2/beta/models/entry_beta_review_record_status.py,sha256=W0WVVurVsa5OOoTttkrRpL9qqmQXu4uReN80Hwwtkyc,998
2348
2348
  benchling_api_client/v2/beta/models/entry_by_id.py,sha256=04gB63nxjElUWX7BT2rFZyGVwzQ8VrEdnNcGx90P16A,3612
2349
2349
  benchling_api_client/v2/beta/models/entry_day.py,sha256=VHSjOoQw6sDNTvNqg031Ztm-Xq9391hmQWfX8LXbkxw,24013
2350
2350
  benchling_api_client/v2/beta/models/entry_link.py,sha256=teGLDCAPMIUcNEbQj2dbUfQcUFwvMBAJiK63vGrDc4M,5491
2351
2351
  benchling_api_client/v2/beta/models/entry_link_type.py,sha256=vnFWrven1Lzf2Xf2Jd1-65pfPOqcEwwMS_qjne6XHSs,1086
2352
2352
  benchling_api_client/v2/beta/models/entry_note_part.py,sha256=DAqEJWsC1XVzNP7B5Dpu7vXcrrjEClhU4mrQNyGMkMI,1579
2353
+ benchling_api_client/v2/beta/models/entry_review_process.py,sha256=3pUFe93TnfhjxNdJce0DJgvPqiNqzpR-jPpP4YcQc2k,8292
2354
+ benchling_api_client/v2/beta/models/entry_review_process_completion_status.py,sha256=Af1_ViLOQeAVb0ZAtXFIgU-0GkbhTUokQ6VcIhgjDvI,911
2355
+ benchling_api_client/v2/beta/models/entry_review_process_stages_item.py,sha256=HGlpPrVro1EITFfAZXEdUpbbcrKl-hmuIxl7xtfaVAg,7105
2356
+ benchling_api_client/v2/beta/models/entry_review_process_stages_item_action_label.py,sha256=dnej89HqHv-r5hkxiS4W7txQaPZ264QCjcLqs0fTyLw,916
2357
+ benchling_api_client/v2/beta/models/entry_review_process_stages_item_reviewers_item.py,sha256=Bk-y32F7xZGzI9NyPqj4WNzc6l3uwFFyUlH9ziEqpwE,5942
2358
+ benchling_api_client/v2/beta/models/entry_review_process_stages_item_reviewers_item_status.py,sha256=Rc6u-QtB4uU270Lt6DdHX_NTvtlJFWUu1K2J1NgMDQ0,906
2359
+ benchling_api_client/v2/beta/models/entry_review_process_type.py,sha256=XazpF_uHQfOD35PgvgZaXj7wdUqk0P8h6ytL75j_7ok,739
2353
2360
  benchling_api_client/v2/beta/models/entry_review_record.py,sha256=xUuJMnJzXCQQXcvJWWooL3HpQdIycslAu3Kli_3Ssu0,4105
2354
2361
  benchling_api_client/v2/beta/models/entry_review_record_status.py,sha256=nUrlSL_NQL8e-9B-0ibCFOjZWcSz3_cqLhVcCkX_Oow,978
2355
2362
  benchling_api_client/v2/beta/models/entry_schema.py,sha256=gAf50BRfEd829cum77RHIk02MZ96vaBWmrKCQDSgfMI,4812
@@ -2540,9 +2547,9 @@ benchling_api_client/v2/beta/models/worklist_update.py,sha256=kR8yNfIgKPOpTTxe2k
2540
2547
  benchling_api_client/v2/beta/models/worklists_paginated_list.py,sha256=80I-eXYAiIRVjbDPsmJqWJl3RU8leXUL5dB5RY12V-A,3358
2541
2548
  benchling_api_client/v2/beta/models/worksheet_review_changes.py,sha256=0MmkysLeA0PiIiL8C-4mbAi7-4C1r1HNF_hYxOBH5fE,11863
2542
2549
  benchling_api_client/v2/beta/models/worksheet_review_changes_by_id.py,sha256=UgTNMq3Q_ZcIumMhd8irgQAZjXCFFQeE33b_WiiYgDU,3344
2543
- benchling_api_client/v2/beta/models/worksheet_review_changes_review_record.py,sha256=vYjl1dskegWel0XUx2d0UEFhM5pQ_FKjGZNwKkYTHbQ,6202
2550
+ benchling_api_client/v2/beta/models/worksheet_review_changes_review_record.py,sha256=vNRKUQenUJu4yFa847RxaOn4J1BW8PulnioTFKrMexs,8308
2544
2551
  benchling_api_client/v2/beta/models/worksheet_review_changes_review_record_status.py,sha256=9VKJkUCQCFCdkJnV8-JLRQObhO0cTJf2ZeZnBIEyPFA,1093
2545
- benchling_api_client/v2/beta/openapi.yaml,sha256=GtCoVuqUga3RUZsYE71c44Hphyjo6ClaxBexnouv8kI,249442
2552
+ benchling_api_client/v2/beta/openapi.yaml,sha256=BwgFmaHEqXX4Vz68aOg3hhVjoFbFlMh2ri1B0f1Tp08,251857
2546
2553
  benchling_api_client/v2/beta/types.py,sha256=nCpxtn44qMDpuS_jcdbjhJlZFvRrXEUEVEDN471GrH8,244
2547
2554
  benchling_api_client/v2/client.py,sha256=-6Yzio8p22BaTJ_BEInEoUzmh4afxXlwceNFtn1vBLc,2241
2548
2555
  benchling_api_client/v2/extensions.py,sha256=4TSjnmlUquvmBu8up1vPXutEInf-oXDSZ58ciyBW7_E,1996
@@ -4547,7 +4554,7 @@ benchling_api_client/webhooks/v0/stable/models/workflow_task_updated_status_webh
4547
4554
  benchling_api_client/webhooks/v0/stable/openapi.yaml,sha256=Gvlve51cLq7Ws8ll_8Nx-6SGXuYEb8TWCoWzfg_YGnA,39400
4548
4555
  benchling_api_client/webhooks/v0/stable/types.py,sha256=nCpxtn44qMDpuS_jcdbjhJlZFvRrXEUEVEDN471GrH8,244
4549
4556
  benchling_api_client/webhooks/v0/types.py,sha256=SkWwIlK-UbP10AeiC1VeIQ_1HwALN65zpQyXPc0qDFs,1169
4550
- benchling_api_client-2.0.418.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
4551
- benchling_api_client-2.0.418.dist-info/METADATA,sha256=bOD2na8xmJHM4Rdi-vUCmroiIoOOxzRrpnK4chyXM40,1253
4552
- benchling_api_client-2.0.418.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
4553
- benchling_api_client-2.0.418.dist-info/RECORD,,
4557
+ benchling_api_client-2.0.419.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
4558
+ benchling_api_client-2.0.419.dist-info/METADATA,sha256=ud79u69aaD8kBmvql8GwDNwLOfjrE66PuwGul5WDSSY,1253
4559
+ benchling_api_client-2.0.419.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
4560
+ benchling_api_client-2.0.419.dist-info/RECORD,,