pybiolib 1.1.1629__py3-none-any.whl → 1.1.1881__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.
- biolib/__init__.py +11 -3
- biolib/_internal/data_record/__init__.py +1 -0
- biolib/_internal/data_record/data_record.py +153 -0
- biolib/_internal/data_record/remote_storage_endpoint.py +27 -0
- biolib/_internal/http_client.py +45 -15
- biolib/_internal/push_application.py +22 -37
- biolib/_internal/runtime.py +73 -0
- biolib/_internal/utils/__init__.py +18 -0
- biolib/api/client.py +12 -6
- biolib/app/app.py +6 -1
- biolib/app/search_apps.py +8 -12
- biolib/biolib_api_client/api_client.py +14 -9
- biolib/biolib_api_client/app_types.py +1 -0
- biolib/biolib_api_client/auth.py +0 -12
- biolib/biolib_api_client/biolib_app_api.py +53 -27
- biolib/biolib_api_client/biolib_job_api.py +11 -40
- biolib/biolib_binary_format/utils.py +19 -2
- biolib/cli/__init__.py +9 -3
- biolib/cli/auth.py +58 -0
- biolib/cli/data_record.py +43 -0
- biolib/cli/download_container.py +3 -1
- biolib/cli/init.py +1 -0
- biolib/cli/lfs.py +39 -9
- biolib/cli/push.py +1 -1
- biolib/cli/run.py +3 -2
- biolib/cli/start.py +1 -0
- biolib/compute_node/cloud_utils/cloud_utils.py +38 -65
- biolib/compute_node/job_worker/cache_state.py +1 -1
- biolib/compute_node/job_worker/executors/docker_executor.py +10 -8
- biolib/compute_node/job_worker/job_storage.py +9 -13
- biolib/compute_node/job_worker/job_worker.py +10 -4
- biolib/compute_node/remote_host_proxy.py +48 -11
- biolib/compute_node/webserver/worker_thread.py +2 -2
- biolib/jobs/job.py +33 -32
- biolib/lfs/__init__.py +0 -2
- biolib/lfs/utils.py +23 -115
- biolib/runtime/__init__.py +13 -1
- biolib/sdk/__init__.py +17 -4
- biolib/user/sign_in.py +8 -12
- biolib/utils/__init__.py +17 -45
- biolib/utils/app_uri.py +11 -4
- biolib/utils/cache_state.py +2 -2
- biolib/utils/multipart_uploader.py +42 -68
- biolib/utils/seq_util.py +47 -9
- biolib/utils/zip/remote_zip.py +9 -17
- {pybiolib-1.1.1629.dist-info → pybiolib-1.1.1881.dist-info}/METADATA +1 -2
- {pybiolib-1.1.1629.dist-info → pybiolib-1.1.1881.dist-info}/RECORD +50 -46
- {pybiolib-1.1.1629.dist-info → pybiolib-1.1.1881.dist-info}/WHEEL +1 -1
- biolib/biolib_api_client/biolib_account_api.py +0 -21
- biolib/biolib_api_client/biolib_large_file_system_api.py +0 -53
- biolib/runtime/results.py +0 -20
- {pybiolib-1.1.1629.dist-info → pybiolib-1.1.1881.dist-info}/LICENSE +0 -0
- {pybiolib-1.1.1629.dist-info → pybiolib-1.1.1881.dist-info}/entry_points.txt +0 -0
biolib/utils/seq_util.py
CHANGED
@@ -1,16 +1,36 @@
|
|
1
|
-
|
1
|
+
import re
|
2
|
+
from io import BufferedIOBase
|
3
|
+
from biolib.typing_utils import List, Optional, Dict, Union
|
2
4
|
|
3
5
|
allowed_sequence_chars = set("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.")
|
6
|
+
|
7
|
+
|
4
8
|
def find_invalid_sequence_characters(sequence):
|
5
9
|
invalid_chars = [char for char in sequence if char not in allowed_sequence_chars]
|
6
10
|
return invalid_chars
|
7
11
|
|
12
|
+
|
8
13
|
class SeqUtilRecord:
|
9
|
-
def __init__(
|
14
|
+
def __init__(
|
15
|
+
self,
|
16
|
+
sequence: str,
|
17
|
+
sequence_id: str,
|
18
|
+
description: Optional['str'],
|
19
|
+
properties: Optional[Dict[str, str]] = None,
|
20
|
+
):
|
10
21
|
self.sequence = sequence
|
11
22
|
self.id = sequence_id # pylint: disable=invalid-name
|
12
23
|
self.description = description
|
13
24
|
|
25
|
+
if properties:
|
26
|
+
disallowed_pattern = re.compile(r"[=\[\]\n]")
|
27
|
+
for key, value in properties.items():
|
28
|
+
assert not bool(disallowed_pattern.search(key)), "Key cannot contain characters =[] and newline"
|
29
|
+
assert not bool(disallowed_pattern.search(value)), "Value cannot contain characters =[] and newline"
|
30
|
+
self.properties = properties
|
31
|
+
else:
|
32
|
+
self.properties = {}
|
33
|
+
|
14
34
|
def __repr__(self) -> str:
|
15
35
|
return f'{self.__class__.__name__} ({self.id})'
|
16
36
|
|
@@ -18,13 +38,24 @@ class SeqUtilRecord:
|
|
18
38
|
class SeqUtil:
|
19
39
|
@staticmethod
|
20
40
|
def parse_fasta(
|
21
|
-
|
22
|
-
|
23
|
-
|
41
|
+
input_file: Union[str, BufferedIOBase, None] = None,
|
42
|
+
default_header: Optional[str] = None,
|
43
|
+
allow_any_sequence_characters: bool = False,
|
44
|
+
allow_empty_sequence: bool = False,
|
45
|
+
file_name: Optional[str] = None,
|
24
46
|
) -> List[SeqUtilRecord]:
|
25
|
-
|
26
|
-
|
27
|
-
|
47
|
+
if input_file is None:
|
48
|
+
if file_name:
|
49
|
+
input_file = file_name
|
50
|
+
else:
|
51
|
+
raise ValueError("input_file must be a file name (str) or a BufferedIOBase object")
|
52
|
+
if isinstance(input_file, str):
|
53
|
+
with open(input_file, 'r') as file_handle:
|
54
|
+
data = file_handle.read().strip()
|
55
|
+
elif isinstance(input_file, BufferedIOBase):
|
56
|
+
data = input_file.read().decode('utf-8')
|
57
|
+
else:
|
58
|
+
raise ValueError("input_file must be a file name (str) or a BufferedIOBase object")
|
28
59
|
if not data:
|
29
60
|
return []
|
30
61
|
|
@@ -61,12 +92,16 @@ class SeqUtil:
|
|
61
92
|
description = sequence_data_splitted[0][len(sequence_id):].strip()
|
62
93
|
sequence = "".join([seq.strip().upper() for seq in sequence_data_splitted[1:]])
|
63
94
|
|
64
|
-
if
|
95
|
+
if not allow_any_sequence_characters:
|
65
96
|
invalid_sequence_characters = find_invalid_sequence_characters(sequence)
|
66
97
|
if len(invalid_sequence_characters) > 0:
|
67
98
|
raise Exception(
|
68
99
|
f'Error: Invalid character ("{invalid_sequence_characters[0]}") found in sequence {sequence_id}'
|
69
100
|
)
|
101
|
+
if not allow_empty_sequence and len(sequence) == 0:
|
102
|
+
raise Exception(
|
103
|
+
f'Error: No sequence found for fasta entry {sequence_id}'
|
104
|
+
)
|
70
105
|
|
71
106
|
parsed_sequences.append(
|
72
107
|
SeqUtilRecord(sequence=sequence, sequence_id=sequence_id, description=description)
|
@@ -78,5 +113,8 @@ class SeqUtil:
|
|
78
113
|
with open(file_name, mode='w') as file_handle:
|
79
114
|
for record in records:
|
80
115
|
optional_description = f' {record.description}' if record.description else ''
|
116
|
+
if record.properties:
|
117
|
+
for key, value in record.properties.items():
|
118
|
+
optional_description += f' [{key}={value}]'
|
81
119
|
sequence = '\n'.join(record.sequence[i:i + 80] for i in range(0, len(record.sequence), 80))
|
82
120
|
file_handle.write(f'>{record.id}{optional_description}\n{sequence}\n')
|
biolib/utils/zip/remote_zip.py
CHANGED
@@ -9,14 +9,15 @@ https://github.com/uktrade/stream-unzip
|
|
9
9
|
import io
|
10
10
|
import zipfile
|
11
11
|
|
12
|
-
import requests
|
13
|
-
|
14
12
|
from functools import partial
|
15
13
|
from struct import Struct
|
16
14
|
import zlib
|
17
15
|
|
18
16
|
__all__ = ['RemoteIOError', 'RemoteZip']
|
19
17
|
|
18
|
+
from biolib._internal.http_client import HttpClient
|
19
|
+
|
20
|
+
|
20
21
|
class RemoteZipError(Exception):
|
21
22
|
pass
|
22
23
|
|
@@ -152,8 +153,7 @@ class RemoteIO(io.IOBase):
|
|
152
153
|
|
153
154
|
|
154
155
|
class RemoteZip(zipfile.ZipFile):
|
155
|
-
def __init__(self, url, initial_buffer_size=64*1024
|
156
|
-
self.kwargs = kwargs
|
156
|
+
def __init__(self, url, initial_buffer_size=64*1024):
|
157
157
|
self.url = url
|
158
158
|
|
159
159
|
rio = RemoteIO(self.fetch_fun, initial_buffer_size)
|
@@ -191,22 +191,14 @@ class RemoteZip(zipfile.ZipFile):
|
|
191
191
|
return "bytes=%s%s" % (range_min, '' if range_min < 0 else '-')
|
192
192
|
return "bytes=%s-%s" % (range_min, range_max)
|
193
193
|
|
194
|
-
@staticmethod
|
195
|
-
def request(url, range_header, kwargs):
|
196
|
-
kwargs['headers'] = headers = dict(kwargs.get('headers', {}))
|
197
|
-
headers['Range'] = range_header
|
198
|
-
res = requests.get(url, stream=True, **kwargs)
|
199
|
-
res.raise_for_status()
|
200
|
-
if 'Content-Range' not in res.headers:
|
201
|
-
raise RangeNotSupported("The server doesn't support range requests")
|
202
|
-
return res.raw, res.headers
|
203
|
-
|
204
194
|
def fetch_fun(self, data_range, stream=False):
|
205
195
|
range_header = self.make_header(*data_range)
|
206
|
-
kwargs = dict(self.kwargs)
|
207
196
|
try:
|
208
|
-
|
209
|
-
|
197
|
+
response = HttpClient.request(url=self.url, headers={'Range': range_header})
|
198
|
+
if 'Content-Range' not in response.headers:
|
199
|
+
raise RangeNotSupported("The server doesn't support range requests")
|
200
|
+
|
201
|
+
return self.make_buffer(io.BytesIO(response.content), response.headers['Content-Range'], stream=False)
|
210
202
|
except IOError as e:
|
211
203
|
raise RemoteIOError(str(e))
|
212
204
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pybiolib
|
3
|
-
Version: 1.1.
|
3
|
+
Version: 1.1.1881
|
4
4
|
Summary: BioLib Python Client
|
5
5
|
Home-page: https://github.com/biolib
|
6
6
|
License: MIT
|
@@ -25,7 +25,6 @@ Requires-Dist: flask (>=2.0.1) ; extra == "compute-node"
|
|
25
25
|
Requires-Dist: gunicorn (>=20.1.0) ; extra == "compute-node"
|
26
26
|
Requires-Dist: importlib-metadata (>=1.6.1)
|
27
27
|
Requires-Dist: pyyaml (>=5.3.1)
|
28
|
-
Requires-Dist: requests (>=2.25.1)
|
29
28
|
Requires-Dist: rich (>=12.4.4)
|
30
29
|
Requires-Dist: typing_extensions (>=3.10.0) ; python_version < "3.8"
|
31
30
|
Description-Content-Type: text/markdown
|
@@ -1,22 +1,25 @@
|
|
1
1
|
LICENSE,sha256=F2h7gf8i0agDIeWoBPXDMYScvQOz02pAWkKhTGOHaaw,1067
|
2
2
|
README.md,sha256=_IH7pxFiqy2bIAmaVeA-iVTyUwWRjMIlfgtUbYTtmls,368
|
3
|
-
biolib/__init__.py,sha256=
|
3
|
+
biolib/__init__.py,sha256=nfZvVkrHZLvjvvlAvFzhvem9NMfqgmw8NWaCH9HGzew,4045
|
4
4
|
biolib/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
|
-
biolib/_internal/
|
6
|
-
biolib/_internal/
|
5
|
+
biolib/_internal/data_record/__init__.py,sha256=1Bk303i3rFet9veS56fIsrBYtT5X3n9vcsYMA6T6c5o,36
|
6
|
+
biolib/_internal/data_record/data_record.py,sha256=oQ2R7bD1on5aPC3jXP7OOSPeuXkWEqRUR8GV4a6hsJA,6539
|
7
|
+
biolib/_internal/data_record/remote_storage_endpoint.py,sha256=LPq8Lr5FhKF9_o5K-bUdT7TeLe5XFUD0AAeTkNEVZug,1133
|
8
|
+
biolib/_internal/http_client.py,sha256=cSBIzh00x2HL3BmLxt_GvDI7bWQMNytv_wOy7EXg8kI,4064
|
9
|
+
biolib/_internal/push_application.py,sha256=H1PGNtVJ0vRC0li39gFMpPpjm6QeZ8Ob-7cLkLmxS_Y,10009
|
10
|
+
biolib/_internal/runtime.py,sha256=un18gmB2wFOXVjKca1Oe6mZI-xGydz8C8seScNvnC2s,2197
|
11
|
+
biolib/_internal/utils/__init__.py,sha256=p5vsIFyu-zYqBgdSMfwW9NC_jk7rXvvCbV4Bzd3As7c,630
|
7
12
|
biolib/api/__init__.py,sha256=iIO8ZRdn7YDhY5cR47-Wo1YsNOK8H6RN6jn8yor5WJI,137
|
8
|
-
biolib/api/client.py,sha256=
|
13
|
+
biolib/api/client.py,sha256=MtDkH2Amr2Fko-bCR5DdookJu0yZ1q-6K_PPg4KK_Ek,2941
|
9
14
|
biolib/app/__init__.py,sha256=cdPtcfb_U-bxb9iSL4fCEq2rpD9OjkyY4W-Zw60B0LI,37
|
10
|
-
biolib/app/app.py,sha256=
|
11
|
-
biolib/app/search_apps.py,sha256=
|
15
|
+
biolib/app/app.py,sha256=r63gDoH1s8uQOGITmiKOVIrYDYdMrB5nwXHNRt2Da2M,10197
|
16
|
+
biolib/app/search_apps.py,sha256=K4a41f5XIWth2BWI7OffASgIsD0ko8elCax8YL2igaY,1470
|
12
17
|
biolib/biolib_api_client/__init__.py,sha256=E5EMa19wJoblwSdQPYrxc_BtIeRsAuO0L_jQweWw-Yk,182
|
13
|
-
biolib/biolib_api_client/api_client.py,sha256=
|
14
|
-
biolib/biolib_api_client/app_types.py,sha256=
|
15
|
-
biolib/biolib_api_client/auth.py,sha256=
|
16
|
-
biolib/biolib_api_client/
|
17
|
-
biolib/biolib_api_client/
|
18
|
-
biolib/biolib_api_client/biolib_job_api.py,sha256=AvNvflEeCBjG2ZTaFcwvRU-61GdNodFCZQNe50491RM,7823
|
19
|
-
biolib/biolib_api_client/biolib_large_file_system_api.py,sha256=5q4UlRw-OB2bRu7CeB14fy-azz2YeSgem5DbvMSaS44,1777
|
18
|
+
biolib/biolib_api_client/api_client.py,sha256=J03jRVvod1bgwwAZ3BZVKlUSJi43-ev2DUB0j63GZpc,7189
|
19
|
+
biolib/biolib_api_client/app_types.py,sha256=rEw4HICV7ujdmlzM3BjRcMNMbiYItliivpH0rkeJx4s,2465
|
20
|
+
biolib/biolib_api_client/auth.py,sha256=kjm0ZHnH3I8so3su2sZbBxNHYp-ZUdrZ5lwQ0K36RSw,949
|
21
|
+
biolib/biolib_api_client/biolib_app_api.py,sha256=DndlVxrNTes6DOaWyMINLGZQCRMWVvR7gwt5HVlyf5Y,4240
|
22
|
+
biolib/biolib_api_client/biolib_job_api.py,sha256=IpFahcRzm7GNy8DJ-XHYe-x7r4Voba8o22IXw5puHn8,6782
|
20
23
|
biolib/biolib_api_client/common_types.py,sha256=RH-1KNHqUF-EkTpfPOSTt5Mq1GPdfju_cqXDesscO1I,123
|
21
24
|
biolib/biolib_api_client/job_types.py,sha256=XlDIxijxymLoJcClXhl91h1E4b2fT3pszO9wjlssD4A,1284
|
22
25
|
biolib/biolib_api_client/lfs_types.py,sha256=xaGjE-yUyNVM3LyKdslJn5ZXWp6_kVCd4o-ch8Czfm4,227
|
@@ -32,41 +35,43 @@ biolib/biolib_binary_format/saved_job.py,sha256=nFHVFRNTNcAFGODLSiBntCtMk55QKwre
|
|
32
35
|
biolib/biolib_binary_format/stdout_and_stderr.py,sha256=WfUUJFFCBrtfXjuWIaRPiWCpuBLxfko68oxoTKhrwx8,1023
|
33
36
|
biolib/biolib_binary_format/system_exception.py,sha256=T3iL4_cSHAHim3RSDPS8Xyb1mfteaJBZonSXuRltc28,853
|
34
37
|
biolib/biolib_binary_format/system_status_update.py,sha256=aOELuQ0k-GtpaZTUxYd0GFomP_OInmrK585y6fuQuKE,1191
|
35
|
-
biolib/biolib_binary_format/utils.py,sha256=
|
38
|
+
biolib/biolib_binary_format/utils.py,sha256=1mZFX6KtbhvAXnzxnMJC_rYkiAjh9zhV31l68wVpA4A,4150
|
36
39
|
biolib/biolib_docker_client/__init__.py,sha256=aBfA6mtWSI5dBEfNNMD6bIZzCPloW4ghKm0wqQiljdo,1481
|
37
40
|
biolib/biolib_download_container.py,sha256=8TmBV8iv3bCvkNlHa1SSsc4zl0wX_eaxhfnW5rvFIh8,1779
|
38
41
|
biolib/biolib_errors.py,sha256=5m4lK2l39DafpoXBImEBD4EPH3ayXBX0JgtPzmGClow,689
|
39
42
|
biolib/biolib_logging.py,sha256=J3E5H_LL5k6ZUim2C8gqN7E6lCBZMTpO4tnMpOPwG9U,2854
|
40
|
-
biolib/cli/__init__.py,sha256=
|
41
|
-
biolib/cli/
|
42
|
-
biolib/cli/
|
43
|
-
biolib/cli/
|
44
|
-
biolib/cli/
|
45
|
-
biolib/cli/
|
43
|
+
biolib/cli/__init__.py,sha256=0v3c_J-U0k46c5ZWeQjLG_kTaKDJm81LBxQpDO2B_aI,1286
|
44
|
+
biolib/cli/auth.py,sha256=wp-JQRzDgiEbxeUTxwlHfugk-9u6PiOtZiHl9brAgcA,2050
|
45
|
+
biolib/cli/data_record.py,sha256=piN3QUbRAkMi4wpayghN4unFfuiNE5VCjI1gag4d8qg,1725
|
46
|
+
biolib/cli/download_container.py,sha256=HIZVHOPmslGE5M2Dsp9r2cCkAEJx__vcsDz5Wt5LRos,483
|
47
|
+
biolib/cli/init.py,sha256=wQOfii_au-d30Hp7DdH-WVw-WVraKvA_zY4za1w7DE8,821
|
48
|
+
biolib/cli/lfs.py,sha256=S9Ov-HWwtpMeRcwclh0qItnzviOaQL4aI0nnaCcZ_MM,3771
|
49
|
+
biolib/cli/push.py,sha256=TFi7O9tJ3zFe0VmtVTV3Vh9_xIMHnrc41xxcaBKU46g,813
|
50
|
+
biolib/cli/run.py,sha256=BbvXLQ-XibjQ71Y2d4URMH_8dflNVwM0i3TIWhw_u_c,1634
|
46
51
|
biolib/cli/runtime.py,sha256=Xv-nrma5xX8NidWcvbUKcUvuN5TCarZa4A8mPVmF-z0,361
|
47
|
-
biolib/cli/start.py,sha256=
|
52
|
+
biolib/cli/start.py,sha256=rg8VVY8rboFhf1iQo3zE3WA5oh_R1VWWfYJEO1gMReY,1737
|
48
53
|
biolib/compute_node/.gitignore,sha256=GZdZ4g7HftqfOfasFpBC5zV1YQAbht1a7EzcXD6f3zg,45
|
49
54
|
biolib/compute_node/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
50
55
|
biolib/compute_node/cloud_utils/__init__.py,sha256=VZSScLqaz5tg_gpMvWgwkAu9Qf-vgW_QHRoDOaAmU44,67
|
51
|
-
biolib/compute_node/cloud_utils/cloud_utils.py,sha256=
|
56
|
+
biolib/compute_node/cloud_utils/cloud_utils.py,sha256=KIZjBnZPBtHParrR_KnRl7N343sHXMQugH9lkwAwTFk,7621
|
52
57
|
biolib/compute_node/job_worker/__init__.py,sha256=ipdPWaABKYrltxny15e2kK8PWdEE7VzXbkKK6wM_zDk,71
|
53
|
-
biolib/compute_node/job_worker/cache_state.py,sha256=
|
58
|
+
biolib/compute_node/job_worker/cache_state.py,sha256=MwjSRzcJJ_4jybqvBL4xdgnDYSIiw4s90pNn83Netoo,4830
|
54
59
|
biolib/compute_node/job_worker/cache_types.py,sha256=ajpLy8i09QeQS9dEqTn3T6NVNMY_YsHQkSD5nvIHccQ,818
|
55
60
|
biolib/compute_node/job_worker/docker_image_cache.py,sha256=ansHIkJIq_EMW1nZNlW-RRLVVeKWTbzNICYaOHpKiRE,7460
|
56
61
|
biolib/compute_node/job_worker/executors/__init__.py,sha256=bW6t1qi3PZTlHM4quaTLa8EI4ALTCk83cqcVJfJfJfE,145
|
57
|
-
biolib/compute_node/job_worker/executors/docker_executor.py,sha256=
|
62
|
+
biolib/compute_node/job_worker/executors/docker_executor.py,sha256=ezXRhVBW5dYpLJjM2m5Qf-I6PrrNeBdEYjApjo7XVso,26419
|
58
63
|
biolib/compute_node/job_worker/executors/docker_types.py,sha256=VhsU1DKtJjx_BbCkVmiPZPH4ROiL1ygW1Y_s1Kbpa2o,216
|
59
64
|
biolib/compute_node/job_worker/executors/tars/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
60
65
|
biolib/compute_node/job_worker/executors/types.py,sha256=yP5gG39hr-DLnw9bOE--VHi-1arDbIYiGuV1rlTbbHI,1466
|
61
66
|
biolib/compute_node/job_worker/job_legacy_input_wait_timeout_thread.py,sha256=_cvEiZbOwfkv6fYmfrvdi_FVviIEYr_dSClQcOQaUWM,1198
|
62
67
|
biolib/compute_node/job_worker/job_max_runtime_timer_thread.py,sha256=K_xgz7IhiIjpLlXRk8sqaMyLoApcidJkgu29sJX0gb8,1174
|
63
|
-
biolib/compute_node/job_worker/job_storage.py,sha256=
|
64
|
-
biolib/compute_node/job_worker/job_worker.py,sha256=
|
68
|
+
biolib/compute_node/job_worker/job_storage.py,sha256=Ol43f43W6aD2EUkA6G2i9-WxdREr5JPSjo1xFylddOQ,4030
|
69
|
+
biolib/compute_node/job_worker/job_worker.py,sha256=QifGpDBn1ojJ5b43--XyXmz8YqsgNlGskh-z8mkYQqg,28147
|
65
70
|
biolib/compute_node/job_worker/large_file_system.py,sha256=XXqRlVtYhs-Ji9zQGIk5KQPXFO_Q5jJH0nnlw4GkeMY,10461
|
66
71
|
biolib/compute_node/job_worker/mappings.py,sha256=Z48Kg4nbcOvsT2-9o3RRikBkqflgO4XeaWxTGz-CNvI,2499
|
67
72
|
biolib/compute_node/job_worker/utilization_reporter_thread.py,sha256=7tm5Yk9coqJ9VbEdnO86tSXI0iM0omwIyKENxdxiVXk,8575
|
68
73
|
biolib/compute_node/job_worker/utils.py,sha256=wgxcIA8yAhUPdCwyvuuJ0JmreyWmmUoBO33vWtG60xg,1282
|
69
|
-
biolib/compute_node/remote_host_proxy.py,sha256=
|
74
|
+
biolib/compute_node/remote_host_proxy.py,sha256=spjYghbqwX3dFrmedGvXZGXEsnwop1IbbyrXTv1PWz0,15080
|
70
75
|
biolib/compute_node/socker_listener_thread.py,sha256=T5_UikA3MB9bD5W_dckYLPTgixh72vKUlgbBvj9dbM0,1601
|
71
76
|
biolib/compute_node/socket_sender_thread.py,sha256=YgamPHeUm2GjMFGx8qk-99WlZhEs-kAb3q_2O6qByig,971
|
72
77
|
biolib/compute_node/utils.py,sha256=M7i_WTyxbFM3Lri9RWZ_8FeQNYrQIWpKGLfp2I55oeY,4677
|
@@ -75,34 +80,33 @@ biolib/compute_node/webserver/gunicorn_flask_application.py,sha256=jPfR_YvNBekLU
|
|
75
80
|
biolib/compute_node/webserver/webserver.py,sha256=15PkRyhtdtSgFDxa0z78aPO4ciZURsFqJYi-HtUmZF8,6494
|
76
81
|
biolib/compute_node/webserver/webserver_types.py,sha256=Vmt1ZDecYhGBVEYWcW1DVxee1DEPqkqyxQzbsObXWbI,420
|
77
82
|
biolib/compute_node/webserver/webserver_utils.py,sha256=XWvwYPbWNR3qS0FYbLLp-MDDfVk0QdaAmg3xPrT0H2s,4234
|
78
|
-
biolib/compute_node/webserver/worker_thread.py,sha256
|
83
|
+
biolib/compute_node/webserver/worker_thread.py,sha256=26tG73TADnOcXsAr7Iyf6smrLlCqB4x-vvmpUb8WqnA,11569
|
79
84
|
biolib/experiments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
80
85
|
biolib/experiments/experiment.py,sha256=xUd3LkV5ztFIjTx_ehBu8e-flvfuQnYimFtPj1upzb0,5942
|
81
86
|
biolib/experiments/types.py,sha256=n9GxdFA7cLMfHvLLqLmZzX31ELeSSkMXFoEEdFsdWGY,171
|
82
87
|
biolib/jobs/__init__.py,sha256=aIb2H2DHjQbM2Bs-dysFijhwFcL58Blp0Co0gimED3w,32
|
83
|
-
biolib/jobs/job.py,sha256=
|
88
|
+
biolib/jobs/job.py,sha256=_lYtqaTrtq3ayDvnaB9RuUMBTxCRKYGKVADUd473pWQ,15718
|
84
89
|
biolib/jobs/job_result.py,sha256=8GasUmUXD8SjUYrE2N-HrDx7-AI6TEkFONH8H91t01Q,4913
|
85
90
|
biolib/jobs/types.py,sha256=4OAvlhOKANzFMrZDd-mhXpEd8RaKcx8sPneZUoWhJ2U,970
|
86
|
-
biolib/lfs/__init__.py,sha256=
|
91
|
+
biolib/lfs/__init__.py,sha256=Qv8vdYeK43JecT4SsE93ZYE2VmNiZENdNpW8P9-omxs,115
|
87
92
|
biolib/lfs/cache.py,sha256=pQS2np21rdJ6I3DpoOutnzPHpLOZgUIS8TMltUJk_k4,2226
|
88
|
-
biolib/lfs/utils.py,sha256=
|
89
|
-
biolib/runtime/__init__.py,sha256=
|
90
|
-
biolib/
|
91
|
-
biolib/sdk/__init__.py,sha256=vqqE2Sf3gLySkaJv8VgWtPRkYMi9hOf66y9Ay2waYVE,1339
|
93
|
+
biolib/lfs/utils.py,sha256=HSs7F2wXklYhhv5tabfaeC5noXJyxRjbGD5IhWOVdxs,5918
|
94
|
+
biolib/runtime/__init__.py,sha256=x1Ivydtu9TFTaX-Cofg_kGA-TI0zLon-ccrFiiVgBok,492
|
95
|
+
biolib/sdk/__init__.py,sha256=77IBthMbwgmYymjQwLP4ny1X2ikvI1I0ocP6Eyzfyaw,1766
|
92
96
|
biolib/tables.py,sha256=acH7VjwAbadLo8P84FSnKEZxCTVsF5rEg9VPuxElNs8,872
|
93
97
|
biolib/templates/__init__.py,sha256=Yx62sSyDCDesRQDQgmbDsLpfgEh93fWE8r9u4g2azXk,36
|
94
98
|
biolib/templates/example_app.py,sha256=EB3E3RT4SeO_ii5nVQqJpi5KDGNE_huF1ub-e5ZFveE,715
|
95
99
|
biolib/typing_utils.py,sha256=krMhxB3SedVQA3HXIrC7DBXWpHKWN5JNmXGcSrrysOc,263
|
96
100
|
biolib/user/__init__.py,sha256=Db5wtxLfFz3ID9TULSSTo77csw9tO6RtxMRvV5cqKEE,39
|
97
|
-
biolib/user/sign_in.py,sha256=
|
98
|
-
biolib/utils/__init__.py,sha256=
|
99
|
-
biolib/utils/app_uri.py,sha256=
|
100
|
-
biolib/utils/cache_state.py,sha256=
|
101
|
-
biolib/utils/multipart_uploader.py,sha256=
|
102
|
-
biolib/utils/seq_util.py,sha256=
|
103
|
-
biolib/utils/zip/remote_zip.py,sha256=
|
104
|
-
pybiolib-1.1.
|
105
|
-
pybiolib-1.1.
|
106
|
-
pybiolib-1.1.
|
107
|
-
pybiolib-1.1.
|
108
|
-
pybiolib-1.1.
|
101
|
+
biolib/user/sign_in.py,sha256=q-E2B3wLVwPU5plbITJXP4GDWWUzUcDpYu_y8BShNQ8,2039
|
102
|
+
biolib/utils/__init__.py,sha256=fwjciJyJicvYyZcVTzfDBgD0SKY13DeXqvTeG4qZIy8,5548
|
103
|
+
biolib/utils/app_uri.py,sha256=Yq_-_VGugQhMMo6mM5f0G9yNlLkr0WK4j0Nrf3FE4xQ,2171
|
104
|
+
biolib/utils/cache_state.py,sha256=u256F37QSRIVwqKlbnCyzAX4EMI-kl6Dwu6qwj-Qmag,3100
|
105
|
+
biolib/utils/multipart_uploader.py,sha256=XvGP1I8tQuKhAH-QugPRoEsCi9qvbRk-DVBs5PNwwJo,8452
|
106
|
+
biolib/utils/seq_util.py,sha256=jC5WhH63FTD7SLFJbxQGA2hOt9NTwq9zHl_BEec1Z0c,4907
|
107
|
+
biolib/utils/zip/remote_zip.py,sha256=0wErYlxir5921agfFeV1xVjf29l9VNgGQvNlWOlj2Yc,23232
|
108
|
+
pybiolib-1.1.1881.dist-info/LICENSE,sha256=F2h7gf8i0agDIeWoBPXDMYScvQOz02pAWkKhTGOHaaw,1067
|
109
|
+
pybiolib-1.1.1881.dist-info/METADATA,sha256=oanwAPIfyI5nATML26HjNK4sjPb2ciuoyP2jLxg8Kbs,1508
|
110
|
+
pybiolib-1.1.1881.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
111
|
+
pybiolib-1.1.1881.dist-info/entry_points.txt,sha256=p6DyaP_2kctxegTX23WBznnrDi4mz6gx04O5uKtRDXg,42
|
112
|
+
pybiolib-1.1.1881.dist-info/RECORD,,
|
@@ -1,21 +0,0 @@
|
|
1
|
-
import requests
|
2
|
-
|
3
|
-
from biolib.biolib_api_client.auth import BearerAuth
|
4
|
-
from biolib.biolib_api_client import BiolibApiClient
|
5
|
-
from biolib.biolib_errors import BioLibError
|
6
|
-
|
7
|
-
|
8
|
-
class BiolibAccountApi:
|
9
|
-
|
10
|
-
@staticmethod
|
11
|
-
def fetch_by_handle(account_handle):
|
12
|
-
response = requests.get(
|
13
|
-
f'{BiolibApiClient.get().base_url}/api/account/{account_handle}',
|
14
|
-
auth=BearerAuth(BiolibApiClient.get().access_token),
|
15
|
-
timeout=5
|
16
|
-
)
|
17
|
-
|
18
|
-
if not response.ok:
|
19
|
-
raise BioLibError(response.content.decode())
|
20
|
-
|
21
|
-
return response.json()
|
@@ -1,53 +0,0 @@
|
|
1
|
-
import requests
|
2
|
-
|
3
|
-
from biolib.biolib_api_client.auth import BearerAuth
|
4
|
-
from biolib.biolib_api_client import BiolibApiClient
|
5
|
-
from biolib.biolib_api_client.lfs_types import LargeFileSystemVersion, LargeFileSystem
|
6
|
-
from biolib.biolib_errors import BioLibError
|
7
|
-
|
8
|
-
|
9
|
-
class BiolibLargeFileSystemApi:
|
10
|
-
|
11
|
-
@staticmethod
|
12
|
-
def create(account_uuid: str, name: str) -> LargeFileSystem:
|
13
|
-
response = requests.post(
|
14
|
-
f'{BiolibApiClient.get().base_url}/api/lfs/',
|
15
|
-
auth=BearerAuth(BiolibApiClient.get().access_token),
|
16
|
-
timeout=5,
|
17
|
-
json={'account_uuid': account_uuid, 'name': name}
|
18
|
-
)
|
19
|
-
|
20
|
-
if not response.ok:
|
21
|
-
raise BioLibError(response.content.decode())
|
22
|
-
|
23
|
-
lfs: LargeFileSystem = response.json()
|
24
|
-
return lfs
|
25
|
-
|
26
|
-
@staticmethod
|
27
|
-
def fetch_version(lfs_version_uuid: str) -> LargeFileSystemVersion:
|
28
|
-
response = requests.get(
|
29
|
-
f'{BiolibApiClient.get().base_url}/api/lfs/versions/{lfs_version_uuid}/',
|
30
|
-
auth=BearerAuth(BiolibApiClient.get().access_token),
|
31
|
-
timeout=5,
|
32
|
-
)
|
33
|
-
|
34
|
-
if not response.ok:
|
35
|
-
raise BioLibError(response.content.decode())
|
36
|
-
|
37
|
-
lfs_version: LargeFileSystemVersion = response.json()
|
38
|
-
return lfs_version
|
39
|
-
|
40
|
-
@staticmethod
|
41
|
-
def create_version(resource_uuid: str) -> LargeFileSystemVersion:
|
42
|
-
response = requests.post(
|
43
|
-
f'{BiolibApiClient.get().base_url}/api/lfs/versions/',
|
44
|
-
auth=BearerAuth(BiolibApiClient.get().access_token),
|
45
|
-
json={'resource_uuid': resource_uuid},
|
46
|
-
timeout=5,
|
47
|
-
)
|
48
|
-
|
49
|
-
if not response.ok:
|
50
|
-
raise BioLibError(response.content.decode())
|
51
|
-
|
52
|
-
lfs_version: LargeFileSystemVersion = response.json()
|
53
|
-
return lfs_version
|
biolib/runtime/results.py
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
import json
|
2
|
-
|
3
|
-
from biolib import api
|
4
|
-
|
5
|
-
|
6
|
-
def set_main_result_prefix(result_prefix: str) -> None:
|
7
|
-
try:
|
8
|
-
with open('/biolib/secrets/biolib_system_secret', mode='r') as system_secrets_file:
|
9
|
-
system_secrets = json.loads(system_secrets_file.read())
|
10
|
-
except Exception: # pylint: disable=broad-except
|
11
|
-
raise Exception('Unable to load the BioLib runtime system secret') from None
|
12
|
-
|
13
|
-
if not system_secrets['version'].startswith('1.'):
|
14
|
-
raise Exception(f"Unexpected system secret version {system_secrets['version']} expected 1.x.x")
|
15
|
-
|
16
|
-
api.client.patch(
|
17
|
-
data={'result_name_prefix': result_prefix},
|
18
|
-
headers={'Job-Auth-Token': system_secrets['job_auth_token']},
|
19
|
-
path=f"/jobs/{system_secrets['job_uuid']}/main_result/",
|
20
|
-
)
|
File without changes
|
File without changes
|