qwak-sdk 0.5.95__py3-none-any.whl → 0.5.97__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.95'
3
+ __version__ = '0.5.97'
4
4
 
5
5
  from qwak.inner import wire_dependencies
6
6
 
@@ -1,36 +1,36 @@
1
1
  BUILD_LOGS_URL = (
2
- "https://app.qwak.ai/models/{model_id}/build/{build_id}"
2
+ "{base_url}/models/{model_id}/build/{build_id}"
3
3
  )
4
4
 
5
5
  SUCCESS_MSG_REMOTE = """
6
6
  Build ID \033[4m{build_id}\033[0m triggered remotely
7
7
 
8
- ########### To follow build logs using CLI
8
+ ########### Follow build logs in the CLI
9
9
  qwak models builds logs -b {build_id} --follow
10
10
 
11
- ########### To follow build logs using Qwak platform
12
- https://app.qwak.ai/models/{model_id}/build/{build_id}
11
+ ########### Follow build logs in the platform
12
+ {base_url}/models/{model_id}/build/{build_id}
13
13
  """
14
14
 
15
15
  SUCCESS_MSG_REMOTE_WITH_DEPLOY = """
16
16
  Build ID \033[4m{build_id}\033[0m finished successfully and deployed
17
17
 
18
- ########### To view the model using Qwak platform
19
- https://app.qwak.ai/models/{model_id}
18
+ ########### View the model using platform
19
+ {base_url}/models/{model_id}
20
20
  """
21
21
 
22
22
  FAILED_CONTACT_QWAK_SUPPORT = """
23
23
  Build ID \033[4m{build_id}\033[0m failed!!
24
- You can share the logs from \033[4m{log_file}.zip\033[0m with Qwak support.
24
+ You can share the logs from \033[4m{log_file}.zip\033[0m with the support team.
25
25
  """
26
26
 
27
27
  FAILED_REMOTE_BUILD_SUGGESTION = """
28
- Your build failed. You can check the reason for the failure in the Qwak Platform:
29
- https://app.qwak.ai/models/{model_id}/build/{build_id}
28
+ Your build failed. Check the failure reason in the platform:
29
+ {base_url}/models/{model_id}/build/{build_id}
30
30
  """
31
31
 
32
32
  FAILED_DEPLOY_BUILD_SUGGESTION = """
33
- Deploying the build Failed. You can check the reason for the failure in the Qwak Platform:
34
- https://app.qwak.ai/models/{model_id}?tabId=1
35
- Since the build finished successfully, you can try and redeploy it either from the platform or from the CLI
33
+ Deploying the build failed. Check the failure reason in the platform:
34
+ {base_url}/models/{model_id}?tabId=1
35
+ Try and redeploy this build either from the platform or the CLI
36
36
  """
@@ -34,6 +34,7 @@ class BuildPollingStatusStep(Step):
34
34
  status=BuildStatus.Name(status)
35
35
  ),
36
36
  suggestion=FAILED_REMOTE_BUILD_SUGGESTION.format(
37
+ base_url=self.context.platform_url,
37
38
  build_id=self.context.build_id,
38
39
  model_id=self.context.model_id,
39
40
  project_uuid=self.context.project_uuid,
@@ -41,6 +41,7 @@ class DeployBuildStep(Step):
41
41
  raise QwakDeployNewBuildFailedException(
42
42
  message=self.DEPLOY_FAILURE_EXCEPTION_MESSAGE.format(e=e),
43
43
  suggestion=FAILED_DEPLOY_BUILD_SUGGESTION.format(
44
+ base_url=self.context.platform_url,
44
45
  build_id=self.context.build_id,
45
46
  model_id=self.context.model_id,
46
47
  project_uuid=self.context.project_uuid,
@@ -326,6 +326,7 @@ def build(
326
326
  else:
327
327
  print(
328
328
  success_msg.format(
329
+ base_url=pipeline.context.platform_url,
329
330
  build_id=pipeline.context.build_id,
330
331
  model_id=pipeline.context.model_id,
331
332
  project_uuid=pipeline.context.project_uuid,
@@ -1,14 +1,45 @@
1
+ import re
1
2
  from typing import Optional
2
3
 
3
4
  import click
5
+ from click import Argument, Context
4
6
 
5
7
  from qwak_sdk.commands.projects.create._logic import execute as execute_create
6
8
  from qwak_sdk.commands.ui_tools import output_as_json
7
9
  from qwak_sdk.inner.tools.cli_tools import QwakCommand
8
10
 
9
11
 
12
+ def validate_name(_: Context, argument: Argument, value: str) -> str:
13
+ """
14
+ Validate that `value` is a valid project name.
15
+ A valid project name must:
16
+ - Start with a lowercase letter,
17
+ - Contain only lowercase letters or hyphens,
18
+ - End with a lowercase letter,
19
+ - Not be empty.
20
+ :param _: Unused parameter for click's callback signature.
21
+ :param argument: Argument provided.
22
+ :param value: The project name to validate.
23
+ :raise click.BadParameter: If the validation fails.
24
+ :return: The validated project name.
25
+ """
26
+ # Validate that `value`:
27
+ # - starts with a lowercase letter,
28
+ # - contains only lowercase letters or hyphens,
29
+ # - ends with a lowercase letter,
30
+ # - and is not empty.
31
+ if not re.fullmatch(r"[a-z](?:[a-z-]*[a-z])?", value):
32
+ raise click.BadParameter(
33
+ f"{argument.name} must be lower-cased, "
34
+ "start and end with a letter, and only contain letters or hyphens (-)."
35
+ )
36
+ return value
37
+
38
+
10
39
  @click.command("create", cls=QwakCommand)
11
- @click.argument("name", metavar="name", required=True)
40
+ @click.argument(
41
+ "name", metavar="name", type=click.STRING, required=True, callback=validate_name
42
+ )
12
43
  @click.option(
13
44
  "--description",
14
45
  metavar="DESCRIPTION",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: qwak-sdk
3
- Version: 0.5.95
3
+ Version: 0.5.97
4
4
  Summary: Qwak SDK and CLI for qwak models
5
5
  License: Apache-2.0
6
6
  Keywords: mlops,ml,deployment,serving,model
@@ -22,6 +22,7 @@ Provides-Extra: feature-store
22
22
  Provides-Extra: feedback
23
23
  Provides-Extra: local-deployment
24
24
  Requires-Dist: boto3 (>=1.24.116,<2.0.0) ; extra == "batch" or extra == "feedback" or extra == "local-deployment"
25
+ Requires-Dist: click (==8.1.8)
25
26
  Requires-Dist: cloudpickle (==2.2.1) ; extra == "feature-store"
26
27
  Requires-Dist: cookiecutter
27
28
  Requires-Dist: croniter (==1.4.1)
@@ -34,7 +35,7 @@ Requires-Dist: pyarrow (>=6.0.0) ; extra == "batch" or extra == "feature-store"
34
35
  Requires-Dist: pyathena (>=2.2.0,!=2.18.0) ; extra == "feature-store"
35
36
  Requires-Dist: pyspark (==3.4.2) ; extra == "feature-store"
36
37
  Requires-Dist: python-json-logger (>=3.2.1,<4.0.0)
37
- Requires-Dist: qwak-core (>=0.4.255)
38
+ Requires-Dist: qwak-core (>=0.4.297)
38
39
  Requires-Dist: qwak-inference (>=0.1.20,<0.2.0)
39
40
  Requires-Dist: rich (>=13.0.0)
40
41
  Requires-Dist: tabulate (>=0.8.0)
@@ -1,4 +1,4 @@
1
- qwak_sdk/__init__.py,sha256=c6NuEGFW8yL_o34HIdDr1H7OMCLKh31-S-0APZNbF4c,135
1
+ qwak_sdk/__init__.py,sha256=GYAUYSYIahA_d7h-byIpxUuoWYyroDs1iIQzkHlNvjs,135
2
2
  qwak_sdk/cli.py,sha256=frMefF0AmLI1g5A9aADNueUkMDjRHikKlmXIA2i4kYA,4510
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
@@ -106,7 +106,7 @@ qwak_sdk/commands/models/build/_logic/client_logs/__init__.py,sha256=47DEQpj8HBS
106
106
  qwak_sdk/commands/models/build/_logic/client_logs/cli_phase_run_handler.py,sha256=xz_IemL5plfpRzv_DJ-Be-5SrL2_K_d2fP4ENEc9OGM,4687
107
107
  qwak_sdk/commands/models/build/_logic/client_logs/cli_trigger_build_logger.py,sha256=suvt6i68it5NXcX61tEbgZMoqsz8ntJqKh4OipSE1xY,719
108
108
  qwak_sdk/commands/models/build/_logic/client_logs/logger.py,sha256=L2UrMlvDkkZ27UfrYMQRJMPLctn1ee6HjCdVDlM863E,2897
109
- qwak_sdk/commands/models/build/_logic/client_logs/messages.py,sha256=q5_S5YivUZApFO2d1fZPBXiLQFW17tIn4mtNJmJVA48,1189
109
+ qwak_sdk/commands/models/build/_logic/client_logs/messages.py,sha256=e90WeIt0YE8kjEWCmEBFgRT8YXTU7gUpeQr_JSRNLTc,1045
110
110
  qwak_sdk/commands/models/build/_logic/client_logs/spinner.py,sha256=iph1eVC7QtSzNobNP2j_x0DC2k7bbka9eT8rcBpZGeQ,359
111
111
  qwak_sdk/commands/models/build/_logic/client_logs/trigger_build_logger.py,sha256=NTqa4u-wmba7znCwoG0g2AmwLnO9XtFTkisDAvkQvmQ,1621
112
112
  qwak_sdk/commands/models/build/_logic/client_logs/utils.py,sha256=0VcMlmWHtOR1fR4JUDQTDqeQmi3tH3cG8pBZf5Hfusc,311
@@ -115,14 +115,14 @@ qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/__init__.py,sha25
115
115
  qwak_sdk/commands/models/build/_logic/phase/a_fetch_model_code/get_sdk_version_step.py,sha256=hF9WoMZUcUQcVJgkNIvQsX-SIL29GEQhlFgiTZzjykg,385
116
116
  qwak_sdk/commands/models/build/_logic/phase/b_remote_register_qwak_build/__init__.py,sha256=5W2pbxqGPYqagdZ1efUndbK24nvWzv9YgsU0E8Drp5M,592
117
117
  qwak_sdk/commands/models/build/_logic/phase/c_deploy/__init__.py,sha256=Ak5f901KsQIA9BIXgtSCAaf7Es_IiCb0gRjPCeY1g_c,182
118
- qwak_sdk/commands/models/build/_logic/phase/c_deploy/build_polling_status.py,sha256=4d09gbclJm2HQOMJHJ37Dg6qS3FND-e7GBjhm-3TJ_I,2141
119
- qwak_sdk/commands/models/build/_logic/phase/c_deploy/deploy_build.py,sha256=eMP7X6FVJuJMLUvPEvS-ijC6B_3Oyr3Q3HjrQGW9YdQ,2242
118
+ qwak_sdk/commands/models/build/_logic/phase/c_deploy/build_polling_status.py,sha256=eAjsBXb1Dbthj2zO7D63JUQ2pIgl7zypgozsWF5DBeM,2197
119
+ qwak_sdk/commands/models/build/_logic/phase/c_deploy/deploy_build.py,sha256=8W_Wk5KFSz_sSnh-MUj5n7bycY-57QdyiOWjWY9loKY,2298
120
120
  qwak_sdk/commands/models/build/_logic/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
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
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=eQWoaA5zA3KsRUfNMA3XanLboVc2rO50l6FzdDomd1c,9869
125
+ qwak_sdk/commands/models/build/ui.py,sha256=dB2oG9V-KD0eqVnxCobUmnyXrmAvt2GnJlosoYXt_lg,9933
126
126
  qwak_sdk/commands/models/builds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
127
  qwak_sdk/commands/models/builds/builds_commands_group.py,sha256=0nSfTY8TracXG61rFboQWUTXJisHO6dgtJKeijy6ru8,491
128
128
  qwak_sdk/commands/models/builds/cancel/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -257,7 +257,7 @@ qwak_sdk/commands/models/runtime/update/ui.py,sha256=24GX7V05zK0HwLdNIBMaf1zJ9CC
257
257
  qwak_sdk/commands/projects/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
258
258
  qwak_sdk/commands/projects/create/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
259
259
  qwak_sdk/commands/projects/create/_logic.py,sha256=SXgOBjG7MBMdi8SCCJA_GTv93neki3K9RUEsskKUybE,377
260
- qwak_sdk/commands/projects/create/ui.py,sha256=eLk-waTDv60mZlG55qbIUPnUJbxRE4JMO5GKpSwnQ70,1193
260
+ qwak_sdk/commands/projects/create/ui.py,sha256=hohbMpnEb_XwUn23b028bZhsjMAtiV6_pJwYArI0ADE,2289
261
261
  qwak_sdk/commands/projects/delete/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
262
262
  qwak_sdk/commands/projects/delete/_logic.py,sha256=vDuNp11v1DbzQ2aPfIGkZgZiWQjhC_rOag00YNloPhw,203
263
263
  qwak_sdk/commands/projects/delete/ui.py,sha256=clzkGbY7P21qUGGUx-wSJzzLMrYvaZNMVqtxRMpG6f8,813
@@ -319,7 +319,7 @@ qwak_sdk/tools/colors.py,sha256=7pui_GGjC4uZKYFsIyXaJjYsjLxJVHb4OrfTgr93hqo,287
319
319
  qwak_sdk/tools/files.py,sha256=AyKJTOy7NhvP3SrqwIw_lxYNCOy1CvLgMmSJpWZ0OKM,2257
320
320
  qwak_sdk/tools/log_handling.py,sha256=Aa1EmxUPCX8YWiZRutUvnqPv6K_z1zoGMwIWsEv24mM,6327
321
321
  qwak_sdk/tools/utils.py,sha256=SHmU4r_m2ABZyFYMC03P17GvltPbYbmB39hvalIZEtI,1168
322
- qwak_sdk-0.5.95.dist-info/METADATA,sha256=xxBMQfKduVrXx-P-STe2P-BLgHB1ljdfh3WEsplYhe8,2302
323
- qwak_sdk-0.5.95.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
324
- qwak_sdk-0.5.95.dist-info/entry_points.txt,sha256=vSl0ELYDyj640oMM57u0AjBP87wtLYxCcGOendhEx80,47
325
- qwak_sdk-0.5.95.dist-info/RECORD,,
322
+ qwak_sdk-0.5.97.dist-info/METADATA,sha256=Zs2l13ZpdIcBGPrNQVaD9Atsmc83ESea2iWs3GHNXSo,2333
323
+ qwak_sdk-0.5.97.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
324
+ qwak_sdk-0.5.97.dist-info/entry_points.txt,sha256=vSl0ELYDyj640oMM57u0AjBP87wtLYxCcGOendhEx80,47
325
+ qwak_sdk-0.5.97.dist-info/RECORD,,