pybiolib 1.2.1304__tar.gz → 1.2.1308__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.1304 → pybiolib-1.2.1308}/PKG-INFO +1 -1
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/push_application.py +56 -7
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/pyproject.toml +1 -1
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/LICENSE +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/PYPI_README.md +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_data_record/data_record.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/add_copilot_prompts.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/add_gui_files.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/data_record/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/data_record/data_record.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/data_record/push_data.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/data_record/remote_storage_endpoint.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/errors.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/file_utils.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/fuse_mount/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/fuse_mount/experiment_fuse_mount.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/http_client.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/lfs/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/lfs/cache.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/libs/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/libs/fusepy/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/runtime.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/string_utils.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/copilot_template/.github/instructions/general-app-knowledge.instructions.md +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/copilot_template/.github/instructions/style-general.instructions.md +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/copilot_template/.github/instructions/style-python.instructions.md +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/copilot_template/.github/instructions/style-react-ts.instructions.md +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/copilot_template/.github/prompts/biolib_app_inputs.prompt.md +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/copilot_template/.github/prompts/biolib_onboard_repo.prompt.md +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/copilot_template/.github/prompts/biolib_run_apps.prompt.md +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/gui_template/.yarnrc.yml +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/gui_template/App.tsx +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/gui_template/Dockerfile +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/gui_template/index.css +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/gui_template/index.html +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/gui_template/index.tsx +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/gui_template/package.json +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/gui_template/tsconfig.json +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/gui_template/vite.config.mts +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/init_template/.biolib/config.yml +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/init_template/.github/workflows/biolib.yml +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/init_template/.gitignore +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/init_template/Dockerfile +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/init_template/requirements.txt +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/init_template/run.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/init_template/run.sh +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/templates.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/tree_utils.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/types/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/types/account.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/types/account_member.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/types/app.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/types/data_record.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/types/experiment.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/types/file_node.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/types/push.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/types/resource.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/types/resource_permission.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/types/resource_version.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/types/result.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/types/typing.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/types/user.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/utils/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/utils/job_url.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/utils/multinode.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_runtime/runtime.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_session/session.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/api/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/api/client.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/app/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/app/app.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/app/search_apps.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_api_client/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_api_client/api_client.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_api_client/app_types.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_api_client/auth.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_api_client/biolib_app_api.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_api_client/biolib_job_api.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_api_client/common_types.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_api_client/job_types.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_api_client/lfs_types.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_api_client/user_state.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_binary_format/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_binary_format/base_bbf_package.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_binary_format/file_in_container.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_binary_format/module_input.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_binary_format/module_output_v2.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_binary_format/remote_endpoints.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_binary_format/remote_stream_seeker.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_binary_format/saved_job.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_binary_format/stdout_and_stderr.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_binary_format/system_exception.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_binary_format/system_status_update.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_binary_format/utils.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_docker_client/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_download_container.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_errors.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/biolib_logging.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/cli/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/cli/auth.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/cli/data_record.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/cli/download_container.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/cli/init.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/cli/lfs.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/cli/push.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/cli/run.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/cli/runtime.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/cli/sdk.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/cli/start.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/.gitignore +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/cloud_utils/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/cloud_utils/cloud_utils.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/cache_state.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/cache_types.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/docker_image_cache.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/executors/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/executors/docker_executor.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/executors/docker_types.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/executors/tars/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/executors/types.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/job_legacy_input_wait_timeout_thread.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/job_max_runtime_timer_thread.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/job_storage.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/job_worker.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/large_file_system.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/mappings.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/utilization_reporter_thread.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/utils.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/remote_host_proxy.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/socker_listener_thread.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/socket_sender_thread.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/utils.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/webserver/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/webserver/compute_node_results_proxy.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/webserver/gunicorn_flask_application.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/webserver/proxy_utils.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/webserver/webserver.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/webserver/webserver_types.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/webserver/webserver_utils.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/webserver/worker_thread.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/experiments/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/experiments/experiment.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/jobs/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/jobs/job.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/jobs/job_result.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/jobs/types.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/py.typed +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/runtime/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/sdk/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/tables.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/typing_utils.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/user/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/user/sign_in.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/utils/__init__.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/utils/app_uri.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/utils/cache_state.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/utils/multipart_uploader.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/utils/seq_util.py +0 -0
- {pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/utils/zip/remote_zip.py +0 -0
|
@@ -21,7 +21,7 @@ from biolib.biolib_api_client.biolib_app_api import BiolibAppApi
|
|
|
21
21
|
from biolib.biolib_docker_client import BiolibDockerClient
|
|
22
22
|
from biolib.biolib_errors import BioLibError
|
|
23
23
|
from biolib.biolib_logging import logger
|
|
24
|
-
from biolib.typing_utils import Iterable, Optional, Set, TypedDict
|
|
24
|
+
from biolib.typing_utils import Dict, Iterable, Optional, Set, TypedDict
|
|
25
25
|
from biolib.utils.app_uri import parse_app_uri
|
|
26
26
|
|
|
27
27
|
REGEX_MARKDOWN_INLINE_IMAGE = re.compile(r'!\[(?P<alt>.*)\]\((?P<src>.*)\)')
|
|
@@ -109,8 +109,10 @@ def _process_docker_status_updates_with_progress_bar(status_updates: Iterable[Do
|
|
|
109
109
|
|
|
110
110
|
|
|
111
111
|
def _process_docker_status_updates_with_logging(status_updates: Iterable[DockerStatusUpdate], action: str) -> None:
|
|
112
|
-
layer_progress = {}
|
|
113
|
-
layer_status = {}
|
|
112
|
+
layer_progress: Dict[str, float] = {}
|
|
113
|
+
layer_status: Dict[str, str] = {}
|
|
114
|
+
layer_details: Dict[str, Dict[str, int]] = {}
|
|
115
|
+
layer_bytes_at_last_log: Dict[str, int] = {}
|
|
114
116
|
last_log_time = time.time()
|
|
115
117
|
|
|
116
118
|
logger.info(f'{action} Docker image...')
|
|
@@ -128,6 +130,7 @@ def _process_docker_status_updates_with_logging(status_updates: Iterable[DockerS
|
|
|
128
130
|
percentage = (current / total * 100) if total > 0 else 0
|
|
129
131
|
layer_progress[layer_id] = percentage
|
|
130
132
|
layer_status[layer_id] = f'{action.lower()}'
|
|
133
|
+
layer_details[layer_id] = {'current': current, 'total': total}
|
|
131
134
|
elif update.get('status') == 'Layer already exists':
|
|
132
135
|
layer_progress[layer_id] = 100
|
|
133
136
|
layer_status[layer_id] = 'already exists'
|
|
@@ -146,16 +149,33 @@ def _process_docker_status_updates_with_logging(status_updates: Iterable[DockerS
|
|
|
146
149
|
logger.info(f'{action} Docker image - {status}')
|
|
147
150
|
|
|
148
151
|
if current_time - last_log_time >= 10.0:
|
|
149
|
-
_log_progress_summary(
|
|
152
|
+
_log_progress_summary(
|
|
153
|
+
action,
|
|
154
|
+
layer_progress,
|
|
155
|
+
layer_status,
|
|
156
|
+
layer_details,
|
|
157
|
+
layer_bytes_at_last_log,
|
|
158
|
+
current_time - last_log_time,
|
|
159
|
+
)
|
|
160
|
+
layer_bytes_at_last_log = {lid: details['current'] for lid, details in layer_details.items()}
|
|
150
161
|
last_log_time = current_time
|
|
151
162
|
|
|
152
|
-
_log_progress_summary(
|
|
163
|
+
_log_progress_summary(
|
|
164
|
+
action, layer_progress, layer_status, layer_details, layer_bytes_at_last_log, time.time() - last_log_time
|
|
165
|
+
)
|
|
153
166
|
if action == 'Pushing':
|
|
154
167
|
logger.info('Pushing final image manifest...')
|
|
155
168
|
logger.info(f'{action} Docker image completed')
|
|
156
169
|
|
|
157
170
|
|
|
158
|
-
def _log_progress_summary(
|
|
171
|
+
def _log_progress_summary(
|
|
172
|
+
action: str,
|
|
173
|
+
layer_progress: Dict[str, float],
|
|
174
|
+
layer_status: Dict[str, str],
|
|
175
|
+
layer_details: Dict[str, Dict[str, int]],
|
|
176
|
+
layer_bytes_at_last_log: Dict[str, int],
|
|
177
|
+
time_delta: float,
|
|
178
|
+
) -> None:
|
|
159
179
|
if not layer_progress and not layer_status:
|
|
160
180
|
return
|
|
161
181
|
|
|
@@ -174,7 +194,36 @@ def _log_progress_summary(action: str, layer_progress: dict, layer_status: dict)
|
|
|
174
194
|
if status in ['preparing', 'waiting', 'pushing', 'uploading'] and layer_progress.get(layer_id, 0) < 100
|
|
175
195
|
]
|
|
176
196
|
|
|
177
|
-
if active_layers:
|
|
197
|
+
if active_layers and layer_details:
|
|
198
|
+
total_bytes_transferred = 0
|
|
199
|
+
layer_info_parts = []
|
|
200
|
+
|
|
201
|
+
for layer_id in active_layers[:5]:
|
|
202
|
+
if layer_id in layer_details:
|
|
203
|
+
details = layer_details[layer_id]
|
|
204
|
+
current = details['current']
|
|
205
|
+
total = details['total']
|
|
206
|
+
percentage = layer_progress.get(layer_id, 0)
|
|
207
|
+
|
|
208
|
+
bytes_since_last = current - layer_bytes_at_last_log.get(layer_id, 0)
|
|
209
|
+
total_bytes_transferred += bytes_since_last
|
|
210
|
+
|
|
211
|
+
current_mb = current / (1024 * 1024)
|
|
212
|
+
total_mb = total / (1024 * 1024)
|
|
213
|
+
layer_info_parts.append(f'{layer_id}: {current_mb:.1f}/{total_mb:.1f} MB ({percentage:.1f}%)')
|
|
214
|
+
|
|
215
|
+
speed_info = ''
|
|
216
|
+
if time_delta > 0 and total_bytes_transferred > 0:
|
|
217
|
+
speed_mbps = (total_bytes_transferred / (1024 * 1024)) / time_delta
|
|
218
|
+
speed_info = f' @ {speed_mbps:.2f} MB/s'
|
|
219
|
+
|
|
220
|
+
more_layers_info = ''
|
|
221
|
+
if len(active_layers) > 5:
|
|
222
|
+
more_layers_info = f' (+ {len(active_layers) - 5} more)'
|
|
223
|
+
|
|
224
|
+
if layer_info_parts:
|
|
225
|
+
logger.info(f'Active layers: {", ".join(layer_info_parts)}{speed_info}{more_layers_info}')
|
|
226
|
+
elif active_layers:
|
|
178
227
|
logger.info(f'Active layers: {", ".join(active_layers[:5])}{"..." if len(active_layers) > 5 else ""}')
|
|
179
228
|
|
|
180
229
|
|
|
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.1304 → pybiolib-1.2.1308}/biolib/_internal/data_record/remote_storage_endpoint.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/fuse_mount/experiment_fuse_mount.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
|
{pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/gui_template/package.json
RENAMED
|
File without changes
|
{pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/gui_template/tsconfig.json
RENAMED
|
File without changes
|
{pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/gui_template/vite.config.mts
RENAMED
|
File without changes
|
{pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/init_template/.biolib/config.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/_internal/templates/init_template/requirements.txt
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/docker_image_cache.py
RENAMED
|
File without changes
|
{pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/executors/__init__.py
RENAMED
|
File without changes
|
{pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/executors/docker_executor.py
RENAMED
|
File without changes
|
{pybiolib-1.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/job_worker/executors/docker_types.py
RENAMED
|
File without changes
|
{pybiolib-1.2.1304 → pybiolib-1.2.1308}/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.2.1304 → pybiolib-1.2.1308}/biolib/compute_node/webserver/compute_node_results_proxy.py
RENAMED
|
File without changes
|
{pybiolib-1.2.1304 → pybiolib-1.2.1308}/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
|