qwak-sdk 0.5.22__py3-none-any.whl → 0.5.24__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.22'
3
+ __version__ = '0.5.24'
4
4
 
5
5
  from qwak.inner import wire_dependencies
6
6
 
qwak_sdk/cli.py CHANGED
@@ -16,8 +16,8 @@ from qwak_sdk.commands.feature_store.feature_store_command_group import (
16
16
  from qwak_sdk.commands.models.models_command_group import models_command_group
17
17
  from qwak_sdk.commands.projects.projects_command_group import projects_command_group
18
18
  from qwak_sdk.commands.secrets.secrets_commands_group import secrets_commands_group
19
- from qwak_sdk.commands.workspaces.workspace_commands_group import (
20
- workspace_commands_group,
19
+ from qwak_sdk.commands.workspaces.workspaces_commands_group import (
20
+ workspaces_commands_group,
21
21
  )
22
22
  from qwak_sdk.inner.tools.logger import setup_qwak_logger
23
23
 
@@ -57,5 +57,5 @@ def create_qwak_cli():
57
57
  qwak_cli.add_command(feature_store_commands_group)
58
58
  qwak_cli.add_command(audience_commands_group)
59
59
  qwak_cli.add_command(alerts_commands_group)
60
- qwak_cli.add_command(workspace_commands_group)
60
+ qwak_cli.add_command(workspaces_commands_group)
61
61
  return qwak_cli
@@ -10,6 +10,22 @@ def get_workspace_id_by_name(
10
10
  """
11
11
  Args:
12
12
  workspace_name: The name of the workspace
13
+ workspace_manager_client: The workspace manager client
14
+ Returns:
15
+ The id of the workspace
16
+ """
17
+ return get_workspace_by_name(
18
+ workspace_name=workspace_name, workspace_manager_client=workspace_manager_client
19
+ ).workspace_id
20
+
21
+
22
+ def get_workspace_by_name(
23
+ workspace_name: str, workspace_manager_client: Optional[WorkspaceManagerClient]
24
+ ) -> str:
25
+ """
26
+ Args:
27
+ workspace_name: The name of the workspace
28
+ workspace_manager_client: The workspace manager client
13
29
  Returns:
14
30
  The id of the workspace
15
31
  """
@@ -23,6 +39,6 @@ def get_workspace_id_by_name(
23
39
 
24
40
  for workspace in response.workspaces:
25
41
  if workspace.workspace_name == workspace_name:
26
- return workspace.workspace_id
42
+ return workspace
27
43
 
28
44
  raise QwakException(f"Failed to find workspace with name {workspace_name}")
@@ -1,3 +1,6 @@
1
+ from _qwak_proto.qwak.instance_template.instance_template_pb2 import InstanceType
2
+ from _qwak_proto.qwak.workspace.workspace_pb2 import DefaultWorkspaceDetails
3
+ from qwak.clients.instance_template.client import InstanceTemplateManagementClient
1
4
  from qwak.clients.workspace_manager import WorkspaceManagerClient
2
5
 
3
6
  from qwak_sdk.commands.workspaces._logic.workspace_validations import (
@@ -18,9 +21,29 @@ def _create_workspace(config: WorkspaceConfig):
18
21
  """
19
22
  print(f"Creating a new workspace with the name {config.workspace.name}")
20
23
  workspace_manager_client = WorkspaceManagerClient()
24
+ default_details: DefaultWorkspaceDetails = (
25
+ workspace_manager_client.get_default_workspace_details()
26
+ )
27
+
21
28
  _validate_workspace_name(config.workspace.name)
22
- _verify_image_id(config.workspace.image, workspace_manager_client)
23
- _verify_instance(config.workspace.instance)
29
+ if config.workspace.instance:
30
+ _verify_instance(config.workspace.instance)
31
+ else:
32
+ config.workspace.instance = (
33
+ default_details.cpu_compute_resources.template_spec.template_id
34
+ )
35
+
36
+ if config.workspace.image:
37
+ _verify_image_id(config.workspace.image, workspace_manager_client)
38
+ else:
39
+ instance_spec = InstanceTemplateManagementClient().get_instance_template(
40
+ config.workspace.instance
41
+ )
42
+ config.workspace.image = (
43
+ default_details.cpu_image_id
44
+ if instance_spec.instance_type == InstanceType.INSTANCE_TYPE_CPU
45
+ else default_details.gpu_image_id
46
+ )
24
47
 
25
48
  response = workspace_manager_client.create_workspace(
26
49
  config.workspace.name, config.workspace.image, config.workspace.instance
@@ -14,13 +14,14 @@ def _delete_workspace(workspace_id: Optional[str], workspace_name: Optional[str]
14
14
  Args:
15
15
  workspace_id: The id of the workspace to delete
16
16
  """
17
- print(f"Deleting an existing workspace with id {workspace_id}")
18
17
  validate_id_or_name(workspace_id=workspace_id, workspace_name=workspace_name)
19
18
  workspace_manager_client = WorkspaceManagerClient()
20
19
  if workspace_id:
20
+ print(f"Deleting an existing workspace with id {workspace_id}")
21
21
  workspace_manager_client.delete_workspace(workspace_id=workspace_id)
22
22
  print(f"Workspace {workspace_id} was deleted successfully")
23
23
  if workspace_name:
24
+ print(f"Deleting an existing workspace with name {workspace_name}")
24
25
  workspace_id = get_workspace_id_by_name(
25
26
  workspace_name=workspace_name,
26
27
  workspace_manager_client=workspace_manager_client,
@@ -17,10 +17,11 @@ def _start_workspace(workspace_id: Optional[str], workspace_name=Optional[str]):
17
17
  validate_id_or_name(workspace_id=workspace_id, workspace_name=workspace_name)
18
18
  workspace_manager_client = WorkspaceManagerClient()
19
19
  if workspace_id:
20
- print(f"Deploying an existing workspace with id {workspace_id}")
20
+ print(f"Starting an existing workspace with id {workspace_id}")
21
21
  workspace_manager_client.deploy_workspace(workspace_id=workspace_id)
22
22
  print(f"Workspace {workspace_id} started successfully")
23
23
  if workspace_name:
24
+ print(f"Starting an existing workspace with name {workspace_name}")
24
25
  workspace_id = get_workspace_id_by_name(
25
26
  workspace_name=workspace_name,
26
27
  workspace_manager_client=workspace_manager_client,
@@ -10,20 +10,21 @@ from qwak_sdk.commands.workspaces._logic.workspace_validations import (
10
10
 
11
11
  def _stop_workspace(workspace_id: Optional[str], workspace_name: Optional[str]):
12
12
  """
13
- Undeploy an existing workspace
13
+ Stop an existing workspace
14
14
  Args:
15
15
  workspace_id: The id of the workspace to deploy
16
16
  """
17
- print(f"Undeploy an existing workspace with id {workspace_id}")
18
17
  validate_id_or_name(workspace_id=workspace_id, workspace_name=workspace_name)
19
18
  workspace_manager_client = WorkspaceManagerClient()
20
19
  if workspace_id:
20
+ print(f"Stopping an existing workspace with id {workspace_id}")
21
21
  workspace_manager_client.undeploy_workspace(workspace_id=workspace_id)
22
- print(f"Workspace {workspace_id} was undeployed successfully")
22
+ print(f"Workspace {workspace_id} was stopped successfully")
23
23
  if workspace_name:
24
+ print(f"Stopping an existing workspace with name {workspace_name}")
24
25
  workspace_id = get_workspace_id_by_name(
25
26
  workspace_name=workspace_name,
26
27
  workspace_manager_client=workspace_manager_client,
27
28
  )
28
29
  workspace_manager_client.undeploy_workspace(workspace_id=workspace_id)
29
- print(f"Workspace {workspace_name} was undeployed successfully")
30
+ print(f"Workspace {workspace_name} was stopped successfully")
@@ -1,9 +1,11 @@
1
1
  from qwak.clients.workspace_manager import WorkspaceManagerClient
2
2
 
3
+ from qwak_sdk.commands.workspaces._logic.tools import get_workspace_by_name
3
4
  from qwak_sdk.commands.workspaces._logic.workspace_validations import (
4
5
  _validate_workspace_name,
5
6
  _verify_image_id,
6
7
  _verify_instance,
8
+ validate_id_or_name,
7
9
  )
8
10
  from qwak_sdk.commands.workspaces.config.workspace_config import WorkspaceConfig
9
11
 
@@ -16,14 +18,25 @@ def _update_workspace(config: WorkspaceConfig):
16
18
  config: The workspace configuration
17
19
 
18
20
  """
19
- print(
20
- f"Updating a new workspace with the workspace id {config.workspace.workspace_id}"
21
+ validate_id_or_name(
22
+ workspace_id=config.workspace.workspace_id, workspace_name=config.workspace.name
21
23
  )
22
24
  workspace_manager_client = WorkspaceManagerClient()
23
- current_workspace = workspace_manager_client.get_workspace_by_id(
24
- workspace_id=config.workspace.workspace_id
25
- ).workspace
25
+ if config.workspace.workspace_id:
26
+ print(
27
+ f"Updating a workspace with the workspace id {config.workspace.workspace_id}"
28
+ )
29
+ current_workspace = workspace_manager_client.get_workspace_by_id(
30
+ workspace_id=config.workspace.workspace_id
31
+ ).workspace
32
+ else:
33
+ print(f"Updating a workspace with the workspace name {config.workspace.name}")
34
+ current_workspace = get_workspace_by_name(
35
+ workspace_name=config.workspace.name,
36
+ workspace_manager_client=workspace_manager_client,
37
+ )
26
38
 
39
+ workspace_id = current_workspace.workspace_id
27
40
  workspace_name = config.workspace.name
28
41
  image_id = config.workspace.image
29
42
  instance = config.workspace.instance
@@ -53,13 +66,16 @@ def _update_workspace(config: WorkspaceConfig):
53
66
  )
54
67
 
55
68
  workspace_manager_client.update_workspace(
56
- workspace_id=config.workspace.workspace_id,
69
+ workspace_id=workspace_id,
57
70
  image_id=image_id,
58
71
  template_id=instance,
59
72
  workspace_name=name,
60
73
  )
61
74
 
62
- print(f"Workspace {config.workspace.workspace_id} was updated successfully")
75
+ if config.workspace.workspace_id:
76
+ print(f"Workspace {workspace_id} was updated successfully")
77
+ else:
78
+ print(f"Workspace {workspace_name} was updated successfully")
63
79
 
64
80
 
65
81
  def _is_not_empty_and_not_none(value: str) -> bool:
@@ -8,16 +8,16 @@ from qwak_sdk.commands.workspaces.update.ui import update_workspace
8
8
 
9
9
 
10
10
  @click.group(
11
- "workspace",
12
- help="Commands for interacting with the workspace manager",
11
+ "workspaces",
12
+ help="Commands for interacting with workspaces",
13
13
  )
14
- def workspace_commands_group():
14
+ def workspaces_commands_group():
15
15
  # Click commands group injection
16
16
  pass
17
17
 
18
18
 
19
- workspace_commands_group.add_command(create_workspace)
20
- workspace_commands_group.add_command(update_workspace)
21
- workspace_commands_group.add_command(start_workspace)
22
- workspace_commands_group.add_command(delete_workspace)
23
- workspace_commands_group.add_command(stop_workspace)
19
+ workspaces_commands_group.add_command(create_workspace)
20
+ workspaces_commands_group.add_command(update_workspace)
21
+ workspaces_commands_group.add_command(start_workspace)
22
+ workspaces_commands_group.add_command(delete_workspace)
23
+ workspaces_commands_group.add_command(stop_workspace)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qwak-sdk
3
- Version: 0.5.22
3
+ Version: 0.5.24
4
4
  Summary: Qwak SDK and CLI for qwak models
5
5
  License: Apache-2.0
6
6
  Keywords: mlops,ml,deployment,serving,model
@@ -27,7 +27,7 @@ Requires-Dist: pandas (<1.4) ; (python_full_version >= "3.7.1" and python_versio
27
27
  Requires-Dist: pandas (>=1.4.3,<2.0.0) ; (python_version >= "3.8" and python_version < "3.10") and (extra == "batch" or extra == "feedback")
28
28
  Requires-Dist: pyarrow (>=6.0.0,<11.0.0) ; extra == "batch"
29
29
  Requires-Dist: python-json-logger (>=2.0.2)
30
- Requires-Dist: qwak-core (==0.0.209)
30
+ Requires-Dist: qwak-core (==0.0.212)
31
31
  Requires-Dist: qwak-inference (==0.1.8)
32
32
  Requires-Dist: tabulate (>=0.8.0)
33
33
  Requires-Dist: yaspin (>=2.0.0)
@@ -1,5 +1,5 @@
1
- qwak_sdk/__init__.py,sha256=Y1OG9C2lLQqHXjumVNQPM0rnGhW28N-zK19u0TqkyBE,135
2
- qwak_sdk/cli.py,sha256=7SXVXBv3Yb1aR11EZwEmFcgnbfX9RZoGVzDxrQrrlUo,2455
1
+ qwak_sdk/__init__.py,sha256=piQZEtKNuGjuodFyerNkMl0e7vC_UHb5Eha_YOpRlrw,135
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
5
5
  qwak_sdk/commands/_logic/instance_template.py,sha256=JFsqaN_T4n_zZvXlVOLphCrF2A9uhp4GPE4pMuFno84,1497
@@ -308,26 +308,26 @@ qwak_sdk/commands/secrets/set/ui.py,sha256=jo4ldlLTybHUBt1MjsI6dwOpaqnoZXnL0EnOR
308
308
  qwak_sdk/commands/ui_tools.py,sha256=JSyNs3qIllK5h3Re6A-SDaxt2TXG3987GoIfyK683HE,430
309
309
  qwak_sdk/commands/workspaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
310
310
  qwak_sdk/commands/workspaces/_logic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
311
- qwak_sdk/commands/workspaces/_logic/tools.py,sha256=IaT-6h9qP5EKyFH7Skt3rJlikwZEOIV6P3eEgRTmbfI,773
311
+ qwak_sdk/commands/workspaces/_logic/tools.py,sha256=1NXSjL1teLfZPNRn6X3kP1-m3HZRJeb03Cz5fVaF3BE,1272
312
312
  qwak_sdk/commands/workspaces/_logic/workspace_validations.py,sha256=J76-pKx1m3RIt5j9Ev5V17HgHam0-36JI5CSmu3-3JQ,1616
313
313
  qwak_sdk/commands/workspaces/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
314
314
  qwak_sdk/commands/workspaces/config/workspace_config.py,sha256=x3XuJZ-klxIJlLLu9dn41ethNylvdcDO8FZU147veGY,1039
315
315
  qwak_sdk/commands/workspaces/create/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
316
- qwak_sdk/commands/workspaces/create/_logic.py,sha256=HC4REslUVv-sJYFxMs2RzchG697hH3jhv0MZTrmhdZQ,1018
316
+ qwak_sdk/commands/workspaces/create/_logic.py,sha256=dwKN_GtnP7Adva0Lq4BzqZlynt92EbzLOMfLZofoHZE,1938
317
317
  qwak_sdk/commands/workspaces/create/ui.py,sha256=qKD1r5B59aEXY4JZdu2wlXZvXY0JpcJrL_g9eo2Poo8,1329
318
318
  qwak_sdk/commands/workspaces/delete/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
319
- qwak_sdk/commands/workspaces/delete/_logic.py,sha256=A6FJvn3oIXXCOgroUAO858t_wjDYYzAPo995uAF799o,1167
319
+ qwak_sdk/commands/workspaces/delete/_logic.py,sha256=qjsYWdoSeQtE28TdcrefX8xBY_cG9z1nwIMxADTFlQc,1247
320
320
  qwak_sdk/commands/workspaces/delete/ui.py,sha256=QC4rilo7ErLZN68UWhVNGyyMofckGDHca8F_kmTSODo,609
321
321
  qwak_sdk/commands/workspaces/start/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
322
- qwak_sdk/commands/workspaces/start/_logic.py,sha256=LUHlrNzmFCkHiFSULEo-Ls2ORSuxT3sIX_jfenaLaDU,1175
322
+ qwak_sdk/commands/workspaces/start/_logic.py,sha256=dLWmCeZ1SH5VDY5UUHhJAxTKdRTfF589dvYtTpC1DFI,1250
323
323
  qwak_sdk/commands/workspaces/start/ui.py,sha256=3OpyGBLUxGeGrDFSnWNe9iSVi7PBZhVY6dyKHmB3_IM,604
324
324
  qwak_sdk/commands/workspaces/stop/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
325
- qwak_sdk/commands/workspaces/stop/_logic.py,sha256=gSsPBHGjUo2GMnEv5cIAnjKObSk2e6Zi4B0gCC9tSPc,1187
325
+ qwak_sdk/commands/workspaces/stop/_logic.py,sha256=3_dqIr_ae-GQvauykoIXlgBKl8roNesMrP9L8PJy3v4,1257
326
326
  qwak_sdk/commands/workspaces/stop/ui.py,sha256=XhuBoU7x1MrEDQcfQuxiuLEb2yQvbrDzlbcDBJ72nvk,599
327
327
  qwak_sdk/commands/workspaces/update/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
328
- qwak_sdk/commands/workspaces/update/_logic.py,sha256=i-P1iHO7PWg6u0o1CHZX2JKfrqMBB1AFUjPxI80NHCU,1962
328
+ qwak_sdk/commands/workspaces/update/_logic.py,sha256=tSxMOAGhTU0D9C-lbd49Ah7rEtf9eoEMeUXU9--gWMQ,2650
329
329
  qwak_sdk/commands/workspaces/update/ui.py,sha256=pqS4SosS145ciZoIkFhW951Y_Ec86PKIldCiv3iEU8w,1515
330
- qwak_sdk/commands/workspaces/workspace_commands_group.py,sha256=b3UB3wcd5luaSmWIfrzONWu4y19Y3qRqoG5NjhlJxsc,799
330
+ qwak_sdk/commands/workspaces/workspaces_commands_group.py,sha256=yuW-UC73J_vp-i4fILX90TAUrxaFocAmltBrRIg67lY,795
331
331
  qwak_sdk/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
332
332
  qwak_sdk/common/run_config/__init__.py,sha256=E73GRxqdEbTYsdd5EE7Wu4YXxTjxF4YkrBY_7-hZ4dU,437
333
333
  qwak_sdk/common/run_config/base.py,sha256=lbCl2DXBM90IXyLCFR2dUY35afwJlp9D4KgM8HP5_MQ,3166
@@ -355,7 +355,7 @@ qwak_sdk/tools/colors.py,sha256=7pui_GGjC4uZKYFsIyXaJjYsjLxJVHb4OrfTgr93hqo,287
355
355
  qwak_sdk/tools/files.py,sha256=AyKJTOy7NhvP3SrqwIw_lxYNCOy1CvLgMmSJpWZ0OKM,2257
356
356
  qwak_sdk/tools/log_handling.py,sha256=CC9XC3z3eHr_fehQgDsXZr4VP29VaMRwC05xvC5Wue4,5616
357
357
  qwak_sdk/tools/utils.py,sha256=SHmU4r_m2ABZyFYMC03P17GvltPbYbmB39hvalIZEtI,1168
358
- qwak_sdk-0.5.22.dist-info/entry_points.txt,sha256=vSl0ELYDyj640oMM57u0AjBP87wtLYxCcGOendhEx80,47
359
- qwak_sdk-0.5.22.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
360
- qwak_sdk-0.5.22.dist-info/METADATA,sha256=d-dOnOlnkj4N39CrZpTCY3lA6rtAXnpt85sKuu49Ux4,1852
361
- qwak_sdk-0.5.22.dist-info/RECORD,,
358
+ qwak_sdk-0.5.24.dist-info/entry_points.txt,sha256=vSl0ELYDyj640oMM57u0AjBP87wtLYxCcGOendhEx80,47
359
+ qwak_sdk-0.5.24.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
360
+ qwak_sdk-0.5.24.dist-info/METADATA,sha256=xgkhDuuwxYPcpkoQmBJ9NG4oCyqPlposFOM1vCudhKc,1852
361
+ qwak_sdk-0.5.24.dist-info/RECORD,,