qwak-sdk 0.5.13__py3-none-any.whl → 0.5.15__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.13'
3
+ __version__ = '0.5.15'
4
4
 
5
5
  from qwak.inner import wire_dependencies
6
6
 
@@ -29,7 +29,7 @@ class BaseDeployExecutor(ABC):
29
29
  self.user_config = UserAccountConfiguration().get_user_config()
30
30
  self.instance_template_client = InstanceTemplateManagementClient()
31
31
 
32
- def poll_until_complete(self, deployment_id: str, poll_period: int):
32
+ def poll_until_complete(self, deployment_id: str, check_every_n_seconds: int):
33
33
  def deployment_status():
34
34
  status_response = self.deploy_client.get_deployment_status(
35
35
  deployment_named_id=deployment_id
@@ -39,11 +39,13 @@ class BaseDeployExecutor(ABC):
39
39
 
40
40
  status = deployment_status()
41
41
  while status not in END_STATUSES:
42
- sleep(poll_period)
42
+ sleep(check_every_n_seconds)
43
43
  status = deployment_status()
44
44
  return status
45
45
 
46
- def poll_until_complete_multiple(self, deployment_ids: List[str], poll_period: int):
46
+ def poll_until_complete_multiple(
47
+ self, deployment_ids: List[str], check_every_n_seconds: int
48
+ ):
47
49
  def deployment_status(deployment_id: str):
48
50
  status_response = self.deploy_client.get_deployment_status(
49
51
  deployment_named_id=deployment_id
@@ -55,7 +57,7 @@ class BaseDeployExecutor(ABC):
55
57
  deployment_status(deployment_id) for deployment_id in deployment_ids
56
58
  ]
57
59
  while all(status not in END_STATUSES for status in statuses):
58
- sleep(poll_period)
60
+ sleep(check_every_n_seconds)
59
61
  statuses = [
60
62
  deployment_status(deployment_id) for deployment_id in deployment_ids
61
63
  ]
@@ -124,7 +124,7 @@ def __sync_deployments(
124
124
  print_callback=print,
125
125
  ):
126
126
  deployment_id_to_status = deploy.poll_until_complete_multiple(
127
- list(deployment_id_to_env.keys()), poll_period=600
127
+ list(deployment_id_to_env.keys()), check_every_n_seconds=5
128
128
  )
129
129
  failed_deployments = []
130
130
  for deployment_id, status in deployment_id_to_status.items():
@@ -143,7 +143,9 @@ def __sync_deployment(deploy: BaseDeployExecutor, deploy_name: str):
143
143
  end_text="Successful deployments",
144
144
  print_callback=print,
145
145
  ):
146
- deployment_status = deploy.poll_until_complete(deploy_name, poll_period=600)
146
+ deployment_status = deploy.poll_until_complete(
147
+ deploy_name, check_every_n_seconds=5
148
+ )
147
149
  if deployment_status in FAILED_STATUS:
148
150
  raise QwakException(deployment_status)
149
151
 
@@ -12,7 +12,7 @@ from qwak_sdk.commands.models.deployments.deploy._logic.deployment_response_hand
12
12
  from qwak_sdk.commands.models.deployments.deploy.batch._logic.deploy_executor import (
13
13
  BatchDeployExecutor,
14
14
  )
15
- from qwak_sdk.inner.tools.cli_tools import QwakCommand
15
+ from qwak_sdk.inner.tools.cli_tools import DeprecatedOption, QwakCommand
16
16
  from qwak_sdk.inner.tools.config_handler import config_handler
17
17
 
18
18
 
@@ -25,8 +25,12 @@ from qwak_sdk.inner.tools.config_handler import config_handler
25
25
  @click.option("--model-id", help="Model ID", type=str, required=True)
26
26
  @click.option(
27
27
  "--pods",
28
+ "--replicas",
28
29
  type=int,
29
30
  help="Number of pods to deploy.",
31
+ deprecated=["--pods"],
32
+ preferred="--replicas",
33
+ cls=DeprecatedOption,
30
34
  )
31
35
  @click.option(
32
36
  "--cpus",
@@ -17,7 +17,7 @@ from qwak_sdk.commands.models.deployments.deploy._logic.deployment_response_hand
17
17
  from qwak_sdk.commands.models.deployments.deploy.realtime._logic.deploy_executor import (
18
18
  RealtimeDeployExecutor,
19
19
  )
20
- from qwak_sdk.inner.tools.cli_tools import QwakCommand
20
+ from qwak_sdk.inner.tools.cli_tools import DeprecatedOption, QwakCommand
21
21
  from qwak_sdk.inner.tools.config_handler import config_handler
22
22
 
23
23
  logger = get_qwak_logger()
@@ -48,8 +48,12 @@ logger = get_qwak_logger()
48
48
  )
49
49
  @click.option(
50
50
  "--pods",
51
+ "--replicas",
51
52
  type=int,
52
- help="Number of pods to deploy.",
53
+ help="Number of replicas to deploy.",
54
+ deprecated=["--pods"],
55
+ preferred="--replicas",
56
+ cls=DeprecatedOption,
53
57
  )
54
58
  @click.option(
55
59
  "--cpus",
@@ -16,7 +16,7 @@ from qwak_sdk.commands.models.deployments.deploy._logic.deployment_response_hand
16
16
  from qwak_sdk.commands.models.deployments.deploy.streaming._logic.deploy_executor import (
17
17
  StreamDeployExecutor,
18
18
  )
19
- from qwak_sdk.inner.tools.cli_tools import QwakCommand
19
+ from qwak_sdk.inner.tools.cli_tools import DeprecatedOption, QwakCommand
20
20
  from qwak_sdk.inner.tools.config_handler import config_handler
21
21
 
22
22
  logger = get_qwak_logger()
@@ -115,8 +115,12 @@ FAILED_STATUSES = [
115
115
  )
116
116
  @click.option(
117
117
  "--pods",
118
+ "--replicas",
118
119
  type=int,
119
- help="Number of pods to deploy.",
120
+ help="Number of replicas to deploy.",
121
+ deprecated=["--pods"],
122
+ preferred="--replicas",
123
+ cls=DeprecatedOption,
120
124
  )
121
125
  @click.option(
122
126
  "--cpus",
@@ -11,7 +11,7 @@ from qwak.tools.logger.logger import get_qwak_logger
11
11
  from tabulate import tabulate
12
12
 
13
13
  from qwak_sdk.commands.models.executions.start._logic import execute_start_execution
14
- from qwak_sdk.inner.tools.cli_tools import QwakCommand
14
+ from qwak_sdk.inner.tools.cli_tools import DeprecatedOption, QwakCommand
15
15
  from qwak_sdk.inner.tools.config_handler import config_handler
16
16
 
17
17
  logger = get_qwak_logger()
@@ -93,9 +93,13 @@ logger = get_qwak_logger()
93
93
  )
94
94
  @click.option(
95
95
  "--pods",
96
+ "--replicas",
96
97
  type=int,
97
98
  default=0,
98
- help="Number of pods to deploy. (concurrent files processing). Default is as deployed.",
99
+ help="Number of replicas to deploy. (concurrent files processing). Default is as deployed.",
100
+ deprecated=["--pods"],
101
+ preferred="--replicas",
102
+ cls=DeprecatedOption,
99
103
  )
100
104
  @click.option(
101
105
  "--cpus",
@@ -1,9 +1,11 @@
1
1
  import functools
2
2
  import time
3
+ import warnings
3
4
  from collections import namedtuple
4
5
  from typing import Any, Callable, Dict, List, Tuple, Union
5
6
 
6
7
  import click
8
+ from click import Context, OptionParser
7
9
  from qwak.exceptions import QwakException
8
10
  from qwak.inner.di_configuration import UserAccountConfiguration
9
11
  from qwak.inner.di_configuration.session import Session
@@ -80,6 +82,13 @@ def usage_statistics_wrapper(func: Callable):
80
82
  return wrapper
81
83
 
82
84
 
85
+ class DeprecatedOption(click.Option):
86
+ def __init__(self, *args, **kwargs):
87
+ self.deprecated = kwargs.pop("deprecated", ())
88
+ self.preferred = kwargs.pop("preferred", args[0][-1])
89
+ super(DeprecatedOption, self).__init__(*args, **kwargs)
90
+
91
+
83
92
  class QwakCommand(click.Command):
84
93
  def __init__(self, *args, **kwargs):
85
94
  super().__init__(*args, **kwargs)
@@ -106,6 +115,55 @@ class QwakCommand(click.Command):
106
115
  ),
107
116
  )
108
117
 
118
+ def make_parser(self, ctx: Context) -> OptionParser:
119
+ parser = super(QwakCommand, self).make_parser(ctx)
120
+
121
+ # get the parser options
122
+ options = set(parser._short_opt.values())
123
+ options |= set(parser._long_opt.values())
124
+
125
+ for option in options:
126
+ if not isinstance(option.obj, DeprecatedOption):
127
+ continue
128
+
129
+ def make_process(an_option):
130
+ """Construct a closure to the parser option processor"""
131
+
132
+ orig_process = an_option.process
133
+ deprecated = getattr(an_option.obj, "deprecated", None)
134
+ preferred = getattr(an_option.obj, "preferred", None)
135
+
136
+ if not deprecated:
137
+ f"Expected `deprecated` value for `{an_option.obj.name}`"
138
+
139
+ def process(value, state):
140
+ """The function above us on the stack used 'opt' to
141
+ pick option from a dict, see if it is deprecated"""
142
+
143
+ # reach up the stack and get 'opt'
144
+ import inspect
145
+
146
+ frame = inspect.currentframe()
147
+ try:
148
+ opt = frame.f_back.f_locals.get("opt")
149
+ finally:
150
+ del frame
151
+
152
+ if opt in deprecated:
153
+ warnings.warn(
154
+ f"{opt} has been deprecated, use {preferred}."
155
+ f" {opt} will be removed in future releases.",
156
+ DeprecationWarning,
157
+ )
158
+
159
+ return orig_process(value, state)
160
+
161
+ return process
162
+
163
+ option.process = make_process(option)
164
+
165
+ return parser
166
+
109
167
  @profile_setter_wrapper
110
168
  @usage_statistics_wrapper
111
169
  def invoke(self, ctx: click.Context) -> Any:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qwak-sdk
3
- Version: 0.5.13
3
+ Version: 0.5.15
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,8 +27,8 @@ 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.120)
31
- Requires-Dist: qwak-inference (==0.1.4)
30
+ Requires-Dist: qwak-core (==0.0.157)
31
+ Requires-Dist: qwak-inference (==0.1.7)
32
32
  Requires-Dist: tabulate (>=0.8.0)
33
33
  Requires-Dist: yaspin (>=2.0.0)
34
34
  Project-URL: Home page, https://www.qwak.com/
@@ -1,4 +1,4 @@
1
- qwak_sdk/__init__.py,sha256=HMkbz4CKi7veD1qG8OjP38TD22U5FkcaI7UJHz16PSY,135
1
+ qwak_sdk/__init__.py,sha256=k6bfpPr0lPXa5fGj7XJnmb-TRDTJOk8FWTVtqNnu4j0,135
2
2
  qwak_sdk/cli.py,sha256=GP0DChLWRMQuVbnmntom2MUjRfehzfcCFAGGna43TwU,2304
3
3
  qwak_sdk/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  qwak_sdk/commands/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -165,11 +165,11 @@ qwak_sdk/commands/models/deployments/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeu
165
165
  qwak_sdk/commands/models/deployments/deploy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
166
166
  qwak_sdk/commands/models/deployments/deploy/_logic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
167
  qwak_sdk/commands/models/deployments/deploy/_logic/advance_deployment_options_handler.py,sha256=gCo3WuP-IDuA5Sg7WbFmp1hYT5qyXyf6pUD3tZGyZXs,1251
168
- qwak_sdk/commands/models/deployments/deploy/_logic/base_deploy_executor.py,sha256=6y5GpZgOFr4I8b1jNtji3LBIaQ-okx5d58eTeOjf-ng,2652
168
+ qwak_sdk/commands/models/deployments/deploy/_logic/base_deploy_executor.py,sha256=HYKUG5s4ZrpFwoxJYn3EuTYU71lmM0cFOOjbHqd9ajY,2706
169
169
  qwak_sdk/commands/models/deployments/deploy/_logic/deploy_config.py,sha256=j5wt_5tNdJyPyy4YgWUsz6id1We3JmsCACc3284mgSA,8355
170
170
  qwak_sdk/commands/models/deployments/deploy/_logic/deployment.py,sha256=zBTjeeEVtTnTwUMwUfGTI3Ip9AgqKDvHAZ6_Wi22XVo,13221
171
171
  qwak_sdk/commands/models/deployments/deploy/_logic/deployment_message_helpers.py,sha256=xMr4nd3V-B-9kXx-e2MYDkN5-AIuz0NCJphkQTf7GHE,4087
172
- qwak_sdk/commands/models/deployments/deploy/_logic/deployment_response_handler.py,sha256=AYzvBGjeDR3gg3jfBetK5ImUivUsnxKFsRRZdXp7lUw,5799
172
+ qwak_sdk/commands/models/deployments/deploy/_logic/deployment_response_handler.py,sha256=cHa2iF_2A8e1wx2a4UZuTjQ5IHgPvua1xziFJwzP_6s,5837
173
173
  qwak_sdk/commands/models/deployments/deploy/_logic/deployment_size_mapper.py,sha256=SJk9egX-OW29RcLvsWBogYMFzVMkazWkL8z3bT05O24,2167
174
174
  qwak_sdk/commands/models/deployments/deploy/_logic/get_latest_successful_build.py,sha256=NVHjRVM2oQhlJxMYXD1yQ5ZT6Jcd5msO1hpzGdrC64I,1067
175
175
  qwak_sdk/commands/models/deployments/deploy/_logic/variations.py,sha256=XyjeypZuuqjyIv8cqnhD6JHQUz2HZJ6XR4N9F_V4__k,3166
@@ -177,19 +177,19 @@ qwak_sdk/commands/models/deployments/deploy/batch/__init__.py,sha256=47DEQpj8HBS
177
177
  qwak_sdk/commands/models/deployments/deploy/batch/_logic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
178
178
  qwak_sdk/commands/models/deployments/deploy/batch/_logic/advanced_deployment_mapper.py,sha256=1MpmBea3ERNdaDajCPdwYnt04IoGZdh5pwMlIzdBX5U,495
179
179
  qwak_sdk/commands/models/deployments/deploy/batch/_logic/deploy_executor.py,sha256=oOKPotp37qdLupYau5Fv2voki4SAIFitHMn_U4ZaJP8,946
180
- qwak_sdk/commands/models/deployments/deploy/batch/ui.py,sha256=9W7U6njkjW8BuNefa9Supa6V4qexTjeQEacgOKiTwVw,3128
180
+ qwak_sdk/commands/models/deployments/deploy/batch/ui.py,sha256=W8FBHy5F9CD9Xl5_hFCtd_JN-ib22ehsMznQR6yvHKg,3245
181
181
  qwak_sdk/commands/models/deployments/deploy/deploy_commands_group.py,sha256=LnfdnfeSTCO90SrJfgXf21xiVRry6Y2sfj_JfdBQu_U,500
182
182
  qwak_sdk/commands/models/deployments/deploy/realtime/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
183
183
  qwak_sdk/commands/models/deployments/deploy/realtime/_logic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
184
184
  qwak_sdk/commands/models/deployments/deploy/realtime/_logic/advanced_deployment_mapper.py,sha256=y_qfvoOtwr0615hm123z8li7doF5PjBj1d95g98GEZk,902
185
185
  qwak_sdk/commands/models/deployments/deploy/realtime/_logic/deploy_executor.py,sha256=KClooUmWbt4Iym7_PC8jg8oHCFRWNvno-16-aFWwutA,950
186
186
  qwak_sdk/commands/models/deployments/deploy/realtime/_logic/serving_strategy_mapper.py,sha256=BJxuds7pf8s7pqhYIs5YIjlO3OByjQHob3jEgVWhR3U,3621
187
- qwak_sdk/commands/models/deployments/deploy/realtime/ui.py,sha256=ABnMrBcx9JZw0eklksOKPDY-3-RXfHjt4qZ5BG-pNRI,4714
187
+ qwak_sdk/commands/models/deployments/deploy/realtime/ui.py,sha256=yXj4LaAG6Ol1UepbP-KPEz2Cd0EDX5j-qSxAWAmZFEc,4835
188
188
  qwak_sdk/commands/models/deployments/deploy/streaming/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
189
189
  qwak_sdk/commands/models/deployments/deploy/streaming/_logic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
190
190
  qwak_sdk/commands/models/deployments/deploy/streaming/_logic/deploy_executor.py,sha256=RRkNzFcPhfj70pjFJE5DQDMxDi-gJOiaH5C9ofHEQUA,948
191
191
  qwak_sdk/commands/models/deployments/deploy/streaming/_logic/serving_strategy_mapper.py,sha256=97m93afiwmrNL9EQ3tE4JmrBYfcBnKZB9ipcvzrIWDk,1500
192
- qwak_sdk/commands/models/deployments/deploy/streaming/ui.py,sha256=INIH1oEc4RmQePBQ36s3ePuRUcOG6V3It5n_TG92lxc,5494
192
+ qwak_sdk/commands/models/deployments/deploy/streaming/ui.py,sha256=pqL6F4RuGPuFcGzi97OlIIkrdlvbP50xhcYn5OXF4VI,5615
193
193
  qwak_sdk/commands/models/deployments/undeploy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
194
194
  qwak_sdk/commands/models/deployments/undeploy/_logic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
195
195
  qwak_sdk/commands/models/deployments/undeploy/_logic/request_undeploy.py,sha256=8DMxVBFHa_Hf_iC-RwHZaCoiP3DEXvMeUP1Ah42zuZY,5677
@@ -208,7 +208,7 @@ qwak_sdk/commands/models/executions/report/_logic.py,sha256=f3ISnVUSbqgZoUo_iGZL
208
208
  qwak_sdk/commands/models/executions/report/ui.py,sha256=ouqgm0BzqURse-FSB_7cc1L0Ch89zNAQ4w_bdnZDgPg,1435
209
209
  qwak_sdk/commands/models/executions/start/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
210
210
  qwak_sdk/commands/models/executions/start/_logic.py,sha256=LQtcfuw9S4-EQoXMKKDR185ZASMQfDQ6smrBT54zNHc,926
211
- qwak_sdk/commands/models/executions/start/ui.py,sha256=tzfsdyFzvOT7GF4SuxqeA9Rvx8UG4ErzSpOVVdWoq3c,5181
211
+ qwak_sdk/commands/models/executions/start/ui.py,sha256=6F8xLmQV8uXvdM1T8H59g8MhGrUhDM3unUxI9mp95xc,5302
212
212
  qwak_sdk/commands/models/executions/status/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
213
213
  qwak_sdk/commands/models/executions/status/_logic.py,sha256=RACCYLGh3AaSm7M_a5tunIiO3qH0Tld1ugAvM123_cU,480
214
214
  qwak_sdk/commands/models/executions/status/ui.py,sha256=HvViXO0AE9ZXly_4jqJIgxSB45-S48XTeBHwGrAhdU8,820
@@ -313,7 +313,7 @@ qwak_sdk/exceptions/qwak_suggestion_exception.py,sha256=3sIK6s3OB3G0NLC_fGV1WkAo
313
313
  qwak_sdk/inner/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
314
314
  qwak_sdk/inner/file_registry.py,sha256=CViXsi9ipYpLuPfIPY0R4DftSGjY7BN-5mxjjkQcFIY,3164
315
315
  qwak_sdk/inner/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
316
- qwak_sdk/inner/tools/cli_tools.py,sha256=0ynzlCfnC7U3ViwGc0Bjh729niSC_n6g-783GQVk_vs,4541
316
+ qwak_sdk/inner/tools/cli_tools.py,sha256=VaYvv8e86tfRI7pX1Pa7O48vnZ6-dXEgUIthH1LknJs,6598
317
317
  qwak_sdk/inner/tools/config_handler.py,sha256=XYaB7cvjWg4CRFPB9lyKdxEop2qTwcWGxrVkCeg66do,880
318
318
  qwak_sdk/inner/tools/dataclasses_utils.py,sha256=Ixm6Bz0qWA4bwqC4djT4XhqF2ua4LCNsadj2Xxwmi_A,793
319
319
  qwak_sdk/inner/tools/logger/__init__.py,sha256=LJmj3u5w2AZNVfGPpD6hmEzKhwPLlZNruGTjQdHfN_A,71
@@ -326,7 +326,7 @@ qwak_sdk/tools/colors.py,sha256=7pui_GGjC4uZKYFsIyXaJjYsjLxJVHb4OrfTgr93hqo,287
326
326
  qwak_sdk/tools/files.py,sha256=AyKJTOy7NhvP3SrqwIw_lxYNCOy1CvLgMmSJpWZ0OKM,2257
327
327
  qwak_sdk/tools/log_handling.py,sha256=CC9XC3z3eHr_fehQgDsXZr4VP29VaMRwC05xvC5Wue4,5616
328
328
  qwak_sdk/tools/utils.py,sha256=SHmU4r_m2ABZyFYMC03P17GvltPbYbmB39hvalIZEtI,1168
329
- qwak_sdk-0.5.13.dist-info/entry_points.txt,sha256=vSl0ELYDyj640oMM57u0AjBP87wtLYxCcGOendhEx80,47
330
- qwak_sdk-0.5.13.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
331
- qwak_sdk-0.5.13.dist-info/METADATA,sha256=F1AYGfhqikMLcD3vbMmocaACrzfhmLKUP6bLrsxC_S0,1852
332
- qwak_sdk-0.5.13.dist-info/RECORD,,
329
+ qwak_sdk-0.5.15.dist-info/entry_points.txt,sha256=vSl0ELYDyj640oMM57u0AjBP87wtLYxCcGOendhEx80,47
330
+ qwak_sdk-0.5.15.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
331
+ qwak_sdk-0.5.15.dist-info/METADATA,sha256=duJGNVFEE35vuYG-1Mwr1Llvq9F20TCrDLZw4UMtYTs,1852
332
+ qwak_sdk-0.5.15.dist-info/RECORD,,