wizata-dsapi 1.4.0.dev11__py3-none-any.whl → 1.4.0.dev18__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.
wizata_dsapi/__init__.py CHANGED
@@ -48,3 +48,5 @@ from .evaluation import Evaluation
48
48
  # Streamlit utils
49
49
  from .streamlit_utils import (get_streamlit_token, get_streamlit_domain, get_streamlit_from, get_streamlit_to,
50
50
  get_streamlit_twin_id)
51
+
52
+ from .search import FilterOperator, SearchQuery, SortOption
@@ -405,7 +405,7 @@ class ExecutionLog(Dto):
405
405
  "template": self.get_template_key(),
406
406
  "twin": self.get_twin_key(),
407
407
  "edgeDeviceId": self.edge_device_id,
408
- "status": self.status.value if self.status else None
408
+ "status": self.status.value if hasattr(self.status, 'value') else self.status
409
409
  }
410
410
  return {k: v for k, v in labels.items() if v is not None}
411
411
 
@@ -29,3 +29,31 @@ class PagedQueryResult:
29
29
  if direction != 'asc' and direction != 'desc':
30
30
  raise ValueError("direction must be asc or desc")
31
31
  self.results = None
32
+
33
+ def to_json(self):
34
+ """
35
+ format the results
36
+ """
37
+
38
+ if self.direction == "asc":
39
+ sort_dir = "asc"
40
+ else:
41
+ sort_dir = "desc"
42
+
43
+ formatted_results = []
44
+ if self.results:
45
+ for obj in self.results:
46
+ if hasattr(obj, 'to_json'):
47
+ formatted_results.append(obj.to_json())
48
+ elif hasattr(obj, 'to_dict'):
49
+ formatted_results.append(obj.to_dict())
50
+ else:
51
+ formatted_results.append(obj)
52
+ return {
53
+ "page": self.page,
54
+ "size": self.size,
55
+ "sort": self.sort,
56
+ "direction": sort_dir,
57
+ "total": self.total,
58
+ "results": formatted_results
59
+ }
wizata_dsapi/search.py ADDED
@@ -0,0 +1,64 @@
1
+ from dataclasses import dataclass, field
2
+ from typing import Dict, List, Any, Optional
3
+
4
+
5
+ class FilterOperator:
6
+ """
7
+ Constants for standard filtering operators.
8
+ """
9
+ EQ = "eq"
10
+ NE = "ne"
11
+ GT = "gt"
12
+ GTE = "gte"
13
+ LT = "lt"
14
+ LTE = "lte"
15
+ IN = "in"
16
+ CONTAINS = "contains"
17
+ SEARCH = "_search"
18
+
19
+
20
+ class SortOption:
21
+ def __init__(self, field: str, order: str = "asc"):
22
+ self.field = field
23
+ self.order = order
24
+
25
+
26
+ class SearchQuery:
27
+ """
28
+ Generic class to represent JSON request structure.
29
+ """
30
+ @classmethod
31
+ def from_dict(cls, data: dict):
32
+ """
33
+ Helper to convert dictionary coming from endpoint to SearchQuery object.
34
+ """
35
+ raw_sort = data.get("sort", [])
36
+ sort_objs = []
37
+ for s in raw_sort:
38
+ sort_objs.append(SortOption(field=s["field"], order=s.get("order", "asc")))
39
+
40
+ svc_name = data.get("serviceName") or data.get("service_name") or "pipeline_runner"
41
+ return cls(
42
+ filters=data.get("filters", {}),
43
+ sort=sort_objs,
44
+ limit=data.get("limit", 5000),
45
+ page=data.get("page", 1),
46
+ size=data.get("size", 50),
47
+ service_name=svc_name
48
+ )
49
+
50
+ def __init__(self,
51
+ filters: Optional[Dict[str, Any]] = None,
52
+ sort: Optional[List[SortOption]] = None,
53
+ limit: int = 5000,
54
+ page: int = 1,
55
+ size: int = 50,
56
+ service_name: str = "pipeline_runner"):
57
+
58
+ self.filters = filters if filters is not None else {}
59
+ self.sort = sort if sort is not None else []
60
+ self.limit = limit
61
+ self.page = page
62
+ self.size = size
63
+ self.service_name = service_name
64
+
wizata_dsapi/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "1.4.0.dev11"
1
+ __version__ = "1.4.0.dev18"
@@ -1,9 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wizata_dsapi
3
- Version: 1.4.0.dev11
3
+ Version: 1.4.0.dev18
4
4
  Summary: Wizata Data Science Toolkit
5
+ Home-page: https://www.wizata.com
5
6
  Author: Wizata S.A.
6
7
  Author-email: info@wizata.com
8
+ Requires-Python: >=3.9
9
+ Description-Content-Type: text/x-rst
7
10
  License-File: LICENSE.txt
8
11
  Requires-Dist: pandas==1.5.3; python_version < "3.11"
9
12
  Requires-Dist: pandas==2.2.3; python_version >= "3.11" and python_version < "3.12"
@@ -74,7 +77,21 @@ Requires-Dist: torch==2.7.1; (python_version >= "3.11" and python_version < "3.1
74
77
  Requires-Dist: torch>=2.8.0; python_version >= "3.12" and extra == "all"
75
78
  Dynamic: author
76
79
  Dynamic: author-email
80
+ Dynamic: description
81
+ Dynamic: description-content-type
82
+ Dynamic: home-page
77
83
  Dynamic: license-file
78
84
  Dynamic: provides-extra
79
85
  Dynamic: requires-dist
86
+ Dynamic: requires-python
80
87
  Dynamic: summary
88
+
89
+ ===========================
90
+ Wizata Data Science Package
91
+ ===========================
92
+
93
+ This module is intended to be used to create and distribute data science modules within Wizata Platform.
94
+
95
+ Documentation can be found https://<your_tenant>.onwizata.com/docs
96
+
97
+ For more information please visit https://www.wizata.com
@@ -1,4 +1,4 @@
1
- wizata_dsapi/__init__.py,sha256=Fd4XEOX8Bon-_yQd4pXtqt2WyR7HgQFugMr35F4T1UA,2128
1
+ wizata_dsapi/__init__.py,sha256=sC_WXq9qi3PRds7hg4RiUnHsxaOMABjghzbPVLBy_GU,2188
2
2
  wizata_dsapi/api_config.py,sha256=lrjUOKnGBYgjSqvXdTf4gEcf-luTSV6DPdo3AbmIExU,5404
3
3
  wizata_dsapi/api_dto.py,sha256=mguQMqsshL4uNFt_RlZTD5zeKDBpFpa2nJP91ZtqaoA,2700
4
4
  wizata_dsapi/api_interface.py,sha256=ju3Wz1e2uOS1_SrSihc0AECkWLRNNGHMhpMhV2L6tjo,13315
@@ -12,27 +12,27 @@ wizata_dsapi/ds_dataframe.py,sha256=Sk2JRUuTRJzko3HosJnbK34STpgSJUlqxLq8w_E5VM4,
12
12
  wizata_dsapi/dsapi_json_encoder.py,sha256=_NJE2IncJCS-juOxV_IQWHq8WpaanKe2aWpGNZNUzyk,2062
13
13
  wizata_dsapi/evaluation.py,sha256=kB61SD66uRBBbKqiES7XZERn77bwhacbyufneSD4s8c,2222
14
14
  wizata_dsapi/execution.py,sha256=JuU8qZDcUZxtCvQwwvM_luwHi18GQ2jbBSxAjc2cSlM,14148
15
- wizata_dsapi/execution_log.py,sha256=uDpGXPswTml9sAT1JuwQDA2E0VMUPhbS_fV3DWi9Jm4,15161
15
+ wizata_dsapi/execution_log.py,sha256=Rx0J47xrnmQu6pNhYloJgTKc8IWH62GnU5lxYup9W1o,15186
16
16
  wizata_dsapi/experiment.py,sha256=QYQ1CJ-MTWsXq08xYbm5sAp95dRxbPOmGDgaAOoBMDQ,4631
17
17
  wizata_dsapi/group_system.py,sha256=6rUKe0_J3YWACysyBlzuw_TEpKNXgLOMxhpWsNxOzwY,1708
18
18
  wizata_dsapi/ilogger.py,sha256=YKBTRp7pHYtBlnzroGRPT91_bMVJT93Pft3fUGcFSIM,488
19
19
  wizata_dsapi/insight.py,sha256=ABFZ04DqYxxzqAEfU1tzlTZqqrigM-zN-8Lbetko3g0,6468
20
20
  wizata_dsapi/mlmodel.py,sha256=QkWBNordOQiw6Vv4xN_pxwJWqbBm29vY1dyDZgmMS_4,26324
21
21
  wizata_dsapi/model_toolkit.py,sha256=UNyw5CFSgZeXydQFsiDIRTjoMeqIsdyIIuiwumLW5bA,1574
22
- wizata_dsapi/paged_query_result.py,sha256=0Iyt2Kd4tvrfthhT-tk9EmSERsbJTaPNON2euHcBn6k,1150
22
+ wizata_dsapi/paged_query_result.py,sha256=QU0JukkBk7wwfE43wOcj4so2aYpGj5r5_XobLfm8CnE,1939
23
23
  wizata_dsapi/pipeline.py,sha256=gqZ6R8d8f_uz9xI3Umz2uN3yTD4N3jsBPltAIg--Bjk,31646
24
- wizata_dsapi/pipeline_deployment.py,sha256=grekBaxUK0EhL9w7lDB8vNuW_wzLnHVm9Mq8Lkbkguk,1722
25
24
  wizata_dsapi/pipeline_image.py,sha256=4DhDo1SYftN6QcNbehNbM86VTD6EYGmtlcOmE5DP5Vc,6330
26
25
  wizata_dsapi/plot.py,sha256=-gV6rZJQDhGH4CV9BgefjeJWI--X5HDBOjseEzHr3Gc,1971
27
26
  wizata_dsapi/request.py,sha256=W4E1BHacQdJiBLPI96yVeHz41rbfFuGrbuw1U60L_DM,27560
28
27
  wizata_dsapi/script.py,sha256=DeEciwVpuCYZetgJCoivw_bYe8ma52WuTaTQ_VkLEcg,12930
28
+ wizata_dsapi/search.py,sha256=LcWzjauHj4EzIl7aEXAsZGpX2IYl6e4Vw2jGWtdrfHI,1767
29
29
  wizata_dsapi/solution_component.py,sha256=8gbZWx2h_xUqI_pAXa3goqAnR5Y-GDMii8MeGlaK1IE,9531
30
30
  wizata_dsapi/streamlit_utils.py,sha256=sXBdygktbixV828Zg01Nl27_a4F8zGFc4RY0C8g-1bc,1942
31
31
  wizata_dsapi/template.py,sha256=wtCRKKk3PchH4RrNgNYlEF_9C6bzZwKIeLyEvgv6Fdo,13704
32
32
  wizata_dsapi/trigger.py,sha256=w3BZYP-L3SUwvaT0oCTanh_Ewn57peZvlt7vxzHv9J8,5129
33
33
  wizata_dsapi/twin.py,sha256=S0DUzQf1smZXZTdXpXZPtkZYCfKIhw53EecCnsl9i4Q,11017
34
34
  wizata_dsapi/twinregistration.py,sha256=Mi6-YuwroiEXc0c1hgrOaphh4hNVoHupxOnXedVtJtE,13377
35
- wizata_dsapi/version.py,sha256=D3hcB4cUqa8hrzfX4c-6RRRgmyjMsM7cure7QjYguz8,28
35
+ wizata_dsapi/version.py,sha256=L_v4KDhYQUSOz5VcYI0PLUcf8bzmZnrOq7u5fJ-iRiQ,28
36
36
  wizata_dsapi/wizard_function.py,sha256=RbM7W7Gf-6Rhp_1dU9DBYkHaciknGAGvuAndhAS_vyo,942
37
37
  wizata_dsapi/wizard_request.py,sha256=v6BaqKLKvTWmUSo0_gda9FabAQz5x_-GOH1Av50GzFo,3762
38
38
  wizata_dsapi/wizata_dsapi_client.py,sha256=pClIADBb_CfgT4P4Hz9mopgsuC0Wa_XiZBuej7x5JUM,85056
@@ -43,8 +43,8 @@ wizata_dsapi/plots/__init__.py,sha256=qgnSFqrjOPur-807M8uh5awIfjM1ZHXUXcAqHc-r2l
43
43
  wizata_dsapi/plots/common.py,sha256=jdPsJqLHBwSKc6dX83BSGPqSRxzIVNHSYO5yI_8sjGk,6568
44
44
  wizata_dsapi/scripts/__init__.py,sha256=hAxiETSQf0qOHde1si1tEAJU48seqEgHrchCzS2-LvQ,80
45
45
  wizata_dsapi/scripts/common.py,sha256=efwq-Rd0lvYljIs3gSFz9izogBD7asOU2cTK-IvHTkM,4244
46
- wizata_dsapi-1.4.0.dev11.dist-info/licenses/LICENSE.txt,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
47
- wizata_dsapi-1.4.0.dev11.dist-info/METADATA,sha256=rKS2t7fXk3nrFFYOokkpeEu8KWDhDNtfX74uHeocC0I,4960
48
- wizata_dsapi-1.4.0.dev11.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
49
- wizata_dsapi-1.4.0.dev11.dist-info/top_level.txt,sha256=-OeTJbEnh5DuWyTOHtvw0Dw3LRg3G27TNS6W4ZtfwPs,13
50
- wizata_dsapi-1.4.0.dev11.dist-info/RECORD,,
46
+ wizata_dsapi-1.4.0.dev18.dist-info/licenses/LICENSE.txt,sha256=QwcOLU5TJoTeUhuIXzhdCEEDDvorGiC6-3YTOl4TecE,11356
47
+ wizata_dsapi-1.4.0.dev18.dist-info/METADATA,sha256=edM1cKvGvG53ZkEYFKFc7md_X9OcCmwDpBw2ziUpVaU,5470
48
+ wizata_dsapi-1.4.0.dev18.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
49
+ wizata_dsapi-1.4.0.dev18.dist-info/top_level.txt,sha256=-OeTJbEnh5DuWyTOHtvw0Dw3LRg3G27TNS6W4ZtfwPs,13
50
+ wizata_dsapi-1.4.0.dev18.dist-info/RECORD,,
@@ -1,48 +0,0 @@
1
- import uuid
2
-
3
- from .api_dto import ApiDto
4
-
5
-
6
- class PipelineDeployment(ApiDto):
7
- """
8
- Pipeline Deployment contains deployment instruction for a pipeline.
9
-
10
- :ivar deployment_type: str with values "stream" or "classic"
11
- """
12
-
13
- def __init__(self,
14
- pipeline_deployment_id: uuid.UUID = None,
15
- pipeline_id: uuid.UUID = None,
16
- deployment_type: str = None):
17
-
18
- if pipeline_deployment_id is None:
19
- pipeline_deployment_id = uuid.uuid4()
20
- self.pipeline_deployment_id = pipeline_deployment_id
21
- self.pipeline_id = pipeline_id
22
- self.deployment_type = deployment_type
23
-
24
- def from_json(self, obj):
25
- """
26
- load from JSON dictionary representation
27
- """
28
- if "id" in obj.keys():
29
- self.pipeline_deployment_id = uuid.UUID(obj["id"])
30
- if "pipelineId" in obj.keys() and obj["pipelineId"] is not None:
31
- self.pipeline_id = uuid.UUID(obj['pipelineId'])
32
- if "deploymentType" in obj.keys() and obj["deploymentType"] is not None:
33
- if str(obj["deploymentType"]) not in ['stream', 'classic']:
34
- raise ValueError('deployment type must be stream or classic.')
35
- self.deployment_type = str(obj["deploymentType"])
36
-
37
- def to_json(self):
38
- """
39
- convert object to a proper dictionary
40
- """
41
- obj = {
42
- "id": str(self.pipeline_deployment_id)
43
- }
44
- if self.pipeline_id is not None:
45
- obj["pipelineId"] = str(self.pipeline_id)
46
- if self.deployment_type is not None and str(self.deployment_type) in ['stream', 'classic']:
47
- obj["deploymentType"] = str(self.deployment_type)
48
- return obj