qwak-sdk 0.5.73__py3-none-any.whl → 0.5.75__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.73'
3
+ __version__ = '0.5.75'
4
4
 
5
5
  from qwak.inner import wire_dependencies
6
6
 
@@ -14,6 +14,9 @@ from qwak.exceptions import QwakException
14
14
  from qwak.feature_store.data_sources.base import BaseSource
15
15
  from qwak.feature_store.entities.entity import Entity
16
16
  from qwak.feature_store.feature_sets.base_feature_set import BaseFeatureSet
17
+ from qwak.feature_store.validations.validation_options import (
18
+ FeatureSetValidationOptions,
19
+ )
17
20
  from qwak.feature_store.validations.validation_response import (
18
21
  SuccessValidationResponse,
19
22
  ValidationResponse,
@@ -158,6 +161,7 @@ def _register_features_sets(
158
161
  git_commit: str,
159
162
  no_validation: bool,
160
163
  ignore_validation_errors: bool,
164
+ data_source_limit: Optional[int] = None,
161
165
  ):
162
166
  """
163
167
  Register Feature Store Feature Set Objects
@@ -209,6 +213,7 @@ def _register_features_sets(
209
213
  featureset=featureset,
210
214
  no_validation=no_validation,
211
215
  ignore_validation_errors=ignore_validation_errors,
216
+ data_source_limit=data_source_limit,
212
217
  )
213
218
 
214
219
  proto_feature_set, _ = featureset._to_proto(
@@ -273,6 +278,7 @@ def _register_new_feature_set(
273
278
 
274
279
  def _handle_featureset_validation(
275
280
  featureset: BaseFeatureSet,
281
+ data_source_limit: Optional[int] = None,
276
282
  ) -> Tuple[List[ProtoFeature], Optional[str]]:
277
283
  print(f"Validating '{featureset.name}' feature set")
278
284
  with qwak_spinner(begin_text="", print_callback=print):
@@ -281,8 +287,13 @@ def _handle_featureset_validation(
281
287
  v = FeaturesOperatorValidator()
282
288
  response: ValidationResponse
283
289
  artifact_url: Optional[str]
290
+ validation_options = FeatureSetValidationOptions(
291
+ data_source_limit=data_source_limit
292
+ )
284
293
 
285
- response, artifact_url = v.validate_featureset(featureset=featureset)
294
+ response, artifact_url = v.validate_featureset(
295
+ featureset=featureset, validation_options=validation_options
296
+ )
286
297
  if isinstance(response, SuccessValidationResponse):
287
298
  print_validation_outputs(response.stdout, response.stderr)
288
299
  print("✅ Validation completed successfully, got data source columns:")
@@ -297,6 +308,7 @@ def _validate_featureset(
297
308
  featureset: BaseFeatureSet,
298
309
  no_validation: bool,
299
310
  ignore_validation_errors: bool,
311
+ data_source_limit: Optional[int] = None,
300
312
  ) -> Tuple[List[ProtoFeature], Optional[str]]:
301
313
  """
302
314
  Validates featureset transformation
@@ -313,7 +325,7 @@ def _validate_featureset(
313
325
  if not no_validation:
314
326
  try:
315
327
  features, artifact_url = _handle_featureset_validation(
316
- featureset=featureset
328
+ featureset=featureset, data_source_limit=data_source_limit
317
329
  )
318
330
  except Exception as e:
319
331
  print(str(e))
@@ -1,6 +1,6 @@
1
1
  import os
2
2
  from pathlib import Path
3
- from typing import List, Tuple
3
+ from typing import List, Optional, Tuple
4
4
 
5
5
  import click
6
6
  from qwak.clients.feature_store import FeatureRegistryClient
@@ -52,11 +52,17 @@ from qwak_sdk.tools.utils import qwak_spinner
52
52
  metavar="FLAG",
53
53
  help="Ignore validation errors. Continue registering even if an error occurs",
54
54
  )
55
+ @click.option(
56
+ "--fs-validation-ds-limit",
57
+ type=click.IntRange(1, 10000),
58
+ help="Limit the number of records to be fetched from each datasource during featureset validation",
59
+ )
55
60
  def register_fs_objects(
56
61
  path: Path,
57
62
  force: bool,
58
63
  no_validation: bool,
59
64
  ignore_validation_errors: bool,
65
+ fs_validation_ds_limit: Optional[int],
60
66
  **kwargs,
61
67
  ):
62
68
  qwak_python_files: List[Tuple[str, str]]
@@ -101,4 +107,5 @@ def register_fs_objects(
101
107
  git_commit,
102
108
  no_validation,
103
109
  ignore_validation_errors,
110
+ fs_validation_ds_limit,
104
111
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qwak-sdk
3
- Version: 0.5.73
3
+ Version: 0.5.75
4
4
  Summary: Qwak SDK and CLI for qwak models
5
5
  License: Apache-2.0
6
6
  Keywords: mlops,ml,deployment,serving,model
@@ -38,7 +38,7 @@ Requires-Dist: pandas (>=1.4.0) ; (python_version >= "3.10" and python_version <
38
38
  Requires-Dist: pyarrow (>=6.0.0,<11.0.0) ; extra == "batch"
39
39
  Requires-Dist: python-json-logger (>=2.0.2)
40
40
  Requires-Dist: qwak-core (==0.4.45)
41
- Requires-Dist: qwak-inference (>=0.1.16,<0.2.0)
41
+ Requires-Dist: qwak-inference (>=0.1.18,<0.2.0)
42
42
  Requires-Dist: rich (>=13.0.0)
43
43
  Requires-Dist: tabulate (>=0.8.0)
44
44
  Requires-Dist: yaspin (>=2.0.0)
@@ -1,4 +1,4 @@
1
- qwak_sdk/__init__.py,sha256=rpzy0X82X_g0z-tuUzgDHri6AMCaWXYn4A1hu4lOBVE,135
1
+ qwak_sdk/__init__.py,sha256=LiutEyvKfxYgadR1ZI_6ydX8O2nAOdsIRtzXCSnNmGU,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
@@ -92,8 +92,8 @@ qwak_sdk/commands/feature_store/list/ui.py,sha256=NuXnQ3cdXSDCFAcC2jmgx4sAdjNuyI
92
92
  qwak_sdk/commands/feature_store/pause/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
93
  qwak_sdk/commands/feature_store/pause/ui.py,sha256=C89yl4ly-RpyZub30q5xV5g1UDnI_GmHSndvXAkXkw4,695
94
94
  qwak_sdk/commands/feature_store/register/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
95
- qwak_sdk/commands/feature_store/register/_logic.py,sha256=vluOTUWdnUu0AMBPAzA9VYjDddb4Z45-hkPNGDKAWRs,12652
96
- qwak_sdk/commands/feature_store/register/ui.py,sha256=zfSuqNZuwEC2e7wlh2bFZ12mYTS6Gq75DDC6bumWSNc,2724
95
+ qwak_sdk/commands/feature_store/register/_logic.py,sha256=xCMHnyTYA4UbPm0sxiJ-j1bej00YVHZfUAgJMdv1K9s,13153
96
+ qwak_sdk/commands/feature_store/register/ui.py,sha256=F9bCsV13ZdmzHw470Bfso48LzjABLmYx5p8sISJNPh0,2997
97
97
  qwak_sdk/commands/feature_store/resume/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
98
98
  qwak_sdk/commands/feature_store/resume/ui.py,sha256=nI87xvA30qNQVJnT67lYJgwKGBtvZAurC6XX9ttpCZA,700
99
99
  qwak_sdk/commands/feature_store/trigger/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -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.73.dist-info/entry_points.txt,sha256=vSl0ELYDyj640oMM57u0AjBP87wtLYxCcGOendhEx80,47
323
- qwak_sdk-0.5.73.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
324
- qwak_sdk-0.5.73.dist-info/METADATA,sha256=93bC0PUsn4DBEpRxuvN-hfF7TAHDnLhQKEYbB86iIB0,2600
325
- qwak_sdk-0.5.73.dist-info/RECORD,,
322
+ qwak_sdk-0.5.75.dist-info/entry_points.txt,sha256=vSl0ELYDyj640oMM57u0AjBP87wtLYxCcGOendhEx80,47
323
+ qwak_sdk-0.5.75.dist-info/WHEEL,sha256=vVCvjcmxuUltf8cYhJ0sJMRDLr1XsPuxEId8YDzbyCY,88
324
+ qwak_sdk-0.5.75.dist-info/METADATA,sha256=4pavp9WVUVDi7r76pmyVsGovNndgfEKEVrOO2bT9F08,2600
325
+ qwak_sdk-0.5.75.dist-info/RECORD,,