pybiolib 1.2.249__tar.gz → 1.2.257__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.2.249 → pybiolib-1.2.257}/PKG-INFO +1 -1
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/push_application.py +5 -7
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/api/client.py +13 -10
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_api_client/api_client.py +7 -4
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_logging.py +3 -4
- {pybiolib-1.2.249 → pybiolib-1.2.257}/pyproject.toml +1 -1
- {pybiolib-1.2.249 → pybiolib-1.2.257}/LICENSE +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/PYPI_README.md +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_data_record/data_record.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/data_record/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/data_record/data_record.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/data_record/push_data.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/data_record/remote_storage_endpoint.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/file_utils.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/fuse_mount/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/fuse_mount/experiment_fuse_mount.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/http_client.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/lfs/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/lfs/cache.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/libs/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/libs/fusepy/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/runtime.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/types/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/types/app.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/types/data_record.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/types/experiment.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/types/file_node.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/types/resource.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/types/resource_version.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/types/typing.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/utils/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_internal/utils/multinode.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/_runtime/runtime.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/api/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/app/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/app/app.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/app/search_apps.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_api_client/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_api_client/app_types.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_api_client/auth.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_api_client/biolib_app_api.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_api_client/biolib_job_api.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_api_client/common_types.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_api_client/job_types.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_api_client/lfs_types.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_api_client/user_state.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_binary_format/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_binary_format/base_bbf_package.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_binary_format/file_in_container.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_binary_format/module_input.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_binary_format/module_output_v2.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_binary_format/remote_endpoints.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_binary_format/remote_stream_seeker.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_binary_format/saved_job.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_binary_format/stdout_and_stderr.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_binary_format/system_exception.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_binary_format/system_status_update.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_binary_format/utils.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_docker_client/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_download_container.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/biolib_errors.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/cli/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/cli/auth.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/cli/data_record.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/cli/download_container.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/cli/init.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/cli/lfs.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/cli/push.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/cli/run.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/cli/runtime.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/cli/start.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/.gitignore +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/cloud_utils/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/cloud_utils/cloud_utils.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/cache_state.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/cache_types.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/docker_image_cache.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/executors/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/executors/docker_executor.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/executors/docker_types.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/executors/tars/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/executors/types.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/job_legacy_input_wait_timeout_thread.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/job_max_runtime_timer_thread.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/job_storage.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/job_worker.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/large_file_system.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/mappings.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/utilization_reporter_thread.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/utils.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/remote_host_proxy.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/socker_listener_thread.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/socket_sender_thread.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/utils.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/webserver/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/webserver/gunicorn_flask_application.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/webserver/webserver.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/webserver/webserver_types.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/webserver/webserver_utils.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/webserver/worker_thread.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/experiments/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/experiments/experiment.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/jobs/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/jobs/job.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/jobs/job_result.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/jobs/types.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/runtime/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/sdk/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/tables.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/templates/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/templates/example_app.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/typing_utils.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/user/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/user/sign_in.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/utils/__init__.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/utils/app_uri.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/utils/cache_state.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/utils/multipart_uploader.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/utils/seq_util.py +0 -0
- {pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/utils/zip/remote_zip.py +0 -0
@@ -219,12 +219,6 @@ def push_application(
|
|
219
219
|
docker_tags = new_app_version_json.get('docker_tags', {})
|
220
220
|
if not app_version_to_copy_images_from and docker_tags:
|
221
221
|
logger.info('Found docker images to push.')
|
222
|
-
|
223
|
-
# Auth to be sent to proxy
|
224
|
-
# The tokens are sent as "{access_token},{job_id}". We leave job_id blank on push.
|
225
|
-
tokens = f'{BiolibApiClient.get().access_token},'
|
226
|
-
auth_config = {'username': 'biolib', 'password': tokens}
|
227
|
-
|
228
222
|
docker_client = BiolibDockerClient.get_docker_client()
|
229
223
|
|
230
224
|
for module_name, repo_and_tag in docker_tags.items():
|
@@ -264,7 +258,11 @@ def push_application(
|
|
264
258
|
tag=tag,
|
265
259
|
stream=True,
|
266
260
|
decode=True,
|
267
|
-
auth_config=
|
261
|
+
auth_config={
|
262
|
+
'username': 'biolib',
|
263
|
+
# For legacy reasons access token is sent with trailing comma ','
|
264
|
+
'password': api_client.resource_deploy_key or f'{api_client.access_token},',
|
265
|
+
},
|
268
266
|
)
|
269
267
|
|
270
268
|
process_docker_status_updates(push_status_updates, action='Pushing')
|
@@ -75,16 +75,19 @@ class ApiClient(HttpClient):
|
|
75
75
|
# Only keep header keys with a value
|
76
76
|
headers: Dict[str, str] = {key: value for key, value in (opt_headers or {}).items() if value}
|
77
77
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
78
|
+
if authenticate:
|
79
|
+
deprecated_api_client = DeprecatedApiClient.get()
|
80
|
+
if deprecated_api_client.is_signed_in:
|
81
|
+
deprecated_api_client.refresh_access_token()
|
82
|
+
|
83
|
+
if deprecated_api_client.resource_deploy_key:
|
84
|
+
headers['Authorization'] = f'Token {deprecated_api_client.resource_deploy_key}'
|
85
|
+
else:
|
86
|
+
# Adding access_token outside is_signed_in check as job_worker.py currently sets access_token
|
87
|
+
# without setting refresh_token
|
88
|
+
access_token = deprecated_api_client.access_token
|
89
|
+
if access_token:
|
90
|
+
headers['Authorization'] = f'Bearer {access_token}'
|
88
91
|
|
89
92
|
headers['client-type'] = 'biolib-python'
|
90
93
|
headers['client-version'] = ApiClient._biolib_package_version
|
@@ -30,13 +30,14 @@ class _ApiClient:
|
|
30
30
|
self.base_url: str = base_url
|
31
31
|
self.access_token: Optional[str] = access_token # TODO: Deprecate passing access_token in constructor
|
32
32
|
self.refresh_token: Optional[str] = None
|
33
|
+
self.resource_deploy_key: Optional[str] = None
|
33
34
|
|
34
35
|
self._user_state = UserState()
|
35
36
|
self._sign_in_attempted: bool = False
|
36
37
|
|
37
38
|
@property
|
38
39
|
def is_signed_in(self) -> bool:
|
39
|
-
return bool(self.refresh_token)
|
40
|
+
return bool(self.refresh_token or self.resource_deploy_key)
|
40
41
|
|
41
42
|
def set_user_tokens(self, user_tokens: UserTokens) -> None:
|
42
43
|
with self._user_state as user_state:
|
@@ -57,8 +58,7 @@ class _ApiClient:
|
|
57
58
|
user_state['refresh_token'] = None
|
58
59
|
|
59
60
|
def refresh_access_token(self) -> None:
|
60
|
-
if not self.is_signed_in:
|
61
|
-
# Can't refresh access token if not signed in
|
61
|
+
if not self.is_signed_in or self.resource_deploy_key:
|
62
62
|
return
|
63
63
|
|
64
64
|
if self.access_token:
|
@@ -95,7 +95,10 @@ class _ApiClient:
|
|
95
95
|
api_token = os.getenv('BIOLIB_TOKEN', default=None)
|
96
96
|
|
97
97
|
if api_token:
|
98
|
-
|
98
|
+
if api_token.startswith('bld_'):
|
99
|
+
self.resource_deploy_key = api_token
|
100
|
+
else:
|
101
|
+
self.sign_in_with_api_token(api_token)
|
99
102
|
else:
|
100
103
|
with self._user_state as user_state:
|
101
104
|
refresh_token_from_state = user_state['refresh_token']
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import logging
|
2
|
-
import sys
|
3
2
|
import os
|
3
|
+
import sys
|
4
4
|
|
5
5
|
_DEFAULT_LOGGER_FORMAT = '%(asctime)s | %(levelname)s : %(message)s'
|
6
6
|
|
@@ -14,7 +14,6 @@ logging.addLevelName(TRACE, 'TRACE')
|
|
14
14
|
|
15
15
|
# note: Logger classes should never be instantiated directly
|
16
16
|
class _BioLibLogger(logging.Logger):
|
17
|
-
|
18
17
|
def __init__(self, name: str, level=logging.INFO):
|
19
18
|
super(_BioLibLogger, self).__init__(name=name, level=level)
|
20
19
|
|
@@ -44,7 +43,7 @@ class _BioLibLogger(logging.Logger):
|
|
44
43
|
|
45
44
|
def _get_biolib_logger_instance(name: str) -> _BioLibLogger:
|
46
45
|
# for thread safety use the global lock of logging
|
47
|
-
logging.
|
46
|
+
logging._lock.acquire() # type: ignore # pylint: disable=protected-access
|
48
47
|
|
49
48
|
original_logger_class = logging.getLoggerClass()
|
50
49
|
try:
|
@@ -55,7 +54,7 @@ def _get_biolib_logger_instance(name: str) -> _BioLibLogger:
|
|
55
54
|
logging.setLoggerClass(original_logger_class)
|
56
55
|
return biolib_logger # type: ignore
|
57
56
|
finally:
|
58
|
-
logging.
|
57
|
+
logging._lock.release() # type: ignore # pylint: disable=protected-access
|
59
58
|
|
60
59
|
|
61
60
|
def _get_no_user_data_logger() -> _BioLibLogger:
|
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.2.249 → pybiolib-1.2.257}/biolib/_internal/data_record/remote_storage_endpoint.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
|
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.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/executors/docker_executor.py
RENAMED
File without changes
|
{pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/executors/docker_types.py
RENAMED
File without changes
|
{pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/executors/tars/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/job_max_runtime_timer_thread.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pybiolib-1.2.249 → pybiolib-1.2.257}/biolib/compute_node/job_worker/utilization_reporter_thread.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pybiolib-1.2.249 → pybiolib-1.2.257}/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
|