benchling-sdk 1.17.1__tar.gz → 1.18.1__tar.gz

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 (125) hide show
  1. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/PKG-INFO +2 -2
  2. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/config/helpers.py +32 -3
  3. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/config/mock_config.py +2 -2
  4. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/benchling.py +12 -0
  5. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/models/__init__.py +56 -0
  6. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/models/webhooks/v0/__init__.py +12 -0
  7. benchling_sdk-1.18.1/benchling_sdk/services/v2/alpha/v2_alpha_assembly_service.py +62 -0
  8. benchling_sdk-1.18.1/benchling_sdk/services/v2/beta/v2_beta_analysis_service.py +46 -0
  9. benchling_sdk-1.18.1/benchling_sdk/services/v2/beta/v2_beta_app_definition_service.py +45 -0
  10. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/beta/v2_beta_app_service.py +1 -1
  11. benchling_sdk-1.18.1/benchling_sdk/services/v2/beta/v2_beta_audit_service.py +41 -0
  12. benchling_sdk-1.18.1/benchling_sdk/services/v2/beta/v2_beta_entry_service.py +35 -0
  13. benchling_sdk-1.18.1/benchling_sdk/services/v2/stable/instrument_query_service.py +28 -0
  14. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/v2_alpha_service.py +15 -0
  15. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/v2_beta_service.py +43 -1
  16. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/v2_stable_service.py +14 -0
  17. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/pyproject.toml +2 -2
  18. benchling_sdk-1.17.1/benchling_sdk/services/v2/beta/v2_beta_entry_service.py +0 -30
  19. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/LICENSE +0 -0
  20. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/README.md +0 -0
  21. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/__init__.py +0 -0
  22. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/__init__.py +0 -0
  23. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/canvas/__init__.py +0 -0
  24. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/canvas/errors.py +0 -0
  25. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/canvas/framework.py +0 -0
  26. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/canvas/types.py +0 -0
  27. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/config/__init__.py +0 -0
  28. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/config/cryptography_helpers.py +0 -0
  29. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/config/decryption_provider.py +0 -0
  30. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/config/errors.py +0 -0
  31. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/config/framework.py +0 -0
  32. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/config/types.py +0 -0
  33. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/framework.py +0 -0
  34. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/helpers/__init__.py +0 -0
  35. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/helpers/manifest_helpers.py +0 -0
  36. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/helpers/webhook_helpers.py +0 -0
  37. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/status/__init__.py +0 -0
  38. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/status/errors.py +0 -0
  39. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/status/framework.py +0 -0
  40. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/status/helpers.py +0 -0
  41. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/status/types.py +0 -0
  42. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/apps/types.py +0 -0
  43. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/auth/__init__.py +0 -0
  44. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/auth/api_key_auth.py +0 -0
  45. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/auth/bearer_token_auth.py +0 -0
  46. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/auth/client_credentials_oauth2.py +0 -0
  47. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/docs/__init__.py +0 -0
  48. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/docs/__main__.py +0 -0
  49. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/errors.py +0 -0
  50. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/helpers/__init__.py +0 -0
  51. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/helpers/client_helpers.py +0 -0
  52. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/helpers/constants.py +0 -0
  53. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/helpers/decorators.py +0 -0
  54. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/helpers/file_helpers.py +0 -0
  55. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/helpers/logging_helpers.py +0 -0
  56. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/helpers/package_helpers.py +0 -0
  57. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/helpers/pagination_helpers.py +0 -0
  58. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/helpers/response_helpers.py +0 -0
  59. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/helpers/retry_helpers.py +0 -0
  60. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/helpers/serialization_helpers.py +0 -0
  61. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/helpers/transaction_manager.py +0 -0
  62. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/models/webhooks/__init__.py +0 -0
  63. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/py.typed +0 -0
  64. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/__init__.py +0 -0
  65. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/__init__.py +0 -0
  66. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/alpha/__init__.py +0 -0
  67. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/alpha/v2_alpha_app_service.py +0 -0
  68. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/base_service.py +0 -0
  69. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/beta/__init__.py +0 -0
  70. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/beta/v2_beta_collaboration_service.py +0 -0
  71. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/beta/v2_beta_data_frame_service.py +0 -0
  72. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/beta/v2_beta_folder_service.py +0 -0
  73. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/beta/v2_beta_project_service.py +0 -0
  74. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/beta/v2_beta_worklist_service.py +0 -0
  75. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/__init__.py +0 -0
  76. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/aa_sequence_service.py +0 -0
  77. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/api_service.py +0 -0
  78. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/app_service.py +0 -0
  79. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/assay_result_service.py +0 -0
  80. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/assay_run_service.py +0 -0
  81. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/blob_service.py +0 -0
  82. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/box_service.py +0 -0
  83. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/codon_usage_table_service.py +0 -0
  84. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/container_service.py +0 -0
  85. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/custom_entity_service.py +0 -0
  86. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/custom_notation_service.py +0 -0
  87. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/dna_alignments_service.py +0 -0
  88. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/dna_oligo_service.py +0 -0
  89. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/dna_sequence_service.py +0 -0
  90. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/dropdown_service.py +0 -0
  91. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/entity_service.py +0 -0
  92. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/entry_service.py +0 -0
  93. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/enzyme_service.py +0 -0
  94. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/event_service.py +0 -0
  95. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/export_service.py +0 -0
  96. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/feature_library_service.py +0 -0
  97. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/folder_service.py +0 -0
  98. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/inventory_service.py +0 -0
  99. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/lab_automation_service.py +0 -0
  100. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/label_template_service.py +0 -0
  101. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/location_service.py +0 -0
  102. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/mixture_service.py +0 -0
  103. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/molecule_service.py +0 -0
  104. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/monomer_service.py +0 -0
  105. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/nucleotide_alignments_service.py +0 -0
  106. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/oligo_service.py +0 -0
  107. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/organization_service.py +0 -0
  108. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/plate_service.py +0 -0
  109. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/printer_service.py +0 -0
  110. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/project_service.py +0 -0
  111. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/registry_service.py +0 -0
  112. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/request_service.py +0 -0
  113. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/rna_oligo_service.py +0 -0
  114. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/rna_sequence_service.py +0 -0
  115. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/schema_service.py +0 -0
  116. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/task_service.py +0 -0
  117. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/team_service.py +0 -0
  118. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/user_service.py +0 -0
  119. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/warehouse_service.py +0 -0
  120. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/workflow_flowchart_config_version_service.py +0 -0
  121. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/workflow_flowchart_service.py +0 -0
  122. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/workflow_output_service.py +0 -0
  123. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/workflow_task_group_service.py +0 -0
  124. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2/stable/workflow_task_service.py +0 -0
  125. {benchling_sdk-1.17.1 → benchling_sdk-1.18.1}/benchling_sdk/services/v2_service.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: benchling-sdk
3
- Version: 1.17.1
3
+ Version: 1.18.1
4
4
  Summary: SDK for interacting with the Benchling Platform.
5
5
  License: Apache-2.0
6
6
  Author: Benchling Support
@@ -17,7 +17,7 @@ Provides-Extra: python-jose
17
17
  Requires-Dist: PyYAML (>=6.0,<7.0)
18
18
  Requires-Dist: attrs (>=20.1.0)
19
19
  Requires-Dist: backoff (>=1.10.0,<3)
20
- Requires-Dist: benchling-api-client (==2.0.317)
20
+ Requires-Dist: benchling-api-client (==2.0.336)
21
21
  Requires-Dist: certifi (>=2022.12.7)
22
22
  Requires-Dist: cryptography (>=42.0.0) ; extra == "cryptography"
23
23
  Requires-Dist: dataclasses-json (>=0.5.2,<0.6.0)
@@ -1,6 +1,9 @@
1
1
  from datetime import datetime
2
- from typing import List, Optional, Union
2
+ from enum import Enum
3
+ from functools import lru_cache
4
+ from typing import cast, List, Optional, Union
3
5
 
6
+ from benchling_api_client.v2.beta.extensions import Enums
4
7
  from benchling_api_client.v2.beta.models.base_manifest_config import BaseManifestConfig
5
8
  from benchling_api_client.v2.beta.models.dropdown_dependency import DropdownDependency
6
9
  from benchling_api_client.v2.beta.models.dropdown_dependency_types import DropdownDependencyTypes
@@ -14,7 +17,6 @@ from benchling_api_client.v2.beta.models.manifest_scalar_config import ManifestS
14
17
  from benchling_api_client.v2.beta.models.manifest_text_scalar_config import ManifestTextScalarConfig
15
18
  from benchling_api_client.v2.beta.models.resource_dependency import ResourceDependency
16
19
  from benchling_api_client.v2.beta.models.resource_dependency_types import ResourceDependencyTypes
17
- from benchling_api_client.v2.beta.models.scalar_config_types import ScalarConfigTypes
18
20
  from benchling_api_client.v2.beta.models.schema_dependency import SchemaDependency
19
21
  from benchling_api_client.v2.beta.models.schema_dependency_subtypes import SchemaDependencySubtypes
20
22
  from benchling_api_client.v2.beta.models.schema_dependency_types import SchemaDependencyTypes
@@ -44,6 +46,33 @@ class _UnsupportedSubTypeError(Exception):
44
46
  pass
45
47
 
46
48
 
49
+ class _ScalarConfigTypes(Enums.KnownString):
50
+ """Enum type copied from an earlier version of benchling-api-client, for internal use only.
51
+
52
+ See BNCH-108704.
53
+ """
54
+
55
+ TEXT = "text"
56
+ FLOAT = "float"
57
+ INTEGER = "integer"
58
+ BOOLEAN = "boolean"
59
+ DATE = "date"
60
+ DATETIME = "datetime"
61
+ SECURE_TEXT = "secure_text"
62
+ JSON = "json"
63
+
64
+ def __str__(self) -> str:
65
+ return str(self.value)
66
+
67
+ @staticmethod
68
+ @lru_cache(maxsize=None)
69
+ def of_unknown(val: str) -> "_ScalarConfigTypes":
70
+ if not isinstance(val, str):
71
+ raise ValueError(f"Value of _ScalarConfigTypes must be a string (encountered: {val})")
72
+ newcls = Enum("_ScalarConfigTypes", {"_UNKNOWN": val}, type=Enums.UnknownString) # type: ignore
73
+ return cast(_ScalarConfigTypes, getattr(newcls, "_UNKNOWN"))
74
+
75
+
47
76
  def _field_definitions_from_dependency(
48
77
  dependency: Union[
49
78
  EntitySchemaDependency,
@@ -109,7 +138,7 @@ def _fix_element_definition_deserialization(
109
138
  return DropdownDependency.from_dict(element.value)
110
139
  elif element_type in [member.value for member in ResourceDependencyTypes]:
111
140
  return ResourceDependency.from_dict(element.value)
112
- elif element_type in [member.value for member in ScalarConfigTypes]:
141
+ elif element_type in [member.value for member in _ScalarConfigTypes]:
113
142
  return type(element_type).from_dict(element.value)
114
143
  raise NotImplementedError(f"No array deserialization fix for {element}")
115
144
  return element
@@ -24,7 +24,6 @@ from benchling_api_client.v2.beta.models.manifest_secure_text_scalar_config impo
24
24
  )
25
25
  from benchling_api_client.v2.beta.models.manifest_text_scalar_config import ManifestTextScalarConfig
26
26
  from benchling_api_client.v2.beta.models.resource_dependency import ResourceDependency
27
- from benchling_api_client.v2.beta.models.scalar_config_types import ScalarConfigTypes
28
27
  from benchling_api_client.v2.beta.models.schema_dependency import SchemaDependency
29
28
  from benchling_api_client.v2.beta.models.schema_dependency_subtypes import (
30
29
  SchemaDependencySubtypes as SchemaDependencySubtypesBeta,
@@ -41,6 +40,7 @@ from benchling_sdk.apps.config.helpers import (
41
40
  _enum_from_dependency,
42
41
  _field_definitions_from_dependency,
43
42
  _options_from_dependency,
43
+ _ScalarConfigTypes,
44
44
  _subtype_from_entity_schema_dependency,
45
45
  _workflow_task_schema_output_from_dependency,
46
46
  datetime_config_value_to_str,
@@ -603,7 +603,7 @@ def _mock_scalar_value(
603
603
  f"Unable to mock scalar value for unsupported dependency type {dependency}"
604
604
  )
605
605
  # These types should be equivalent and this appeases MyPy
606
- scalar_type = ScalarConfigTypes(dependency.type)
606
+ scalar_type = _ScalarConfigTypes(dependency.type)
607
607
  if _is_scalar_with_enum(dependency):
608
608
  return _mock_scalar_with_enum(dependency)
609
609
  elif scalar_type == scalar_type.BOOLEAN:
@@ -35,6 +35,7 @@ if TYPE_CHECKING:
35
35
  from benchling_sdk.services.v2.stable.export_service import ExportService
36
36
  from benchling_sdk.services.v2.stable.feature_library_service import FeatureLibraryService
37
37
  from benchling_sdk.services.v2.stable.folder_service import FolderService
38
+ from benchling_sdk.services.v2.stable.instrument_query_service import InstrumentQueryService
38
39
  from benchling_sdk.services.v2.stable.inventory_service import InventoryService
39
40
  from benchling_sdk.services.v2.stable.lab_automation_service import LabAutomationService
40
41
  from benchling_sdk.services.v2.stable.label_template_service import LabelTemplateService
@@ -461,6 +462,17 @@ class Benchling(object):
461
462
  """
462
463
  return self.v2.stable.folders
463
464
 
465
+ @property
466
+ def instrument_queries(self) -> InstrumentQueryService:
467
+ """
468
+ Instrument Queries.
469
+
470
+ Instrument Queries are used to query the instrument service.
471
+
472
+ See https://benchling.com/api/reference#/Instrument%20Queries
473
+ """
474
+ return self.v2.stable.instrument_queries
475
+
464
476
  @property
465
477
  def inventory(self) -> InventoryService:
466
478
  """
@@ -527,6 +527,8 @@ __all__ = [
527
527
  "EventBaseSchema",
528
528
  "EventsPaginatedList",
529
529
  "ExecuteSampleGroups",
530
+ "ExperimentalWellRole",
531
+ "ExperimentalWellRolePrimaryRole",
530
532
  "ExportAuditLogAsyncTask",
531
533
  "ExportAuditLogAsyncTaskResponse",
532
534
  "ExportItemRequest",
@@ -592,6 +594,9 @@ __all__ = [
592
594
  "IngredientMeasurementUnits",
593
595
  "IngredientWriteParams",
594
596
  "InitialTable",
597
+ "InstrumentQuery",
598
+ "InstrumentQueryParams",
599
+ "InstrumentQueryValues",
595
600
  "IntegerAppConfigItem",
596
601
  "IntegerAppConfigItemType",
597
602
  "IntegerFieldDefinition",
@@ -1015,6 +1020,7 @@ __all__ = [
1015
1020
  "WellOrInaccessibleResource",
1016
1021
  "WellResourceType",
1017
1022
  "WorkflowEndNodeDetails",
1023
+ "WorkflowEndNodeDetailsNodeType",
1018
1024
  "WorkflowFlowchart",
1019
1025
  "WorkflowFlowchartConfigSummary",
1020
1026
  "WorkflowFlowchartConfigVersion",
@@ -1032,6 +1038,7 @@ __all__ = [
1032
1038
  "WorkflowOutputCreatedEvent",
1033
1039
  "WorkflowOutputCreatedEventEventType",
1034
1040
  "WorkflowOutputNodeDetails",
1041
+ "WorkflowOutputNodeDetailsNodeType",
1035
1042
  "WorkflowOutputSchema",
1036
1043
  "WorkflowOutputSummary",
1037
1044
  "WorkflowOutputUpdate",
@@ -1046,8 +1053,10 @@ __all__ = [
1046
1053
  "WorkflowOutputsUnarchive",
1047
1054
  "WorkflowPatch",
1048
1055
  "WorkflowRootNodeDetails",
1056
+ "WorkflowRootNodeDetailsNodeType",
1049
1057
  "WorkflowRouterFunction",
1050
1058
  "WorkflowRouterNodeDetails",
1059
+ "WorkflowRouterNodeDetailsNodeType",
1051
1060
  "WorkflowSample",
1052
1061
  "WorkflowSampleList",
1053
1062
  "WorkflowStage",
@@ -1085,6 +1094,7 @@ __all__ = [
1085
1094
  "WorkflowTaskGroupsPaginatedList",
1086
1095
  "WorkflowTaskGroupsUnarchive",
1087
1096
  "WorkflowTaskNodeDetails",
1097
+ "WorkflowTaskNodeDetailsNodeType",
1088
1098
  "WorkflowTaskSchema",
1089
1099
  "WorkflowTaskSchemaBase",
1090
1100
  "WorkflowTaskSchemaExecutionType",
@@ -1633,6 +1643,8 @@ if TYPE_CHECKING:
1633
1643
  import benchling_api_client.v2.stable.models.event_base_schema
1634
1644
  import benchling_api_client.v2.stable.models.events_paginated_list
1635
1645
  import benchling_api_client.v2.stable.models.execute_sample_groups
1646
+ import benchling_api_client.v2.stable.models.experimental_well_role
1647
+ import benchling_api_client.v2.stable.models.experimental_well_role_primary_role
1636
1648
  import benchling_api_client.v2.stable.models.export_audit_log_async_task
1637
1649
  import benchling_api_client.v2.stable.models.export_audit_log_async_task_response
1638
1650
  import benchling_api_client.v2.stable.models.export_item_request
@@ -1698,6 +1710,9 @@ if TYPE_CHECKING:
1698
1710
  import benchling_api_client.v2.stable.models.ingredient_measurement_units
1699
1711
  import benchling_api_client.v2.stable.models.ingredient_write_params
1700
1712
  import benchling_api_client.v2.stable.models.initial_table
1713
+ import benchling_api_client.v2.stable.models.instrument_query
1714
+ import benchling_api_client.v2.stable.models.instrument_query_params
1715
+ import benchling_api_client.v2.stable.models.instrument_query_values
1701
1716
  import benchling_api_client.v2.stable.models.integer_app_config_item
1702
1717
  import benchling_api_client.v2.stable.models.integer_app_config_item_type
1703
1718
  import benchling_api_client.v2.stable.models.integer_field_definition
@@ -2121,6 +2136,7 @@ if TYPE_CHECKING:
2121
2136
  import benchling_api_client.v2.stable.models.well_or_inaccessible_resource
2122
2137
  import benchling_api_client.v2.stable.models.well_resource_type
2123
2138
  import benchling_api_client.v2.stable.models.workflow_end_node_details
2139
+ import benchling_api_client.v2.stable.models.workflow_end_node_details_node_type
2124
2140
  import benchling_api_client.v2.stable.models.workflow_flowchart
2125
2141
  import benchling_api_client.v2.stable.models.workflow_flowchart_config_summary
2126
2142
  import benchling_api_client.v2.stable.models.workflow_flowchart_config_version
@@ -2138,6 +2154,7 @@ if TYPE_CHECKING:
2138
2154
  import benchling_api_client.v2.stable.models.workflow_output_created_event
2139
2155
  import benchling_api_client.v2.stable.models.workflow_output_created_event_event_type
2140
2156
  import benchling_api_client.v2.stable.models.workflow_output_node_details
2157
+ import benchling_api_client.v2.stable.models.workflow_output_node_details_node_type
2141
2158
  import benchling_api_client.v2.stable.models.workflow_output_schema
2142
2159
  import benchling_api_client.v2.stable.models.workflow_output_summary
2143
2160
  import benchling_api_client.v2.stable.models.workflow_output_update
@@ -2152,8 +2169,10 @@ if TYPE_CHECKING:
2152
2169
  import benchling_api_client.v2.stable.models.workflow_outputs_unarchive
2153
2170
  import benchling_api_client.v2.stable.models.workflow_patch
2154
2171
  import benchling_api_client.v2.stable.models.workflow_root_node_details
2172
+ import benchling_api_client.v2.stable.models.workflow_root_node_details_node_type
2155
2173
  import benchling_api_client.v2.stable.models.workflow_router_function
2156
2174
  import benchling_api_client.v2.stable.models.workflow_router_node_details
2175
+ import benchling_api_client.v2.stable.models.workflow_router_node_details_node_type
2157
2176
  import benchling_api_client.v2.stable.models.workflow_sample
2158
2177
  import benchling_api_client.v2.stable.models.workflow_sample_list
2159
2178
  import benchling_api_client.v2.stable.models.workflow_stage
@@ -2191,6 +2210,7 @@ if TYPE_CHECKING:
2191
2210
  import benchling_api_client.v2.stable.models.workflow_task_groups_paginated_list
2192
2211
  import benchling_api_client.v2.stable.models.workflow_task_groups_unarchive
2193
2212
  import benchling_api_client.v2.stable.models.workflow_task_node_details
2213
+ import benchling_api_client.v2.stable.models.workflow_task_node_details_node_type
2194
2214
  import benchling_api_client.v2.stable.models.workflow_task_schema
2195
2215
  import benchling_api_client.v2.stable.models.workflow_task_schema_base
2196
2216
  import benchling_api_client.v2.stable.models.workflow_task_schema_execution_type
@@ -3353,6 +3373,10 @@ if TYPE_CHECKING:
3353
3373
  EventBaseSchema = benchling_api_client.v2.stable.models.event_base_schema.EventBaseSchema
3354
3374
  EventsPaginatedList = benchling_api_client.v2.stable.models.events_paginated_list.EventsPaginatedList
3355
3375
  ExecuteSampleGroups = benchling_api_client.v2.stable.models.execute_sample_groups.ExecuteSampleGroups
3376
+ ExperimentalWellRole = benchling_api_client.v2.stable.models.experimental_well_role.ExperimentalWellRole
3377
+ ExperimentalWellRolePrimaryRole = (
3378
+ benchling_api_client.v2.stable.models.experimental_well_role_primary_role.ExperimentalWellRolePrimaryRole
3379
+ )
3356
3380
  ExportAuditLogAsyncTask = (
3357
3381
  benchling_api_client.v2.stable.models.export_audit_log_async_task.ExportAuditLogAsyncTask
3358
3382
  )
@@ -3476,6 +3500,13 @@ if TYPE_CHECKING:
3476
3500
  benchling_api_client.v2.stable.models.ingredient_write_params.IngredientWriteParams
3477
3501
  )
3478
3502
  InitialTable = benchling_api_client.v2.stable.models.initial_table.InitialTable
3503
+ InstrumentQuery = benchling_api_client.v2.stable.models.instrument_query.InstrumentQuery
3504
+ InstrumentQueryParams = (
3505
+ benchling_api_client.v2.stable.models.instrument_query_params.InstrumentQueryParams
3506
+ )
3507
+ InstrumentQueryValues = (
3508
+ benchling_api_client.v2.stable.models.instrument_query_values.InstrumentQueryValues
3509
+ )
3479
3510
  IntegerAppConfigItem = benchling_api_client.v2.stable.models.integer_app_config_item.IntegerAppConfigItem
3480
3511
  IntegerAppConfigItemType = (
3481
3512
  benchling_api_client.v2.stable.models.integer_app_config_item_type.IntegerAppConfigItemType
@@ -4321,6 +4352,9 @@ if TYPE_CHECKING:
4321
4352
  WorkflowEndNodeDetails = (
4322
4353
  benchling_api_client.v2.stable.models.workflow_end_node_details.WorkflowEndNodeDetails
4323
4354
  )
4355
+ WorkflowEndNodeDetailsNodeType = (
4356
+ benchling_api_client.v2.stable.models.workflow_end_node_details_node_type.WorkflowEndNodeDetailsNodeType
4357
+ )
4324
4358
  WorkflowFlowchart = benchling_api_client.v2.stable.models.workflow_flowchart.WorkflowFlowchart
4325
4359
  WorkflowFlowchartConfigSummary = (
4326
4360
  benchling_api_client.v2.stable.models.workflow_flowchart_config_summary.WorkflowFlowchartConfigSummary
@@ -4364,6 +4398,9 @@ if TYPE_CHECKING:
4364
4398
  WorkflowOutputNodeDetails = (
4365
4399
  benchling_api_client.v2.stable.models.workflow_output_node_details.WorkflowOutputNodeDetails
4366
4400
  )
4401
+ WorkflowOutputNodeDetailsNodeType = (
4402
+ benchling_api_client.v2.stable.models.workflow_output_node_details_node_type.WorkflowOutputNodeDetailsNodeType
4403
+ )
4367
4404
  WorkflowOutputSchema = benchling_api_client.v2.stable.models.workflow_output_schema.WorkflowOutputSchema
4368
4405
  WorkflowOutputSummary = (
4369
4406
  benchling_api_client.v2.stable.models.workflow_output_summary.WorkflowOutputSummary
@@ -4400,12 +4437,18 @@ if TYPE_CHECKING:
4400
4437
  WorkflowRootNodeDetails = (
4401
4438
  benchling_api_client.v2.stable.models.workflow_root_node_details.WorkflowRootNodeDetails
4402
4439
  )
4440
+ WorkflowRootNodeDetailsNodeType = (
4441
+ benchling_api_client.v2.stable.models.workflow_root_node_details_node_type.WorkflowRootNodeDetailsNodeType
4442
+ )
4403
4443
  WorkflowRouterFunction = (
4404
4444
  benchling_api_client.v2.stable.models.workflow_router_function.WorkflowRouterFunction
4405
4445
  )
4406
4446
  WorkflowRouterNodeDetails = (
4407
4447
  benchling_api_client.v2.stable.models.workflow_router_node_details.WorkflowRouterNodeDetails
4408
4448
  )
4449
+ WorkflowRouterNodeDetailsNodeType = (
4450
+ benchling_api_client.v2.stable.models.workflow_router_node_details_node_type.WorkflowRouterNodeDetailsNodeType
4451
+ )
4409
4452
  WorkflowSample = benchling_api_client.v2.stable.models.workflow_sample.WorkflowSample
4410
4453
  WorkflowSampleList = benchling_api_client.v2.stable.models.workflow_sample_list.WorkflowSampleList
4411
4454
  WorkflowStage = benchling_api_client.v2.stable.models.workflow_stage.WorkflowStage
@@ -4497,6 +4540,9 @@ if TYPE_CHECKING:
4497
4540
  WorkflowTaskNodeDetails = (
4498
4541
  benchling_api_client.v2.stable.models.workflow_task_node_details.WorkflowTaskNodeDetails
4499
4542
  )
4543
+ WorkflowTaskNodeDetailsNodeType = (
4544
+ benchling_api_client.v2.stable.models.workflow_task_node_details_node_type.WorkflowTaskNodeDetailsNodeType
4545
+ )
4500
4546
  WorkflowTaskSchema = benchling_api_client.v2.stable.models.workflow_task_schema.WorkflowTaskSchema
4501
4547
  WorkflowTaskSchemaBase = (
4502
4548
  benchling_api_client.v2.stable.models.workflow_task_schema_base.WorkflowTaskSchemaBase
@@ -5089,6 +5135,8 @@ else:
5089
5135
  "EventBaseSchema": "benchling_api_client.v2.stable.models.event_base_schema",
5090
5136
  "EventsPaginatedList": "benchling_api_client.v2.stable.models.events_paginated_list",
5091
5137
  "ExecuteSampleGroups": "benchling_api_client.v2.stable.models.execute_sample_groups",
5138
+ "ExperimentalWellRole": "benchling_api_client.v2.stable.models.experimental_well_role",
5139
+ "ExperimentalWellRolePrimaryRole": "benchling_api_client.v2.stable.models.experimental_well_role_primary_role",
5092
5140
  "ExportAuditLogAsyncTask": "benchling_api_client.v2.stable.models.export_audit_log_async_task",
5093
5141
  "ExportAuditLogAsyncTaskResponse": "benchling_api_client.v2.stable.models.export_audit_log_async_task_response",
5094
5142
  "ExportItemRequest": "benchling_api_client.v2.stable.models.export_item_request",
@@ -5154,6 +5202,9 @@ else:
5154
5202
  "IngredientMeasurementUnits": "benchling_api_client.v2.stable.models.ingredient_measurement_units",
5155
5203
  "IngredientWriteParams": "benchling_api_client.v2.stable.models.ingredient_write_params",
5156
5204
  "InitialTable": "benchling_api_client.v2.stable.models.initial_table",
5205
+ "InstrumentQuery": "benchling_api_client.v2.stable.models.instrument_query",
5206
+ "InstrumentQueryParams": "benchling_api_client.v2.stable.models.instrument_query_params",
5207
+ "InstrumentQueryValues": "benchling_api_client.v2.stable.models.instrument_query_values",
5157
5208
  "IntegerAppConfigItem": "benchling_api_client.v2.stable.models.integer_app_config_item",
5158
5209
  "IntegerAppConfigItemType": "benchling_api_client.v2.stable.models.integer_app_config_item_type",
5159
5210
  "IntegerFieldDefinition": "benchling_api_client.v2.stable.models.integer_field_definition",
@@ -5577,6 +5628,7 @@ else:
5577
5628
  "WellOrInaccessibleResource": "benchling_api_client.v2.stable.models.well_or_inaccessible_resource",
5578
5629
  "WellResourceType": "benchling_api_client.v2.stable.models.well_resource_type",
5579
5630
  "WorkflowEndNodeDetails": "benchling_api_client.v2.stable.models.workflow_end_node_details",
5631
+ "WorkflowEndNodeDetailsNodeType": "benchling_api_client.v2.stable.models.workflow_end_node_details_node_type",
5580
5632
  "WorkflowFlowchart": "benchling_api_client.v2.stable.models.workflow_flowchart",
5581
5633
  "WorkflowFlowchartConfigSummary": "benchling_api_client.v2.stable.models.workflow_flowchart_config_summary",
5582
5634
  "WorkflowFlowchartConfigVersion": "benchling_api_client.v2.stable.models.workflow_flowchart_config_version",
@@ -5594,6 +5646,7 @@ else:
5594
5646
  "WorkflowOutputCreatedEvent": "benchling_api_client.v2.stable.models.workflow_output_created_event",
5595
5647
  "WorkflowOutputCreatedEventEventType": "benchling_api_client.v2.stable.models.workflow_output_created_event_event_type",
5596
5648
  "WorkflowOutputNodeDetails": "benchling_api_client.v2.stable.models.workflow_output_node_details",
5649
+ "WorkflowOutputNodeDetailsNodeType": "benchling_api_client.v2.stable.models.workflow_output_node_details_node_type",
5597
5650
  "WorkflowOutputSchema": "benchling_api_client.v2.stable.models.workflow_output_schema",
5598
5651
  "WorkflowOutputSummary": "benchling_api_client.v2.stable.models.workflow_output_summary",
5599
5652
  "WorkflowOutputUpdate": "benchling_api_client.v2.stable.models.workflow_output_update",
@@ -5608,8 +5661,10 @@ else:
5608
5661
  "WorkflowOutputsUnarchive": "benchling_api_client.v2.stable.models.workflow_outputs_unarchive",
5609
5662
  "WorkflowPatch": "benchling_api_client.v2.stable.models.workflow_patch",
5610
5663
  "WorkflowRootNodeDetails": "benchling_api_client.v2.stable.models.workflow_root_node_details",
5664
+ "WorkflowRootNodeDetailsNodeType": "benchling_api_client.v2.stable.models.workflow_root_node_details_node_type",
5611
5665
  "WorkflowRouterFunction": "benchling_api_client.v2.stable.models.workflow_router_function",
5612
5666
  "WorkflowRouterNodeDetails": "benchling_api_client.v2.stable.models.workflow_router_node_details",
5667
+ "WorkflowRouterNodeDetailsNodeType": "benchling_api_client.v2.stable.models.workflow_router_node_details_node_type",
5613
5668
  "WorkflowSample": "benchling_api_client.v2.stable.models.workflow_sample",
5614
5669
  "WorkflowSampleList": "benchling_api_client.v2.stable.models.workflow_sample_list",
5615
5670
  "WorkflowStage": "benchling_api_client.v2.stable.models.workflow_stage",
@@ -5647,6 +5702,7 @@ else:
5647
5702
  "WorkflowTaskGroupsPaginatedList": "benchling_api_client.v2.stable.models.workflow_task_groups_paginated_list",
5648
5703
  "WorkflowTaskGroupsUnarchive": "benchling_api_client.v2.stable.models.workflow_task_groups_unarchive",
5649
5704
  "WorkflowTaskNodeDetails": "benchling_api_client.v2.stable.models.workflow_task_node_details",
5705
+ "WorkflowTaskNodeDetailsNodeType": "benchling_api_client.v2.stable.models.workflow_task_node_details_node_type",
5650
5706
  "WorkflowTaskSchema": "benchling_api_client.v2.stable.models.workflow_task_schema",
5651
5707
  "WorkflowTaskSchemaBase": "benchling_api_client.v2.stable.models.workflow_task_schema_base",
5652
5708
  "WorkflowTaskSchemaExecutionType": "benchling_api_client.v2.stable.models.workflow_task_schema_execution_type",
@@ -19,6 +19,8 @@ __all__ = [
19
19
  "AssayRunCreatedWebhookV2Type",
20
20
  "AssayRunUpdatedFieldsWebhookV2",
21
21
  "AssayRunUpdatedFieldsWebhookV2Type",
22
+ "CanvasCreatedWebhookV2Beta",
23
+ "CanvasCreatedWebhookV2BetaType",
22
24
  "CanvasInitializeWebhookV2",
23
25
  "CanvasInitializeWebhookV2Type",
24
26
  "CanvasInteractionWebhookV2",
@@ -130,6 +132,8 @@ if TYPE_CHECKING:
130
132
  import benchling_api_client.webhooks.v0.stable.models.assay_run_created_webhook_v2_type
131
133
  import benchling_api_client.webhooks.v0.stable.models.assay_run_updated_fields_webhook_v2
132
134
  import benchling_api_client.webhooks.v0.stable.models.assay_run_updated_fields_webhook_v2_type
135
+ import benchling_api_client.webhooks.v0.stable.models.canvas_created_webhook_v2_beta
136
+ import benchling_api_client.webhooks.v0.stable.models.canvas_created_webhook_v2_beta_type
133
137
  import benchling_api_client.webhooks.v0.stable.models.canvas_initialize_webhook_v2
134
138
  import benchling_api_client.webhooks.v0.stable.models.canvas_initialize_webhook_v2_type
135
139
  import benchling_api_client.webhooks.v0.stable.models.canvas_interaction_webhook_v2
@@ -259,6 +263,12 @@ if TYPE_CHECKING:
259
263
  AssayRunUpdatedFieldsWebhookV2Type = (
260
264
  benchling_api_client.webhooks.v0.stable.models.assay_run_updated_fields_webhook_v2_type.AssayRunUpdatedFieldsWebhookV2Type
261
265
  )
266
+ CanvasCreatedWebhookV2Beta = (
267
+ benchling_api_client.webhooks.v0.stable.models.canvas_created_webhook_v2_beta.CanvasCreatedWebhookV2Beta
268
+ )
269
+ CanvasCreatedWebhookV2BetaType = (
270
+ benchling_api_client.webhooks.v0.stable.models.canvas_created_webhook_v2_beta_type.CanvasCreatedWebhookV2BetaType
271
+ )
262
272
  CanvasInitializeWebhookV2 = (
263
273
  benchling_api_client.webhooks.v0.stable.models.canvas_initialize_webhook_v2.CanvasInitializeWebhookV2
264
274
  )
@@ -558,6 +568,8 @@ else:
558
568
  "AssayRunCreatedWebhookV2Type": "benchling_api_client.webhooks.v0.stable.models.assay_run_created_webhook_v2_type",
559
569
  "AssayRunUpdatedFieldsWebhookV2": "benchling_api_client.webhooks.v0.stable.models.assay_run_updated_fields_webhook_v2",
560
570
  "AssayRunUpdatedFieldsWebhookV2Type": "benchling_api_client.webhooks.v0.stable.models.assay_run_updated_fields_webhook_v2_type",
571
+ "CanvasCreatedWebhookV2Beta": "benchling_api_client.webhooks.v0.stable.models.canvas_created_webhook_v2_beta",
572
+ "CanvasCreatedWebhookV2BetaType": "benchling_api_client.webhooks.v0.stable.models.canvas_created_webhook_v2_beta_type",
561
573
  "CanvasInitializeWebhookV2": "benchling_api_client.webhooks.v0.stable.models.canvas_initialize_webhook_v2",
562
574
  "CanvasInitializeWebhookV2Type": "benchling_api_client.webhooks.v0.stable.models.canvas_initialize_webhook_v2_type",
563
575
  "CanvasInteractionWebhookV2": "benchling_api_client.webhooks.v0.stable.models.canvas_interaction_webhook_v2",
@@ -0,0 +1,62 @@
1
+ from benchling_api_client.v2.alpha.api.assemblies import (
2
+ create_and_finalize_assembly,
3
+ get_assembly,
4
+ validate_assembly,
5
+ )
6
+ from benchling_api_client.v2.alpha.models.assembly import Assembly
7
+ from benchling_api_client.v2.alpha.models.assembly_spec_shared import AssemblySpecShared
8
+ from benchling_api_client.v2.alpha.models.create_and_finalize_assembly_json_body import (
9
+ CreateAndFinalizeAssemblyJsonBody,
10
+ )
11
+
12
+ from benchling_sdk.helpers.decorators import api_method
13
+ from benchling_sdk.helpers.response_helpers import model_from_detailed
14
+ from benchling_sdk.models import AsyncTaskLink
15
+ from benchling_sdk.services.v2.base_service import BaseService
16
+
17
+
18
+ class V2AlphaAssemblyService(BaseService):
19
+ """
20
+ V2-Alpha Assemblies.
21
+
22
+ In Benchling, Assemblies are records of a process in which many fragment sequences are
23
+ assembled in silico to create new construct sequences.
24
+
25
+ https://benchling.com/api/v2-alpha/reference#/Assemblies
26
+ """
27
+
28
+ @api_method
29
+ def get_by_id(self, bulk_assembly_id: str) -> Assembly:
30
+ """
31
+ Get a bulk assembly by its API identifier.
32
+
33
+ See https://benchling.com/api/v2-alpha/reference#/Assemblies/GetAssembly
34
+ """
35
+ response = get_assembly.sync_detailed(client=self.client, bulk_assembly_id=bulk_assembly_id)
36
+ return model_from_detailed(response)
37
+
38
+ @api_method
39
+ def create_and_finalize(self, create: CreateAndFinalizeAssemblyJsonBody) -> AsyncTaskLink:
40
+ """
41
+ Create and finalize a new bulk assembly in a single step.
42
+
43
+ This endpoint launches a long-running task and returns the Task ID of the launched task.
44
+ The task response contains a finalized bulk assembly.
45
+
46
+ See https://benchling.com/api/v2-alpha/reference#/Assemblies/CreateAndFinalizeAssembly
47
+ """
48
+ response = create_and_finalize_assembly.sync_detailed(client=self.client, json_body=create)
49
+ return model_from_detailed(response)
50
+
51
+ @api_method
52
+ def validate(self, assembly: AssemblySpecShared) -> AsyncTaskLink:
53
+ """
54
+ Validate an assembly prior to finalization to see if it will succeed.
55
+
56
+ This endpoint launches a long-running task and returns the Task ID of the launched task.
57
+ The task response contains a set of validation results.
58
+
59
+ See https://benchling.com/api/v2-alpha/reference#/Assemblies/ValidateAssembly
60
+ """
61
+ response = validate_assembly.sync_detailed(client=self.client, json_body=assembly)
62
+ return model_from_detailed(response)
@@ -0,0 +1,46 @@
1
+ from typing import List, Optional
2
+
3
+ from benchling_api_client.v2.beta.api.analyses import get_analysis, update_analysis
4
+ from benchling_api_client.v2.beta.models.analysis import Analysis
5
+ from benchling_api_client.v2.beta.models.analysis_update import AnalysisUpdate
6
+
7
+ from benchling_sdk.helpers.decorators import api_method
8
+ from benchling_sdk.helpers.response_helpers import model_from_detailed
9
+ from benchling_sdk.helpers.serialization_helpers import none_as_unset, optional_array_query_param
10
+ from benchling_sdk.services.v2.base_service import BaseService
11
+
12
+
13
+ class V2BetaAnalysisService(BaseService):
14
+ """
15
+ V2-Beta Analyses.
16
+
17
+ Analyses allow experimental data to be viewed, analyzed, and visualized.
18
+
19
+ https://benchling.com/api/v2-beta/reference#/Analyses
20
+ """
21
+
22
+ @api_method
23
+ def get_by_id(self, analysis_id: str, returning: Optional[List[str]] = None) -> Analysis:
24
+ """
25
+ Get an analysis.
26
+
27
+ See https://benchling.com/api/v2-beta/reference#/Analyses/getAnalysis
28
+ """
29
+ response = get_analysis.sync_detailed(
30
+ client=self.client,
31
+ analysis_id=analysis_id,
32
+ returning=none_as_unset(optional_array_query_param(returning)),
33
+ )
34
+ return model_from_detailed(response)
35
+
36
+ @api_method
37
+ def update(self, analysis_id: str, update: AnalysisUpdate) -> Analysis:
38
+ """
39
+ Update an analysis.
40
+
41
+ See https://benchling.com/api/v2-beta/reference#/Analyses/updateAnalysis
42
+ """
43
+ response = update_analysis.sync_detailed(
44
+ client=self.client, analysis_id=analysis_id, json_body=update
45
+ )
46
+ return model_from_detailed(response)
@@ -0,0 +1,45 @@
1
+ from benchling_api_client.v2.beta.api.app_definitions import (
2
+ get_benchling_app_definition_version_manifest,
3
+ put_benchling_app_definition_version_manifest,
4
+ )
5
+ from benchling_api_client.v2.beta.models.benchling_app_manifest import BenchlingAppManifest
6
+
7
+ from benchling_sdk.helpers.decorators import api_method
8
+ from benchling_sdk.helpers.response_helpers import model_from_detailed
9
+ from benchling_sdk.services.v2.base_service import BaseService
10
+
11
+
12
+ class V2BetaAppDefinitionService(BaseService):
13
+ """
14
+ V2-Beta App Definitions.
15
+
16
+ Create and manage Benchling app definitions on your tenant.
17
+
18
+ https://benchling.com/api/v2-beta/reference#/App%20Definitions
19
+ """
20
+
21
+ @api_method
22
+ def get_version_manifest(self, app_def_id: str, version_id: str) -> BenchlingAppManifest:
23
+ """
24
+ Get manifest for an app definition version.
25
+
26
+ See https://benchling.com/api/v2-beta/reference#/App%20Definitions/getBenchlingAppDefinitionVersionManifest
27
+ """
28
+ response = get_benchling_app_definition_version_manifest.sync_detailed(
29
+ client=self.client, app_def_id=app_def_id, version_id=version_id
30
+ )
31
+ return model_from_detailed(response)
32
+
33
+ @api_method
34
+ def put_version_manifest(
35
+ self, app_def_id: str, version_id: str, manifest: BenchlingAppManifest
36
+ ) -> BenchlingAppManifest:
37
+ """
38
+ Create or update app definition version from a manifest.
39
+
40
+ See https://benchling.com/api/v2-beta/reference#/App%20Definitions/putBenchlingAppDefinitionVersionManifest
41
+ """
42
+ response = put_benchling_app_definition_version_manifest.sync_detailed(
43
+ client=self.client, app_def_id=app_def_id, version_id=version_id, yaml_body=manifest
44
+ )
45
+ return model_from_detailed(response)
@@ -12,7 +12,7 @@ class V2BetaAppService(BaseService):
12
12
 
13
13
  Create and manage Apps on your tenant.
14
14
 
15
- https://benchling.com/api/v2-beta/reference?stability=not-available#/Apps
15
+ https://benchling.com/api/v2-beta/reference#/Apps
16
16
  """
17
17
 
18
18
  @api_method
@@ -0,0 +1,41 @@
1
+ from benchling_api_client.v2.beta.api.audit import audit_log
2
+ from benchling_api_client.v2.beta.models.audit_log_export import AuditLogExport
3
+
4
+ from benchling_sdk.helpers.decorators import api_method
5
+ from benchling_sdk.helpers.response_helpers import model_from_detailed
6
+ from benchling_sdk.models import AsyncTaskLink
7
+ from benchling_sdk.services.v2.base_service import BaseService
8
+
9
+
10
+ class V2BetaAuditService(BaseService):
11
+ """
12
+ V2-Beta Audit Service.
13
+
14
+ Export audit log data for Benchling objects.
15
+
16
+ https://benchling.com/api/v2-beta/reference#/Audit
17
+ """
18
+
19
+ @api_method
20
+ def get_audit_log(self, object_id: str, export: AuditLogExport) -> AsyncTaskLink:
21
+ """
22
+ Export an audit log file for a Benchling object.
23
+
24
+ This endpoint launches a long-running task and returns the Task ID of the
25
+ launched task. The task response contains a link to download the exported audit
26
+ log file from Amazon S3. This endpoint is subject to a rate limit of 500 requests
27
+ per hour, in conjunction with the global request rate limit. Export throughput
28
+ will additionally be rate limited around the scale of 70,000 total audit events
29
+ exported in csv format or 30,000 total audit events exported in pdf format per hour.
30
+
31
+ Example of submitting an export request and then getting the download URL from
32
+ the completed task:
33
+
34
+ task_link = benchling.v2.beta.audit.get_audit_log(object_id, export)
35
+ task = benchling.tasks.wait_for_task(task_link.task_id)
36
+ url = task.response["downloadURL"]
37
+
38
+ See https://benchling.com/api/v2-beta/reference#/Audit/auditLog
39
+ """
40
+ response = audit_log.sync_detailed(client=self.client, object_id=object_id, json_body=export)
41
+ return model_from_detailed(response)
@@ -0,0 +1,35 @@
1
+ from typing import Iterable, Optional
2
+
3
+ from benchling_api_client.v2.beta.api.entries import update_entry
4
+ from benchling_api_client.v2.beta.models.entry import Entry
5
+ from benchling_api_client.v2.beta.models.entry_update import EntryUpdate
6
+
7
+ from benchling_sdk.helpers.decorators import api_method
8
+ from benchling_sdk.helpers.response_helpers import model_from_detailed
9
+ from benchling_sdk.helpers.serialization_helpers import none_as_unset, optional_array_query_param
10
+ from benchling_sdk.services.v2.base_service import BaseService
11
+
12
+
13
+ class V2BetaEntryService(BaseService):
14
+ """
15
+ V2-Beta Entries.
16
+
17
+ Entries are rich text documents that allow you to capture all of your experimental data in one place.
18
+
19
+ https://benchling.com/api/v2-beta/reference#/Entries
20
+ """
21
+
22
+ @api_method
23
+ def update_entry(
24
+ self, entry_id: str, entry: EntryUpdate, returning: Optional[Iterable[str]] = None
25
+ ) -> Entry:
26
+ """
27
+ Update a notebook entry's metadata.
28
+
29
+ See https://benchling.com/api/v2-beta/reference#/Entries/updateEntry
30
+ """
31
+ returning_string = optional_array_query_param(returning)
32
+ response = update_entry.sync_detailed(
33
+ client=self.client, entry_id=entry_id, json_body=entry, returning=none_as_unset(returning_string)
34
+ )
35
+ return model_from_detailed(response)