pybiolib 1.2.659__tar.gz → 1.2.678__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.659 → pybiolib-1.2.678}/PKG-INFO +1 -1
- pybiolib-1.2.678/biolib/_internal/tree_utils.py +106 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/jobs/job.py +58 -1
- {pybiolib-1.2.659 → pybiolib-1.2.678}/pyproject.toml +1 -1
- {pybiolib-1.2.659 → pybiolib-1.2.678}/LICENSE +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/PYPI_README.md +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_data_record/data_record.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/data_record/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/data_record/data_record.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/data_record/push_data.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/data_record/remote_storage_endpoint.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/file_utils.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/fuse_mount/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/fuse_mount/experiment_fuse_mount.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/http_client.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/lfs/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/lfs/cache.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/libs/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/libs/fusepy/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/llm_instructions/.github/copilot-instructions.md +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/llm_instructions/.github/prompts/biolib_app_inputs.prompt.md +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/llm_instructions/.github/prompts/biolib_run_apps.prompt.md +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/llm_instructions/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/push_application.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/runtime.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/types/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/types/app.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/types/data_record.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/types/experiment.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/types/file_node.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/types/resource.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/types/resource_version.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/types/typing.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/utils/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_internal/utils/multinode.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_runtime/runtime.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/_session/session.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/api/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/api/client.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/app/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/app/app.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/app/search_apps.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_api_client/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_api_client/api_client.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_api_client/app_types.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_api_client/auth.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_api_client/biolib_app_api.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_api_client/biolib_job_api.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_api_client/common_types.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_api_client/job_types.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_api_client/lfs_types.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_api_client/user_state.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_binary_format/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_binary_format/base_bbf_package.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_binary_format/file_in_container.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_binary_format/module_input.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_binary_format/module_output_v2.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_binary_format/remote_endpoints.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_binary_format/remote_stream_seeker.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_binary_format/saved_job.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_binary_format/stdout_and_stderr.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_binary_format/system_exception.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_binary_format/system_status_update.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_binary_format/utils.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_docker_client/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_download_container.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_errors.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/biolib_logging.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/cli/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/cli/auth.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/cli/data_record.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/cli/download_container.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/cli/init.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/cli/lfs.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/cli/push.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/cli/run.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/cli/runtime.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/cli/sdk.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/cli/start.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/.gitignore +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/cloud_utils/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/cloud_utils/cloud_utils.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/cache_state.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/cache_types.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/docker_image_cache.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/executors/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/executors/docker_executor.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/executors/docker_types.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/executors/tars/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/executors/types.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/job_legacy_input_wait_timeout_thread.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/job_max_runtime_timer_thread.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/job_storage.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/job_worker.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/large_file_system.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/mappings.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/utilization_reporter_thread.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/utils.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/remote_host_proxy.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/socker_listener_thread.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/socket_sender_thread.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/utils.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/webserver/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/webserver/gunicorn_flask_application.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/webserver/webserver.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/webserver/webserver_types.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/webserver/webserver_utils.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/webserver/worker_thread.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/experiments/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/experiments/experiment.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/jobs/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/jobs/job_result.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/jobs/types.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/py.typed +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/runtime/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/sdk/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/tables.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/templates/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/templates/example_app.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/typing_utils.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/user/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/user/sign_in.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/utils/__init__.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/utils/app_uri.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/utils/cache_state.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/utils/multipart_uploader.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/utils/seq_util.py +0 -0
- {pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/utils/zip/remote_zip.py +0 -0
@@ -0,0 +1,106 @@
|
|
1
|
+
"""Utilities for displaying file trees and formatting file sizes."""
|
2
|
+
|
3
|
+
from typing import Any, Dict, List, Optional, Union
|
4
|
+
|
5
|
+
from biolib.biolib_binary_format.utils import LazyLoadedFile
|
6
|
+
|
7
|
+
|
8
|
+
def format_size(size_bytes: int) -> str:
|
9
|
+
"""Convert bytes to human-readable format (e.g., 2.5KB).
|
10
|
+
|
11
|
+
Args:
|
12
|
+
size_bytes: File size in bytes
|
13
|
+
|
14
|
+
Returns:
|
15
|
+
Human-readable string representation of the file size
|
16
|
+
"""
|
17
|
+
if size_bytes < 1024:
|
18
|
+
return f'{size_bytes}B'
|
19
|
+
elif size_bytes < 1024 * 1024:
|
20
|
+
return f'{size_bytes/1024:.1f}KB'
|
21
|
+
elif size_bytes < 1024 * 1024 * 1024:
|
22
|
+
return f'{size_bytes/(1024*1024):.1f}MB'
|
23
|
+
else:
|
24
|
+
return f'{size_bytes/(1024*1024*1024):.1f}GB'
|
25
|
+
|
26
|
+
|
27
|
+
def build_tree_str(
|
28
|
+
data: Dict[str, Any],
|
29
|
+
prefix: str = '',
|
30
|
+
tree_lines: Optional[List[str]] = None,
|
31
|
+
blue: str = '\033[34m',
|
32
|
+
white: str = '\033[90m', # Changed from white (37m) to dark gray (90m) for better visibility on light backgrounds
|
33
|
+
reset: str = '\033[0m',
|
34
|
+
) -> List[str]:
|
35
|
+
"""Build a string representation of a file tree with color-coded directories and files.
|
36
|
+
|
37
|
+
Args:
|
38
|
+
data: Hierarchical tree structure of directories and files
|
39
|
+
prefix: Line prefix for indentation and tree structure characters
|
40
|
+
tree_lines: List to accumulate tree lines
|
41
|
+
blue: ANSI color code for directories
|
42
|
+
white: ANSI color code for files (defaults to dark gray for visibility on light backgrounds)
|
43
|
+
reset: ANSI color code to reset color
|
44
|
+
|
45
|
+
Returns:
|
46
|
+
List of tree lines for display
|
47
|
+
"""
|
48
|
+
if tree_lines is None:
|
49
|
+
tree_lines = []
|
50
|
+
|
51
|
+
# Get sorted items, keeping directories first
|
52
|
+
items = sorted([(k, v) for k, v in data.items() if k != '__files__'])
|
53
|
+
files_list = sorted(data.get('__files__', []), key=lambda f: f['name'])
|
54
|
+
|
55
|
+
# Add directories
|
56
|
+
for i, (key, value) in enumerate(items):
|
57
|
+
is_last_dir = i == len(items) - 1 and not files_list
|
58
|
+
|
59
|
+
if is_last_dir:
|
60
|
+
tree_lines.append(f'{prefix}└── {blue}{key}{reset}')
|
61
|
+
build_tree_str(value, prefix + ' ', tree_lines, blue, white, reset)
|
62
|
+
else:
|
63
|
+
tree_lines.append(f'{prefix}├── {blue}{key}{reset}')
|
64
|
+
build_tree_str(value, prefix + '│ ', tree_lines, blue, white, reset)
|
65
|
+
|
66
|
+
# Add files with their sizes
|
67
|
+
for i, file in enumerate(files_list):
|
68
|
+
is_last = i == len(files_list) - 1
|
69
|
+
size_str = format_size(file['size'])
|
70
|
+
file_name = file['name']
|
71
|
+
|
72
|
+
if is_last:
|
73
|
+
tree_lines.append(f'{prefix}└── {white}{file_name} ({size_str}){reset}')
|
74
|
+
else:
|
75
|
+
tree_lines.append(f'{prefix}├── {white}{file_name} ({size_str}){reset}')
|
76
|
+
|
77
|
+
return tree_lines
|
78
|
+
|
79
|
+
|
80
|
+
def build_tree_from_files(files: List[LazyLoadedFile]) -> Dict[str, Union[Dict[str, Any], List[Dict[str, Any]]]]:
|
81
|
+
"""Build a hierarchical tree structure from a list of files.
|
82
|
+
|
83
|
+
Args:
|
84
|
+
files: List of files to organize into a tree
|
85
|
+
|
86
|
+
Returns:
|
87
|
+
Hierarchical tree structure of directories and files
|
88
|
+
"""
|
89
|
+
tree: Dict[str, Union[Dict[str, Any], List[Dict[str, Any]]]] = {}
|
90
|
+
for file in files:
|
91
|
+
parts = file.path.lstrip('/').split('/')
|
92
|
+
current: Dict[str, Union[Dict[str, Any], List[Dict[str, Any]]]] = tree
|
93
|
+
for i, part in enumerate(parts):
|
94
|
+
if i == len(parts) - 1: # This is a file
|
95
|
+
if '__files__' not in current:
|
96
|
+
current['__files__'] = []
|
97
|
+
files_list = current['__files__']
|
98
|
+
assert isinstance(files_list, list)
|
99
|
+
files_list.append({'name': part, 'size': file.length})
|
100
|
+
else: # This is a directory
|
101
|
+
if part not in current:
|
102
|
+
current[part] = {}
|
103
|
+
dir_dict = current[part]
|
104
|
+
assert isinstance(dir_dict, dict)
|
105
|
+
current = dir_dict
|
106
|
+
return tree
|
@@ -9,6 +9,7 @@ from urllib.parse import urlparse
|
|
9
9
|
import biolib.api.client
|
10
10
|
from biolib import utils
|
11
11
|
from biolib._internal.http_client import HttpClient
|
12
|
+
from biolib._internal.tree_utils import build_tree_from_files, build_tree_str
|
12
13
|
from biolib._internal.utils import open_browser_window_from_notebook
|
13
14
|
from biolib.api.client import ApiClient
|
14
15
|
from biolib.biolib_api_client import BiolibApiClient, CreatedJobDict
|
@@ -56,7 +57,48 @@ class Job:
|
|
56
57
|
return f"Job for {self._job_dict['app_uri']} created at {self._job_dict['created_at']} ({self._uuid})"
|
57
58
|
|
58
59
|
def __repr__(self):
|
59
|
-
|
60
|
+
# Get job status and shareable link
|
61
|
+
status = self.get_status()
|
62
|
+
shareable_link = self.get_shareable_link()
|
63
|
+
|
64
|
+
# ANSI color codes for terminal output
|
65
|
+
blue = '\033[34m'
|
66
|
+
white = '\033[37m'
|
67
|
+
reset = '\033[0m'
|
68
|
+
|
69
|
+
# Start with the header section
|
70
|
+
output_lines = [
|
71
|
+
'--- BioLib Result ---',
|
72
|
+
f'ID: {self._uuid}',
|
73
|
+
f'Status: {status}',
|
74
|
+
f'Link: {shareable_link}',
|
75
|
+
]
|
76
|
+
|
77
|
+
# Only show output files if the job is not pending
|
78
|
+
if not self.is_pending():
|
79
|
+
output_lines.append('Output Files:')
|
80
|
+
|
81
|
+
try:
|
82
|
+
# Get files from the job
|
83
|
+
files = self.list_output_files()
|
84
|
+
|
85
|
+
# If no files, indicate that
|
86
|
+
if not files:
|
87
|
+
output_lines.append('No output files')
|
88
|
+
return '\n'.join(output_lines)
|
89
|
+
|
90
|
+
# If more than 25 files, show simplified message
|
91
|
+
if len(files) > 25:
|
92
|
+
output_lines.append(f'{len(files)} output files in result.')
|
93
|
+
return '\n'.join(output_lines)
|
94
|
+
|
95
|
+
# Build the tree representation
|
96
|
+
tree_data = build_tree_from_files(files)
|
97
|
+
output_lines.extend(build_tree_str(tree_data, blue=blue, white=white, reset=reset))
|
98
|
+
except Exception:
|
99
|
+
output_lines.append('Error accessing output files')
|
100
|
+
|
101
|
+
return '\n'.join(output_lines)
|
60
102
|
|
61
103
|
@property
|
62
104
|
def id(self) -> str: # pylint: disable=invalid-name
|
@@ -128,6 +170,21 @@ class Job:
|
|
128
170
|
self,
|
129
171
|
path_filter: Optional[PathFilter] = None,
|
130
172
|
) -> List[LazyLoadedFile]:
|
173
|
+
"""List output files from the job.
|
174
|
+
|
175
|
+
Args:
|
176
|
+
path_filter (PathFilter, optional): Filter to apply to the output files.
|
177
|
+
Can be a string glob pattern or a callable that takes a path string and returns a boolean.
|
178
|
+
|
179
|
+
Returns:
|
180
|
+
List[LazyLoadedFile]: List of output files.
|
181
|
+
|
182
|
+
Example::
|
183
|
+
>>> job = biolib.get_job("job_id")
|
184
|
+
>>> output_files = job.list_output_files()
|
185
|
+
>>> # Filter files with a glob pattern
|
186
|
+
>>> output_files = job.list_output_files("*.pdb")
|
187
|
+
"""
|
131
188
|
return self.result.list_output_files(path_filter=path_filter)
|
132
189
|
|
133
190
|
def get_output_file(self, filename: str) -> LazyLoadedFile:
|
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.659 → pybiolib-1.2.678}/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
|
File without changes
|
File without changes
|
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.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/executors/docker_executor.py
RENAMED
File without changes
|
{pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/executors/docker_types.py
RENAMED
File without changes
|
{pybiolib-1.2.659 → pybiolib-1.2.678}/biolib/compute_node/job_worker/executors/tars/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{pybiolib-1.2.659 → pybiolib-1.2.678}/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.659 → pybiolib-1.2.678}/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.659 → pybiolib-1.2.678}/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
|