benchling-sdk 1.13.0a2__py3-none-any.whl → 1.14.0a1__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.
@@ -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
 
@@ -10,7 +11,6 @@ from benchling_sdk.services.v2.base_service import BaseService
10
11
  from benchling_sdk.services.v2.beta.v2_beta_data_frame_service import V2BetaDataFrameService
11
12
 
12
13
  if TYPE_CHECKING:
13
- from benchling_sdk.services.v2.beta.v2_beta_aa_sequence_service import V2BetaAaSequenceService
14
14
  from benchling_sdk.services.v2.beta.v2_beta_app_service import V2BetaAppService
15
15
  from benchling_sdk.services.v2.beta.v2_beta_collaboration_service import V2BetaCollaborationService
16
16
  from benchling_sdk.services.v2.beta.v2_beta_entry_service import V2BetaEntryService
@@ -28,14 +28,6 @@ class V2BetaService(BaseService):
28
28
  See https://benchling.com/api/v2-beta/reference
29
29
  """
30
30
 
31
- _aa_sequence_service: Optional[V2BetaAaSequenceService]
32
- _app_service: Optional[V2BetaAppService]
33
- _collaboration_service: Optional[V2BetaCollaborationService]
34
- _data_frame_service: Optional[V2BetaDataFrameService]
35
- _entry_service: Optional[V2BetaEntryService]
36
- _folder_service: Optional[V2BetaFolderService]
37
- _project_service: Optional[V2BetaProjectService]
38
- _worklist_service: Optional[V2BetaWorklistService]
39
31
  _beta_client: Client
40
32
 
41
33
  def __init__(self, client: Client, retry_strategy: RetryStrategy = RetryStrategy()):
@@ -47,33 +39,8 @@ class V2BetaService(BaseService):
47
39
  """
48
40
  super().__init__(client, retry_strategy)
49
41
  self._beta_client = v2_beta_client(self.client)
50
- self._aa_sequence_service = None
51
- self._app_service = None
52
- self._collaboration_service = None
53
- self._data_frame_service = None
54
- self._entry_service = None
55
- self._folder_service = None
56
- self._project_service = None
57
- self._worklist_service = None
58
42
 
59
- @property
60
- def aa_sequences(self) -> V2BetaAaSequenceService:
61
- """
62
- V2-Beta AA Sequences.
63
-
64
- AA Sequences are the working units of cells that make everything run (they help make structures, catalyze
65
- reactions and allow for signaling - a kind of internal cell communication). On Benchling, these are comprised
66
- of a string of amino acids and collections of other attributes, such as annotations.
67
-
68
- See https://benchling.com/api/v2-beta/reference#/AA%20Sequences
69
- """
70
- if self._aa_sequence_service is None:
71
- from benchling_sdk.services.v2.beta.v2_beta_aa_sequence_service import V2BetaAaSequenceService
72
-
73
- self._aa_sequence_service = V2BetaAaSequenceService(self._beta_client, self.retry_strategy)
74
- return self._aa_sequence_service
75
-
76
- @property
43
+ @cached_property
77
44
  def apps(self) -> V2BetaAppService:
78
45
  """
79
46
  V2-Beta Apps.
@@ -82,13 +49,11 @@ class V2BetaService(BaseService):
82
49
 
83
50
  https://benchling.com/api/v2-beta/reference?stability=not-available#/Apps
84
51
  """
85
- if self._app_service is None:
86
- from benchling_sdk.services.v2.beta.v2_beta_app_service import V2BetaAppService
52
+ from .beta.v2_beta_app_service import V2BetaAppService
87
53
 
88
- self._app_service = V2BetaAppService(self._beta_client, self.retry_strategy)
89
- return self._app_service
54
+ return self._create_service(V2BetaAppService)
90
55
 
91
- @property
56
+ @cached_property
92
57
  def collaborations(self) -> V2BetaCollaborationService:
93
58
  """
94
59
  V2-Beta Collaborations.
@@ -97,15 +62,11 @@ class V2BetaService(BaseService):
97
62
 
98
63
  See https://benchling.com/api/v2-beta/reference?showLA=true#/Collaborations
99
64
  """
100
- if self._collaboration_service is None:
101
- from benchling_sdk.services.v2.beta.v2_beta_collaboration_service import (
102
- V2BetaCollaborationService,
103
- )
65
+ from .beta.v2_beta_collaboration_service import V2BetaCollaborationService
104
66
 
105
- self._collaboration_service = V2BetaCollaborationService(self._beta_client, self.retry_strategy)
106
- return self._collaboration_service
67
+ return self._create_service(V2BetaCollaborationService)
107
68
 
108
- @property
69
+ @cached_property
109
70
  def data_frames(self) -> V2BetaDataFrameService:
110
71
  """
111
72
  V2-Beta DataFrames.
@@ -114,13 +75,11 @@ class V2BetaService(BaseService):
114
75
 
115
76
  See https://benchling.com/api/v2-beta/reference#/Data%20Frames
116
77
  """
117
- if self._data_frame_service is None:
118
- from benchling_sdk.services.v2.beta.v2_beta_data_frame_service import V2BetaDataFrameService
78
+ from .beta.v2_beta_data_frame_service import V2BetaDataFrameService
119
79
 
120
- self._data_frame_service = V2BetaDataFrameService(self._beta_client, self.retry_strategy)
121
- return self._data_frame_service
80
+ return self._create_service(V2BetaDataFrameService)
122
81
 
123
- @property
82
+ @cached_property
124
83
  def entries(self) -> V2BetaEntryService:
125
84
  """
126
85
  V2-Beta Entries.
@@ -129,13 +88,11 @@ class V2BetaService(BaseService):
129
88
 
130
89
  https://benchling.com/api/v2-beta/reference#/Entries
131
90
  """
132
- if self._entry_service is None:
133
- from benchling_sdk.services.v2.beta.v2_beta_entry_service import V2BetaEntryService
91
+ from .beta.v2_beta_entry_service import V2BetaEntryService
134
92
 
135
- self._entry_service = V2BetaEntryService(self._beta_client, self.retry_strategy)
136
- return self._entry_service
93
+ return self._create_service(V2BetaEntryService)
137
94
 
138
- @property
95
+ @cached_property
139
96
  def folders(self) -> V2BetaFolderService:
140
97
  """
141
98
  V2-Beta Folders.
@@ -144,13 +101,11 @@ class V2BetaService(BaseService):
144
101
 
145
102
  https://benchling.com/api/v2-beta/reference?showLA=true#/Folders
146
103
  """
147
- if self._folder_service is None:
148
- from benchling_sdk.services.v2.beta.v2_beta_folder_service import V2BetaFolderService
104
+ from .beta.v2_beta_folder_service import V2BetaFolderService
149
105
 
150
- self._folder_service = V2BetaFolderService(self._beta_client, self.retry_strategy)
151
- return self._folder_service
106
+ return self._create_service(V2BetaFolderService)
152
107
 
153
- @property
108
+ @cached_property
154
109
  def projects(self) -> V2BetaProjectService:
155
110
  """
156
111
  V2-Beta Projects.
@@ -159,13 +114,11 @@ class V2BetaService(BaseService):
159
114
 
160
115
  See https://benchling.com/api/v2-beta/reference?#/Projects
161
116
  """
162
- if self._project_service is None:
163
- from benchling_sdk.services.v2.beta.v2_beta_project_service import V2BetaProjectService
117
+ from .beta.v2_beta_project_service import V2BetaProjectService
164
118
 
165
- self._project_service = V2BetaProjectService(self._beta_client, self.retry_strategy)
166
- return self._project_service
119
+ return self._create_service(V2BetaProjectService)
167
120
 
168
- @property
121
+ @cached_property
169
122
  def worklists(self) -> V2BetaWorklistService:
170
123
  """
171
124
  V2-Beta Worklists.
@@ -175,8 +128,10 @@ class V2BetaService(BaseService):
175
128
 
176
129
  See https://benchling.com/api/v2-beta/reference#/Worklists
177
130
  """
178
- if self._worklist_service is None:
179
- 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)
180
134
 
181
- self._worklist_service = V2BetaWorklistService(self._beta_client, self.retry_strategy)
182
- 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)