pybiolib 1.2.772__py3-none-any.whl → 1.2.796__py3-none-any.whl
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.
- biolib/_internal/push_application.py +7 -2
- biolib/_internal/types/push.py +6 -0
- biolib/cli/push.py +9 -1
- biolib/experiments/experiment.py +24 -0
- biolib/sdk/__init__.py +3 -0
- {pybiolib-1.2.772.dist-info → pybiolib-1.2.796.dist-info}/METADATA +1 -1
- {pybiolib-1.2.772.dist-info → pybiolib-1.2.796.dist-info}/RECORD +10 -9
- {pybiolib-1.2.772.dist-info → pybiolib-1.2.796.dist-info}/LICENSE +0 -0
- {pybiolib-1.2.772.dist-info → pybiolib-1.2.796.dist-info}/WHEEL +0 -0
- {pybiolib-1.2.772.dist-info → pybiolib-1.2.796.dist-info}/entry_points.txt +0 -0
@@ -11,6 +11,7 @@ from biolib._internal.data_record.push_data import (
|
|
11
11
|
validate_data_path_and_get_files_and_size_of_directory,
|
12
12
|
)
|
13
13
|
from biolib._internal.file_utils import get_files_and_size_of_directory, get_iterable_zip_stream
|
14
|
+
from biolib._internal.types.push import PushResponseDict
|
14
15
|
from biolib.biolib_api_client import BiolibApiClient
|
15
16
|
from biolib.biolib_api_client.biolib_app_api import BiolibAppApi
|
16
17
|
from biolib.biolib_docker_client import BiolibDockerClient
|
@@ -79,7 +80,8 @@ def push_application(
|
|
79
80
|
app_version_to_copy_images_from: Optional[str],
|
80
81
|
set_as_active: bool,
|
81
82
|
set_as_published: bool,
|
82
|
-
|
83
|
+
dry_run: bool = False,
|
84
|
+
) -> Optional[PushResponseDict]:
|
83
85
|
parsed_uri = parse_app_uri(app_uri)
|
84
86
|
app_name = parsed_uri['app_name']
|
85
87
|
|
@@ -199,7 +201,10 @@ def push_application(
|
|
199
201
|
raise BioLibError(
|
200
202
|
'To push a version with app_data the app must be set to "Allow Client-Side Source Code Access"'
|
201
203
|
)
|
202
|
-
|
204
|
+
if dry_run:
|
205
|
+
logger.info('Successfully completed dry-run. No new version was pushed.')
|
206
|
+
return None
|
207
|
+
|
203
208
|
new_app_version_json = BiolibAppApi.push_app_version(
|
204
209
|
semantic_version=semantic_version,
|
205
210
|
app_id=app['public_id'],
|
biolib/cli/push.py
CHANGED
@@ -13,7 +13,14 @@ from biolib.biolib_logging import logger, logger_no_user_data
|
|
13
13
|
@click.option('--copy-images-from-version', required=False)
|
14
14
|
@click.option('--dev', is_flag=True, default=False, required=False)
|
15
15
|
@click.option('--pre-release', is_flag=True, default=False, required=False)
|
16
|
-
|
16
|
+
@click.option(
|
17
|
+
'--dry-run',
|
18
|
+
is_flag=True,
|
19
|
+
default=False,
|
20
|
+
required=False,
|
21
|
+
help='Perform validation without pushing',
|
22
|
+
)
|
23
|
+
def push(uri, path: str, copy_images_from_version: Optional[str], dev: bool, pre_release: bool, dry_run: bool) -> None:
|
17
24
|
logger.configure(default_log_level=logging.INFO)
|
18
25
|
logger_no_user_data.configure(default_log_level=logging.INFO)
|
19
26
|
set_as_active = True
|
@@ -33,4 +40,5 @@ def push(uri, path: str, copy_images_from_version: Optional[str], dev: bool, pre
|
|
33
40
|
app_version_to_copy_images_from=copy_images_from_version,
|
34
41
|
set_as_active=set_as_active,
|
35
42
|
set_as_published=set_as_published,
|
43
|
+
dry_run=dry_run,
|
36
44
|
)
|
biolib/experiments/experiment.py
CHANGED
@@ -4,11 +4,14 @@ from collections import OrderedDict
|
|
4
4
|
from biolib import api
|
5
5
|
from biolib._internal.types.experiment import DeprecatedExperimentDict, ExperimentDict
|
6
6
|
from biolib._internal.types.resource import ResourceDetailedDict
|
7
|
+
from biolib._internal.utils import open_browser_window_from_notebook
|
8
|
+
from biolib.biolib_api_client import BiolibApiClient
|
7
9
|
from biolib.biolib_errors import BioLibError
|
8
10
|
from biolib.jobs.job import Job
|
9
11
|
from biolib.jobs.types import JobsPaginatedResponse
|
10
12
|
from biolib.tables import BioLibTable
|
11
13
|
from biolib.typing_utils import Dict, List, Optional, Union
|
14
|
+
from biolib.utils import IS_RUNNING_IN_NOTEBOOK
|
12
15
|
|
13
16
|
|
14
17
|
class Experiment:
|
@@ -42,6 +45,10 @@ class Experiment:
|
|
42
45
|
def uuid(self) -> str:
|
43
46
|
return self._resource_dict['uuid']
|
44
47
|
|
48
|
+
@property
|
49
|
+
def id(self) -> str:
|
50
|
+
return self.uuid
|
51
|
+
|
45
52
|
@property
|
46
53
|
def name(self) -> str:
|
47
54
|
return self._resource_dict['name']
|
@@ -235,3 +242,20 @@ class Experiment:
|
|
235
242
|
|
236
243
|
def _refetch(self) -> None:
|
237
244
|
self._resource_dict = self._get_resource_dict_by_uuid(uuid=self._resource_dict['uuid'])
|
245
|
+
|
246
|
+
def open_browser(self) -> None:
|
247
|
+
"""Open a browser window to view this experiment.
|
248
|
+
|
249
|
+
If running in a notebook, this will attempt to open a new browser window.
|
250
|
+
Otherwise, it will print a URL that you can copy and paste.
|
251
|
+
"""
|
252
|
+
api_client = BiolibApiClient.get()
|
253
|
+
url_to_open = f'{api_client.base_url}/experiments/{self.id}/'
|
254
|
+
|
255
|
+
if IS_RUNNING_IN_NOTEBOOK:
|
256
|
+
print(f'Opening experiment page at: {url_to_open}')
|
257
|
+
print('If your browser does not open automatically, click on the link above.')
|
258
|
+
open_browser_window_from_notebook(url_to_open)
|
259
|
+
else:
|
260
|
+
print('Please copy and paste the following link into your browser:')
|
261
|
+
print(url_to_open)
|
biolib/sdk/__init__.py
CHANGED
@@ -24,6 +24,9 @@ def push_app_version(uri: str, path: str) -> _BioLibApp:
|
|
24
24
|
set_as_active=False,
|
25
25
|
set_as_published=False,
|
26
26
|
)
|
27
|
+
if not push_data:
|
28
|
+
raise Exception('Failed to push application; please check the logs for more details')
|
29
|
+
|
27
30
|
uri = f'{push_data["app_uri"]}:{push_data["sematic_version"]}'
|
28
31
|
return _BioLibApp(uri)
|
29
32
|
|
@@ -19,7 +19,7 @@ biolib/_internal/llm_instructions/.github/copilot-instructions.md,sha256=GCGYxfj
|
|
19
19
|
biolib/_internal/llm_instructions/.github/prompts/biolib_app_inputs.prompt.md,sha256=DcBUNaViuNfXoomj-IVUcIcBtJlXuIYOroUfDM_R6wU,3212
|
20
20
|
biolib/_internal/llm_instructions/.github/prompts/biolib_run_apps.prompt.md,sha256=HYv-MgpQKIU7Hv90SvZ3tqXY6KWxYVnqamXDRyInOHM,7926
|
21
21
|
biolib/_internal/llm_instructions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
22
|
-
biolib/_internal/push_application.py,sha256=
|
22
|
+
biolib/_internal/push_application.py,sha256=I7yHGcwK6udc2hVmOQIc1BcQBipAMibEjURMI6HgdXk,12502
|
23
23
|
biolib/_internal/runtime.py,sha256=BiHl4klUHr36MCpqKaUso4idHeBZfPAahLYRQrabFqA,486
|
24
24
|
biolib/_internal/tree_utils.py,sha256=_Q_6_NDtIiROcefymqxEVddjqti6Mt3OZ4U0GcDW61s,3904
|
25
25
|
biolib/_internal/types/__init__.py,sha256=WvtlSHh77QhYVTLeRpoPAzqvByLzbEPf_ZqYGHFlQug,247
|
@@ -27,6 +27,7 @@ biolib/_internal/types/app.py,sha256=Mz2QGD_jESX-K9JYnLWPo4YA__Q_1FQQTk9pvidCohU
|
|
27
27
|
biolib/_internal/types/data_record.py,sha256=9r_vdhVs60YTnzU4XQFXfDrfS2P2MqD3BH2xa7lk6ck,852
|
28
28
|
biolib/_internal/types/experiment.py,sha256=2SbCLSwgLglmQgyUHYb5SvO0Cfsgs-f3jqao9--Z_sY,682
|
29
29
|
biolib/_internal/types/file_node.py,sha256=T6BIqo662f3nwMBRqtBHYsg6YuuUaKpiokHcVjv9_ME,283
|
30
|
+
biolib/_internal/types/push.py,sha256=qSXCjdzOmHG7_QiwXaNSrVkESTMxnIKPvEut-9Mqt-g,108
|
30
31
|
biolib/_internal/types/resource.py,sha256=LQnIYBR8Fi7zvnA5vBpzcL2c6ZjpaKNTe38hXck82k0,449
|
31
32
|
biolib/_internal/types/resource_permission.py,sha256=ZE7eokpzswAiqe4GdpdxdZ6_jl0LdiRD9gP81I8C3fY,292
|
32
33
|
biolib/_internal/types/resource_version.py,sha256=cU0YFHqxO-wX_Y6CoeK0Iei61gFwVoyR_kPOSTQ4mCs,304
|
@@ -73,7 +74,7 @@ biolib/cli/data_record.py,sha256=t8DfJK2EZ_SNZ9drDA_N5Jqy8DNwf9f5SlFrIaOvtv0,350
|
|
73
74
|
biolib/cli/download_container.py,sha256=HIZVHOPmslGE5M2Dsp9r2cCkAEJx__vcsDz5Wt5LRos,483
|
74
75
|
biolib/cli/init.py,sha256=PZLzQYbT7u78J1qSCcs-frVfWHohkrZHxLGRSmMdRg4,1061
|
75
76
|
biolib/cli/lfs.py,sha256=z2qHUwink85mv9yDgifbVKkVwuyknGhMDTfly_gLKJM,4151
|
76
|
-
biolib/cli/push.py,sha256=
|
77
|
+
biolib/cli/push.py,sha256=pSFEUQkQ69M__eR1nIT9ejW4V4_MtX3lb8ydEc1uKiM,1484
|
77
78
|
biolib/cli/run.py,sha256=MCo0ZqW2pHBxOoCI3i5gAx5D0auW9fmxHqkAF4TRhms,2134
|
78
79
|
biolib/cli/runtime.py,sha256=Xv-nrma5xX8NidWcvbUKcUvuN5TCarZa4A8mPVmF-z0,361
|
79
80
|
biolib/cli/sdk.py,sha256=XisJwTft4QDB_99eGDlz-WBqqRwIqkVg7HyvxWtOG8w,471
|
@@ -110,14 +111,14 @@ biolib/compute_node/webserver/webserver_types.py,sha256=2t8EaFKESnves3BA_NBdnS2y
|
|
110
111
|
biolib/compute_node/webserver/webserver_utils.py,sha256=XWvwYPbWNR3qS0FYbLLp-MDDfVk0QdaAmg3xPrT0H2s,4234
|
111
112
|
biolib/compute_node/webserver/worker_thread.py,sha256=7uD9yQPhePYvP2HCJ27EeZ_h6psfIWFgqm1RHZxzobs,12483
|
112
113
|
biolib/experiments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
113
|
-
biolib/experiments/experiment.py,sha256=
|
114
|
+
biolib/experiments/experiment.py,sha256=gY1-d7FgVrcQO3YzOJ0mHS6j7z7rl5XzXEuk7dFi1gU,10460
|
114
115
|
biolib/jobs/__init__.py,sha256=aIb2H2DHjQbM2Bs-dysFijhwFcL58Blp0Co0gimED3w,32
|
115
116
|
biolib/jobs/job.py,sha256=X33-s9u8x3uZI0x_fSDgEFAW0ke-8Qi96M-VB-W29MA,26703
|
116
117
|
biolib/jobs/job_result.py,sha256=rALHiKYNaC9lHi_JJqBob1RubzNLwG9Z386kwRJjd2M,5885
|
117
118
|
biolib/jobs/types.py,sha256=ezvaoTANsWazK6PmfpYcqezdfjP7MNBEBfqIZGoZhz8,997
|
118
119
|
biolib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
119
120
|
biolib/runtime/__init__.py,sha256=MlRepA11n2H-3plB5rzWyyHK2JmP6PiaP3i6x3vt0mg,506
|
120
|
-
biolib/sdk/__init__.py,sha256=
|
121
|
+
biolib/sdk/__init__.py,sha256=Z1S5BgpvM87S2o1libtqkYN1CfYUhn_d4ChEJjwdFKM,2356
|
121
122
|
biolib/tables.py,sha256=MmruV-nJLc3HbLVJBAiDuDCgS2-4oaUkpoCLLUNYbxQ,1173
|
122
123
|
biolib/templates/__init__.py,sha256=Yx62sSyDCDesRQDQgmbDsLpfgEh93fWE8r9u4g2azXk,36
|
123
124
|
biolib/templates/example_app.py,sha256=EB3E3RT4SeO_ii5nVQqJpi5KDGNE_huF1ub-e5ZFveE,715
|
@@ -130,8 +131,8 @@ biolib/utils/cache_state.py,sha256=u256F37QSRIVwqKlbnCyzAX4EMI-kl6Dwu6qwj-Qmag,3
|
|
130
131
|
biolib/utils/multipart_uploader.py,sha256=XvGP1I8tQuKhAH-QugPRoEsCi9qvbRk-DVBs5PNwwJo,8452
|
131
132
|
biolib/utils/seq_util.py,sha256=Ozk0blGtPur_D9MwShD02r_mphyQmgZkx-lOHOwnlIM,6730
|
132
133
|
biolib/utils/zip/remote_zip.py,sha256=0wErYlxir5921agfFeV1xVjf29l9VNgGQvNlWOlj2Yc,23232
|
133
|
-
pybiolib-1.2.
|
134
|
-
pybiolib-1.2.
|
135
|
-
pybiolib-1.2.
|
136
|
-
pybiolib-1.2.
|
137
|
-
pybiolib-1.2.
|
134
|
+
pybiolib-1.2.796.dist-info/LICENSE,sha256=F2h7gf8i0agDIeWoBPXDMYScvQOz02pAWkKhTGOHaaw,1067
|
135
|
+
pybiolib-1.2.796.dist-info/METADATA,sha256=SoMz2oMjXUwS383J9ynDCIVIRFV_Bi0wXXMluw78JWg,1570
|
136
|
+
pybiolib-1.2.796.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
137
|
+
pybiolib-1.2.796.dist-info/entry_points.txt,sha256=p6DyaP_2kctxegTX23WBznnrDi4mz6gx04O5uKtRDXg,42
|
138
|
+
pybiolib-1.2.796.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|