benchling-api-client 2.0.415__py3-none-any.whl → 2.0.417__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.
Files changed (53) hide show
  1. benchling_api_client/models/aa_sequence.py +1 -1
  2. benchling_api_client/models/aa_sequence_with_entity_type.py +1 -1
  3. benchling_api_client/models/container_content.py +183 -26
  4. benchling_api_client/models/entity.py +19 -7
  5. benchling_api_client/models/entity_or_inaccessible_resource.py +19 -7
  6. benchling_api_client/models/molecule_with_entity_type.py +787 -0
  7. benchling_api_client/models/molecule_with_entity_type_entity_type.py +22 -0
  8. benchling_api_client/models/registered_entities_list.py +89 -32
  9. benchling_api_client/models/request_response_samples_item_entity.py +216 -74
  10. benchling_api_client/models/rna_sequence_with_entity_type.py +1151 -0
  11. benchling_api_client/models/rna_sequence_with_entity_type_entity_type.py +22 -0
  12. benchling_api_client/v2/alpha/openapi.yaml +2 -2
  13. benchling_api_client/v2/beta/models/aa_sequence.py +1 -1
  14. benchling_api_client/v2/beta/models/aa_sequence_with_entity_type.py +865 -0
  15. benchling_api_client/v2/beta/models/aa_sequence_with_entity_type_entity_type.py +22 -0
  16. benchling_api_client/v2/beta/models/container_content.py +183 -26
  17. benchling_api_client/v2/beta/models/custom_entity_creator.py +2 -100
  18. benchling_api_client/v2/beta/models/custom_entity_with_entity_type.py +747 -0
  19. benchling_api_client/v2/beta/models/custom_entity_with_entity_type_entity_type.py +22 -0
  20. benchling_api_client/v2/beta/models/dna_oligo_with_entity_type.py +972 -0
  21. benchling_api_client/v2/beta/models/dna_oligo_with_entity_type_entity_type.py +22 -0
  22. benchling_api_client/v2/beta/models/dna_sequence_with_entity_type.py +1102 -0
  23. benchling_api_client/v2/beta/models/dna_sequence_with_entity_type_entity_type.py +22 -0
  24. benchling_api_client/v2/beta/models/entity.py +19 -7
  25. benchling_api_client/v2/beta/models/entity_or_inaccessible_resource.py +19 -7
  26. benchling_api_client/v2/beta/models/mixture_creator.py +2 -100
  27. benchling_api_client/v2/beta/models/mixture_with_entity_type.py +867 -0
  28. benchling_api_client/v2/beta/models/mixture_with_entity_type_entity_type.py +22 -0
  29. benchling_api_client/v2/beta/models/molecule_with_entity_type.py +787 -0
  30. benchling_api_client/v2/beta/models/molecule_with_entity_type_entity_type.py +22 -0
  31. benchling_api_client/v2/beta/models/rna_oligo_with_entity_type.py +972 -0
  32. benchling_api_client/v2/beta/models/rna_oligo_with_entity_type_entity_type.py +22 -0
  33. benchling_api_client/v2/beta/models/rna_sequence.py +1109 -0
  34. benchling_api_client/v2/beta/models/rna_sequence_part.py +183 -0
  35. benchling_api_client/v2/beta/models/rna_sequence_with_entity_type.py +1151 -0
  36. benchling_api_client/v2/beta/models/rna_sequence_with_entity_type_entity_type.py +22 -0
  37. benchling_api_client/v2/beta/openapi.yaml +219 -9
  38. benchling_api_client/v2/stable/models/aa_sequence.py +1 -1
  39. benchling_api_client/v2/stable/models/aa_sequence_with_entity_type.py +1 -1
  40. benchling_api_client/v2/stable/models/container_content.py +183 -26
  41. benchling_api_client/v2/stable/models/entity.py +19 -7
  42. benchling_api_client/v2/stable/models/entity_or_inaccessible_resource.py +19 -7
  43. benchling_api_client/v2/stable/models/molecule_with_entity_type.py +787 -0
  44. benchling_api_client/v2/stable/models/molecule_with_entity_type_entity_type.py +22 -0
  45. benchling_api_client/v2/stable/models/registered_entities_list.py +89 -32
  46. benchling_api_client/v2/stable/models/request_response_samples_item_entity.py +216 -74
  47. benchling_api_client/v2/stable/models/rna_sequence_with_entity_type.py +1151 -0
  48. benchling_api_client/v2/stable/models/rna_sequence_with_entity_type_entity_type.py +22 -0
  49. benchling_api_client/v2/stable/openapi.yaml +43 -25
  50. {benchling_api_client-2.0.415.dist-info → benchling_api_client-2.0.417.dist-info}/METADATA +1 -1
  51. {benchling_api_client-2.0.415.dist-info → benchling_api_client-2.0.417.dist-info}/RECORD +53 -27
  52. {benchling_api_client-2.0.415.dist-info → benchling_api_client-2.0.417.dist-info}/LICENSE +0 -0
  53. {benchling_api_client-2.0.415.dist-info → benchling_api_client-2.0.417.dist-info}/WHEEL +0 -0
@@ -0,0 +1,1102 @@
1
+ import datetime
2
+ from typing import Any, cast, Dict, List, Optional, Type, TypeVar, Union
3
+
4
+ import attr
5
+ from dateutil.parser import isoparse
6
+
7
+ from ..extensions import NotPresentError
8
+ from ..models.archive_record import ArchiveRecord
9
+ from ..models.custom_fields import CustomFields
10
+ from ..models.dna_annotation import DnaAnnotation
11
+ from ..models.dna_sequence_part import DnaSequencePart
12
+ from ..models.dna_sequence_transcription import DnaSequenceTranscription
13
+ from ..models.dna_sequence_with_entity_type_entity_type import DnaSequenceWithEntityTypeEntityType
14
+ from ..models.fields import Fields
15
+ from ..models.primer import Primer
16
+ from ..models.registration_origin import RegistrationOrigin
17
+ from ..models.schema_summary import SchemaSummary
18
+ from ..models.translation import Translation
19
+ from ..models.user_summary import UserSummary
20
+ from ..types import UNSET, Unset
21
+
22
+ T = TypeVar("T", bound="DnaSequenceWithEntityType")
23
+
24
+
25
+ @attr.s(auto_attribs=True, repr=False)
26
+ class DnaSequenceWithEntityType:
27
+ """ """
28
+
29
+ _entity_type: Union[Unset, DnaSequenceWithEntityTypeEntityType] = UNSET
30
+ _aliases: Union[Unset, List[str]] = UNSET
31
+ _annotations: Union[Unset, List[DnaAnnotation]] = UNSET
32
+ _api_url: Union[Unset, str] = UNSET
33
+ _archive_record: Union[Unset, None, ArchiveRecord] = UNSET
34
+ _authors: Union[Unset, List[UserSummary]] = UNSET
35
+ _bases: Union[Unset, str] = UNSET
36
+ _created_at: Union[Unset, datetime.datetime] = UNSET
37
+ _creator: Union[Unset, UserSummary] = UNSET
38
+ _custom_fields: Union[Unset, CustomFields] = UNSET
39
+ _dna_alignment_ids: Union[Unset, List[str]] = UNSET
40
+ _entity_registry_id: Union[Unset, None, str] = UNSET
41
+ _fields: Union[Unset, Fields] = UNSET
42
+ _folder_id: Union[Unset, None, str] = UNSET
43
+ _id: Union[Unset, str] = UNSET
44
+ _is_circular: Union[Unset, bool] = UNSET
45
+ _length: Union[Unset, int] = UNSET
46
+ _modified_at: Union[Unset, datetime.datetime] = UNSET
47
+ _name: Union[Unset, str] = UNSET
48
+ _parts: Union[Unset, List[DnaSequencePart]] = UNSET
49
+ _primers: Union[Unset, List[Primer]] = UNSET
50
+ _registration_origin: Union[Unset, None, RegistrationOrigin] = UNSET
51
+ _registry_id: Union[Unset, None, str] = UNSET
52
+ _schema: Union[Unset, None, SchemaSummary] = UNSET
53
+ _transcriptions: Union[Unset, List[DnaSequenceTranscription]] = UNSET
54
+ _translations: Union[Unset, List[Translation]] = UNSET
55
+ _url: Union[Unset, str] = UNSET
56
+ _web_url: Union[Unset, str] = UNSET
57
+ additional_properties: Dict[str, Any] = attr.ib(init=False, factory=dict)
58
+
59
+ def __repr__(self):
60
+ fields = []
61
+ fields.append("entity_type={}".format(repr(self._entity_type)))
62
+ fields.append("aliases={}".format(repr(self._aliases)))
63
+ fields.append("annotations={}".format(repr(self._annotations)))
64
+ fields.append("api_url={}".format(repr(self._api_url)))
65
+ fields.append("archive_record={}".format(repr(self._archive_record)))
66
+ fields.append("authors={}".format(repr(self._authors)))
67
+ fields.append("bases={}".format(repr(self._bases)))
68
+ fields.append("created_at={}".format(repr(self._created_at)))
69
+ fields.append("creator={}".format(repr(self._creator)))
70
+ fields.append("custom_fields={}".format(repr(self._custom_fields)))
71
+ fields.append("dna_alignment_ids={}".format(repr(self._dna_alignment_ids)))
72
+ fields.append("entity_registry_id={}".format(repr(self._entity_registry_id)))
73
+ fields.append("fields={}".format(repr(self._fields)))
74
+ fields.append("folder_id={}".format(repr(self._folder_id)))
75
+ fields.append("id={}".format(repr(self._id)))
76
+ fields.append("is_circular={}".format(repr(self._is_circular)))
77
+ fields.append("length={}".format(repr(self._length)))
78
+ fields.append("modified_at={}".format(repr(self._modified_at)))
79
+ fields.append("name={}".format(repr(self._name)))
80
+ fields.append("parts={}".format(repr(self._parts)))
81
+ fields.append("primers={}".format(repr(self._primers)))
82
+ fields.append("registration_origin={}".format(repr(self._registration_origin)))
83
+ fields.append("registry_id={}".format(repr(self._registry_id)))
84
+ fields.append("schema={}".format(repr(self._schema)))
85
+ fields.append("transcriptions={}".format(repr(self._transcriptions)))
86
+ fields.append("translations={}".format(repr(self._translations)))
87
+ fields.append("url={}".format(repr(self._url)))
88
+ fields.append("web_url={}".format(repr(self._web_url)))
89
+ fields.append("additional_properties={}".format(repr(self.additional_properties)))
90
+ return "DnaSequenceWithEntityType({})".format(", ".join(fields))
91
+
92
+ def to_dict(self) -> Dict[str, Any]:
93
+ entity_type: Union[Unset, int] = UNSET
94
+ if not isinstance(self._entity_type, Unset):
95
+ entity_type = self._entity_type.value
96
+
97
+ aliases: Union[Unset, List[Any]] = UNSET
98
+ if not isinstance(self._aliases, Unset):
99
+ aliases = self._aliases
100
+
101
+ annotations: Union[Unset, List[Any]] = UNSET
102
+ if not isinstance(self._annotations, Unset):
103
+ annotations = []
104
+ for annotations_item_data in self._annotations:
105
+ annotations_item = annotations_item_data.to_dict()
106
+
107
+ annotations.append(annotations_item)
108
+
109
+ api_url = self._api_url
110
+ archive_record: Union[Unset, None, Dict[str, Any]] = UNSET
111
+ if not isinstance(self._archive_record, Unset):
112
+ archive_record = self._archive_record.to_dict() if self._archive_record else None
113
+
114
+ authors: Union[Unset, List[Any]] = UNSET
115
+ if not isinstance(self._authors, Unset):
116
+ authors = []
117
+ for authors_item_data in self._authors:
118
+ authors_item = authors_item_data.to_dict()
119
+
120
+ authors.append(authors_item)
121
+
122
+ bases = self._bases
123
+ created_at: Union[Unset, str] = UNSET
124
+ if not isinstance(self._created_at, Unset):
125
+ created_at = self._created_at.isoformat()
126
+
127
+ creator: Union[Unset, Dict[str, Any]] = UNSET
128
+ if not isinstance(self._creator, Unset):
129
+ creator = self._creator.to_dict()
130
+
131
+ custom_fields: Union[Unset, Dict[str, Any]] = UNSET
132
+ if not isinstance(self._custom_fields, Unset):
133
+ custom_fields = self._custom_fields.to_dict()
134
+
135
+ dna_alignment_ids: Union[Unset, List[Any]] = UNSET
136
+ if not isinstance(self._dna_alignment_ids, Unset):
137
+ dna_alignment_ids = self._dna_alignment_ids
138
+
139
+ entity_registry_id = self._entity_registry_id
140
+ fields: Union[Unset, Dict[str, Any]] = UNSET
141
+ if not isinstance(self._fields, Unset):
142
+ fields = self._fields.to_dict()
143
+
144
+ folder_id = self._folder_id
145
+ id = self._id
146
+ is_circular = self._is_circular
147
+ length = self._length
148
+ modified_at: Union[Unset, str] = UNSET
149
+ if not isinstance(self._modified_at, Unset):
150
+ modified_at = self._modified_at.isoformat()
151
+
152
+ name = self._name
153
+ parts: Union[Unset, List[Any]] = UNSET
154
+ if not isinstance(self._parts, Unset):
155
+ parts = []
156
+ for parts_item_data in self._parts:
157
+ parts_item = parts_item_data.to_dict()
158
+
159
+ parts.append(parts_item)
160
+
161
+ primers: Union[Unset, List[Any]] = UNSET
162
+ if not isinstance(self._primers, Unset):
163
+ primers = []
164
+ for primers_item_data in self._primers:
165
+ primers_item = primers_item_data.to_dict()
166
+
167
+ primers.append(primers_item)
168
+
169
+ registration_origin: Union[Unset, None, Dict[str, Any]] = UNSET
170
+ if not isinstance(self._registration_origin, Unset):
171
+ registration_origin = self._registration_origin.to_dict() if self._registration_origin else None
172
+
173
+ registry_id = self._registry_id
174
+ schema: Union[Unset, None, Dict[str, Any]] = UNSET
175
+ if not isinstance(self._schema, Unset):
176
+ schema = self._schema.to_dict() if self._schema else None
177
+
178
+ transcriptions: Union[Unset, List[Any]] = UNSET
179
+ if not isinstance(self._transcriptions, Unset):
180
+ transcriptions = []
181
+ for transcriptions_item_data in self._transcriptions:
182
+ transcriptions_item = transcriptions_item_data.to_dict()
183
+
184
+ transcriptions.append(transcriptions_item)
185
+
186
+ translations: Union[Unset, List[Any]] = UNSET
187
+ if not isinstance(self._translations, Unset):
188
+ translations = []
189
+ for translations_item_data in self._translations:
190
+ translations_item = translations_item_data.to_dict()
191
+
192
+ translations.append(translations_item)
193
+
194
+ url = self._url
195
+ web_url = self._web_url
196
+
197
+ field_dict: Dict[str, Any] = {}
198
+ field_dict.update(self.additional_properties)
199
+ # Allow the model to serialize even if it was created outside of the constructor, circumventing validation
200
+ if entity_type is not UNSET:
201
+ field_dict["entityType"] = entity_type
202
+ if aliases is not UNSET:
203
+ field_dict["aliases"] = aliases
204
+ if annotations is not UNSET:
205
+ field_dict["annotations"] = annotations
206
+ if api_url is not UNSET:
207
+ field_dict["apiURL"] = api_url
208
+ if archive_record is not UNSET:
209
+ field_dict["archiveRecord"] = archive_record
210
+ if authors is not UNSET:
211
+ field_dict["authors"] = authors
212
+ if bases is not UNSET:
213
+ field_dict["bases"] = bases
214
+ if created_at is not UNSET:
215
+ field_dict["createdAt"] = created_at
216
+ if creator is not UNSET:
217
+ field_dict["creator"] = creator
218
+ if custom_fields is not UNSET:
219
+ field_dict["customFields"] = custom_fields
220
+ if dna_alignment_ids is not UNSET:
221
+ field_dict["dnaAlignmentIds"] = dna_alignment_ids
222
+ if entity_registry_id is not UNSET:
223
+ field_dict["entityRegistryId"] = entity_registry_id
224
+ if fields is not UNSET:
225
+ field_dict["fields"] = fields
226
+ if folder_id is not UNSET:
227
+ field_dict["folderId"] = folder_id
228
+ if id is not UNSET:
229
+ field_dict["id"] = id
230
+ if is_circular is not UNSET:
231
+ field_dict["isCircular"] = is_circular
232
+ if length is not UNSET:
233
+ field_dict["length"] = length
234
+ if modified_at is not UNSET:
235
+ field_dict["modifiedAt"] = modified_at
236
+ if name is not UNSET:
237
+ field_dict["name"] = name
238
+ if parts is not UNSET:
239
+ field_dict["parts"] = parts
240
+ if primers is not UNSET:
241
+ field_dict["primers"] = primers
242
+ if registration_origin is not UNSET:
243
+ field_dict["registrationOrigin"] = registration_origin
244
+ if registry_id is not UNSET:
245
+ field_dict["registryId"] = registry_id
246
+ if schema is not UNSET:
247
+ field_dict["schema"] = schema
248
+ if transcriptions is not UNSET:
249
+ field_dict["transcriptions"] = transcriptions
250
+ if translations is not UNSET:
251
+ field_dict["translations"] = translations
252
+ if url is not UNSET:
253
+ field_dict["url"] = url
254
+ if web_url is not UNSET:
255
+ field_dict["webURL"] = web_url
256
+
257
+ return field_dict
258
+
259
+ @classmethod
260
+ def from_dict(cls: Type[T], src_dict: Dict[str, Any], strict: bool = False) -> T:
261
+ d = src_dict.copy()
262
+
263
+ def get_entity_type() -> Union[Unset, DnaSequenceWithEntityTypeEntityType]:
264
+ entity_type = UNSET
265
+ _entity_type = d.pop("entityType")
266
+ if _entity_type is not None and _entity_type is not UNSET:
267
+ try:
268
+ entity_type = DnaSequenceWithEntityTypeEntityType(_entity_type)
269
+ except ValueError:
270
+ entity_type = DnaSequenceWithEntityTypeEntityType.of_unknown(_entity_type)
271
+
272
+ return entity_type
273
+
274
+ try:
275
+ entity_type = get_entity_type()
276
+ except KeyError:
277
+ if strict:
278
+ raise
279
+ entity_type = cast(Union[Unset, DnaSequenceWithEntityTypeEntityType], UNSET)
280
+
281
+ def get_aliases() -> Union[Unset, List[str]]:
282
+ aliases = cast(List[str], d.pop("aliases"))
283
+
284
+ return aliases
285
+
286
+ try:
287
+ aliases = get_aliases()
288
+ except KeyError:
289
+ if strict:
290
+ raise
291
+ aliases = cast(Union[Unset, List[str]], UNSET)
292
+
293
+ def get_annotations() -> Union[Unset, List[DnaAnnotation]]:
294
+ annotations = []
295
+ _annotations = d.pop("annotations")
296
+ for annotations_item_data in _annotations or []:
297
+ annotations_item = DnaAnnotation.from_dict(annotations_item_data, strict=False)
298
+
299
+ annotations.append(annotations_item)
300
+
301
+ return annotations
302
+
303
+ try:
304
+ annotations = get_annotations()
305
+ except KeyError:
306
+ if strict:
307
+ raise
308
+ annotations = cast(Union[Unset, List[DnaAnnotation]], UNSET)
309
+
310
+ def get_api_url() -> Union[Unset, str]:
311
+ api_url = d.pop("apiURL")
312
+ return api_url
313
+
314
+ try:
315
+ api_url = get_api_url()
316
+ except KeyError:
317
+ if strict:
318
+ raise
319
+ api_url = cast(Union[Unset, str], UNSET)
320
+
321
+ def get_archive_record() -> Union[Unset, None, ArchiveRecord]:
322
+ archive_record = None
323
+ _archive_record = d.pop("archiveRecord")
324
+
325
+ if _archive_record is not None and not isinstance(_archive_record, Unset):
326
+ archive_record = ArchiveRecord.from_dict(_archive_record)
327
+
328
+ return archive_record
329
+
330
+ try:
331
+ archive_record = get_archive_record()
332
+ except KeyError:
333
+ if strict:
334
+ raise
335
+ archive_record = cast(Union[Unset, None, ArchiveRecord], UNSET)
336
+
337
+ def get_authors() -> Union[Unset, List[UserSummary]]:
338
+ authors = []
339
+ _authors = d.pop("authors")
340
+ for authors_item_data in _authors or []:
341
+ authors_item = UserSummary.from_dict(authors_item_data, strict=False)
342
+
343
+ authors.append(authors_item)
344
+
345
+ return authors
346
+
347
+ try:
348
+ authors = get_authors()
349
+ except KeyError:
350
+ if strict:
351
+ raise
352
+ authors = cast(Union[Unset, List[UserSummary]], UNSET)
353
+
354
+ def get_bases() -> Union[Unset, str]:
355
+ bases = d.pop("bases")
356
+ return bases
357
+
358
+ try:
359
+ bases = get_bases()
360
+ except KeyError:
361
+ if strict:
362
+ raise
363
+ bases = cast(Union[Unset, str], UNSET)
364
+
365
+ def get_created_at() -> Union[Unset, datetime.datetime]:
366
+ created_at: Union[Unset, datetime.datetime] = UNSET
367
+ _created_at = d.pop("createdAt")
368
+ if _created_at is not None and not isinstance(_created_at, Unset):
369
+ created_at = isoparse(cast(str, _created_at))
370
+
371
+ return created_at
372
+
373
+ try:
374
+ created_at = get_created_at()
375
+ except KeyError:
376
+ if strict:
377
+ raise
378
+ created_at = cast(Union[Unset, datetime.datetime], UNSET)
379
+
380
+ def get_creator() -> Union[Unset, UserSummary]:
381
+ creator: Union[Unset, Union[Unset, UserSummary]] = UNSET
382
+ _creator = d.pop("creator")
383
+
384
+ if not isinstance(_creator, Unset):
385
+ creator = UserSummary.from_dict(_creator)
386
+
387
+ return creator
388
+
389
+ try:
390
+ creator = get_creator()
391
+ except KeyError:
392
+ if strict:
393
+ raise
394
+ creator = cast(Union[Unset, UserSummary], UNSET)
395
+
396
+ def get_custom_fields() -> Union[Unset, CustomFields]:
397
+ custom_fields: Union[Unset, Union[Unset, CustomFields]] = UNSET
398
+ _custom_fields = d.pop("customFields")
399
+
400
+ if not isinstance(_custom_fields, Unset):
401
+ custom_fields = CustomFields.from_dict(_custom_fields)
402
+
403
+ return custom_fields
404
+
405
+ try:
406
+ custom_fields = get_custom_fields()
407
+ except KeyError:
408
+ if strict:
409
+ raise
410
+ custom_fields = cast(Union[Unset, CustomFields], UNSET)
411
+
412
+ def get_dna_alignment_ids() -> Union[Unset, List[str]]:
413
+ dna_alignment_ids = cast(List[str], d.pop("dnaAlignmentIds"))
414
+
415
+ return dna_alignment_ids
416
+
417
+ try:
418
+ dna_alignment_ids = get_dna_alignment_ids()
419
+ except KeyError:
420
+ if strict:
421
+ raise
422
+ dna_alignment_ids = cast(Union[Unset, List[str]], UNSET)
423
+
424
+ def get_entity_registry_id() -> Union[Unset, None, str]:
425
+ entity_registry_id = d.pop("entityRegistryId")
426
+ return entity_registry_id
427
+
428
+ try:
429
+ entity_registry_id = get_entity_registry_id()
430
+ except KeyError:
431
+ if strict:
432
+ raise
433
+ entity_registry_id = cast(Union[Unset, None, str], UNSET)
434
+
435
+ def get_fields() -> Union[Unset, Fields]:
436
+ fields: Union[Unset, Union[Unset, Fields]] = UNSET
437
+ _fields = d.pop("fields")
438
+
439
+ if not isinstance(_fields, Unset):
440
+ fields = Fields.from_dict(_fields)
441
+
442
+ return fields
443
+
444
+ try:
445
+ fields = get_fields()
446
+ except KeyError:
447
+ if strict:
448
+ raise
449
+ fields = cast(Union[Unset, Fields], UNSET)
450
+
451
+ def get_folder_id() -> Union[Unset, None, str]:
452
+ folder_id = d.pop("folderId")
453
+ return folder_id
454
+
455
+ try:
456
+ folder_id = get_folder_id()
457
+ except KeyError:
458
+ if strict:
459
+ raise
460
+ folder_id = cast(Union[Unset, None, str], UNSET)
461
+
462
+ def get_id() -> Union[Unset, str]:
463
+ id = d.pop("id")
464
+ return id
465
+
466
+ try:
467
+ id = get_id()
468
+ except KeyError:
469
+ if strict:
470
+ raise
471
+ id = cast(Union[Unset, str], UNSET)
472
+
473
+ def get_is_circular() -> Union[Unset, bool]:
474
+ is_circular = d.pop("isCircular")
475
+ return is_circular
476
+
477
+ try:
478
+ is_circular = get_is_circular()
479
+ except KeyError:
480
+ if strict:
481
+ raise
482
+ is_circular = cast(Union[Unset, bool], UNSET)
483
+
484
+ def get_length() -> Union[Unset, int]:
485
+ length = d.pop("length")
486
+ return length
487
+
488
+ try:
489
+ length = get_length()
490
+ except KeyError:
491
+ if strict:
492
+ raise
493
+ length = cast(Union[Unset, int], UNSET)
494
+
495
+ def get_modified_at() -> Union[Unset, datetime.datetime]:
496
+ modified_at: Union[Unset, datetime.datetime] = UNSET
497
+ _modified_at = d.pop("modifiedAt")
498
+ if _modified_at is not None and not isinstance(_modified_at, Unset):
499
+ modified_at = isoparse(cast(str, _modified_at))
500
+
501
+ return modified_at
502
+
503
+ try:
504
+ modified_at = get_modified_at()
505
+ except KeyError:
506
+ if strict:
507
+ raise
508
+ modified_at = cast(Union[Unset, datetime.datetime], UNSET)
509
+
510
+ def get_name() -> Union[Unset, str]:
511
+ name = d.pop("name")
512
+ return name
513
+
514
+ try:
515
+ name = get_name()
516
+ except KeyError:
517
+ if strict:
518
+ raise
519
+ name = cast(Union[Unset, str], UNSET)
520
+
521
+ def get_parts() -> Union[Unset, List[DnaSequencePart]]:
522
+ parts = []
523
+ _parts = d.pop("parts")
524
+ for parts_item_data in _parts or []:
525
+ parts_item = DnaSequencePart.from_dict(parts_item_data, strict=False)
526
+
527
+ parts.append(parts_item)
528
+
529
+ return parts
530
+
531
+ try:
532
+ parts = get_parts()
533
+ except KeyError:
534
+ if strict:
535
+ raise
536
+ parts = cast(Union[Unset, List[DnaSequencePart]], UNSET)
537
+
538
+ def get_primers() -> Union[Unset, List[Primer]]:
539
+ primers = []
540
+ _primers = d.pop("primers")
541
+ for primers_item_data in _primers or []:
542
+ primers_item = Primer.from_dict(primers_item_data, strict=False)
543
+
544
+ primers.append(primers_item)
545
+
546
+ return primers
547
+
548
+ try:
549
+ primers = get_primers()
550
+ except KeyError:
551
+ if strict:
552
+ raise
553
+ primers = cast(Union[Unset, List[Primer]], UNSET)
554
+
555
+ def get_registration_origin() -> Union[Unset, None, RegistrationOrigin]:
556
+ registration_origin = None
557
+ _registration_origin = d.pop("registrationOrigin")
558
+
559
+ if _registration_origin is not None and not isinstance(_registration_origin, Unset):
560
+ registration_origin = RegistrationOrigin.from_dict(_registration_origin)
561
+
562
+ return registration_origin
563
+
564
+ try:
565
+ registration_origin = get_registration_origin()
566
+ except KeyError:
567
+ if strict:
568
+ raise
569
+ registration_origin = cast(Union[Unset, None, RegistrationOrigin], UNSET)
570
+
571
+ def get_registry_id() -> Union[Unset, None, str]:
572
+ registry_id = d.pop("registryId")
573
+ return registry_id
574
+
575
+ try:
576
+ registry_id = get_registry_id()
577
+ except KeyError:
578
+ if strict:
579
+ raise
580
+ registry_id = cast(Union[Unset, None, str], UNSET)
581
+
582
+ def get_schema() -> Union[Unset, None, SchemaSummary]:
583
+ schema = None
584
+ _schema = d.pop("schema")
585
+
586
+ if _schema is not None and not isinstance(_schema, Unset):
587
+ schema = SchemaSummary.from_dict(_schema)
588
+
589
+ return schema
590
+
591
+ try:
592
+ schema = get_schema()
593
+ except KeyError:
594
+ if strict:
595
+ raise
596
+ schema = cast(Union[Unset, None, SchemaSummary], UNSET)
597
+
598
+ def get_transcriptions() -> Union[Unset, List[DnaSequenceTranscription]]:
599
+ transcriptions = []
600
+ _transcriptions = d.pop("transcriptions")
601
+ for transcriptions_item_data in _transcriptions or []:
602
+ transcriptions_item = DnaSequenceTranscription.from_dict(
603
+ transcriptions_item_data, strict=False
604
+ )
605
+
606
+ transcriptions.append(transcriptions_item)
607
+
608
+ return transcriptions
609
+
610
+ try:
611
+ transcriptions = get_transcriptions()
612
+ except KeyError:
613
+ if strict:
614
+ raise
615
+ transcriptions = cast(Union[Unset, List[DnaSequenceTranscription]], UNSET)
616
+
617
+ def get_translations() -> Union[Unset, List[Translation]]:
618
+ translations = []
619
+ _translations = d.pop("translations")
620
+ for translations_item_data in _translations or []:
621
+ translations_item = Translation.from_dict(translations_item_data, strict=False)
622
+
623
+ translations.append(translations_item)
624
+
625
+ return translations
626
+
627
+ try:
628
+ translations = get_translations()
629
+ except KeyError:
630
+ if strict:
631
+ raise
632
+ translations = cast(Union[Unset, List[Translation]], UNSET)
633
+
634
+ def get_url() -> Union[Unset, str]:
635
+ url = d.pop("url")
636
+ return url
637
+
638
+ try:
639
+ url = get_url()
640
+ except KeyError:
641
+ if strict:
642
+ raise
643
+ url = cast(Union[Unset, str], UNSET)
644
+
645
+ def get_web_url() -> Union[Unset, str]:
646
+ web_url = d.pop("webURL")
647
+ return web_url
648
+
649
+ try:
650
+ web_url = get_web_url()
651
+ except KeyError:
652
+ if strict:
653
+ raise
654
+ web_url = cast(Union[Unset, str], UNSET)
655
+
656
+ dna_sequence_with_entity_type = cls(
657
+ entity_type=entity_type,
658
+ aliases=aliases,
659
+ annotations=annotations,
660
+ api_url=api_url,
661
+ archive_record=archive_record,
662
+ authors=authors,
663
+ bases=bases,
664
+ created_at=created_at,
665
+ creator=creator,
666
+ custom_fields=custom_fields,
667
+ dna_alignment_ids=dna_alignment_ids,
668
+ entity_registry_id=entity_registry_id,
669
+ fields=fields,
670
+ folder_id=folder_id,
671
+ id=id,
672
+ is_circular=is_circular,
673
+ length=length,
674
+ modified_at=modified_at,
675
+ name=name,
676
+ parts=parts,
677
+ primers=primers,
678
+ registration_origin=registration_origin,
679
+ registry_id=registry_id,
680
+ schema=schema,
681
+ transcriptions=transcriptions,
682
+ translations=translations,
683
+ url=url,
684
+ web_url=web_url,
685
+ )
686
+
687
+ dna_sequence_with_entity_type.additional_properties = d
688
+ return dna_sequence_with_entity_type
689
+
690
+ @property
691
+ def additional_keys(self) -> List[str]:
692
+ return list(self.additional_properties.keys())
693
+
694
+ def __getitem__(self, key: str) -> Any:
695
+ return self.additional_properties[key]
696
+
697
+ def __setitem__(self, key: str, value: Any) -> None:
698
+ self.additional_properties[key] = value
699
+
700
+ def __delitem__(self, key: str) -> None:
701
+ del self.additional_properties[key]
702
+
703
+ def __contains__(self, key: str) -> bool:
704
+ return key in self.additional_properties
705
+
706
+ def get(self, key, default=None) -> Optional[Any]:
707
+ return self.additional_properties.get(key, default)
708
+
709
+ @property
710
+ def entity_type(self) -> DnaSequenceWithEntityTypeEntityType:
711
+ if isinstance(self._entity_type, Unset):
712
+ raise NotPresentError(self, "entity_type")
713
+ return self._entity_type
714
+
715
+ @entity_type.setter
716
+ def entity_type(self, value: DnaSequenceWithEntityTypeEntityType) -> None:
717
+ self._entity_type = value
718
+
719
+ @entity_type.deleter
720
+ def entity_type(self) -> None:
721
+ self._entity_type = UNSET
722
+
723
+ @property
724
+ def aliases(self) -> List[str]:
725
+ if isinstance(self._aliases, Unset):
726
+ raise NotPresentError(self, "aliases")
727
+ return self._aliases
728
+
729
+ @aliases.setter
730
+ def aliases(self, value: List[str]) -> None:
731
+ self._aliases = value
732
+
733
+ @aliases.deleter
734
+ def aliases(self) -> None:
735
+ self._aliases = UNSET
736
+
737
+ @property
738
+ def annotations(self) -> List[DnaAnnotation]:
739
+ if isinstance(self._annotations, Unset):
740
+ raise NotPresentError(self, "annotations")
741
+ return self._annotations
742
+
743
+ @annotations.setter
744
+ def annotations(self, value: List[DnaAnnotation]) -> None:
745
+ self._annotations = value
746
+
747
+ @annotations.deleter
748
+ def annotations(self) -> None:
749
+ self._annotations = UNSET
750
+
751
+ @property
752
+ def api_url(self) -> str:
753
+ """ The canonical url of the DNA Sequence in the API. """
754
+ if isinstance(self._api_url, Unset):
755
+ raise NotPresentError(self, "api_url")
756
+ return self._api_url
757
+
758
+ @api_url.setter
759
+ def api_url(self, value: str) -> None:
760
+ self._api_url = value
761
+
762
+ @api_url.deleter
763
+ def api_url(self) -> None:
764
+ self._api_url = UNSET
765
+
766
+ @property
767
+ def archive_record(self) -> Optional[ArchiveRecord]:
768
+ if isinstance(self._archive_record, Unset):
769
+ raise NotPresentError(self, "archive_record")
770
+ return self._archive_record
771
+
772
+ @archive_record.setter
773
+ def archive_record(self, value: Optional[ArchiveRecord]) -> None:
774
+ self._archive_record = value
775
+
776
+ @archive_record.deleter
777
+ def archive_record(self) -> None:
778
+ self._archive_record = UNSET
779
+
780
+ @property
781
+ def authors(self) -> List[UserSummary]:
782
+ if isinstance(self._authors, Unset):
783
+ raise NotPresentError(self, "authors")
784
+ return self._authors
785
+
786
+ @authors.setter
787
+ def authors(self, value: List[UserSummary]) -> None:
788
+ self._authors = value
789
+
790
+ @authors.deleter
791
+ def authors(self) -> None:
792
+ self._authors = UNSET
793
+
794
+ @property
795
+ def bases(self) -> str:
796
+ if isinstance(self._bases, Unset):
797
+ raise NotPresentError(self, "bases")
798
+ return self._bases
799
+
800
+ @bases.setter
801
+ def bases(self, value: str) -> None:
802
+ self._bases = value
803
+
804
+ @bases.deleter
805
+ def bases(self) -> None:
806
+ self._bases = UNSET
807
+
808
+ @property
809
+ def created_at(self) -> datetime.datetime:
810
+ if isinstance(self._created_at, Unset):
811
+ raise NotPresentError(self, "created_at")
812
+ return self._created_at
813
+
814
+ @created_at.setter
815
+ def created_at(self, value: datetime.datetime) -> None:
816
+ self._created_at = value
817
+
818
+ @created_at.deleter
819
+ def created_at(self) -> None:
820
+ self._created_at = UNSET
821
+
822
+ @property
823
+ def creator(self) -> UserSummary:
824
+ if isinstance(self._creator, Unset):
825
+ raise NotPresentError(self, "creator")
826
+ return self._creator
827
+
828
+ @creator.setter
829
+ def creator(self, value: UserSummary) -> None:
830
+ self._creator = value
831
+
832
+ @creator.deleter
833
+ def creator(self) -> None:
834
+ self._creator = UNSET
835
+
836
+ @property
837
+ def custom_fields(self) -> CustomFields:
838
+ if isinstance(self._custom_fields, Unset):
839
+ raise NotPresentError(self, "custom_fields")
840
+ return self._custom_fields
841
+
842
+ @custom_fields.setter
843
+ def custom_fields(self, value: CustomFields) -> None:
844
+ self._custom_fields = value
845
+
846
+ @custom_fields.deleter
847
+ def custom_fields(self) -> None:
848
+ self._custom_fields = UNSET
849
+
850
+ @property
851
+ def dna_alignment_ids(self) -> List[str]:
852
+ """ API IDs of Nucleotide Alignments involving the RNA sequence """
853
+ if isinstance(self._dna_alignment_ids, Unset):
854
+ raise NotPresentError(self, "dna_alignment_ids")
855
+ return self._dna_alignment_ids
856
+
857
+ @dna_alignment_ids.setter
858
+ def dna_alignment_ids(self, value: List[str]) -> None:
859
+ self._dna_alignment_ids = value
860
+
861
+ @dna_alignment_ids.deleter
862
+ def dna_alignment_ids(self) -> None:
863
+ self._dna_alignment_ids = UNSET
864
+
865
+ @property
866
+ def entity_registry_id(self) -> Optional[str]:
867
+ if isinstance(self._entity_registry_id, Unset):
868
+ raise NotPresentError(self, "entity_registry_id")
869
+ return self._entity_registry_id
870
+
871
+ @entity_registry_id.setter
872
+ def entity_registry_id(self, value: Optional[str]) -> None:
873
+ self._entity_registry_id = value
874
+
875
+ @entity_registry_id.deleter
876
+ def entity_registry_id(self) -> None:
877
+ self._entity_registry_id = UNSET
878
+
879
+ @property
880
+ def fields(self) -> Fields:
881
+ if isinstance(self._fields, Unset):
882
+ raise NotPresentError(self, "fields")
883
+ return self._fields
884
+
885
+ @fields.setter
886
+ def fields(self, value: Fields) -> None:
887
+ self._fields = value
888
+
889
+ @fields.deleter
890
+ def fields(self) -> None:
891
+ self._fields = UNSET
892
+
893
+ @property
894
+ def folder_id(self) -> Optional[str]:
895
+ if isinstance(self._folder_id, Unset):
896
+ raise NotPresentError(self, "folder_id")
897
+ return self._folder_id
898
+
899
+ @folder_id.setter
900
+ def folder_id(self, value: Optional[str]) -> None:
901
+ self._folder_id = value
902
+
903
+ @folder_id.deleter
904
+ def folder_id(self) -> None:
905
+ self._folder_id = UNSET
906
+
907
+ @property
908
+ def id(self) -> str:
909
+ if isinstance(self._id, Unset):
910
+ raise NotPresentError(self, "id")
911
+ return self._id
912
+
913
+ @id.setter
914
+ def id(self, value: str) -> None:
915
+ self._id = value
916
+
917
+ @id.deleter
918
+ def id(self) -> None:
919
+ self._id = UNSET
920
+
921
+ @property
922
+ def is_circular(self) -> bool:
923
+ if isinstance(self._is_circular, Unset):
924
+ raise NotPresentError(self, "is_circular")
925
+ return self._is_circular
926
+
927
+ @is_circular.setter
928
+ def is_circular(self, value: bool) -> None:
929
+ self._is_circular = value
930
+
931
+ @is_circular.deleter
932
+ def is_circular(self) -> None:
933
+ self._is_circular = UNSET
934
+
935
+ @property
936
+ def length(self) -> int:
937
+ if isinstance(self._length, Unset):
938
+ raise NotPresentError(self, "length")
939
+ return self._length
940
+
941
+ @length.setter
942
+ def length(self, value: int) -> None:
943
+ self._length = value
944
+
945
+ @length.deleter
946
+ def length(self) -> None:
947
+ self._length = UNSET
948
+
949
+ @property
950
+ def modified_at(self) -> datetime.datetime:
951
+ if isinstance(self._modified_at, Unset):
952
+ raise NotPresentError(self, "modified_at")
953
+ return self._modified_at
954
+
955
+ @modified_at.setter
956
+ def modified_at(self, value: datetime.datetime) -> None:
957
+ self._modified_at = value
958
+
959
+ @modified_at.deleter
960
+ def modified_at(self) -> None:
961
+ self._modified_at = UNSET
962
+
963
+ @property
964
+ def name(self) -> str:
965
+ if isinstance(self._name, Unset):
966
+ raise NotPresentError(self, "name")
967
+ return self._name
968
+
969
+ @name.setter
970
+ def name(self, value: str) -> None:
971
+ self._name = value
972
+
973
+ @name.deleter
974
+ def name(self) -> None:
975
+ self._name = UNSET
976
+
977
+ @property
978
+ def parts(self) -> List[DnaSequencePart]:
979
+ if isinstance(self._parts, Unset):
980
+ raise NotPresentError(self, "parts")
981
+ return self._parts
982
+
983
+ @parts.setter
984
+ def parts(self, value: List[DnaSequencePart]) -> None:
985
+ self._parts = value
986
+
987
+ @parts.deleter
988
+ def parts(self) -> None:
989
+ self._parts = UNSET
990
+
991
+ @property
992
+ def primers(self) -> List[Primer]:
993
+ if isinstance(self._primers, Unset):
994
+ raise NotPresentError(self, "primers")
995
+ return self._primers
996
+
997
+ @primers.setter
998
+ def primers(self, value: List[Primer]) -> None:
999
+ self._primers = value
1000
+
1001
+ @primers.deleter
1002
+ def primers(self) -> None:
1003
+ self._primers = UNSET
1004
+
1005
+ @property
1006
+ def registration_origin(self) -> Optional[RegistrationOrigin]:
1007
+ if isinstance(self._registration_origin, Unset):
1008
+ raise NotPresentError(self, "registration_origin")
1009
+ return self._registration_origin
1010
+
1011
+ @registration_origin.setter
1012
+ def registration_origin(self, value: Optional[RegistrationOrigin]) -> None:
1013
+ self._registration_origin = value
1014
+
1015
+ @registration_origin.deleter
1016
+ def registration_origin(self) -> None:
1017
+ self._registration_origin = UNSET
1018
+
1019
+ @property
1020
+ def registry_id(self) -> Optional[str]:
1021
+ if isinstance(self._registry_id, Unset):
1022
+ raise NotPresentError(self, "registry_id")
1023
+ return self._registry_id
1024
+
1025
+ @registry_id.setter
1026
+ def registry_id(self, value: Optional[str]) -> None:
1027
+ self._registry_id = value
1028
+
1029
+ @registry_id.deleter
1030
+ def registry_id(self) -> None:
1031
+ self._registry_id = UNSET
1032
+
1033
+ @property
1034
+ def schema(self) -> Optional[SchemaSummary]:
1035
+ if isinstance(self._schema, Unset):
1036
+ raise NotPresentError(self, "schema")
1037
+ return self._schema
1038
+
1039
+ @schema.setter
1040
+ def schema(self, value: Optional[SchemaSummary]) -> None:
1041
+ self._schema = value
1042
+
1043
+ @schema.deleter
1044
+ def schema(self) -> None:
1045
+ self._schema = UNSET
1046
+
1047
+ @property
1048
+ def transcriptions(self) -> List[DnaSequenceTranscription]:
1049
+ if isinstance(self._transcriptions, Unset):
1050
+ raise NotPresentError(self, "transcriptions")
1051
+ return self._transcriptions
1052
+
1053
+ @transcriptions.setter
1054
+ def transcriptions(self, value: List[DnaSequenceTranscription]) -> None:
1055
+ self._transcriptions = value
1056
+
1057
+ @transcriptions.deleter
1058
+ def transcriptions(self) -> None:
1059
+ self._transcriptions = UNSET
1060
+
1061
+ @property
1062
+ def translations(self) -> List[Translation]:
1063
+ if isinstance(self._translations, Unset):
1064
+ raise NotPresentError(self, "translations")
1065
+ return self._translations
1066
+
1067
+ @translations.setter
1068
+ def translations(self, value: List[Translation]) -> None:
1069
+ self._translations = value
1070
+
1071
+ @translations.deleter
1072
+ def translations(self) -> None:
1073
+ self._translations = UNSET
1074
+
1075
+ @property
1076
+ def url(self) -> str:
1077
+ """ The path of the web URL, omitting the tenant domain """
1078
+ if isinstance(self._url, Unset):
1079
+ raise NotPresentError(self, "url")
1080
+ return self._url
1081
+
1082
+ @url.setter
1083
+ def url(self, value: str) -> None:
1084
+ self._url = value
1085
+
1086
+ @url.deleter
1087
+ def url(self) -> None:
1088
+ self._url = UNSET
1089
+
1090
+ @property
1091
+ def web_url(self) -> str:
1092
+ if isinstance(self._web_url, Unset):
1093
+ raise NotPresentError(self, "web_url")
1094
+ return self._web_url
1095
+
1096
+ @web_url.setter
1097
+ def web_url(self, value: str) -> None:
1098
+ self._web_url = value
1099
+
1100
+ @web_url.deleter
1101
+ def web_url(self) -> None:
1102
+ self._web_url = UNSET