detectkit 0.3.1__tar.gz → 0.3.3__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 (59) hide show
  1. {detectkit-0.3.1/detectkit.egg-info → detectkit-0.3.3}/PKG-INFO +1 -1
  2. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/database/internal_tables.py +14 -1
  3. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/orchestration/task_manager.py +2 -2
  4. {detectkit-0.3.1 → detectkit-0.3.3/detectkit.egg-info}/PKG-INFO +1 -1
  5. {detectkit-0.3.1 → detectkit-0.3.3}/pyproject.toml +1 -1
  6. {detectkit-0.3.1 → detectkit-0.3.3}/LICENSE +0 -0
  7. {detectkit-0.3.1 → detectkit-0.3.3}/MANIFEST.in +0 -0
  8. {detectkit-0.3.1 → detectkit-0.3.3}/README.md +0 -0
  9. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/__init__.py +0 -0
  10. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/alerting/__init__.py +0 -0
  11. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/alerting/channels/__init__.py +0 -0
  12. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/alerting/channels/base.py +0 -0
  13. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/alerting/channels/email.py +0 -0
  14. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/alerting/channels/factory.py +0 -0
  15. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/alerting/channels/mattermost.py +0 -0
  16. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/alerting/channels/slack.py +0 -0
  17. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/alerting/channels/telegram.py +0 -0
  18. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/alerting/channels/webhook.py +0 -0
  19. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/alerting/orchestrator.py +0 -0
  20. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/cli/__init__.py +0 -0
  21. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/cli/commands/__init__.py +0 -0
  22. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/cli/commands/init.py +0 -0
  23. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/cli/commands/run.py +0 -0
  24. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/cli/commands/test_alert.py +0 -0
  25. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/cli/main.py +0 -0
  26. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/config/__init__.py +0 -0
  27. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/config/metric_config.py +0 -0
  28. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/config/profile.py +0 -0
  29. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/config/project_config.py +0 -0
  30. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/config/validator.py +0 -0
  31. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/core/__init__.py +0 -0
  32. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/core/interval.py +0 -0
  33. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/core/models.py +0 -0
  34. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/database/__init__.py +0 -0
  35. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/database/clickhouse_manager.py +0 -0
  36. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/database/manager.py +0 -0
  37. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/database/tables.py +0 -0
  38. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/detectors/__init__.py +0 -0
  39. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/detectors/base.py +0 -0
  40. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/detectors/factory.py +0 -0
  41. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/detectors/statistical/__init__.py +0 -0
  42. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/detectors/statistical/iqr.py +0 -0
  43. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/detectors/statistical/mad.py +0 -0
  44. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/detectors/statistical/manual_bounds.py +0 -0
  45. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/detectors/statistical/zscore.py +0 -0
  46. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/loaders/__init__.py +0 -0
  47. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/loaders/metric_loader.py +0 -0
  48. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/loaders/query_template.py +0 -0
  49. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/orchestration/__init__.py +0 -0
  50. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/utils/__init__.py +0 -0
  51. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit/utils/stats.py +0 -0
  52. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit.egg-info/SOURCES.txt +0 -0
  53. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit.egg-info/dependency_links.txt +0 -0
  54. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit.egg-info/entry_points.txt +0 -0
  55. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit.egg-info/requires.txt +0 -0
  56. {detectkit-0.3.1 → detectkit-0.3.3}/detectkit.egg-info/top_level.txt +0 -0
  57. {detectkit-0.3.1 → detectkit-0.3.3}/requirements.txt +0 -0
  58. {detectkit-0.3.1 → detectkit-0.3.3}/setup.cfg +0 -0
  59. {detectkit-0.3.1 → detectkit-0.3.3}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: detectkit
3
- Version: 0.3.1
3
+ Version: 0.3.3
4
4
  Summary: Metric monitoring with automatic anomaly detection
5
5
  Author: detectkit team
6
6
  License: MIT
@@ -267,7 +267,20 @@ class InternalTablesManager:
267
267
  )
268
268
 
269
269
  if result and result[0]["last_ts"]:
270
- return result[0]["last_ts"]
270
+ last_ts = result[0]["last_ts"]
271
+
272
+ # ClickHouse returns epoch (1970-01-01 00:00:00) for NULL datetime
273
+ # Detect this and treat as None to avoid processing from 1970
274
+ epoch = datetime(1970, 1, 1, 0, 0, 0)
275
+
276
+ # Handle both timezone-aware and naive datetimes
277
+ if last_ts.tzinfo is not None:
278
+ epoch = epoch.replace(tzinfo=last_ts.tzinfo)
279
+
280
+ if last_ts == epoch:
281
+ return None
282
+
283
+ return last_ts
271
284
 
272
285
  return None
273
286
 
@@ -573,10 +573,10 @@ class TaskManager:
573
573
  interval=interval,
574
574
  conditions=AlertConditions(
575
575
  min_detectors=1, # At least one detector must flag anomaly
576
- direction="any", # Any direction (up or down)
576
+ direction=alerting_config.direction, # Use direction from config
577
577
  consecutive_anomalies=alerting_config.consecutive_anomalies,
578
578
  ),
579
- timezone_display="UTC",
579
+ timezone_display=alerting_config.timezone, # Use timezone from config
580
580
  internal=self.internal, # For cooldown tracking
581
581
  alert_config=alerting_config, # For cooldown settings
582
582
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: detectkit
3
- Version: 0.3.1
3
+ Version: 0.3.3
4
4
  Summary: Metric monitoring with automatic anomaly detection
5
5
  Author: detectkit team
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "detectkit"
7
- version = "0.3.1"
7
+ version = "0.3.3"
8
8
  description = "Metric monitoring with automatic anomaly detection"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes