benchling-sdk 1.14.0a0__tar.gz → 1.14.0a1__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 (114) hide show
  1. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/PKG-INFO +1 -1
  2. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/benchling.py +4 -6
  3. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/base_service.py +7 -0
  4. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/v2_alpha_service.py +9 -9
  5. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/v2_beta_service.py +28 -54
  6. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/v2_stable_service.py +135 -335
  7. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2_service.py +17 -11
  8. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/pyproject.toml +1 -1
  9. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/LICENSE +0 -0
  10. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/README.md +0 -0
  11. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/__init__.py +0 -0
  12. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/__init__.py +0 -0
  13. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/canvas/__init__.py +0 -0
  14. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/canvas/errors.py +0 -0
  15. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/canvas/framework.py +0 -0
  16. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/canvas/types.py +0 -0
  17. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/config/__init__.py +0 -0
  18. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/config/cryptography_helpers.py +0 -0
  19. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/config/decryption_provider.py +0 -0
  20. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/config/errors.py +0 -0
  21. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/config/framework.py +0 -0
  22. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/config/helpers.py +0 -0
  23. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/config/mock_config.py +0 -0
  24. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/config/types.py +0 -0
  25. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/framework.py +0 -0
  26. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/helpers/__init__.py +0 -0
  27. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/helpers/manifest_helpers.py +0 -0
  28. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/helpers/webhook_helpers.py +0 -0
  29. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/status/__init__.py +0 -0
  30. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/status/errors.py +0 -0
  31. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/status/framework.py +0 -0
  32. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/status/helpers.py +0 -0
  33. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/status/types.py +0 -0
  34. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/apps/types.py +0 -0
  35. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/auth/__init__.py +0 -0
  36. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/auth/api_key_auth.py +0 -0
  37. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/auth/bearer_token_auth.py +0 -0
  38. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/auth/client_credentials_oauth2.py +0 -0
  39. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/docs/__init__.py +0 -0
  40. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/docs/__main__.py +0 -0
  41. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/errors.py +0 -0
  42. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/helpers/__init__.py +0 -0
  43. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/helpers/client_helpers.py +0 -0
  44. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/helpers/constants.py +0 -0
  45. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/helpers/decorators.py +0 -0
  46. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/helpers/file_helpers.py +0 -0
  47. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/helpers/logging_helpers.py +0 -0
  48. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/helpers/package_helpers.py +0 -0
  49. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/helpers/pagination_helpers.py +0 -0
  50. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/helpers/response_helpers.py +0 -0
  51. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/helpers/retry_helpers.py +0 -0
  52. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/helpers/serialization_helpers.py +0 -0
  53. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/helpers/transaction_manager.py +0 -0
  54. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/models/__init__.py +0 -0
  55. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/models/webhooks/__init__.py +0 -0
  56. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/models/webhooks/v0/__init__.py +0 -0
  57. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/py.typed +0 -0
  58. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/__init__.py +0 -0
  59. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/__init__.py +0 -0
  60. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/alpha/__init__.py +0 -0
  61. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/alpha/v2_alpha_app_service.py +0 -0
  62. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/beta/__init__.py +0 -0
  63. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/beta/v2_beta_app_service.py +0 -0
  64. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/beta/v2_beta_collaboration_service.py +0 -0
  65. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/beta/v2_beta_data_frame_service.py +0 -0
  66. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/beta/v2_beta_entry_service.py +0 -0
  67. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/beta/v2_beta_folder_service.py +0 -0
  68. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/beta/v2_beta_project_service.py +0 -0
  69. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/beta/v2_beta_worklist_service.py +0 -0
  70. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/__init__.py +0 -0
  71. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/aa_sequence_service.py +0 -0
  72. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/api_service.py +0 -0
  73. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/app_service.py +0 -0
  74. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/assay_result_service.py +0 -0
  75. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/assay_run_service.py +0 -0
  76. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/blob_service.py +0 -0
  77. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/box_service.py +0 -0
  78. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/container_service.py +0 -0
  79. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/custom_entity_service.py +0 -0
  80. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/custom_notation_service.py +0 -0
  81. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/dna_alignments_service.py +0 -0
  82. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/dna_oligo_service.py +0 -0
  83. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/dna_sequence_service.py +0 -0
  84. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/dropdown_service.py +0 -0
  85. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/entity_service.py +0 -0
  86. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/entry_service.py +0 -0
  87. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/event_service.py +0 -0
  88. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/export_service.py +0 -0
  89. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/feature_library_service.py +0 -0
  90. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/folder_service.py +0 -0
  91. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/inventory_service.py +0 -0
  92. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/lab_automation_service.py +0 -0
  93. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/label_template_service.py +0 -0
  94. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/location_service.py +0 -0
  95. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/mixture_service.py +0 -0
  96. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/molecule_service.py +0 -0
  97. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/nucleotide_alignments_service.py +0 -0
  98. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/oligo_service.py +0 -0
  99. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/organization_service.py +0 -0
  100. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/plate_service.py +0 -0
  101. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/printer_service.py +0 -0
  102. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/project_service.py +0 -0
  103. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/registry_service.py +0 -0
  104. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/request_service.py +0 -0
  105. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/rna_oligo_service.py +0 -0
  106. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/rna_sequence_service.py +0 -0
  107. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/schema_service.py +0 -0
  108. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/task_service.py +0 -0
  109. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/team_service.py +0 -0
  110. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/user_service.py +0 -0
  111. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/warehouse_service.py +0 -0
  112. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/workflow_output_service.py +0 -0
  113. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/workflow_task_group_service.py +0 -0
  114. {benchling_sdk-1.14.0a0 → benchling_sdk-1.14.0a1}/benchling_sdk/services/v2/stable/workflow_task_service.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: benchling-sdk
3
- Version: 1.14.0a0
3
+ Version: 1.14.0a1
4
4
  Summary: SDK for interacting with the Benchling Platform.
5
5
  License: Apache-2.0
6
6
  Author: Benchling Support
@@ -1,6 +1,7 @@
1
1
  """Provides the Benchling class, which is the main interface for accessing Benchling's API functionality."""
2
2
  from __future__ import annotations
3
3
 
4
+ from functools import cached_property
4
5
  import re
5
6
  from typing import Optional, Protocol, TYPE_CHECKING
6
7
  import urllib.parse
@@ -154,19 +155,16 @@ class Benchling(object):
154
155
  """
155
156
  return self._client
156
157
 
157
- @property
158
+ @cached_property
158
159
  def v2(self) -> V2Service:
159
160
  """
160
161
  V2.
161
162
 
162
163
  Namespace containing support for the V2 Benchling API.
163
164
  """
164
- if self._v2_service is None:
165
- from benchling_sdk.services.v2_service import V2Service
166
-
167
- self._v2_service = V2Service(self._client, retry_strategy=self._retry_strategy)
165
+ from benchling_sdk.services.v2_service import V2Service
168
166
 
169
- return self._v2_service
167
+ return V2Service(self._client, retry_strategy=self._retry_strategy)
170
168
 
171
169
  # ------------------------------------------------------------------------------------
172
170
  # Kept for compatibility and ease of access. New services should be added in services.v2.stable and
@@ -30,3 +30,10 @@ class BaseService(ABC):
30
30
  def retry_strategy(self) -> RetryStrategy:
31
31
  """Provide access to the underlying user-specified RetryStrategy."""
32
32
  return self._retry_strategy
33
+
34
+ def _create_service(self, cls):
35
+ """Instantiate a service that derives from BaseService, with the same properties as this service.
36
+
37
+ Override this in alpha and beta services that use a client other than self._client.
38
+ """
39
+ return cls(self._client, self._retry_strategy)
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Optional, TYPE_CHECKING
3
+ from functools import cached_property
4
+ from typing import TYPE_CHECKING
4
5
 
5
6
  from benchling_api_client.v2.stable.client import Client
6
7
 
@@ -22,7 +23,6 @@ class V2AlphaService(BaseService):
22
23
  See https://benchling.com/api/v2-alpha/reference
23
24
  """
24
25
 
25
- _app_service: Optional[V2AlphaAppService]
26
26
  _alpha_client: Client
27
27
 
28
28
  def __init__(self, client: Client, retry_strategy: RetryStrategy = RetryStrategy()):
@@ -34,10 +34,8 @@ class V2AlphaService(BaseService):
34
34
  """
35
35
  super().__init__(client, retry_strategy)
36
36
  self._alpha_client = v2_alpha_client(self.client)
37
- self._app_service = None
38
- self._dna_sequence_service = None
39
37
 
40
- @property
38
+ @cached_property
41
39
  def apps(self) -> V2AlphaAppService:
42
40
  """
43
41
  V2-Alpha Apps.
@@ -46,8 +44,10 @@ class V2AlphaService(BaseService):
46
44
 
47
45
  https://benchling.com/api/v2-alpha/reference?stability=not-available#/Apps
48
46
  """
49
- if self._app_service is None:
50
- from benchling_sdk.services.v2.alpha.v2_alpha_app_service import V2AlphaAppService
47
+ from .alpha.v2_alpha_app_service import V2AlphaAppService
51
48
 
52
- self._app_service = V2AlphaAppService(self._alpha_client, self._retry_strategy)
53
- return self._app_service
49
+ return self._create_service(V2AlphaAppService)
50
+
51
+ def _create_service(self, cls):
52
+ """Instantiate a service using the alpha client."""
53
+ return cls(self._alpha_client, self._retry_strategy)
@@ -1,6 +1,7 @@
1
1
  from __future__ import annotations
2
2
 
3
- from typing import Optional, TYPE_CHECKING
3
+ from functools import cached_property
4
+ from typing import TYPE_CHECKING
4
5
 
5
6
  from benchling_api_client.v2.stable.client import Client
6
7
 
@@ -27,13 +28,6 @@ class V2BetaService(BaseService):
27
28
  See https://benchling.com/api/v2-beta/reference
28
29
  """
29
30
 
30
- _app_service: Optional[V2BetaAppService]
31
- _collaboration_service: Optional[V2BetaCollaborationService]
32
- _data_frame_service: Optional[V2BetaDataFrameService]
33
- _entry_service: Optional[V2BetaEntryService]
34
- _folder_service: Optional[V2BetaFolderService]
35
- _project_service: Optional[V2BetaProjectService]
36
- _worklist_service: Optional[V2BetaWorklistService]
37
31
  _beta_client: Client
38
32
 
39
33
  def __init__(self, client: Client, retry_strategy: RetryStrategy = RetryStrategy()):
@@ -45,16 +39,8 @@ class V2BetaService(BaseService):
45
39
  """
46
40
  super().__init__(client, retry_strategy)
47
41
  self._beta_client = v2_beta_client(self.client)
48
- self._aa_sequence_service = None
49
- self._app_service = None
50
- self._collaboration_service = None
51
- self._data_frame_service = None
52
- self._entry_service = None
53
- self._folder_service = None
54
- self._project_service = None
55
- self._worklist_service = None
56
-
57
- @property
42
+
43
+ @cached_property
58
44
  def apps(self) -> V2BetaAppService:
59
45
  """
60
46
  V2-Beta Apps.
@@ -63,13 +49,11 @@ class V2BetaService(BaseService):
63
49
 
64
50
  https://benchling.com/api/v2-beta/reference?stability=not-available#/Apps
65
51
  """
66
- if self._app_service is None:
67
- from benchling_sdk.services.v2.beta.v2_beta_app_service import V2BetaAppService
52
+ from .beta.v2_beta_app_service import V2BetaAppService
68
53
 
69
- self._app_service = V2BetaAppService(self._beta_client, self.retry_strategy)
70
- return self._app_service
54
+ return self._create_service(V2BetaAppService)
71
55
 
72
- @property
56
+ @cached_property
73
57
  def collaborations(self) -> V2BetaCollaborationService:
74
58
  """
75
59
  V2-Beta Collaborations.
@@ -78,15 +62,11 @@ class V2BetaService(BaseService):
78
62
 
79
63
  See https://benchling.com/api/v2-beta/reference?showLA=true#/Collaborations
80
64
  """
81
- if self._collaboration_service is None:
82
- from benchling_sdk.services.v2.beta.v2_beta_collaboration_service import (
83
- V2BetaCollaborationService,
84
- )
65
+ from .beta.v2_beta_collaboration_service import V2BetaCollaborationService
85
66
 
86
- self._collaboration_service = V2BetaCollaborationService(self._beta_client, self.retry_strategy)
87
- return self._collaboration_service
67
+ return self._create_service(V2BetaCollaborationService)
88
68
 
89
- @property
69
+ @cached_property
90
70
  def data_frames(self) -> V2BetaDataFrameService:
91
71
  """
92
72
  V2-Beta DataFrames.
@@ -95,13 +75,11 @@ class V2BetaService(BaseService):
95
75
 
96
76
  See https://benchling.com/api/v2-beta/reference#/Data%20Frames
97
77
  """
98
- if self._data_frame_service is None:
99
- from benchling_sdk.services.v2.beta.v2_beta_data_frame_service import V2BetaDataFrameService
78
+ from .beta.v2_beta_data_frame_service import V2BetaDataFrameService
100
79
 
101
- self._data_frame_service = V2BetaDataFrameService(self._beta_client, self.retry_strategy)
102
- return self._data_frame_service
80
+ return self._create_service(V2BetaDataFrameService)
103
81
 
104
- @property
82
+ @cached_property
105
83
  def entries(self) -> V2BetaEntryService:
106
84
  """
107
85
  V2-Beta Entries.
@@ -110,13 +88,11 @@ class V2BetaService(BaseService):
110
88
 
111
89
  https://benchling.com/api/v2-beta/reference#/Entries
112
90
  """
113
- if self._entry_service is None:
114
- from benchling_sdk.services.v2.beta.v2_beta_entry_service import V2BetaEntryService
91
+ from .beta.v2_beta_entry_service import V2BetaEntryService
115
92
 
116
- self._entry_service = V2BetaEntryService(self._beta_client, self.retry_strategy)
117
- return self._entry_service
93
+ return self._create_service(V2BetaEntryService)
118
94
 
119
- @property
95
+ @cached_property
120
96
  def folders(self) -> V2BetaFolderService:
121
97
  """
122
98
  V2-Beta Folders.
@@ -125,13 +101,11 @@ class V2BetaService(BaseService):
125
101
 
126
102
  https://benchling.com/api/v2-beta/reference?showLA=true#/Folders
127
103
  """
128
- if self._folder_service is None:
129
- from benchling_sdk.services.v2.beta.v2_beta_folder_service import V2BetaFolderService
104
+ from .beta.v2_beta_folder_service import V2BetaFolderService
130
105
 
131
- self._folder_service = V2BetaFolderService(self._beta_client, self.retry_strategy)
132
- return self._folder_service
106
+ return self._create_service(V2BetaFolderService)
133
107
 
134
- @property
108
+ @cached_property
135
109
  def projects(self) -> V2BetaProjectService:
136
110
  """
137
111
  V2-Beta Projects.
@@ -140,13 +114,11 @@ class V2BetaService(BaseService):
140
114
 
141
115
  See https://benchling.com/api/v2-beta/reference?#/Projects
142
116
  """
143
- if self._project_service is None:
144
- from benchling_sdk.services.v2.beta.v2_beta_project_service import V2BetaProjectService
117
+ from .beta.v2_beta_project_service import V2BetaProjectService
145
118
 
146
- self._project_service = V2BetaProjectService(self._beta_client, self.retry_strategy)
147
- return self._project_service
119
+ return self._create_service(V2BetaProjectService)
148
120
 
149
- @property
121
+ @cached_property
150
122
  def worklists(self) -> V2BetaWorklistService:
151
123
  """
152
124
  V2-Beta Worklists.
@@ -156,8 +128,10 @@ class V2BetaService(BaseService):
156
128
 
157
129
  See https://benchling.com/api/v2-beta/reference#/Worklists
158
130
  """
159
- if self._worklist_service is None:
160
- from benchling_sdk.services.v2.beta.v2_beta_worklist_service import V2BetaWorklistService
131
+ from .beta.v2_beta_worklist_service import V2BetaWorklistService
132
+
133
+ return self._create_service(V2BetaWorklistService)
161
134
 
162
- self._worklist_service = V2BetaWorklistService(self._beta_client, self.retry_strategy)
163
- return self._worklist_service
135
+ def _create_service(self, cls):
136
+ """Instantiate a service using the beta client."""
137
+ return cls(self._beta_client, self._retry_strategy)