qwak-sdk 0.5.67__py3-none-any.whl → 0.5.72__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.

Potentially problematic release.


This version of qwak-sdk might be problematic. Click here for more details.

qwak_sdk/__init__.py CHANGED
@@ -1,6 +1,6 @@
1
1
  # fmt: off
2
2
  __author__ = '''Qwak.ai'''
3
- __version__ = '0.5.67'
3
+ __version__ = '0.5.72'
4
4
 
5
5
  from qwak.inner import wire_dependencies
6
6
 
@@ -0,0 +1,27 @@
1
+ from logging import Logger
2
+ import time
3
+ from typing import List
4
+ from _qwak_proto.qwak.builds.builds_pb2 import BuildStatus
5
+ from qwak.clients.build_orchestrator import BuildOrchestratorClient
6
+
7
+
8
+ def __get_current_status(build_id) -> BuildStatus:
9
+ return BuildOrchestratorClient().get_build(build_id).build.build_status
10
+
11
+
12
+ def __end_state_statuses() -> List[BuildStatus.ValueType]:
13
+ return [BuildStatus.FAILED, BuildStatus.SUCCESSFUL, BuildStatus.REMOTE_BUILD_CANCELLED, BuildStatus.REMOTE_BUILD_TIMED_OUT]
14
+
15
+
16
+ def wait_until_finished(build_id, log: Logger, pool_interval_seconds=10) -> None:
17
+ status = __get_current_status(build_id)
18
+ log.info(f"Waiting for build {build_id} to finish. Aborting this process will not stop the build!")
19
+ log.debug(f"Current status of build {build_id}: {BuildStatus.DESCRIPTOR.values_by_number[status].name}")
20
+ while status not in __end_state_statuses():
21
+ time.sleep(pool_interval_seconds)
22
+ status = __get_current_status(build_id)
23
+ log.debug(f"Current status of build {build_id}: {BuildStatus.DESCRIPTOR.values_by_number[status].name}")
24
+
25
+
26
+ def is_final_status_successful(build_id) -> bool:
27
+ return __get_current_status(build_id) == BuildStatus.SUCCESSFUL
@@ -13,6 +13,7 @@ from qwak.inner.build_logic.run_handlers.programmatic_phase_run_handler import (
13
13
  from qwak.inner.const import QwakConstants
14
14
 
15
15
  from qwak_sdk.commands.models.build._logic.build_steps import create_pipeline
16
+ from qwak_sdk.commands.models.build._logic.wait_until_finished import wait_until_finished, is_final_status_successful
16
17
  from qwak_sdk.commands.models.build._logic.client_logs.cli_phase_run_handler import (
17
18
  CLIPhaseRunHandler,
18
19
  )
@@ -238,6 +239,12 @@ from qwak_sdk.inner.tools.config_handler import config_handler
238
239
  default=False,
239
240
  is_flag=True,
240
241
  )
242
+ @click.option(
243
+ "--sync",
244
+ help="Waits until the build is finished (successfully or not) and return the build status",
245
+ default=False,
246
+ is_flag=True,
247
+ )
241
248
  @click.option(
242
249
  "--git-secret-ssh",
243
250
  metavar="NAME",
@@ -281,6 +288,7 @@ def build(
281
288
  return
282
289
  else:
283
290
  id_only = kwargs.get("id_only")
291
+ is_sync = kwargs.get("sync")
284
292
  pipeline, success_msg = create_pipeline(config)
285
293
  with get_build_logger(config=config, json_logs=json_logs) as (
286
294
  logger,
@@ -300,6 +308,12 @@ def build(
300
308
  build_runner,
301
309
  )
302
310
 
311
+ if is_sync:
312
+ wait_until_finished(pipeline.context.build_id, logger)
313
+ if not is_final_status_successful(pipeline.context.build_id):
314
+ click.echo(f"Build {pipeline.context.build_id} failed")
315
+ exit(1)
316
+
303
317
  if id_only:
304
318
  print(pipeline.context.build_id)
305
319
  else:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qwak-sdk
3
- Version: 0.5.67
3
+ Version: 0.5.72
4
4
  Summary: Qwak SDK and CLI for qwak models
5
5
  License: Apache-2.0
6
6
  Keywords: mlops,ml,deployment,serving,model
@@ -37,7 +37,7 @@ Requires-Dist: pandas (>1.1.3) ; (python_version >= "3.9" and python_version < "
37
37
  Requires-Dist: pandas (>=1.4.0) ; (python_version >= "3.10" and python_version < "3.12") and (extra == "batch" or extra == "feedback")
38
38
  Requires-Dist: pyarrow (>=6.0.0,<11.0.0) ; extra == "batch"
39
39
  Requires-Dist: python-json-logger (>=2.0.2)
40
- Requires-Dist: qwak-core (==0.4.8)
40
+ Requires-Dist: qwak-core (==0.4.38)
41
41
  Requires-Dist: qwak-inference (>=0.1.16,<0.2.0)
42
42
  Requires-Dist: rich (>=13.0.0)
43
43
  Requires-Dist: tabulate (>=0.8.0)
@@ -1,4 +1,4 @@
1
- qwak_sdk/__init__.py,sha256=NNZZ1nm59YD8isM6cCdmZBmVnhSLrubQOw8xfd9VXpc,135
1
+ qwak_sdk/__init__.py,sha256=6Bs9kviutNNAWsdI8ccThcuyIU588h-Fgapvs4KJYm8,135
2
2
  qwak_sdk/cli.py,sha256=FIK1dUNxR57ypb-CeD7fKSJnPJ02lrjR9G4aj2qMLPU,2458
3
3
  qwak_sdk/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  qwak_sdk/commands/_logic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -121,7 +121,8 @@ qwak_sdk/commands/models/build/_logic/util/__init__.py,sha256=47DEQpj8HBSa-_TImW
121
121
  qwak_sdk/commands/models/build/_logic/util/protobuf_factory.py,sha256=ar_oY38w_x0sxgVF7EBs5h7gchNsDntvtKK5sSYxb24,1686
122
122
  qwak_sdk/commands/models/build/_logic/util/step_decorator.py,sha256=HLZyCGdqe3Ir7SaPWp1YNRHJpjXG-e-bbAvnOFysAVM,1913
123
123
  qwak_sdk/commands/models/build/_logic/util/text.py,sha256=tH-v19Mt8l90sMVxku5XRtrderT0qdRqJ-jLijqannA,188
124
- qwak_sdk/commands/models/build/ui.py,sha256=qr-brINdA6wF9QVgFjE77qGi3KIYckHTrPQlr-d5jyo,9164
124
+ qwak_sdk/commands/models/build/_logic/wait_until_finished.py,sha256=DxIyNK-MFjxSh9xe7dJx-znmz8ZOqelK-cJQvr7YI9g,1220
125
+ qwak_sdk/commands/models/build/ui.py,sha256=ZfOFzZxMT3bSUz42dn9LF7Pept9Ed9afWu0-_0HES_w,9761
125
126
  qwak_sdk/commands/models/builds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
127
  qwak_sdk/commands/models/builds/builds_commands_group.py,sha256=0nSfTY8TracXG61rFboQWUTXJisHO6dgtJKeijy6ru8,491
127
128
  qwak_sdk/commands/models/builds/cancel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -318,7 +319,7 @@ qwak_sdk/tools/colors.py,sha256=7pui_GGjC4uZKYFsIyXaJjYsjLxJVHb4OrfTgr93hqo,287
318
319
  qwak_sdk/tools/files.py,sha256=AyKJTOy7NhvP3SrqwIw_lxYNCOy1CvLgMmSJpWZ0OKM,2257
319
320
  qwak_sdk/tools/log_handling.py,sha256=Aa1EmxUPCX8YWiZRutUvnqPv6K_z1zoGMwIWsEv24mM,6327
320
321
  qwak_sdk/tools/utils.py,sha256=SHmU4r_m2ABZyFYMC03P17GvltPbYbmB39hvalIZEtI,1168
321
- qwak_sdk-0.5.67.dist-info/entry_points.txt,sha256=vSl0ELYDyj640oMM57u0AjBP87wtLYxCcGOendhEx80,47
322
- qwak_sdk-0.5.67.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
323
- qwak_sdk-0.5.67.dist-info/METADATA,sha256=xfnTJi0rGKt4gDYgthZkCDE43GNuPOkdz8KYgS3hvEM,2599
324
- qwak_sdk-0.5.67.dist-info/RECORD,,
322
+ qwak_sdk-0.5.72.dist-info/entry_points.txt,sha256=vSl0ELYDyj640oMM57u0AjBP87wtLYxCcGOendhEx80,47
323
+ qwak_sdk-0.5.72.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
324
+ qwak_sdk-0.5.72.dist-info/METADATA,sha256=5AJVTJoHD3g69f6-EFQqadYu36k7-_ZgKDOax8nxE4A,2600
325
+ qwak_sdk-0.5.72.dist-info/RECORD,,