pybiolib 1.1.1741__tar.gz → 1.1.1747__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.
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/PKG-INFO +1 -2
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_api_client/auth.py +0 -12
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_api_client/biolib_app_api.py +4 -7
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/cloud_utils/cloud_utils.py +2 -1
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/webserver/worker_thread.py +2 -2
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/utils/zip/remote_zip.py +9 -17
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/pyproject.toml +1 -3
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/LICENSE +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/README.md +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/_internal/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/_internal/http_client.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/_internal/push_application.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/api/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/api/client.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/app/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/app/app.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/app/search_apps.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_api_client/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_api_client/api_client.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_api_client/app_types.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_api_client/biolib_account_api.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_api_client/biolib_job_api.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_api_client/biolib_large_file_system_api.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_api_client/common_types.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_api_client/job_types.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_api_client/lfs_types.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_api_client/user_state.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_binary_format/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_binary_format/base_bbf_package.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_binary_format/file_in_container.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_binary_format/module_input.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_binary_format/module_output_v2.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_binary_format/remote_endpoints.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_binary_format/remote_stream_seeker.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_binary_format/saved_job.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_binary_format/stdout_and_stderr.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_binary_format/system_exception.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_binary_format/system_status_update.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_binary_format/utils.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_docker_client/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_download_container.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_errors.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_logging.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/cli/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/cli/download_container.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/cli/init.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/cli/lfs.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/cli/push.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/cli/run.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/cli/runtime.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/cli/start.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/.gitignore +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/cloud_utils/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/cache_state.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/cache_types.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/docker_image_cache.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/executors/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/executors/docker_executor.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/executors/docker_types.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/executors/tars/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/executors/types.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/job_legacy_input_wait_timeout_thread.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/job_max_runtime_timer_thread.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/job_storage.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/job_worker.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/large_file_system.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/mappings.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/utilization_reporter_thread.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/utils.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/remote_host_proxy.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/socker_listener_thread.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/socket_sender_thread.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/utils.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/webserver/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/webserver/gunicorn_flask_application.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/webserver/webserver.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/webserver/webserver_types.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/webserver/webserver_utils.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/experiments/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/experiments/experiment.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/experiments/types.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/jobs/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/jobs/job.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/jobs/job_result.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/jobs/types.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/lfs/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/lfs/cache.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/lfs/utils.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/runtime/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/runtime/results.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/sdk/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/tables.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/templates/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/templates/example_app.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/typing_utils.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/user/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/user/sign_in.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/utils/__init__.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/utils/app_uri.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/utils/cache_state.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/utils/multipart_uploader.py +0 -0
- {pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/utils/seq_util.py +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pybiolib
|
3
|
-
Version: 1.1.
|
3
|
+
Version: 1.1.1747
|
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,20 +1,8 @@
|
|
1
|
-
from requests.auth import AuthBase # type: ignore
|
2
|
-
|
3
1
|
from biolib import api
|
4
2
|
from biolib.biolib_api_client.api_client import UserTokens
|
5
3
|
from biolib.typing_utils import TypedDict, Literal
|
6
4
|
|
7
5
|
|
8
|
-
class BearerAuth(AuthBase):
|
9
|
-
def __init__(self, access_token=None):
|
10
|
-
self.access_token = access_token
|
11
|
-
|
12
|
-
def __call__(self, req):
|
13
|
-
if self.access_token:
|
14
|
-
req.headers['Authorization'] = 'Bearer ' + self.access_token
|
15
|
-
return req
|
16
|
-
|
17
|
-
|
18
6
|
class AuthChallengeCreate(TypedDict):
|
19
7
|
token: str
|
20
8
|
|
@@ -4,14 +4,14 @@ import re
|
|
4
4
|
import os
|
5
5
|
import subprocess
|
6
6
|
|
7
|
-
from requests.exceptions import HTTPError
|
8
|
-
|
9
7
|
import biolib.api
|
10
8
|
from biolib import biolib_errors
|
9
|
+
from biolib._internal.http_client import HttpError
|
11
10
|
from biolib.typing_utils import Optional
|
12
11
|
from biolib.biolib_api_client import AppGetResponse
|
13
12
|
from biolib.biolib_logging import logger
|
14
13
|
|
14
|
+
|
15
15
|
def encode_multipart(data, files):
|
16
16
|
boundary = f'----------{random.randint(0, 1000000000)}'
|
17
17
|
line_array = []
|
@@ -76,13 +76,10 @@ class BiolibAppApi:
|
|
76
76
|
app_response: AppGetResponse = response.json()
|
77
77
|
return app_response
|
78
78
|
|
79
|
-
except
|
80
|
-
if error.
|
79
|
+
except HttpError as error:
|
80
|
+
if error.code == 404:
|
81
81
|
raise biolib_errors.NotFound(f'Application {uri} not found.') from None
|
82
82
|
|
83
|
-
if error.response.status_code == 400:
|
84
|
-
raise biolib_errors.BioLibError(error.response.content.decode()) from None
|
85
|
-
|
86
83
|
raise error
|
87
84
|
|
88
85
|
@staticmethod
|
@@ -68,7 +68,7 @@ class CloudUtils:
|
|
68
68
|
return CloudUtils._webserver_config
|
69
69
|
|
70
70
|
@staticmethod
|
71
|
-
def deregister() -> None:
|
71
|
+
def deregister(error: Optional[str] = None) -> None:
|
72
72
|
if utils.IS_RUNNING_IN_CLOUD:
|
73
73
|
config = CloudUtils.get_webserver_config()
|
74
74
|
try:
|
@@ -78,6 +78,7 @@ class CloudUtils:
|
|
78
78
|
data={
|
79
79
|
'auth_token': config['compute_node_info']['auth_token'],
|
80
80
|
'public_id': config['compute_node_info']['public_id'],
|
81
|
+
'error': error,
|
81
82
|
},
|
82
83
|
)
|
83
84
|
except BaseException as error:
|
@@ -199,7 +199,7 @@ class WorkerThread(threading.Thread):
|
|
199
199
|
logger_no_user_data.error(f'Job {self._job_uuid} worker process did not exit within 10 seconds')
|
200
200
|
if utils.IS_RUNNING_IN_CLOUD:
|
201
201
|
logger_no_user_data.error('Deregistering compute node...')
|
202
|
-
CloudUtils.deregister()
|
202
|
+
CloudUtils.deregister(error='job_cleanup_timed_out')
|
203
203
|
deregistered_due_to_error = True
|
204
204
|
|
205
205
|
# Delete result as error occurred
|
@@ -249,7 +249,7 @@ class WorkerThread(threading.Thread):
|
|
249
249
|
|
250
250
|
if utils.IS_RUNNING_IN_CLOUD:
|
251
251
|
if deregistered_due_to_error:
|
252
|
-
CloudUtils.shutdown()
|
252
|
+
CloudUtils.shutdown() # shutdown now
|
253
253
|
else:
|
254
254
|
webserver_utils.update_auto_shutdown_time()
|
255
255
|
|
@@ -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
|
[tool.poetry]
|
2
2
|
name = "pybiolib"
|
3
|
-
version = "1.1.
|
3
|
+
version = "1.1.1747"
|
4
4
|
description = "BioLib Python Client"
|
5
5
|
readme = "README.md"
|
6
6
|
license = "MIT"
|
@@ -31,7 +31,6 @@ docker = ">=5.0.3"
|
|
31
31
|
importlib-metadata = ">=1.6.1"
|
32
32
|
python = "^3.6.3"
|
33
33
|
pyyaml = ">=5.3.1"
|
34
|
-
requests = ">=2.25.1"
|
35
34
|
rich = ">=12.4.4"
|
36
35
|
typing_extensions = { version = ">=3.10.0", python = "<3.8" }
|
37
36
|
|
@@ -50,7 +49,6 @@ pytest-timeout = "^2.1.0"
|
|
50
49
|
types-click = "==7.1.8"
|
51
50
|
types-Flask = "==1.1.1"
|
52
51
|
types-PyYAML = "==5.4.3"
|
53
|
-
types-requests = "==2.25.0"
|
54
52
|
types-termcolor = "==0.1.1"
|
55
53
|
|
56
54
|
[build-system]
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/biolib_api_client/biolib_large_file_system_api.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/docker_image_cache.py
RENAMED
File without changes
|
{pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/executors/__init__.py
RENAMED
File without changes
|
{pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/executors/docker_executor.py
RENAMED
File without changes
|
{pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/executors/docker_types.py
RENAMED
File without changes
|
{pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/job_worker/executors/tars/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pybiolib-1.1.1741 → pybiolib-1.1.1747}/biolib/compute_node/webserver/gunicorn_flask_application.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|