pybiolib 1.2.122__py3-none-any.whl → 1.2.141.dev1__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/__init__.py CHANGED
@@ -49,8 +49,8 @@ def get_data_record(uri: str) -> _DataRecord:
49
49
  return _DataRecord.get_by_uri(uri)
50
50
 
51
51
 
52
- def fetch_jobs(count: int = 25) -> List[_Job]:
53
- return _Job.fetch_jobs(count)
52
+ def fetch_jobs(count: int = 25, status: Optional[str] = None) -> List[_Job]:
53
+ return _Job.fetch_jobs(count, status)
54
54
 
55
55
 
56
56
  def fetch_data_records(uri: Optional[str] = None, count: Optional[int] = None) -> List[_DataRecord]:
@@ -76,7 +76,8 @@ def push_application(
76
76
  app_uri: str,
77
77
  app_path: str,
78
78
  app_version_to_copy_images_from: Optional[str],
79
- is_dev_version: Optional[bool],
79
+ set_as_active: bool,
80
+ set_as_published: bool,
80
81
  ):
81
82
  app_uri_parts = app_uri.split(':')
82
83
  if len(app_uri_parts) > 2:
@@ -276,12 +277,11 @@ def push_application(
276
277
  app_version_uuid = new_app_version_json['public_id']
277
278
  api.client.post(
278
279
  path=f'/app-versions/{app_version_uuid}/complete-push/',
279
- data={'set_as_active': not is_dev_version},
280
+ data={'set_as_active': set_as_active, 'set_as_published': set_as_published},
280
281
  )
281
282
 
282
283
  sematic_version = f"{new_app_version_json['major']}.{new_app_version_json['minor']}.{new_app_version_json['patch']}"
283
- logger.info(
284
- f"Successfully pushed new {'development ' if is_dev_version else ''}version {sematic_version} of {app_uri}."
285
- )
284
+ version_name = 'development ' if not set_as_published else ''
285
+ logger.info(f'Successfully pushed new {version_name}version {sematic_version} of {app_uri}.')
286
286
 
287
287
  return {'app_uri': app_uri, 'sematic_version': sematic_version}
biolib/cli/push.py CHANGED
@@ -12,12 +12,25 @@ from biolib.biolib_logging import logger, logger_no_user_data
12
12
  @click.option('--path', default='.', required=False)
13
13
  @click.option('--copy-images-from-version', required=False)
14
14
  @click.option('--dev', is_flag=True, default=False, required=False)
15
- def push(uri, path: str, copy_images_from_version: Optional[str], dev: bool) -> None:
15
+ @click.option('--pre-release', is_flag=True, default=False, required=False)
16
+ def push(uri, path: str, copy_images_from_version: Optional[str], dev: bool, pre_release: bool) -> None:
16
17
  logger.configure(default_log_level=logging.INFO)
17
18
  logger_no_user_data.configure(default_log_level=logging.INFO)
19
+ set_as_active = True
20
+ set_as_published = True
21
+ if dev and pre_release:
22
+ print('Error: you cannot set both --dev and --pre-release, please select one.')
23
+ exit(1)
24
+ elif dev:
25
+ set_as_active = False
26
+ set_as_published = False
27
+ elif pre_release:
28
+ set_as_active = False
29
+ set_as_published = True
18
30
  push_application(
19
31
  app_path=path,
20
32
  app_uri=uri,
21
33
  app_version_to_copy_images_from=copy_images_from_version,
22
- is_dev_version=dev,
34
+ set_as_active=set_as_active,
35
+ set_as_published=set_as_published,
23
36
  )
biolib/jobs/job.py CHANGED
@@ -22,7 +22,7 @@ from biolib.compute_node.utils import SystemExceptionCodeMap, SystemExceptionCod
22
22
  from biolib.jobs.job_result import JobResult
23
23
  from biolib.jobs.types import CloudJobDict, CloudJobStartedDict, JobDict
24
24
  from biolib.tables import BioLibTable
25
- from biolib.typing_utils import Dict, List, Optional, cast
25
+ from biolib.typing_utils import Dict, List, Optional, Union, cast
26
26
  from biolib.utils import IS_RUNNING_IN_NOTEBOOK
27
27
  from biolib.utils.app_uri import parse_app_uri
28
28
 
@@ -232,8 +232,8 @@ class Job:
232
232
  self._result = JobResult(job_uuid=self._uuid, job_auth_token=self._auth_token, module_output=module_output)
233
233
 
234
234
  @staticmethod
235
- def fetch_jobs(count: int) -> List['Job']:
236
- job_dicts = Job._get_job_dicts(count)
235
+ def fetch_jobs(count: int, status: Optional[str] = None) -> List['Job']:
236
+ job_dicts = Job._get_job_dicts(count, status)
237
237
  return [Job(job_dict) for job_dict in job_dicts]
238
238
 
239
239
  @staticmethod
@@ -242,9 +242,27 @@ class Job:
242
242
  BioLibTable(columns_to_row_map=Job.table_columns_to_row_map, rows=job_dicts, title='Jobs').print_table()
243
243
 
244
244
  @staticmethod
245
- def _get_job_dicts(count: int) -> List['JobDict']:
246
- job_dicts: List['JobDict'] = api.client.get(path='/jobs/', params={'page_size': str(count)}).json()['results']
247
- return job_dicts
245
+ def _get_job_dicts(count: int, status: Optional[str] = None) -> List['JobDict']:
246
+ job_states = ['in_progress', 'completed', 'failed', 'cancelled']
247
+ if status is not None and status not in job_states:
248
+ raise Exception('Invalid status filter')
249
+
250
+ page_size = min(count, 1_000)
251
+ params: Dict[str, Union[str, int]] = dict(page_size=page_size)
252
+ if status:
253
+ params['state'] = status
254
+
255
+ api_path = '/jobs/'
256
+ response = api.client.get(api_path, params=params).json()
257
+ jobs = [job_dict for job_dict in response['results']]
258
+
259
+ for page_number in range(2, response['page_count'] + 1):
260
+ page_response = api.client.get(path=api_path, params=dict(**params, page=page_number)).json()
261
+ jobs.extend([job_dict for job_dict in page_response['results']])
262
+ if len(jobs) >= count:
263
+ break
264
+
265
+ return jobs
248
266
 
249
267
  @staticmethod
250
268
  def _get_job_dict(uuid: str, auth_token: Optional[str] = None) -> JobDict:
biolib/sdk/__init__.py CHANGED
@@ -16,7 +16,8 @@ def push_app_version(uri: str, path: str) -> _BioLibApp:
16
16
  app_uri=uri,
17
17
  app_path=path,
18
18
  app_version_to_copy_images_from=None,
19
- is_dev_version=True,
19
+ set_as_active=False,
20
+ set_as_published=False,
20
21
  )
21
22
  uri = f'{push_data["app_uri"]}:{push_data["sematic_version"]}'
22
23
  return _BioLibApp(uri)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pybiolib
3
- Version: 1.2.122
3
+ Version: 1.2.141.dev1
4
4
  Summary: BioLib Python Client
5
5
  Home-page: https://github.com/biolib
6
6
  License: MIT
@@ -1,6 +1,6 @@
1
1
  LICENSE,sha256=F2h7gf8i0agDIeWoBPXDMYScvQOz02pAWkKhTGOHaaw,1067
2
2
  PYPI_README.md,sha256=_IH7pxFiqy2bIAmaVeA-iVTyUwWRjMIlfgtUbYTtmls,368
3
- biolib/__init__.py,sha256=q_YhAYw51Vq16IKtSk8_MJclDAa4CfCmPhvWDYmrSIg,4393
3
+ biolib/__init__.py,sha256=4Rfa0AJKztqkCG5D67kFgSwdOUiBTa5HkAzIOqHNREU,4431
4
4
  biolib/_data_record/data_record.py,sha256=zVAhFU1RLI1-ptoQ_l639RNwrMANXV9j75yXHvB7dtA,10950
5
5
  biolib/_internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
6
  biolib/_internal/data_record/__init__.py,sha256=fGdME6JGRU_2VxpJbYpGXYndjN-feUkmKY4fuMyq3cg,76
@@ -15,7 +15,7 @@ biolib/_internal/lfs/__init__.py,sha256=gSWo_xg61UniYgD7yNYxeT4I9uaXBCBSi3_nmZjn
15
15
  biolib/_internal/lfs/cache.py,sha256=pQS2np21rdJ6I3DpoOutnzPHpLOZgUIS8TMltUJk_k4,2226
16
16
  biolib/_internal/libs/__init__.py,sha256=Jdf4tNPqe_oIIf6zYml6TiqhL_02Vyqwge6IELrAFhw,98
17
17
  biolib/_internal/libs/fusepy/__init__.py,sha256=AWDzNFS-XV_5yKb0Qx7kggIhPzq1nj_BZS5y2Nso08k,41944
18
- biolib/_internal/push_application.py,sha256=OtfH4xsyOZE_bjVZAVWe7LSNo4t2OUKY_6dfzWDfNts,11874
18
+ biolib/_internal/push_application.py,sha256=eu9TGTDQUkgY42SAjbURycrrbX8hesBCWBEg0H5CdQQ,11948
19
19
  biolib/_internal/runtime.py,sha256=BiHl4klUHr36MCpqKaUso4idHeBZfPAahLYRQrabFqA,486
20
20
  biolib/_internal/types/__init__.py,sha256=xLgOQJFh3GRtiqIJq7MaqHReZx4pp34_zcaFQ_JjuJ4,198
21
21
  biolib/_internal/types/app.py,sha256=Mz2QGD_jESX-K9JYnLWPo4YA__Q_1FQQTk9pvidCohU,118
@@ -64,7 +64,7 @@ biolib/cli/data_record.py,sha256=t8DfJK2EZ_SNZ9drDA_N5Jqy8DNwf9f5SlFrIaOvtv0,350
64
64
  biolib/cli/download_container.py,sha256=HIZVHOPmslGE5M2Dsp9r2cCkAEJx__vcsDz5Wt5LRos,483
65
65
  biolib/cli/init.py,sha256=wQOfii_au-d30Hp7DdH-WVw-WVraKvA_zY4za1w7DE8,821
66
66
  biolib/cli/lfs.py,sha256=z2qHUwink85mv9yDgifbVKkVwuyknGhMDTfly_gLKJM,4151
67
- biolib/cli/push.py,sha256=TFi7O9tJ3zFe0VmtVTV3Vh9_xIMHnrc41xxcaBKU46g,813
67
+ biolib/cli/push.py,sha256=RxB4RHpjtL27Fpq7WRGojJ53R9jUuE1Cq9_NmHFzNsM,1306
68
68
  biolib/cli/run.py,sha256=BbvXLQ-XibjQ71Y2d4URMH_8dflNVwM0i3TIWhw_u_c,1634
69
69
  biolib/cli/runtime.py,sha256=Xv-nrma5xX8NidWcvbUKcUvuN5TCarZa4A8mPVmF-z0,361
70
70
  biolib/cli/start.py,sha256=rg8VVY8rboFhf1iQo3zE3WA5oh_R1VWWfYJEO1gMReY,1737
@@ -102,11 +102,11 @@ biolib/compute_node/webserver/worker_thread.py,sha256=GRRBUqXdMKvbjyLQhYlqGIbFKe
102
102
  biolib/experiments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
103
  biolib/experiments/experiment.py,sha256=jIRixmQm3Gq9YdJ3I0-rE1vFukXqq6U4zXehFOJ1yZk,7614
104
104
  biolib/jobs/__init__.py,sha256=aIb2H2DHjQbM2Bs-dysFijhwFcL58Blp0Co0gimED3w,32
105
- biolib/jobs/job.py,sha256=OfG8cLd3AjGjiMWRlJRZdVVbLsRWSX-OM5nxJhR6mPQ,19136
105
+ biolib/jobs/job.py,sha256=ej-dxt1hMBQXzTfUZ2SLqIV8dtTbMSMn_q2rjIA7oN4,19903
106
106
  biolib/jobs/job_result.py,sha256=rALHiKYNaC9lHi_JJqBob1RubzNLwG9Z386kwRJjd2M,5885
107
107
  biolib/jobs/types.py,sha256=qhadtH2KDC2WUOOqPiwke0YgtQY4FtuB71Stekq1k48,970
108
108
  biolib/runtime/__init__.py,sha256=MlRepA11n2H-3plB5rzWyyHK2JmP6PiaP3i6x3vt0mg,506
109
- biolib/sdk/__init__.py,sha256=amVp_jMxi2nqCcTsmL2aKUNGCAH3Yk4EzAnps9d1VH8,1928
109
+ biolib/sdk/__init__.py,sha256=8uyOAKt8-Xo11jAWXCg14NkE1u0FkOBC07L3V7wGsCg,1960
110
110
  biolib/tables.py,sha256=acH7VjwAbadLo8P84FSnKEZxCTVsF5rEg9VPuxElNs8,872
111
111
  biolib/templates/__init__.py,sha256=Yx62sSyDCDesRQDQgmbDsLpfgEh93fWE8r9u4g2azXk,36
112
112
  biolib/templates/example_app.py,sha256=EB3E3RT4SeO_ii5nVQqJpi5KDGNE_huF1ub-e5ZFveE,715
@@ -119,8 +119,8 @@ biolib/utils/cache_state.py,sha256=u256F37QSRIVwqKlbnCyzAX4EMI-kl6Dwu6qwj-Qmag,3
119
119
  biolib/utils/multipart_uploader.py,sha256=XvGP1I8tQuKhAH-QugPRoEsCi9qvbRk-DVBs5PNwwJo,8452
120
120
  biolib/utils/seq_util.py,sha256=WJnU9vZdwY8RHXvzATyV80OXzyJ7w9EkG33Tna9Nr6A,5698
121
121
  biolib/utils/zip/remote_zip.py,sha256=0wErYlxir5921agfFeV1xVjf29l9VNgGQvNlWOlj2Yc,23232
122
- pybiolib-1.2.122.dist-info/LICENSE,sha256=F2h7gf8i0agDIeWoBPXDMYScvQOz02pAWkKhTGOHaaw,1067
123
- pybiolib-1.2.122.dist-info/METADATA,sha256=ZqN7f5Rlsd29avkwSDiZmCoUi7OUiMlBqUmIl7OdDq8,1507
124
- pybiolib-1.2.122.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
125
- pybiolib-1.2.122.dist-info/entry_points.txt,sha256=p6DyaP_2kctxegTX23WBznnrDi4mz6gx04O5uKtRDXg,42
126
- pybiolib-1.2.122.dist-info/RECORD,,
122
+ pybiolib-1.2.141.dev1.dist-info/LICENSE,sha256=F2h7gf8i0agDIeWoBPXDMYScvQOz02pAWkKhTGOHaaw,1067
123
+ pybiolib-1.2.141.dev1.dist-info/METADATA,sha256=9NEHC1fbAZuf_mpTlZyUtdPhEGFvBkhcyKwWzxugvfI,1512
124
+ pybiolib-1.2.141.dev1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
125
+ pybiolib-1.2.141.dev1.dist-info/entry_points.txt,sha256=p6DyaP_2kctxegTX23WBznnrDi4mz6gx04O5uKtRDXg,42
126
+ pybiolib-1.2.141.dev1.dist-info/RECORD,,