pybioos 0.0.16__py3-none-any.whl → 0.0.19__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.
- bioos/__about__.py +1 -1
- bioos/bioos.py +32 -7
- bioos/bioos_workflow.py +71 -3
- bioos/bw_import.py +5 -24
- bioos/bw_import_status_check.py +7 -2
- bioos/bw_status_check.py +7 -2
- bioos/config.py +4 -1
- bioos/get_submission_logs.py +7 -2
- bioos/resource/__init__.py +1 -1
- bioos/resource/iesapp.py +806 -0
- bioos/resource/workflows.py +86 -2
- bioos/resource/workspaces.py +140 -0
- bioos/service/BioOsService.py +103 -0
- bioos/workflow_info.py +2 -3
- {pybioos-0.0.16.dist-info → pybioos-0.0.19.dist-info}/METADATA +12 -10
- {pybioos-0.0.16.dist-info → pybioos-0.0.19.dist-info}/RECORD +20 -19
- {pybioos-0.0.16.dist-info → pybioos-0.0.19.dist-info}/WHEEL +1 -1
- {pybioos-0.0.16.dist-info → pybioos-0.0.19.dist-info}/entry_points.txt +1 -0
- {pybioos-0.0.16.dist-info → pybioos-0.0.19.dist-info}/LICENSE +0 -0
- {pybioos-0.0.16.dist-info → pybioos-0.0.19.dist-info}/top_level.txt +0 -0
bioos/resource/workflows.py
CHANGED
|
@@ -339,6 +339,13 @@ class Submission(metaclass=SingletonType): # 与run class行为相同
|
|
|
339
339
|
if not item.get("Status") in ("Running", "Pending"):
|
|
340
340
|
self._finish_time = item.get("FinishTime")
|
|
341
341
|
|
|
342
|
+
def delete(self):
|
|
343
|
+
"""Delete this submission from the workspace."""
|
|
344
|
+
Config.service().delete_submission({
|
|
345
|
+
"WorkspaceID": self.workspace_id,
|
|
346
|
+
"ID": self.id,
|
|
347
|
+
})
|
|
348
|
+
|
|
342
349
|
|
|
343
350
|
class WorkflowResource(metaclass=SingletonType):
|
|
344
351
|
|
|
@@ -603,7 +610,7 @@ class Workflow(metaclass=SingletonType):
|
|
|
603
610
|
"create_time": self.create_time,
|
|
604
611
|
"update_time": self.update_time
|
|
605
612
|
})
|
|
606
|
-
return f"
|
|
613
|
+
return f"Workflow:\n{info_dict}"
|
|
607
614
|
|
|
608
615
|
@property
|
|
609
616
|
@cached(cache=TTLCache(maxsize=100, ttl=1))
|
|
@@ -753,6 +760,81 @@ class Workflow(metaclass=SingletonType):
|
|
|
753
760
|
self._graph = detail.get("Graph", "")
|
|
754
761
|
self._source_type = detail.get("SourceType", "")
|
|
755
762
|
|
|
763
|
+
def get_input_template(self) -> Dict[str, str]:
|
|
764
|
+
"""Return a readable template of input parameters.
|
|
765
|
+
|
|
766
|
+
Each entry maps parameter name to a human-friendly description,
|
|
767
|
+
e.g. "String (optional, default = \"abc\")" or "Int".
|
|
768
|
+
"""
|
|
769
|
+
result: Dict[str, str] = {}
|
|
770
|
+
inputs = self.inputs or []
|
|
771
|
+
for item in inputs:
|
|
772
|
+
name = item.get("Name", "")
|
|
773
|
+
if not name:
|
|
774
|
+
continue
|
|
775
|
+
type_str = item.get("Type", "")
|
|
776
|
+
optional = item.get("Optional", False)
|
|
777
|
+
default = self._fmt_default(item.get("Default"))
|
|
778
|
+
if optional:
|
|
779
|
+
value = f"{type_str} (optional" + (f", default = {default})" if default is not None else ")")
|
|
780
|
+
else:
|
|
781
|
+
value = type_str
|
|
782
|
+
result[name] = value
|
|
783
|
+
return result
|
|
784
|
+
|
|
785
|
+
def get_output_types(self) -> Dict[str, str]:
|
|
786
|
+
"""Return a mapping of output parameter name to its type."""
|
|
787
|
+
outputs = self.outputs or []
|
|
788
|
+
return {item.get("Name", ""): item.get("Type", "") for item in outputs if item.get("Name")}
|
|
789
|
+
|
|
790
|
+
def get_metadata(self) -> Dict[str, Any]:
|
|
791
|
+
"""Return workflow metadata in a flat dictionary."""
|
|
792
|
+
return {
|
|
793
|
+
"name": self.name,
|
|
794
|
+
"description": self.description,
|
|
795
|
+
"language": self.language,
|
|
796
|
+
"source": self.source,
|
|
797
|
+
"tag": self.tag,
|
|
798
|
+
"status": self.status,
|
|
799
|
+
"owner_name": self.owner_name,
|
|
800
|
+
"create_time": self.create_time,
|
|
801
|
+
"update_time": self.update_time,
|
|
802
|
+
"main_workflow_path": self.main_workflow_path,
|
|
803
|
+
"source_type": self.source_type,
|
|
804
|
+
}
|
|
805
|
+
|
|
806
|
+
@staticmethod
|
|
807
|
+
def _fmt_default(raw: Any) -> Optional[str]:
|
|
808
|
+
"""Format default values into a readable string.
|
|
809
|
+
|
|
810
|
+
- None -> None
|
|
811
|
+
- bool -> "true" / "false"
|
|
812
|
+
- int/float -> numeric string
|
|
813
|
+
- other strings -> quoted string
|
|
814
|
+
"""
|
|
815
|
+
if raw is None:
|
|
816
|
+
return None
|
|
817
|
+
if isinstance(raw, bool):
|
|
818
|
+
return str(raw).lower()
|
|
819
|
+
if isinstance(raw, (int, float)):
|
|
820
|
+
return str(raw)
|
|
821
|
+
if isinstance(raw, str):
|
|
822
|
+
lo = raw.lower()
|
|
823
|
+
if lo in {"true", "false"}:
|
|
824
|
+
return lo
|
|
825
|
+
try:
|
|
826
|
+
int(raw)
|
|
827
|
+
return raw
|
|
828
|
+
except ValueError:
|
|
829
|
+
pass
|
|
830
|
+
try:
|
|
831
|
+
float(raw)
|
|
832
|
+
return raw
|
|
833
|
+
except ValueError:
|
|
834
|
+
pass
|
|
835
|
+
return f'"{raw}"'
|
|
836
|
+
return str(raw)
|
|
837
|
+
|
|
756
838
|
@property
|
|
757
839
|
@cached(cache=TTLCache(maxsize=100, ttl=1))
|
|
758
840
|
def get_cluster(self):
|
|
@@ -795,7 +877,8 @@ class Workflow(metaclass=SingletonType):
|
|
|
795
877
|
call_caching: bool,
|
|
796
878
|
submission_name_suffix: str = "",
|
|
797
879
|
row_ids: List[str] = [],
|
|
798
|
-
data_model_name: str = ''
|
|
880
|
+
data_model_name: str = '',
|
|
881
|
+
mount_tos: bool = False) -> List[Run]:
|
|
799
882
|
"""Submit an existed workflow.
|
|
800
883
|
|
|
801
884
|
*Example*:
|
|
@@ -846,6 +929,7 @@ class Workflow(metaclass=SingletonType):
|
|
|
846
929
|
'Inputs': inputs,
|
|
847
930
|
'ExposedOptions': {
|
|
848
931
|
"ReadFromCache": call_caching,
|
|
932
|
+
"MountTOS": mount_tos,
|
|
849
933
|
# TODO this may change in the future
|
|
850
934
|
"ExecutionRootDir": f"s3://{self.bucket}"
|
|
851
935
|
},
|
bioos/resource/workspaces.py
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
from datetime import datetime
|
|
2
|
+
import os
|
|
3
|
+
import time
|
|
4
|
+
import urllib.request
|
|
2
5
|
|
|
3
6
|
import pandas as pd
|
|
4
7
|
from cachetools import TTLCache, cached
|
|
@@ -7,6 +10,7 @@ from bioos.config import Config
|
|
|
7
10
|
from bioos.resource.data_models import DataModelResource
|
|
8
11
|
from bioos.resource.files import FileResource
|
|
9
12
|
from bioos.resource.workflows import Workflow, WorkflowResource
|
|
13
|
+
from bioos.resource.iesapp import WebInstanceApp, WebInstanceAppResource
|
|
10
14
|
from bioos.utils.common_tools import SingletonType, dict_str
|
|
11
15
|
|
|
12
16
|
|
|
@@ -110,6 +114,15 @@ class Workspace(metaclass=SingletonType):
|
|
|
110
114
|
|
|
111
115
|
return FileResource(self._id, self._bucket)
|
|
112
116
|
|
|
117
|
+
@property
|
|
118
|
+
def webinstanceapps(self) -> WebInstanceAppResource:
|
|
119
|
+
"""Returns WebInstanceAppResource object.
|
|
120
|
+
|
|
121
|
+
:return: WebInstanceAppResource object
|
|
122
|
+
:rtype: WebInstanceAppResource
|
|
123
|
+
"""
|
|
124
|
+
return WebInstanceAppResource(self._id)
|
|
125
|
+
|
|
113
126
|
def workflow(self, name: str) -> Workflow: # 通过这里执行的选择workflow生成wf的操作
|
|
114
127
|
"""Returns the workflow for the given name
|
|
115
128
|
|
|
@@ -121,3 +134,130 @@ class Workspace(metaclass=SingletonType):
|
|
|
121
134
|
if not self._bucket:
|
|
122
135
|
self._bucket = self.basic_info.get("s3_bucket")
|
|
123
136
|
return Workflow(name, self._id, self._bucket)
|
|
137
|
+
|
|
138
|
+
def webinstanceapp(self, name: str) -> WebInstanceApp:
|
|
139
|
+
"""Returns the webinstanceapp for the given name
|
|
140
|
+
|
|
141
|
+
:param name: WebInstanceApp name
|
|
142
|
+
:type name: str
|
|
143
|
+
:return: Specified webinstanceapp object
|
|
144
|
+
:rtype: WebInstanceApp
|
|
145
|
+
"""
|
|
146
|
+
return WebInstanceApp(name, self._id)
|
|
147
|
+
|
|
148
|
+
def bind_cluster(self, cluster_id: str, type_: str = "workflow") -> dict:
|
|
149
|
+
"""把当前 Workspace 绑定到指定集群"""
|
|
150
|
+
params = {"ClusterID": cluster_id, "Type": type_, "ID": self._id}
|
|
151
|
+
return Config.service().bind_cluster_to_workspace(params)
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
def export_workspace_v2(self,
|
|
155
|
+
download_path: str = "./",
|
|
156
|
+
monitor: bool = True,
|
|
157
|
+
monitor_interval: int = 5,
|
|
158
|
+
max_retries: int = 60) -> dict:
|
|
159
|
+
"""导出当前 Workspace 的所有元信息并下载到本地
|
|
160
|
+
|
|
161
|
+
:param download_path: 下载文件保存路径,默认当前目录
|
|
162
|
+
:type download_path: str
|
|
163
|
+
:param monitor: 是否监控导出状态直到完成,默认 True
|
|
164
|
+
:type monitor: bool
|
|
165
|
+
:param monitor_interval: 轮询间隔(秒),默认 5 秒
|
|
166
|
+
:type monitor_interval: int
|
|
167
|
+
:param max_retries: 最大重试次数,默认 60 次(5 分钟)
|
|
168
|
+
:type max_retries: int
|
|
169
|
+
:return: 导出结果信息,包含 status、schema_id、file_path 等
|
|
170
|
+
:rtype: dict
|
|
171
|
+
"""
|
|
172
|
+
params = {"WorkspaceID": self._id}
|
|
173
|
+
result = Config.service().export_workspace_v2(params)
|
|
174
|
+
schema_id = result.get('ID')
|
|
175
|
+
|
|
176
|
+
if not schema_id:
|
|
177
|
+
raise Exception("Failed to create export task: No schema ID returned")
|
|
178
|
+
|
|
179
|
+
# 如果不监控,直接返回任务 ID
|
|
180
|
+
if not monitor:
|
|
181
|
+
return {
|
|
182
|
+
"status": "submitted",
|
|
183
|
+
"schema_id": schema_id,
|
|
184
|
+
"message": "Export task submitted. Use list_schemas to check status."
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
# 步骤 2: 轮询查询导出状态
|
|
188
|
+
Config.Logger.info(f"Export task created with schema ID: {schema_id}")
|
|
189
|
+
Config.Logger.info(f"Monitoring export status (checking every {monitor_interval}s, max {max_retries} retries)...")
|
|
190
|
+
|
|
191
|
+
retry_count = 0
|
|
192
|
+
schema_key = None
|
|
193
|
+
|
|
194
|
+
while retry_count < max_retries:
|
|
195
|
+
# 查询所有 schemas
|
|
196
|
+
schemas_result = Config.service().list_schemas({"Filter": {}})
|
|
197
|
+
schemas = schemas_result.get("Items", [])
|
|
198
|
+
|
|
199
|
+
# 查找当前导出任务
|
|
200
|
+
for schema in schemas:
|
|
201
|
+
if schema.get("ID") == schema_id:
|
|
202
|
+
phase = schema.get("Status", {}).get("Phase", "")
|
|
203
|
+
message = schema.get("Status", {}).get("Message", "")
|
|
204
|
+
|
|
205
|
+
if phase == "Succeeded":
|
|
206
|
+
Config.Logger.info("Export task succeeded!")
|
|
207
|
+
schema_key = schema.get("SchemaKey")
|
|
208
|
+
break
|
|
209
|
+
elif phase == "Failed":
|
|
210
|
+
error_msg = f"Export task failed: {message}"
|
|
211
|
+
Config.Logger.error(error_msg)
|
|
212
|
+
raise Exception(error_msg)
|
|
213
|
+
else:
|
|
214
|
+
Config.Logger.info(f"Export task status: {phase}")
|
|
215
|
+
|
|
216
|
+
# 如果成功找到文件,跳出循环
|
|
217
|
+
if schema_key:
|
|
218
|
+
break
|
|
219
|
+
|
|
220
|
+
# 继续等待
|
|
221
|
+
time.sleep(monitor_interval)
|
|
222
|
+
retry_count += 1
|
|
223
|
+
|
|
224
|
+
# 超时检查
|
|
225
|
+
if not schema_key:
|
|
226
|
+
raise Exception(f"Export task timeout after {max_retries * monitor_interval} seconds")
|
|
227
|
+
|
|
228
|
+
# 步骤 3: 获取预签名 URL
|
|
229
|
+
Config.Logger.info(f"Getting presigned URL for schema: {schema_id}")
|
|
230
|
+
presigned_params = {
|
|
231
|
+
"ID": schema_id,
|
|
232
|
+
"WorkspaceID": self._id
|
|
233
|
+
}
|
|
234
|
+
presigned_result = Config.service().get_export_workspace_presigned_url(presigned_params)
|
|
235
|
+
presigned_url = presigned_result.get("PreSignedURL")
|
|
236
|
+
|
|
237
|
+
if not presigned_url:
|
|
238
|
+
raise Exception("Failed to get presigned URL for export file")
|
|
239
|
+
|
|
240
|
+
Config.Logger.info(f"Downloading export file from presigned URL...")
|
|
241
|
+
|
|
242
|
+
# 步骤 4: 使用 HTTP 请求下载文件
|
|
243
|
+
# 确保下载目录存在
|
|
244
|
+
os.makedirs(download_path, exist_ok=True)
|
|
245
|
+
|
|
246
|
+
# 从 URL 中提取文件名
|
|
247
|
+
filename = os.path.basename(schema_key)
|
|
248
|
+
local_file_path = os.path.join(download_path, filename)
|
|
249
|
+
|
|
250
|
+
try:
|
|
251
|
+
# 使用 urllib 下载文件
|
|
252
|
+
urllib.request.urlretrieve(presigned_url, local_file_path)
|
|
253
|
+
Config.Logger.info(f"Export file downloaded successfully to: {local_file_path}")
|
|
254
|
+
except Exception as e:
|
|
255
|
+
raise Exception(f"Failed to download export file from presigned URL: {str(e)}")
|
|
256
|
+
|
|
257
|
+
return {
|
|
258
|
+
"status": "success",
|
|
259
|
+
"schema_id": schema_id,
|
|
260
|
+
"schema_key": schema_key,
|
|
261
|
+
"file_path": local_file_path,
|
|
262
|
+
"message": f"Workspace exported and downloaded successfully"
|
|
263
|
+
}
|
bioos/service/BioOsService.py
CHANGED
|
@@ -47,6 +47,11 @@ class BioOsService(Service):
|
|
|
47
47
|
'Action': 'ListWorkspaces',
|
|
48
48
|
'Version': '2021-03-04'
|
|
49
49
|
}, {}, {}),
|
|
50
|
+
'CreateWorkspace':
|
|
51
|
+
ApiInfo('POST', '/', {
|
|
52
|
+
'Action': 'CreateWorkspace',
|
|
53
|
+
'Version': '2021-03-04'
|
|
54
|
+
}, {}, {}),
|
|
50
55
|
'CreateDataModel':
|
|
51
56
|
ApiInfo('POST', '/', {
|
|
52
57
|
'Action': 'CreateDataModel',
|
|
@@ -127,12 +132,74 @@ class BioOsService(Service):
|
|
|
127
132
|
'Action': 'DeleteWorkflow',
|
|
128
133
|
'Version': '2021-03-04'
|
|
129
134
|
}, {}, {}),
|
|
135
|
+
'BindClusterToWorkspace':
|
|
136
|
+
ApiInfo('POST', '/', {
|
|
137
|
+
'Action': 'BindClusterToWorkspace',
|
|
138
|
+
'Version': '2021-03-04'
|
|
139
|
+
}, {}, {}),
|
|
140
|
+
'ListWebappInstances':
|
|
141
|
+
ApiInfo('POST', '/', {
|
|
142
|
+
'Action': 'ListWebappInstances',
|
|
143
|
+
'Version': '2021-03-04'
|
|
144
|
+
}, {}, {}),
|
|
145
|
+
'CreateWebappInstance':
|
|
146
|
+
ApiInfo('POST', '/', {
|
|
147
|
+
'Action': 'CreateWebappInstance',
|
|
148
|
+
'Version': '2021-03-04'
|
|
149
|
+
}, {}, {}),
|
|
150
|
+
'CheckCreateWebappInstance':
|
|
151
|
+
ApiInfo('POST', '/', {
|
|
152
|
+
'Action': 'CheckCreateWebappInstance',
|
|
153
|
+
'Version': '2021-03-04'
|
|
154
|
+
}, {}, {}),
|
|
155
|
+
'DeleteWebappInstance':
|
|
156
|
+
ApiInfo('POST', '/', {
|
|
157
|
+
'Action': 'DeleteWebappInstance',
|
|
158
|
+
'Version': '2021-03-04'
|
|
159
|
+
}, {}, {}),
|
|
160
|
+
'StartWebappInstance':
|
|
161
|
+
ApiInfo('POST', '/', {
|
|
162
|
+
'Action': 'StartWebappInstance',
|
|
163
|
+
'Version': '2021-03-04'
|
|
164
|
+
}, {}, {}),
|
|
165
|
+
'StopWebappInstance':
|
|
166
|
+
ApiInfo('POST', '/', {
|
|
167
|
+
'Action': 'StopWebappInstance',
|
|
168
|
+
'Version': '2021-03-04'
|
|
169
|
+
}, {}, {}),
|
|
170
|
+
'ListWebappInstanceEvents':
|
|
171
|
+
ApiInfo('POST', '/', {
|
|
172
|
+
'Action': 'ListWebappInstanceEvents',
|
|
173
|
+
'Version': '2021-03-04'
|
|
174
|
+
}, {}, {}),
|
|
175
|
+
'CommitIESImage':
|
|
176
|
+
ApiInfo('POST', '/', {
|
|
177
|
+
'Action': 'CommitIESImage',
|
|
178
|
+
'Version': '2021-03-04'
|
|
179
|
+
}, {}, {}),
|
|
180
|
+
'ExportWorkspaceV2':
|
|
181
|
+
ApiInfo('POST', '/', {
|
|
182
|
+
'Action': 'ExportWorkspaceV2',
|
|
183
|
+
'Version': '2021-03-04'
|
|
184
|
+
}, {}, {}),
|
|
185
|
+
'ListSchemas':
|
|
186
|
+
ApiInfo('POST', '/', {
|
|
187
|
+
'Action': 'ListSchemas',
|
|
188
|
+
'Version': '2021-03-04'
|
|
189
|
+
}, {}, {}),
|
|
190
|
+
'GetExportWorkspacePreSignedURL':
|
|
191
|
+
ApiInfo('POST', '/', {
|
|
192
|
+
'Action': 'GetExportWorkspacePreSignedURL',
|
|
193
|
+
'Version': '2021-03-04'
|
|
194
|
+
}, {}, {}),
|
|
130
195
|
}
|
|
131
196
|
return api_info
|
|
132
197
|
|
|
133
198
|
def list_workspaces(self, params): # 以下各方法的params需要在外部使用时构建
|
|
134
199
|
return self.__request('ListWorkspaces', params)
|
|
135
200
|
|
|
201
|
+
def create_workspace(self, params):
|
|
202
|
+
return self.__request('CreateWorkspace', params)
|
|
136
203
|
def create_data_model(self, params):
|
|
137
204
|
return self.__request('CreateDataModel', params)
|
|
138
205
|
|
|
@@ -181,6 +248,42 @@ class BioOsService(Service):
|
|
|
181
248
|
def delete_workflow(self, params):
|
|
182
249
|
return self.__request("DeleteWorkflow", params)
|
|
183
250
|
|
|
251
|
+
def bind_cluster_to_workspace(self, params):
|
|
252
|
+
return self.__request("BindClusterToWorkspace", params)
|
|
253
|
+
|
|
254
|
+
def list_webinstance_apps(self, params):
|
|
255
|
+
return self.__request('ListWebappInstances', params)
|
|
256
|
+
|
|
257
|
+
def create_webinstance_app(self, params):
|
|
258
|
+
return self.__request('CreateWebappInstance', params)
|
|
259
|
+
|
|
260
|
+
def check_webinstance_app(self, params):
|
|
261
|
+
return self.__request("CheckCreateWebappInstance", params)
|
|
262
|
+
|
|
263
|
+
def delete_webinstance_app(self, params):
|
|
264
|
+
return self.__request("DeleteWebappInstance", params)
|
|
265
|
+
|
|
266
|
+
def start_webinstance_app(self, params):
|
|
267
|
+
return self.__request("StartWebappInstance", params)
|
|
268
|
+
|
|
269
|
+
def stop_webinstance_app(self, params):
|
|
270
|
+
return self.__request("StopWebappInstance", params)
|
|
271
|
+
|
|
272
|
+
def list_webinstance_events(self, params):
|
|
273
|
+
return self.__request("ListWebappInstanceEvents", params)
|
|
274
|
+
|
|
275
|
+
def commit_ies_image(self, params):
|
|
276
|
+
return self.__request("CommitIESImage", params)
|
|
277
|
+
|
|
278
|
+
def export_workspace_v2(self, params):
|
|
279
|
+
return self.__request("ExportWorkspaceV2", params)
|
|
280
|
+
|
|
281
|
+
def list_schemas(self, params):
|
|
282
|
+
return self.__request("ListSchemas", params)
|
|
283
|
+
|
|
284
|
+
def get_export_workspace_presigned_url(self, params):
|
|
285
|
+
return self.__request("GetExportWorkspacePreSignedURL", params)
|
|
286
|
+
|
|
184
287
|
def __request(self, action, params):
|
|
185
288
|
res = self.json(
|
|
186
289
|
action, dict(),
|
bioos/workflow_info.py
CHANGED
|
@@ -2,14 +2,13 @@ from typing import Dict, Any, List, Optional
|
|
|
2
2
|
import pandas as pd
|
|
3
3
|
|
|
4
4
|
from bioos import bioos
|
|
5
|
-
from bioos.config import Config
|
|
5
|
+
from bioos.config import Config, DEFAULT_ENDPOINT
|
|
6
6
|
from bioos.errors import NotFoundError
|
|
7
7
|
|
|
8
|
-
|
|
9
8
|
class WorkflowInfo:
|
|
10
9
|
"""Bio-OS 工作流信息查询类"""
|
|
11
10
|
|
|
12
|
-
def __init__(self, ak: str, sk: str, endpoint: str =
|
|
11
|
+
def __init__(self, ak: str, sk: str, endpoint: str = DEFAULT_ENDPOINT):
|
|
13
12
|
"""
|
|
14
13
|
初始化工作流信息查询类
|
|
15
14
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pybioos
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.19
|
|
4
4
|
Summary: BioOS SDK for Python
|
|
5
5
|
Home-page: https://github.com/GBA-BI/pybioos
|
|
6
6
|
Author: Jilong Liu
|
|
@@ -13,13 +13,15 @@ Classifier: Intended Audience :: Science/Research
|
|
|
13
13
|
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
14
14
|
Classifier: Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator
|
|
15
15
|
License-File: LICENSE
|
|
16
|
-
Requires-Dist: volcengine >=1.0.61
|
|
17
|
-
Requires-Dist: tabulate >=0.8.10
|
|
18
|
-
Requires-Dist: click >=8.0.0
|
|
19
|
-
Requires-Dist: pandas >=1.3.0
|
|
20
|
-
Requires-Dist: tos ==2.5.6
|
|
21
|
-
Requires-Dist: cachetools >=5.2.0
|
|
22
|
-
Requires-Dist: typing-extensions >=4.4.0
|
|
23
|
-
Requires-Dist: apscheduler >=3.10.4
|
|
24
|
-
Requires-Dist: colorama >=0.4.6
|
|
16
|
+
Requires-Dist: volcengine (>=1.0.61)
|
|
17
|
+
Requires-Dist: tabulate (>=0.8.10)
|
|
18
|
+
Requires-Dist: click (>=8.0.0)
|
|
19
|
+
Requires-Dist: pandas (>=1.3.0)
|
|
20
|
+
Requires-Dist: tos (==2.5.6)
|
|
21
|
+
Requires-Dist: cachetools (>=5.2.0)
|
|
22
|
+
Requires-Dist: typing-extensions (>=4.4.0)
|
|
23
|
+
Requires-Dist: apscheduler (>=3.10.4)
|
|
24
|
+
Requires-Dist: colorama (>=0.4.6)
|
|
25
|
+
|
|
26
|
+
UNKNOWN
|
|
25
27
|
|
|
@@ -1,26 +1,27 @@
|
|
|
1
|
-
bioos/__about__.py,sha256=
|
|
1
|
+
bioos/__about__.py,sha256=aWkoDtGPtBbAnLeddD1e0dWwgcOhvbjUFTY5JL8fl8k,57
|
|
2
2
|
bioos/__init__.py,sha256=4GZKi13lDTD25YBkGakhZyEQZWTER_OWQMNPoH_UM2c,22
|
|
3
|
-
bioos/bioos.py,sha256=
|
|
4
|
-
bioos/bioos_workflow.py,sha256=
|
|
5
|
-
bioos/bw_import.py,sha256=
|
|
6
|
-
bioos/bw_import_status_check.py,sha256=
|
|
7
|
-
bioos/bw_status_check.py,sha256=
|
|
8
|
-
bioos/config.py,sha256
|
|
3
|
+
bioos/bioos.py,sha256=fFnbtwOyF5U3N_D41jXPYB2H4xKBsI931nS-qBUFW70,3231
|
|
4
|
+
bioos/bioos_workflow.py,sha256=IhbDVEszcyJ9ivtVGMgI6dOovB18-aRn-kDwPdJSa6I,17709
|
|
5
|
+
bioos/bw_import.py,sha256=kYS4BDbyIXyaFIOCUyOnAzIbLdHvY3l3KLPDVfAnFSM,5829
|
|
6
|
+
bioos/bw_import_status_check.py,sha256=x9Y_0I8huoC7aBgObuox-0z6foSr99TXQB7jozyQ7Eo,2972
|
|
7
|
+
bioos/bw_status_check.py,sha256=Etj_zp6tS0cj4t-nksUq221pPIWUFS0Lz0q0Uqflpes,3094
|
|
8
|
+
bioos/config.py,sha256=-1qS0uYgV-h3d67LyOuJ3lzDskEytXHI7T65-p8tnhA,4405
|
|
9
9
|
bioos/errors.py,sha256=p0fH6JSMYBjul88lMJ7PPwGNh4SYg62-7VMNuUXWl-E,2540
|
|
10
|
-
bioos/get_submission_logs.py,sha256=
|
|
10
|
+
bioos/get_submission_logs.py,sha256=e0OlWwMso8bB6u1TepJpRim2L-trxM6x3IdgZSwo7jc,4112
|
|
11
11
|
bioos/log.py,sha256=twiCvf5IgJB7uvzANwBluSlztJN8ZrxbGZUBGlZ0vps,3204
|
|
12
|
-
bioos/workflow_info.py,sha256=
|
|
12
|
+
bioos/workflow_info.py,sha256=5PT45Lv-Js84ljZxjb9uNl0Jd5l-LYnXyKHYKrOhcjI,6840
|
|
13
13
|
bioos/internal/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
14
14
|
bioos/internal/tos.py,sha256=0R6YN2lxjjZsuMfv0yLSkBmz_LqmzQGb8GagnUMc8EY,12264
|
|
15
15
|
bioos/models/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
16
16
|
bioos/models/models.py,sha256=HPCLZ4jK2HDth4vrlVHba21CiW6y7y5im1kOjV4adc8,391
|
|
17
|
-
bioos/resource/__init__.py,sha256=
|
|
17
|
+
bioos/resource/__init__.py,sha256=lOylK3fo0IRrF4rCte0oJRiKRX1iNx-mFkuoTM9c92s,58
|
|
18
18
|
bioos/resource/data_models.py,sha256=enKp8yyQI8IbRqe--0Xtyg1XzOwQQPQzoQsx_hNuZ6E,5089
|
|
19
19
|
bioos/resource/files.py,sha256=1HY0IHvq8H843VM2XZIHDdCuXXNcMrlEFhSNqWXmFzE,8456
|
|
20
|
+
bioos/resource/iesapp.py,sha256=eXYzGkkz4oGtG0x5laMcXKLb7OJp--GlM-UmqwuXQ_w,26101
|
|
20
21
|
bioos/resource/utility.py,sha256=emY7qVLLLvGmQYlVj-_bLAxU7i1GfQOUybdRkfEDwVA,1300
|
|
21
|
-
bioos/resource/workflows.py,sha256=
|
|
22
|
-
bioos/resource/workspaces.py,sha256=
|
|
23
|
-
bioos/service/BioOsService.py,sha256=
|
|
22
|
+
bioos/resource/workflows.py,sha256=k5ZFdce1eHRLJAxz-l_QHEq6J11PUEKWRP6_yW2jR9E,32279
|
|
23
|
+
bioos/resource/workspaces.py,sha256=_oA-Us3nH71RecaSeezhYuVwJDaDucrWbOa9CvzTFGE,9631
|
|
24
|
+
bioos/service/BioOsService.py,sha256=QT848D-JafcZJdCJ_OZsQ8OvPeb4u1hLDtQAVJeEiXk,10513
|
|
24
25
|
bioos/service/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
25
26
|
bioos/service/api.py,sha256=Khihn187bACEfBcJ-tRS9JO29-VCBsH0-9qq-i5WxkQ,8737
|
|
26
27
|
bioos/service/config.py,sha256=FbBsb6CpcLsQZH7n8uuUbFVhkpqYOEnOe0xGkA7ZrjA,1009
|
|
@@ -35,9 +36,9 @@ bioos/tests/workspaces.py,sha256=LuuRrTs2XqfE5mGQyJNl9RBtuMb4NZHBJFoO8HMZVYQ,522
|
|
|
35
36
|
bioos/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
37
|
bioos/utils/common_tools.py,sha256=fgMoE_-qZjgfQtUj_pmCTyYDtbJasyfH4Gm3VQsbgBQ,1651
|
|
37
38
|
bioos/utils/workflows.py,sha256=zRbwTUigoM5V5LFOgzQPm3kwxt5Ogz95OFfefJc6Fjo,133
|
|
38
|
-
pybioos-0.0.
|
|
39
|
-
pybioos-0.0.
|
|
40
|
-
pybioos-0.0.
|
|
41
|
-
pybioos-0.0.
|
|
42
|
-
pybioos-0.0.
|
|
43
|
-
pybioos-0.0.
|
|
39
|
+
pybioos-0.0.19.dist-info/LICENSE,sha256=cPkGXsgfPgEhIns7Lt3Avxx0Uy-VbdsoP8jvNGuj3cE,1063
|
|
40
|
+
pybioos-0.0.19.dist-info/METADATA,sha256=xE7reRBlWdWtPFgG6C0334-BBY1_bT5fZtKdUg6wvek,830
|
|
41
|
+
pybioos-0.0.19.dist-info/WHEEL,sha256=OqRkF0eY5GHssMorFjlbTIq072vpHpF60fIQA6lS9xA,92
|
|
42
|
+
pybioos-0.0.19.dist-info/entry_points.txt,sha256=Sc5H0_X7r03Mef4Qd70bebqgdIbVAxLU7nV7qP7cKD4,328
|
|
43
|
+
pybioos-0.0.19.dist-info/top_level.txt,sha256=llpzydkKVDSaWZgz3bsTUsQmhoQpc_JcRJg2-H-5a2U,6
|
|
44
|
+
pybioos-0.0.19.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|