wizata-dsapi 2.0.0.dev18__tar.gz → 2.0.0.dev20__tar.gz

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.
Files changed (65) hide show
  1. {wizata_dsapi-2.0.0.dev18/wizata_dsapi.egg-info → wizata_dsapi-2.0.0.dev20}/PKG-INFO +1 -1
  2. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/__init__.py +2 -2
  3. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/notification.py +49 -1
  4. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/script.py +18 -1
  5. wizata_dsapi-2.0.0.dev20/wizata_dsapi/version.py +1 -0
  6. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20/wizata_dsapi.egg-info}/PKG-INFO +1 -1
  7. wizata_dsapi-2.0.0.dev18/wizata_dsapi/version.py +0 -1
  8. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/LICENSE.txt +0 -0
  9. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/README.rst +0 -0
  10. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/setup.cfg +0 -0
  11. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/setup.py +0 -0
  12. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/api_config.py +0 -0
  13. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/api_dto.py +0 -0
  14. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/api_interface.py +0 -0
  15. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/bucket.py +0 -0
  16. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/business_label.py +0 -0
  17. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/context.py +0 -0
  18. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/dashboard.py +0 -0
  19. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/dataframe_toolkit.py +0 -0
  20. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/datapoint.py +0 -0
  21. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/datastore.py +0 -0
  22. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/ds_dataframe.py +0 -0
  23. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/dsapi_json_encoder.py +0 -0
  24. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/edge_config.py +0 -0
  25. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/edge_device.py +0 -0
  26. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/edge_module.py +0 -0
  27. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/evaluation.py +0 -0
  28. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/execution.py +0 -0
  29. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/execution_log.py +0 -0
  30. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/experiment.py +0 -0
  31. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/graylog_log.py +0 -0
  32. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/group_system.py +0 -0
  33. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/ilogger.py +0 -0
  34. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/insight.py +0 -0
  35. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/mlmodel.py +0 -0
  36. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/mobile_asset.py +0 -0
  37. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/model_toolkit.py +0 -0
  38. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/models/__init__.py +0 -0
  39. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/models/common.py +0 -0
  40. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/paged_query_result.py +0 -0
  41. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/pipeline.py +0 -0
  42. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/pipeline_image.py +0 -0
  43. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/plot.py +0 -0
  44. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/plots/__init__.py +0 -0
  45. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/plots/common.py +0 -0
  46. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/request.py +0 -0
  47. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/scripts/__init__.py +0 -0
  48. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/scripts/common.py +0 -0
  49. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/search.py +0 -0
  50. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/solution_component.py +0 -0
  51. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/streamlit_utils.py +0 -0
  52. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/template.py +0 -0
  53. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/template_config.py +0 -0
  54. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/trigger.py +0 -0
  55. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/twin.py +0 -0
  56. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/twinregistration.py +0 -0
  57. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/user.py +0 -0
  58. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/wizard_function.py +0 -0
  59. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/wizard_request.py +0 -0
  60. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/wizata_dsapi_client.py +0 -0
  61. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi/words.py +0 -0
  62. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi.egg-info/SOURCES.txt +0 -0
  63. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi.egg-info/dependency_links.txt +0 -0
  64. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi.egg-info/requires.txt +0 -0
  65. {wizata_dsapi-2.0.0.dev18 → wizata_dsapi-2.0.0.dev20}/wizata_dsapi.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wizata_dsapi
3
- Version: 2.0.0.dev18
3
+ Version: 2.0.0.dev20
4
4
  Summary: Wizata Data Science Toolkit
5
5
  Author: Wizata S.A.
6
6
  Author-email: info@wizata.com
@@ -9,7 +9,7 @@ from .execution import Execution, ExecutionStatus, ExecutionStepLog, AbortedExce
9
9
  from .execution_log import ExecutionLog
10
10
  from .experiment import Experiment
11
11
  from .ds_dataframe import DSDataFrame
12
- from .script import Script, ScriptConfig, ScriptType, ScriptLibrary, sanitize_blob_name, discover_from_wheel
12
+ from .script import Script, ScriptConfig, ScriptType, ScriptCategory, ScriptLibrary, sanitize_blob_name, discover_from_wheel
13
13
  from .template import Template, TemplateProperty
14
14
  from .solution_component import SolutionComponent, SolutionType
15
15
  from .business_label import BusinessLabel
@@ -51,7 +51,7 @@ from .streamlit_utils import (get_streamlit_token, get_streamlit_domain, get_str
51
51
 
52
52
  from .search import FilterOperator, SearchQuery, SortOption, GroupSearchQuery
53
53
  from .notification import NotificationScope, DeviceToken, AlertRule, AlertActive, MonitoredDatapoint, \
54
- NotificationPreference, RecipientList, Recipient, RecipientType
54
+ MonitoredPipeline, NotificationPreference, RecipientList, Recipient, RecipientType
55
55
  from .edge_device import EdgeDevice, EdgeDeviceStatus, EdgeDeviceType
56
56
  from .edge_module import EdgeModule, EdgeModuleType, WIZATA_MODULES
57
57
  from .edge_config import EdgeConsumer, EdgeWriter, EdgeTrigger
@@ -19,7 +19,7 @@ RecipientList — named list of internal users (follow preferences) and free ent
19
19
  (explicit address + channel).
20
20
  """
21
21
 
22
- from datetime import datetime
22
+ from datetime import datetime, timezone
23
23
  from enum import Enum
24
24
  from typing import Optional
25
25
  import uuid
@@ -338,6 +338,54 @@ class MonitoredDatapoint:
338
338
  return f"MonitoredDatapoint(hardware_id={self.hardware_id!r})"
339
339
 
340
340
 
341
+ class MonitoredPipeline:
342
+ """
343
+ Registry entry for a pipeline flagged for monitoring.
344
+
345
+ Stored in PostgreSQL ``"MonitoredPipeline"`` table.
346
+ PK is ``key`` (pipeline key string, one row per pipeline).
347
+
348
+ The pipeline_monitor job reads this table and creates independent
349
+ AlertRule/AlertActive entries per event type (not_triggered, failed).
350
+ """
351
+
352
+ def __init__(self, key: str = None):
353
+ self.key: Optional[str] = key
354
+ self.created_at: Optional[datetime] = None
355
+
356
+ def to_dict(self) -> dict:
357
+ obj = {}
358
+ if self.key is not None:
359
+ obj["key"] = self.key
360
+ if self.created_at is not None:
361
+ obj["createdAt"] = int(self.created_at.timestamp() * 1000)
362
+ return obj
363
+
364
+ @classmethod
365
+ def from_dict(cls, data: dict) -> "MonitoredPipeline":
366
+ obj = cls()
367
+ obj.key = data.get("key")
368
+ raw = data.get("createdAt") or data.get("created_at")
369
+ if raw is not None:
370
+ if isinstance(raw, (int, float)):
371
+ obj.created_at = datetime.fromtimestamp(raw / 1000, tz=timezone.utc)
372
+ elif isinstance(raw, datetime):
373
+ obj.created_at = raw
374
+ return obj
375
+
376
+ def api_id(self) -> str:
377
+ return self.key
378
+
379
+ def api_key(self) -> str:
380
+ return self.key
381
+
382
+ def set_id(self, value):
383
+ self.key = str(value)
384
+
385
+ def __repr__(self) -> str:
386
+ return f"MonitoredPipeline(key={self.key!r})"
387
+
388
+
341
389
  class NotificationPreference:
342
390
  """
343
391
  Per-user notification channel preferences stored in PostgreSQL
@@ -25,6 +25,18 @@ class ScriptType(Enum):
25
25
  RAW = 'raw'
26
26
 
27
27
 
28
+ class ScriptCategory(Enum):
29
+ """
30
+ Defines the category of a script, determining which pipeline step type it creates.
31
+ - "function" data transformation scripts (creates a SCRIPT step)
32
+ - "model" ML model training scripts (creates a MODEL step)
33
+ - "plot" visualization scripts (creates a PLOT step)
34
+ """
35
+ FUNCTION = 'function'
36
+ MODEL = 'model'
37
+ PLOT = 'plot'
38
+
39
+
28
40
  def sanitize_blob_name(name: str) -> str:
29
41
  """
30
42
  Sanitize a script name for use as a blob path segment.
@@ -175,7 +187,7 @@ class Script(ApiDto):
175
187
  return "json"
176
188
 
177
189
  def __init__(self, script_id=None, description=None, function=None,
178
- script_type=None, version=None, library=None):
190
+ script_type=None, version=None, library=None, category=None):
179
191
 
180
192
  # Id
181
193
  if script_id is None:
@@ -189,6 +201,7 @@ class Script(ApiDto):
189
201
  self.version = version
190
202
  self.library = library
191
203
  self.module = None
204
+ self.category = category
192
205
 
193
206
  # Source code property (not serialized)
194
207
  self.source = None
@@ -256,6 +269,8 @@ class Script(ApiDto):
256
269
  obj["module"] = self.module
257
270
  if self.source is not None:
258
271
  obj["source"] = self.source
272
+ if self.category is not None:
273
+ obj["category"] = self.category.value
259
274
  return obj
260
275
 
261
276
  def to_json(self, target: str = None):
@@ -287,6 +302,8 @@ class Script(ApiDto):
287
302
  self.module = obj["module"]
288
303
  if "source" in obj and obj["source"] is not None:
289
304
  self.source = obj["source"]
305
+ if "category" in obj and obj["category"] is not None:
306
+ self.category = ScriptCategory(obj["category"])
290
307
 
291
308
  def copy(self, myfunction):
292
309
  """
@@ -0,0 +1 @@
1
+ __version__ = "2.0.0.dev20"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: wizata_dsapi
3
- Version: 2.0.0.dev18
3
+ Version: 2.0.0.dev20
4
4
  Summary: Wizata Data Science Toolkit
5
5
  Author: Wizata S.A.
6
6
  Author-email: info@wizata.com
@@ -1 +0,0 @@
1
- __version__ = "2.0.0.dev18"