pybiolib 1.2.1187__tar.gz → 1.2.1228__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.1187 → pybiolib-1.2.1228}/PKG-INFO +4 -2
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/push_application.py +8 -6
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/experiments/experiment.py +76 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/jobs/job.py +1 -1
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/jobs/job_result.py +1 -1
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/pyproject.toml +1 -1
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/LICENSE +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/PYPI_README.md +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_data_record/data_record.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/add_copilot_prompts.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/add_gui_files.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/data_record/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/data_record/data_record.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/data_record/push_data.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/data_record/remote_storage_endpoint.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/errors.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/file_utils.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/fuse_mount/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/fuse_mount/experiment_fuse_mount.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/http_client.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/lfs/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/lfs/cache.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/libs/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/libs/fusepy/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/runtime.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/string_utils.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/copilot_template/.github/instructions/general-app-knowledge.instructions.md +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/copilot_template/.github/instructions/style-general.instructions.md +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/copilot_template/.github/instructions/style-python.instructions.md +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/copilot_template/.github/instructions/style-react-ts.instructions.md +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/copilot_template/.github/prompts/biolib_app_inputs.prompt.md +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/copilot_template/.github/prompts/biolib_onboard_repo.prompt.md +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/copilot_template/.github/prompts/biolib_run_apps.prompt.md +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/gui_template/.yarnrc.yml +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/gui_template/App.tsx +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/gui_template/Dockerfile +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/gui_template/index.css +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/gui_template/index.html +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/gui_template/index.tsx +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/gui_template/package.json +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/gui_template/tsconfig.json +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/gui_template/vite.config.mts +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/init_template/.biolib/config.yml +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/init_template/.github/workflows/biolib.yml +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/init_template/.gitignore +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/init_template/Dockerfile +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/init_template/requirements.txt +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/init_template/run.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/init_template/run.sh +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/templates.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/tree_utils.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/types/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/types/account.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/types/account_member.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/types/app.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/types/data_record.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/types/experiment.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/types/file_node.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/types/push.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/types/resource.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/types/resource_permission.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/types/resource_version.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/types/result.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/types/typing.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/types/user.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/utils/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/utils/multinode.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_runtime/runtime.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_session/session.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/api/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/api/client.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/app/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/app/app.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/app/search_apps.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_api_client/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_api_client/api_client.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_api_client/app_types.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_api_client/auth.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_api_client/biolib_app_api.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_api_client/biolib_job_api.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_api_client/common_types.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_api_client/job_types.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_api_client/lfs_types.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_api_client/user_state.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_binary_format/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_binary_format/base_bbf_package.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_binary_format/file_in_container.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_binary_format/module_input.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_binary_format/module_output_v2.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_binary_format/remote_endpoints.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_binary_format/remote_stream_seeker.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_binary_format/saved_job.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_binary_format/stdout_and_stderr.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_binary_format/system_exception.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_binary_format/system_status_update.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_binary_format/utils.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_docker_client/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_download_container.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_errors.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/biolib_logging.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/cli/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/cli/auth.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/cli/data_record.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/cli/download_container.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/cli/init.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/cli/lfs.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/cli/push.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/cli/run.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/cli/runtime.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/cli/sdk.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/cli/start.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/.gitignore +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/cloud_utils/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/cloud_utils/cloud_utils.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/cache_state.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/cache_types.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/docker_image_cache.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/executors/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/executors/docker_executor.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/executors/docker_types.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/executors/tars/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/executors/types.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/job_legacy_input_wait_timeout_thread.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/job_max_runtime_timer_thread.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/job_storage.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/job_worker.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/large_file_system.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/mappings.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/utilization_reporter_thread.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/utils.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/remote_host_proxy.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/socker_listener_thread.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/socket_sender_thread.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/utils.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/webserver/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/webserver/compute_node_results_proxy.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/webserver/gunicorn_flask_application.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/webserver/proxy_utils.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/webserver/webserver.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/webserver/webserver_types.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/webserver/webserver_utils.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/webserver/worker_thread.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/experiments/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/jobs/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/jobs/types.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/py.typed +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/runtime/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/sdk/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/tables.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/typing_utils.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/user/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/user/sign_in.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/utils/__init__.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/utils/app_uri.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/utils/cache_state.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/utils/multipart_uploader.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/utils/seq_util.py +0 -0
- {pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/utils/zip/remote_zip.py +0 -0
@@ -1,8 +1,9 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: pybiolib
|
3
|
-
Version: 1.2.
|
3
|
+
Version: 1.2.1228
|
4
4
|
Summary: BioLib Python Client
|
5
5
|
License: MIT
|
6
|
+
License-File: LICENSE
|
6
7
|
Keywords: biolib
|
7
8
|
Author: biolib
|
8
9
|
Author-email: hello@biolib.com
|
@@ -17,6 +18,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
17
18
|
Classifier: Programming Language :: Python :: 3.11
|
18
19
|
Classifier: Programming Language :: Python :: 3.12
|
19
20
|
Classifier: Programming Language :: Python :: 3.13
|
21
|
+
Classifier: Programming Language :: Python :: 3.14
|
20
22
|
Provides-Extra: compute-node
|
21
23
|
Requires-Dist: appdirs (>=1.4.3)
|
22
24
|
Requires-Dist: click (>=8.0.0)
|
@@ -248,13 +248,15 @@ def push_application(
|
|
248
248
|
f'(str, int, float, bool, list, dict, null) are used. Original error: {e}'
|
249
249
|
) from e
|
250
250
|
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
251
|
+
if 'assets' in config and 'app_data' not in config:
|
252
|
+
config['app_data'] = config.pop('assets')
|
253
|
+
elif 'assets' in config and 'app_data' in config:
|
254
|
+
raise BioLibError(
|
255
|
+
'In .biolib/config.yml you cannot specify both "app_data" and "assets" fields. Please use only one.'
|
256
|
+
)
|
257
257
|
|
258
|
+
app_data = config.get('app_data')
|
259
|
+
if app_data:
|
258
260
|
field_name = 'app_data' if 'app_data' in config else 'assets'
|
259
261
|
if not isinstance(app_data, str):
|
260
262
|
raise BioLibError(
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import time
|
2
2
|
from collections import OrderedDict
|
3
|
+
from pathlib import Path
|
3
4
|
|
4
5
|
from biolib import api
|
5
6
|
from biolib._internal.types.experiment import DeprecatedExperimentDict, ExperimentDict
|
@@ -8,6 +9,7 @@ from biolib._internal.utils import open_browser_window_from_notebook
|
|
8
9
|
from biolib.biolib_api_client import BiolibApiClient
|
9
10
|
from biolib.biolib_errors import BioLibError
|
10
11
|
from biolib.jobs.job import Job
|
12
|
+
from biolib.jobs.job_result import PathFilter
|
11
13
|
from biolib.jobs.types import JobsPaginatedResponse
|
12
14
|
from biolib.tables import BioLibTable
|
13
15
|
from biolib.typing_utils import Dict, List, Optional, Union
|
@@ -223,6 +225,80 @@ class Experiment:
|
|
223
225
|
"""
|
224
226
|
return self.get_jobs(status=status)
|
225
227
|
|
228
|
+
def save_completed_results(
|
229
|
+
self,
|
230
|
+
output_dir: Optional[str] = None,
|
231
|
+
path_filter: Optional[PathFilter] = None,
|
232
|
+
skip_file_if_exists: bool = False,
|
233
|
+
overwrite: bool = False,
|
234
|
+
) -> None:
|
235
|
+
r"""Save all completed results in this experiment to local folders.
|
236
|
+
|
237
|
+
Creates a folder structure with the experiment name as the root directory,
|
238
|
+
containing a subfolder for each completed result. Only results with
|
239
|
+
'completed' status will be saved.
|
240
|
+
|
241
|
+
Args:
|
242
|
+
output_dir (str, optional): Base directory where the experiment folder
|
243
|
+
will be created. If None, uses the current working directory.
|
244
|
+
path_filter (PathFilter, optional): Filter to select which files in the results to save.
|
245
|
+
Can be a glob pattern string or a callable function.
|
246
|
+
skip_file_if_exists (bool, optional): Whether to skip files that already exist
|
247
|
+
locally instead of raising an error. Defaults to False.
|
248
|
+
overwrite (bool, optional): Whether to overwrite existing files.
|
249
|
+
Defaults to False.
|
250
|
+
|
251
|
+
Example::
|
252
|
+
|
253
|
+
>>> # Save all completed results to current directory
|
254
|
+
>>> experiment.save_completed_results()
|
255
|
+
>>> # This creates: ./experiment_name/result_1/, ./experiment_name/result_2/, etc.
|
256
|
+
|
257
|
+
>>> # Save to specific directory
|
258
|
+
>>> experiment.save_completed_results(output_dir="/path/to/save")
|
259
|
+
>>> # This creates: /path/to/save/experiment_name/result_1/, etc.
|
260
|
+
"""
|
261
|
+
base_dir = Path(output_dir) if output_dir else Path.cwd()
|
262
|
+
|
263
|
+
if base_dir == Path('/'):
|
264
|
+
raise BioLibError("Cannot save experiment results to root directory '/'")
|
265
|
+
|
266
|
+
experiment_folder = base_dir / self.name
|
267
|
+
experiment_folder.mkdir(parents=True, exist_ok=True)
|
268
|
+
|
269
|
+
completed_results: List[Job] = []
|
270
|
+
failed_results = False
|
271
|
+
print('Getting experiment status...')
|
272
|
+
for result in self.get_results():
|
273
|
+
if result.get_status() == 'completed':
|
274
|
+
completed_results.append(result)
|
275
|
+
elif result.get_status() != 'in_progress':
|
276
|
+
failed_results = True
|
277
|
+
|
278
|
+
if failed_results:
|
279
|
+
print(
|
280
|
+
'WARNING: Found failed or cancelled results in the experiment. '
|
281
|
+
'Please verify you have all your results, and consider removing the failed ones.'
|
282
|
+
)
|
283
|
+
if not completed_results:
|
284
|
+
print(f"No completed results found in experiment '{self.name}'")
|
285
|
+
return
|
286
|
+
|
287
|
+
print(f"Saving {len(completed_results)} completed results from experiment '{self.name}' to {experiment_folder}")
|
288
|
+
|
289
|
+
for result in completed_results:
|
290
|
+
result_name = result.get_name()
|
291
|
+
result_folder = experiment_folder / result_name
|
292
|
+
|
293
|
+
result_folder.mkdir(parents=True, exist_ok=True)
|
294
|
+
|
295
|
+
result.save_files(
|
296
|
+
output_dir=str(result_folder),
|
297
|
+
path_filter=path_filter,
|
298
|
+
skip_file_if_exists=skip_file_if_exists,
|
299
|
+
overwrite=overwrite,
|
300
|
+
)
|
301
|
+
|
226
302
|
def rename(self, destination: str) -> None:
|
227
303
|
api.client.patch(f'/resources/{self.uuid}/', data={'uri': destination})
|
228
304
|
self._refetch()
|
@@ -38,7 +38,7 @@ class JobResult:
|
|
38
38
|
self,
|
39
39
|
output_dir: str,
|
40
40
|
path_filter: Optional[PathFilter] = None,
|
41
|
-
skip_file_if_exists:
|
41
|
+
skip_file_if_exists: bool = False,
|
42
42
|
overwrite: bool = False,
|
43
43
|
) -> None:
|
44
44
|
module_output = self._get_module_output()
|
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.1187 → pybiolib-1.2.1228}/biolib/_internal/data_record/remote_storage_endpoint.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pybiolib-1.2.1187 → pybiolib-1.2.1228}/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.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/gui_template/package.json
RENAMED
File without changes
|
{pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/gui_template/tsconfig.json
RENAMED
File without changes
|
{pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/gui_template/vite.config.mts
RENAMED
File without changes
|
{pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/_internal/templates/init_template/.biolib/config.yml
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{pybiolib-1.2.1187 → pybiolib-1.2.1228}/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
|
{pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/docker_image_cache.py
RENAMED
File without changes
|
{pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/executors/__init__.py
RENAMED
File without changes
|
{pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/executors/docker_executor.py
RENAMED
File without changes
|
{pybiolib-1.2.1187 → pybiolib-1.2.1228}/biolib/compute_node/job_worker/executors/docker_types.py
RENAMED
File without changes
|
{pybiolib-1.2.1187 → pybiolib-1.2.1228}/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.1187 → pybiolib-1.2.1228}/biolib/compute_node/webserver/compute_node_results_proxy.py
RENAMED
File without changes
|
{pybiolib-1.2.1187 → pybiolib-1.2.1228}/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
|