pybiolib 1.1.2025__py3-none-any.whl → 1.1.2036__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/api/__init__.py +1 -0
- biolib/api/client.py +30 -15
- biolib/biolib_api_client/app_types.py +1 -3
- biolib/biolib_api_client/job_types.py +2 -3
- biolib/compute_node/cloud_utils/cloud_utils.py +13 -16
- biolib/compute_node/job_worker/job_worker.py +0 -3
- biolib/compute_node/remote_host_proxy.py +16 -56
- biolib/compute_node/webserver/webserver_types.py +0 -1
- {pybiolib-1.1.2025.dist-info → pybiolib-1.1.2036.dist-info}/METADATA +1 -1
- {pybiolib-1.1.2025.dist-info → pybiolib-1.1.2036.dist-info}/RECORD +13 -13
- {pybiolib-1.1.2025.dist-info → pybiolib-1.1.2036.dist-info}/LICENSE +0 -0
- {pybiolib-1.1.2025.dist-info → pybiolib-1.1.2036.dist-info}/WHEEL +0 -0
- {pybiolib-1.1.2025.dist-info → pybiolib-1.1.2036.dist-info}/entry_points.txt +0 -0
biolib/api/__init__.py
CHANGED
biolib/api/client.py
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
from urllib.parse import
|
1
|
+
from urllib.parse import urlencode, urljoin
|
2
2
|
|
3
|
-
|
3
|
+
import importlib_metadata
|
4
|
+
|
5
|
+
from biolib._internal.http_client import HttpClient, HttpResponse
|
4
6
|
from biolib.biolib_api_client import BiolibApiClient as DeprecatedApiClient
|
5
|
-
from biolib.
|
7
|
+
from biolib.typing_utils import Dict, Optional, Union, cast
|
6
8
|
|
7
9
|
OptionalHeaders = Union[
|
8
10
|
Optional[Dict[str, str]],
|
@@ -10,14 +12,24 @@ OptionalHeaders = Union[
|
|
10
12
|
]
|
11
13
|
|
12
14
|
|
15
|
+
def _get_biolib_package_version() -> str:
|
16
|
+
# try fetching version, if it fails (usually when in dev), add default
|
17
|
+
try:
|
18
|
+
return cast(str, importlib_metadata.version('pybiolib'))
|
19
|
+
except importlib_metadata.PackageNotFoundError:
|
20
|
+
return '0.0.0'
|
21
|
+
|
22
|
+
|
13
23
|
class ApiClient(HttpClient):
|
24
|
+
_biolib_package_version: str = _get_biolib_package_version()
|
25
|
+
|
14
26
|
def get(
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
27
|
+
self,
|
28
|
+
path: str,
|
29
|
+
params: Optional[Dict[str, Union[str, int]]] = None,
|
30
|
+
headers: OptionalHeaders = None,
|
31
|
+
authenticate: bool = True,
|
32
|
+
retries: int = 10,
|
21
33
|
) -> HttpResponse:
|
22
34
|
return self.request(
|
23
35
|
headers=self._get_headers(opt_headers=headers, authenticate=authenticate),
|
@@ -27,12 +39,12 @@ class ApiClient(HttpClient):
|
|
27
39
|
)
|
28
40
|
|
29
41
|
def post(
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
42
|
+
self,
|
43
|
+
path: str,
|
44
|
+
data: Optional[Union[Dict, bytes]] = None,
|
45
|
+
headers: OptionalHeaders = None,
|
46
|
+
authenticate: bool = True,
|
47
|
+
retries: int = 5,
|
36
48
|
) -> HttpResponse:
|
37
49
|
return self.request(
|
38
50
|
data=data,
|
@@ -74,6 +86,9 @@ class ApiClient(HttpClient):
|
|
74
86
|
if access_token and authenticate:
|
75
87
|
headers['Authorization'] = f'Bearer {access_token}'
|
76
88
|
|
89
|
+
headers['client-type'] = 'biolib-python'
|
90
|
+
headers['client-version'] = ApiClient._biolib_package_version
|
91
|
+
|
77
92
|
return headers
|
78
93
|
|
79
94
|
@staticmethod
|
@@ -1,7 +1,7 @@
|
|
1
1
|
from enum import Enum
|
2
2
|
|
3
|
-
from biolib.typing_utils import TypedDict, List, Optional, Dict, Literal
|
4
3
|
from biolib.biolib_api_client.common_types import SemanticVersion
|
4
|
+
from biolib.typing_utils import Dict, List, Literal, Optional, TypedDict
|
5
5
|
|
6
6
|
|
7
7
|
class AppVersionSlim(SemanticVersion):
|
@@ -99,8 +99,6 @@ class _AppVersionOnJob(TypedDict):
|
|
99
99
|
|
100
100
|
class AppOnJob(TypedDict):
|
101
101
|
allow_client_side_execution: bool
|
102
|
-
can_access_all_data_records_of_user: bool
|
103
|
-
can_push_data_record_for_user: bool
|
104
102
|
state: Literal['public', 'draft']
|
105
103
|
|
106
104
|
|
@@ -1,9 +1,8 @@
|
|
1
1
|
from enum import Enum
|
2
2
|
|
3
|
-
from biolib.compute_node.webserver.webserver_types import ComputeNodeInfo
|
4
|
-
from biolib.typing_utils import TypedDict, Optional, List
|
5
|
-
|
6
3
|
from biolib.biolib_api_client.app_types import AppVersionOnJob, RemoteHost
|
4
|
+
from biolib.compute_node.webserver.webserver_types import ComputeNodeInfo
|
5
|
+
from biolib.typing_utils import List, Optional, TypedDict
|
7
6
|
|
8
7
|
|
9
8
|
class JobState(Enum):
|
@@ -7,11 +7,11 @@ import time
|
|
7
7
|
from datetime import datetime
|
8
8
|
from socket import gethostbyname, gethostname
|
9
9
|
|
10
|
-
from biolib import
|
11
|
-
from biolib.biolib_logging import logger_no_user_data
|
12
|
-
from biolib.typing_utils import Optional, List, Dict, cast
|
10
|
+
from biolib import api, utils
|
13
11
|
from biolib.biolib_api_client import BiolibApiClient
|
14
|
-
from biolib.
|
12
|
+
from biolib.biolib_logging import logger_no_user_data
|
13
|
+
from biolib.compute_node.webserver.webserver_types import ComputeNodeInfo, ShutdownTimes, WebserverConfig
|
14
|
+
from biolib.typing_utils import Dict, List, Optional, cast
|
15
15
|
|
16
16
|
|
17
17
|
def trust_ceritificates(certs_data: List[str]) -> None:
|
@@ -54,15 +54,12 @@ class CloudUtils:
|
|
54
54
|
pybiolib_version=utils.BIOLIB_PACKAGE_VERSION,
|
55
55
|
),
|
56
56
|
base_url=CloudUtils._get_environment_variable_or_fail('BIOLIB_BASE_URL'),
|
57
|
-
s3_general_storage_bucket_name=CloudUtils._get_environment_variable_or_fail(
|
58
|
-
'BIOLIB_S3_GENERAL_STORAGE_BUCKET_NAME',
|
59
|
-
),
|
60
57
|
is_dev=os.environ.get('BIOLIB_DEV') == 'TRUE',
|
61
58
|
shutdown_times=ShutdownTimes(
|
62
59
|
auto_shutdown_time_in_seconds=CloudUtils._get_environment_variable_as_int(
|
63
60
|
'BIOLIB_CLOUD_AUTO_SHUTDOWN_TIME_IN_SECONDS'
|
64
61
|
),
|
65
|
-
)
|
62
|
+
),
|
66
63
|
)
|
67
64
|
|
68
65
|
return CloudUtils._webserver_config
|
@@ -84,7 +81,7 @@ class CloudUtils:
|
|
84
81
|
except BaseException as error_object:
|
85
82
|
logger_no_user_data.error(f'Failed to deregister got error: {error_object}')
|
86
83
|
else:
|
87
|
-
logger_no_user_data.error(
|
84
|
+
logger_no_user_data.error('Not deregistering as environment is not cloud')
|
88
85
|
|
89
86
|
@staticmethod
|
90
87
|
def shutdown() -> None:
|
@@ -98,7 +95,7 @@ class CloudUtils:
|
|
98
95
|
except Exception as error: # pylint: disable=broad-except
|
99
96
|
logger_no_user_data.error(f'Failed to shutdown got error: {error}')
|
100
97
|
else:
|
101
|
-
logger_no_user_data.error(
|
98
|
+
logger_no_user_data.error('Not running shutdown as environment is not cloud')
|
102
99
|
|
103
100
|
@staticmethod
|
104
101
|
def deregister_and_shutdown() -> None:
|
@@ -131,7 +128,7 @@ class CloudUtils:
|
|
131
128
|
'auth_token': config['compute_node_info']['auth_token'],
|
132
129
|
'cloud_job_id': cloud_job_id,
|
133
130
|
'system_exception_code': system_exception_code,
|
134
|
-
'exit_code': exit_code
|
131
|
+
'exit_code': exit_code,
|
135
132
|
},
|
136
133
|
)
|
137
134
|
except BaseException as error:
|
@@ -152,14 +149,14 @@ class CloudUtils:
|
|
152
149
|
data=cast(Dict[str, str], compute_node_info),
|
153
150
|
)
|
154
151
|
if response.status_code != 201:
|
155
|
-
raise Exception(
|
152
|
+
raise Exception('Non 201 error code')
|
156
153
|
else:
|
157
|
-
logger_no_user_data.info(
|
154
|
+
logger_no_user_data.info('Compute node registered!')
|
158
155
|
response_data = response.json()
|
159
|
-
logger_no_user_data.info(f
|
156
|
+
logger_no_user_data.info(f'Got data on register: {json.dumps(response_data)}')
|
160
157
|
certs = []
|
161
|
-
for federation in response_data[
|
162
|
-
for cert_b64 in federation[
|
158
|
+
for federation in response_data['federation']:
|
159
|
+
for cert_b64 in federation['certs_b64']:
|
163
160
|
certs.append(base64.b64decode(cert_b64).decode())
|
164
161
|
trust_ceritificates(certs)
|
165
162
|
|
@@ -253,7 +253,6 @@ class JobWorker:
|
|
253
253
|
|
254
254
|
def _start_network_and_remote_host_proxies(self, job: CreatedJobDict) -> None:
|
255
255
|
app_version = job['app_version']
|
256
|
-
app = app_version.get('app', {})
|
257
256
|
job_id = job['public_id']
|
258
257
|
remote_hosts = app_version['remote_hosts']
|
259
258
|
if utils.IS_RUNNING_IN_CLOUD:
|
@@ -316,8 +315,6 @@ class JobWorker:
|
|
316
315
|
self._internal_network,
|
317
316
|
job_id,
|
318
317
|
ports,
|
319
|
-
can_push_data_record_for_user=app.get('can_push_data_record_for_user', False),
|
320
|
-
can_access_all_data_records_of_user=app.get('can_access_all_data_records_of_user', False),
|
321
318
|
)
|
322
319
|
remote_host_proxy.start()
|
323
320
|
self._remote_host_proxies.append(remote_host_proxy)
|
@@ -30,11 +30,7 @@ class RemoteHostProxy:
|
|
30
30
|
internal_network: Optional[Network],
|
31
31
|
job_id: str,
|
32
32
|
ports: List[int],
|
33
|
-
can_push_data_record_for_user: bool,
|
34
|
-
can_access_all_data_records_of_user: bool,
|
35
33
|
):
|
36
|
-
self._can_push_data_record_for_user: bool = can_push_data_record_for_user
|
37
|
-
self._can_access_all_data_records_of_user: bool = can_access_all_data_records_of_user
|
38
34
|
self.is_app_caller_proxy = remote_host['hostname'] == 'AppCallerProxy'
|
39
35
|
self._remote_host: RemoteHostExtended = RemoteHostExtended(hostname=remote_host['hostname'], ports=ports)
|
40
36
|
self._public_network: Network = public_network
|
@@ -151,34 +147,21 @@ class RemoteHostProxy:
|
|
151
147
|
docker = BiolibDockerClient.get_docker_client()
|
152
148
|
base_url = BiolibApiClient.get().base_url
|
153
149
|
if self.is_app_caller_proxy:
|
150
|
+
if not utils.IS_RUNNING_IN_CLOUD or not utils.BIOLIB_CLOUD_BASE_URL:
|
151
|
+
raise BioLibError('Calling apps inside apps is not supported in local compute environment')
|
152
|
+
|
154
153
|
logger_no_user_data.debug(f'Job "{self._job_uuid}" writing config for and starting App Caller Proxy...')
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
else:
|
161
|
-
raise BioLibError('Calling apps inside apps is not supported in local compute environment')
|
162
|
-
|
163
|
-
compute_node_uuid: Optional[str] = None
|
164
|
-
compute_node_auth_token: Optional[str] = None
|
165
|
-
if utils.IS_RUNNING_IN_CLOUD:
|
166
|
-
config = CloudUtils.get_webserver_config()
|
167
|
-
compute_node_uuid = config['compute_node_info']['public_id']
|
168
|
-
compute_node_auth_token = config['compute_node_info']['auth_token']
|
169
|
-
s3_results_bucket_name = config['s3_general_storage_bucket_name']
|
170
|
-
s3_results_base_url = f'https://{s3_results_bucket_name}.s3.amazonaws.com'
|
171
|
-
else:
|
172
|
-
if base_url in ('https://biolib.com', 'https://staging-elb.biolib.com'):
|
173
|
-
s3_results_base_url = 'https://biolib-cloud-api.s3.amazonaws.com'
|
174
|
-
else:
|
175
|
-
raise BioLibError('Calling apps inside apps locally is only supported on biolib.com')
|
154
|
+
cloud_base_url = utils.BIOLIB_CLOUD_BASE_URL
|
155
|
+
|
156
|
+
config = CloudUtils.get_webserver_config()
|
157
|
+
compute_node_uuid = config['compute_node_info']['public_id']
|
158
|
+
compute_node_auth_token = config['compute_node_info']['auth_token']
|
176
159
|
|
177
160
|
# TODO: Get access_token from new API class instead
|
178
161
|
access_token = BiolibApiClient.get().access_token
|
179
162
|
bearer_token = f'Bearer {access_token}' if access_token else ''
|
180
163
|
|
181
|
-
nginx_config = f
|
164
|
+
nginx_config = f"""
|
182
165
|
events {{
|
183
166
|
worker_connections 1024;
|
184
167
|
}}
|
@@ -195,23 +178,12 @@ http {{
|
|
195
178
|
default "";
|
196
179
|
}}
|
197
180
|
|
198
|
-
map $request_method $bearer_token_on_patch {{
|
199
|
-
PATCH "{bearer_token}";
|
200
|
-
default "";
|
201
|
-
}}
|
202
|
-
|
203
181
|
map $request_method $bearer_token_on_patch_and_get {{
|
204
182
|
PATCH "{bearer_token}";
|
205
183
|
GET "{bearer_token}";
|
206
184
|
default "";
|
207
185
|
}}
|
208
186
|
|
209
|
-
map $request_method $bearer_token_on_post_and_get {{
|
210
|
-
POST "{bearer_token}";
|
211
|
-
GET "{bearer_token}";
|
212
|
-
default "";
|
213
|
-
}}
|
214
|
-
|
215
187
|
server {{
|
216
188
|
listen 80;
|
217
189
|
resolver 127.0.0.11 valid=30s;
|
@@ -299,14 +271,18 @@ http {{
|
|
299
271
|
|
300
272
|
location /api/lfs/ {{
|
301
273
|
proxy_pass {base_url}/api/lfs/;
|
302
|
-
proxy_set_header authorization
|
274
|
+
proxy_set_header authorization "";
|
275
|
+
proxy_set_header compute-node-auth-token "{compute_node_auth_token}";
|
276
|
+
proxy_set_header job-uuid "{self._job_uuid}";
|
303
277
|
proxy_set_header cookie "";
|
304
278
|
proxy_ssl_server_name on;
|
305
279
|
}}
|
306
280
|
|
307
281
|
location /api/app/ {{
|
308
282
|
proxy_pass {base_url}/api/app/;
|
309
|
-
proxy_set_header authorization
|
283
|
+
proxy_set_header authorization "";
|
284
|
+
proxy_set_header compute-node-auth-token "{compute_node_auth_token}";
|
285
|
+
proxy_set_header job-uuid "{self._job_uuid}";
|
310
286
|
proxy_set_header cookie "";
|
311
287
|
proxy_ssl_server_name on;
|
312
288
|
}}
|
@@ -318,20 +294,6 @@ http {{
|
|
318
294
|
proxy_ssl_server_name on;
|
319
295
|
}}
|
320
296
|
|
321
|
-
location /cloud-proxy/ {{
|
322
|
-
proxy_pass {cloud_base_url}/cloud-proxy/;
|
323
|
-
proxy_set_header authorization "";
|
324
|
-
proxy_set_header cookie "";
|
325
|
-
proxy_ssl_server_name on;
|
326
|
-
}}
|
327
|
-
|
328
|
-
location /job-storage/ {{
|
329
|
-
proxy_pass {s3_results_base_url}/job-storage/;
|
330
|
-
proxy_set_header authorization "";
|
331
|
-
proxy_set_header cookie "";
|
332
|
-
proxy_ssl_server_name on;
|
333
|
-
}}
|
334
|
-
|
335
297
|
location /proxy/storage/job-storage/ {{
|
336
298
|
proxy_pass {cloud_base_url}/proxy/storage/job-storage/;
|
337
299
|
proxy_set_header authorization "";
|
@@ -339,14 +301,12 @@ http {{
|
|
339
301
|
proxy_ssl_server_name on;
|
340
302
|
}}
|
341
303
|
|
342
|
-
{f"""
|
343
304
|
location /proxy/storage/lfs/versions/ {{
|
344
305
|
proxy_pass {cloud_base_url}/proxy/storage/lfs/versions/;
|
345
306
|
proxy_set_header authorization "";
|
346
307
|
proxy_set_header cookie "";
|
347
308
|
proxy_ssl_server_name on;
|
348
309
|
}}
|
349
|
-
""" if self._can_push_data_record_for_user or self._can_access_all_data_records_of_user else ''}
|
350
310
|
|
351
311
|
location /proxy/cloud/ {{
|
352
312
|
proxy_pass {cloud_base_url}/proxy/cloud/;
|
@@ -360,7 +320,7 @@ http {{
|
|
360
320
|
}}
|
361
321
|
}}
|
362
322
|
}}
|
363
|
-
|
323
|
+
"""
|
364
324
|
else:
|
365
325
|
nginx_config = """
|
366
326
|
events {}
|
@@ -13,19 +13,19 @@ biolib/_internal/libs/fusepy/__init__.py,sha256=AWDzNFS-XV_5yKb0Qx7kggIhPzq1nj_B
|
|
13
13
|
biolib/_internal/push_application.py,sha256=H1PGNtVJ0vRC0li39gFMpPpjm6QeZ8Ob-7cLkLmxS_Y,10009
|
14
14
|
biolib/_internal/runtime.py,sha256=BnFvRWYnxPXCgOtfxupN255Zxx9Gw6oPZyzUIGODw3k,3060
|
15
15
|
biolib/_internal/utils/__init__.py,sha256=p5vsIFyu-zYqBgdSMfwW9NC_jk7rXvvCbV4Bzd3As7c,630
|
16
|
-
biolib/api/__init__.py,sha256=
|
17
|
-
biolib/api/client.py,sha256
|
16
|
+
biolib/api/__init__.py,sha256=mQ4u8FijqyLzjYMezMUUbbBGNB3iFmkNdjXnWPZ7Jlw,138
|
17
|
+
biolib/api/client.py,sha256=9MD1qI52BnRC_QSydFGjyFquwFw0R9dkDfUrjUouuHQ,3490
|
18
18
|
biolib/app/__init__.py,sha256=cdPtcfb_U-bxb9iSL4fCEq2rpD9OjkyY4W-Zw60B0LI,37
|
19
19
|
biolib/app/app.py,sha256=8AvPYL1W2wxQ7t7BB2KeVU2WPrm3UL6vVuHPGs8g9L0,8388
|
20
20
|
biolib/app/search_apps.py,sha256=K4a41f5XIWth2BWI7OffASgIsD0ko8elCax8YL2igaY,1470
|
21
21
|
biolib/biolib_api_client/__init__.py,sha256=E5EMa19wJoblwSdQPYrxc_BtIeRsAuO0L_jQweWw-Yk,182
|
22
22
|
biolib/biolib_api_client/api_client.py,sha256=J03jRVvod1bgwwAZ3BZVKlUSJi43-ev2DUB0j63GZpc,7189
|
23
|
-
biolib/biolib_api_client/app_types.py,sha256=
|
23
|
+
biolib/biolib_api_client/app_types.py,sha256=lm_mZ5knl-70eVB5Zj03jSMrPN1ERqu_5ofzcuSUwN4,2425
|
24
24
|
biolib/biolib_api_client/auth.py,sha256=kjm0ZHnH3I8so3su2sZbBxNHYp-ZUdrZ5lwQ0K36RSw,949
|
25
25
|
biolib/biolib_api_client/biolib_app_api.py,sha256=DndlVxrNTes6DOaWyMINLGZQCRMWVvR7gwt5HVlyf5Y,4240
|
26
26
|
biolib/biolib_api_client/biolib_job_api.py,sha256=IpFahcRzm7GNy8DJ-XHYe-x7r4Voba8o22IXw5puHn8,6782
|
27
27
|
biolib/biolib_api_client/common_types.py,sha256=RH-1KNHqUF-EkTpfPOSTt5Mq1GPdfju_cqXDesscO1I,123
|
28
|
-
biolib/biolib_api_client/job_types.py,sha256=
|
28
|
+
biolib/biolib_api_client/job_types.py,sha256=Dl4NhU2xpgpXV-7YIoDf6WL63SLR5bni55OX8x5539M,1300
|
29
29
|
biolib/biolib_api_client/lfs_types.py,sha256=xaGjE-yUyNVM3LyKdslJn5ZXWp6_kVCd4o-ch8Czfm4,227
|
30
30
|
biolib/biolib_api_client/user_state.py,sha256=XcgWV-MgVk88mIlMmnu8yHxMu8OCaw8o0tk7TVo5Hcg,637
|
31
31
|
biolib/biolib_binary_format/__init__.py,sha256=HMl5SdX_VUWE4OQzi4Jf_yFvC7b0bSPOGPHYi9dWM2Q,185
|
@@ -57,7 +57,7 @@ biolib/cli/start.py,sha256=rg8VVY8rboFhf1iQo3zE3WA5oh_R1VWWfYJEO1gMReY,1737
|
|
57
57
|
biolib/compute_node/.gitignore,sha256=GZdZ4g7HftqfOfasFpBC5zV1YQAbht1a7EzcXD6f3zg,45
|
58
58
|
biolib/compute_node/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
59
59
|
biolib/compute_node/cloud_utils/__init__.py,sha256=VZSScLqaz5tg_gpMvWgwkAu9Qf-vgW_QHRoDOaAmU44,67
|
60
|
-
biolib/compute_node/cloud_utils/cloud_utils.py,sha256=
|
60
|
+
biolib/compute_node/cloud_utils/cloud_utils.py,sha256=_iaKelsmQLLwbDKVXZMXPFZayZPH9iHXc4NISFP9uzk,7462
|
61
61
|
biolib/compute_node/job_worker/__init__.py,sha256=ipdPWaABKYrltxny15e2kK8PWdEE7VzXbkKK6wM_zDk,71
|
62
62
|
biolib/compute_node/job_worker/cache_state.py,sha256=MwjSRzcJJ_4jybqvBL4xdgnDYSIiw4s90pNn83Netoo,4830
|
63
63
|
biolib/compute_node/job_worker/cache_types.py,sha256=ajpLy8i09QeQS9dEqTn3T6NVNMY_YsHQkSD5nvIHccQ,818
|
@@ -70,19 +70,19 @@ biolib/compute_node/job_worker/executors/types.py,sha256=yP5gG39hr-DLnw9bOE--VHi
|
|
70
70
|
biolib/compute_node/job_worker/job_legacy_input_wait_timeout_thread.py,sha256=_cvEiZbOwfkv6fYmfrvdi_FVviIEYr_dSClQcOQaUWM,1198
|
71
71
|
biolib/compute_node/job_worker/job_max_runtime_timer_thread.py,sha256=K_xgz7IhiIjpLlXRk8sqaMyLoApcidJkgu29sJX0gb8,1174
|
72
72
|
biolib/compute_node/job_worker/job_storage.py,sha256=LNkklckDLbYgCHsK5FGrEK75Kw-H4f4JcTCAtuE9His,4035
|
73
|
-
biolib/compute_node/job_worker/job_worker.py,sha256=
|
73
|
+
biolib/compute_node/job_worker/job_worker.py,sha256=fuWoYJo9HOqLmWl8yeCXh0mhT4ebbkrWac-BVb58khs,28842
|
74
74
|
biolib/compute_node/job_worker/large_file_system.py,sha256=XXqRlVtYhs-Ji9zQGIk5KQPXFO_Q5jJH0nnlw4GkeMY,10461
|
75
75
|
biolib/compute_node/job_worker/mappings.py,sha256=Z48Kg4nbcOvsT2-9o3RRikBkqflgO4XeaWxTGz-CNvI,2499
|
76
76
|
biolib/compute_node/job_worker/utilization_reporter_thread.py,sha256=7tm5Yk9coqJ9VbEdnO86tSXI0iM0omwIyKENxdxiVXk,8575
|
77
77
|
biolib/compute_node/job_worker/utils.py,sha256=wgxcIA8yAhUPdCwyvuuJ0JmreyWmmUoBO33vWtG60xg,1282
|
78
|
-
biolib/compute_node/remote_host_proxy.py,sha256=
|
78
|
+
biolib/compute_node/remote_host_proxy.py,sha256=GsCZhts8rYvq7DJuX1y2pfFF5Jhj5-nsnNWJuipbn3w,14422
|
79
79
|
biolib/compute_node/socker_listener_thread.py,sha256=T5_UikA3MB9bD5W_dckYLPTgixh72vKUlgbBvj9dbM0,1601
|
80
80
|
biolib/compute_node/socket_sender_thread.py,sha256=YgamPHeUm2GjMFGx8qk-99WlZhEs-kAb3q_2O6qByig,971
|
81
81
|
biolib/compute_node/utils.py,sha256=M7i_WTyxbFM3Lri9RWZ_8FeQNYrQIWpKGLfp2I55oeY,4677
|
82
82
|
biolib/compute_node/webserver/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
83
83
|
biolib/compute_node/webserver/gunicorn_flask_application.py,sha256=jPfR_YvNBekLUXWo_vHFV-FIwlb8s8tacKmGHvh93qc,914
|
84
84
|
biolib/compute_node/webserver/webserver.py,sha256=15PkRyhtdtSgFDxa0z78aPO4ciZURsFqJYi-HtUmZF8,6494
|
85
|
-
biolib/compute_node/webserver/webserver_types.py,sha256=
|
85
|
+
biolib/compute_node/webserver/webserver_types.py,sha256=2t8EaFKESnves3BA_NBdnS2yAdo1qwamCFHiSt888nE,380
|
86
86
|
biolib/compute_node/webserver/webserver_utils.py,sha256=XWvwYPbWNR3qS0FYbLLp-MDDfVk0QdaAmg3xPrT0H2s,4234
|
87
87
|
biolib/compute_node/webserver/worker_thread.py,sha256=26tG73TADnOcXsAr7Iyf6smrLlCqB4x-vvmpUb8WqnA,11569
|
88
88
|
biolib/experiments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -109,8 +109,8 @@ biolib/utils/cache_state.py,sha256=u256F37QSRIVwqKlbnCyzAX4EMI-kl6Dwu6qwj-Qmag,3
|
|
109
109
|
biolib/utils/multipart_uploader.py,sha256=XvGP1I8tQuKhAH-QugPRoEsCi9qvbRk-DVBs5PNwwJo,8452
|
110
110
|
biolib/utils/seq_util.py,sha256=jC5WhH63FTD7SLFJbxQGA2hOt9NTwq9zHl_BEec1Z0c,4907
|
111
111
|
biolib/utils/zip/remote_zip.py,sha256=0wErYlxir5921agfFeV1xVjf29l9VNgGQvNlWOlj2Yc,23232
|
112
|
-
pybiolib-1.1.
|
113
|
-
pybiolib-1.1.
|
114
|
-
pybiolib-1.1.
|
115
|
-
pybiolib-1.1.
|
116
|
-
pybiolib-1.1.
|
112
|
+
pybiolib-1.1.2036.dist-info/LICENSE,sha256=F2h7gf8i0agDIeWoBPXDMYScvQOz02pAWkKhTGOHaaw,1067
|
113
|
+
pybiolib-1.1.2036.dist-info/METADATA,sha256=jnDPVQpyei11ZP9m3YnzsgTMA2cvFq97xlWwDi8q_8g,1508
|
114
|
+
pybiolib-1.1.2036.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
115
|
+
pybiolib-1.1.2036.dist-info/entry_points.txt,sha256=p6DyaP_2kctxegTX23WBznnrDi4mz6gx04O5uKtRDXg,42
|
116
|
+
pybiolib-1.1.2036.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|