detectkit 0.3.0__tar.gz → 0.3.1__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.0/detectkit.egg-info → detectkit-0.3.1}/PKG-INFO +20 -12
  2. {detectkit-0.3.0 → detectkit-0.3.1}/README.md +19 -11
  3. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/cli/commands/run.py +29 -13
  4. {detectkit-0.3.0 → detectkit-0.3.1/detectkit.egg-info}/PKG-INFO +20 -12
  5. {detectkit-0.3.0 → detectkit-0.3.1}/pyproject.toml +1 -1
  6. {detectkit-0.3.0 → detectkit-0.3.1}/LICENSE +0 -0
  7. {detectkit-0.3.0 → detectkit-0.3.1}/MANIFEST.in +0 -0
  8. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/__init__.py +0 -0
  9. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/__init__.py +0 -0
  10. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/channels/__init__.py +0 -0
  11. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/channels/base.py +0 -0
  12. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/channels/email.py +0 -0
  13. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/channels/factory.py +0 -0
  14. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/channels/mattermost.py +0 -0
  15. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/channels/slack.py +0 -0
  16. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/channels/telegram.py +0 -0
  17. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/channels/webhook.py +0 -0
  18. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/alerting/orchestrator.py +0 -0
  19. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/cli/__init__.py +0 -0
  20. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/cli/commands/__init__.py +0 -0
  21. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/cli/commands/init.py +0 -0
  22. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/cli/commands/test_alert.py +0 -0
  23. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/cli/main.py +0 -0
  24. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/config/__init__.py +0 -0
  25. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/config/metric_config.py +0 -0
  26. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/config/profile.py +0 -0
  27. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/config/project_config.py +0 -0
  28. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/config/validator.py +0 -0
  29. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/core/__init__.py +0 -0
  30. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/core/interval.py +0 -0
  31. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/core/models.py +0 -0
  32. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/database/__init__.py +0 -0
  33. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/database/clickhouse_manager.py +0 -0
  34. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/database/internal_tables.py +0 -0
  35. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/database/manager.py +0 -0
  36. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/database/tables.py +0 -0
  37. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/detectors/__init__.py +0 -0
  38. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/detectors/base.py +0 -0
  39. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/detectors/factory.py +0 -0
  40. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/detectors/statistical/__init__.py +0 -0
  41. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/detectors/statistical/iqr.py +0 -0
  42. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/detectors/statistical/mad.py +0 -0
  43. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/detectors/statistical/manual_bounds.py +0 -0
  44. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/detectors/statistical/zscore.py +0 -0
  45. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/loaders/__init__.py +0 -0
  46. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/loaders/metric_loader.py +0 -0
  47. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/loaders/query_template.py +0 -0
  48. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/orchestration/__init__.py +0 -0
  49. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/orchestration/task_manager.py +0 -0
  50. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/utils/__init__.py +0 -0
  51. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit/utils/stats.py +0 -0
  52. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit.egg-info/SOURCES.txt +0 -0
  53. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit.egg-info/dependency_links.txt +0 -0
  54. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit.egg-info/entry_points.txt +0 -0
  55. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit.egg-info/requires.txt +0 -0
  56. {detectkit-0.3.0 → detectkit-0.3.1}/detectkit.egg-info/top_level.txt +0 -0
  57. {detectkit-0.3.0 → detectkit-0.3.1}/requirements.txt +0 -0
  58. {detectkit-0.3.0 → detectkit-0.3.1}/setup.cfg +0 -0
  59. {detectkit-0.3.0 → detectkit-0.3.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: detectkit
3
- Version: 0.3.0
3
+ Version: 0.3.1
4
4
  Summary: Metric monitoring with automatic anomaly detection
5
5
  Author: detectkit team
6
6
  License: MIT
@@ -68,12 +68,19 @@ Dynamic: license-file
68
68
 
69
69
  ## Status
70
70
 
71
- ✅ **Production Ready** - Version 0.1.2
71
+ ✅ **Production Ready** - Version 0.3.0
72
72
 
73
73
  Published to PyPI: https://pypi.org/project/detectkit/
74
74
 
75
75
  Complete rewrite with modern architecture and full documentation (2025).
76
76
 
77
+ ### What's New in v0.3.0
78
+
79
+ 🎯 **Alert Cooldown** - Prevent alert spam from persistent anomalies
80
+ - Configure minimum time between alerts (`alert_cooldown: "30min"`)
81
+ - Automatic recovery detection (`cooldown_reset_on_recovery: true`)
82
+ - Stops duplicate alerts during long-running issues
83
+
77
84
  ## Features
78
85
 
79
86
  - ✅ **Pure numpy arrays** - No pandas dependency in core logic
@@ -225,13 +232,14 @@ This project is currently in active development. Contributions are welcome once
225
232
 
226
233
  ## Changelog
227
234
 
228
- ### 0.1.0 (2025-11-07)
229
- - Initial release with complete rewrite
230
- - Core foundation: models, database, config
231
- - ✅ Metric loading with gap filling and seasonality extraction
232
- - Statistical detectors (Z-Score, MAD, IQR, Manual Bounds)
233
- - Alert channels (Webhook, Mattermost, Slack)
234
- - Alert orchestration with consecutive anomaly logic
235
- - Task manager for pipeline execution
236
- - ✅ CLI commands (dtk init, dtk run)
237
- - 📊 287 unit tests, 87% coverage
235
+ See [CHANGELOG.md](CHANGELOG.md) for complete version history.
236
+
237
+ ### Recent Releases
238
+
239
+ **[0.3.0]** (2025-11-10) - Alert cooldown system, spam prevention
240
+ **[0.2.8]** (2025-11-10) - Fix incomplete interval detection
241
+ **[0.2.7]** (2025-11-10) - Add _dtk_metrics table
242
+ **[0.2.0]** (2025-11-06) - Detector preprocessing and value weighting
243
+ **[0.1.0]** (2025-11-03) - Initial release
244
+
245
+ [Full changelog →](CHANGELOG.md)
@@ -6,12 +6,19 @@
6
6
 
7
7
  ## Status
8
8
 
9
- ✅ **Production Ready** - Version 0.1.2
9
+ ✅ **Production Ready** - Version 0.3.0
10
10
 
11
11
  Published to PyPI: https://pypi.org/project/detectkit/
12
12
 
13
13
  Complete rewrite with modern architecture and full documentation (2025).
14
14
 
15
+ ### What's New in v0.3.0
16
+
17
+ 🎯 **Alert Cooldown** - Prevent alert spam from persistent anomalies
18
+ - Configure minimum time between alerts (`alert_cooldown: "30min"`)
19
+ - Automatic recovery detection (`cooldown_reset_on_recovery: true`)
20
+ - Stops duplicate alerts during long-running issues
21
+
15
22
  ## Features
16
23
 
17
24
  - ✅ **Pure numpy arrays** - No pandas dependency in core logic
@@ -163,13 +170,14 @@ This project is currently in active development. Contributions are welcome once
163
170
 
164
171
  ## Changelog
165
172
 
166
- ### 0.1.0 (2025-11-07)
167
- - Initial release with complete rewrite
168
- - Core foundation: models, database, config
169
- - ✅ Metric loading with gap filling and seasonality extraction
170
- - Statistical detectors (Z-Score, MAD, IQR, Manual Bounds)
171
- - Alert channels (Webhook, Mattermost, Slack)
172
- - Alert orchestration with consecutive anomaly logic
173
- - Task manager for pipeline execution
174
- - ✅ CLI commands (dtk init, dtk run)
175
- - 📊 287 unit tests, 87% coverage
173
+ See [CHANGELOG.md](CHANGELOG.md) for complete version history.
174
+
175
+ ### Recent Releases
176
+
177
+ **[0.3.0]** (2025-11-10) - Alert cooldown system, spam prevention
178
+ **[0.2.8]** (2025-11-10) - Fix incomplete interval detection
179
+ **[0.2.7]** (2025-11-10) - Add _dtk_metrics table
180
+ **[0.2.0]** (2025-11-06) - Detector preprocessing and value weighting
181
+ **[0.1.0]** (2025-11-03) - Initial release
182
+
183
+ [Full changelog →](CHANGELOG.md)
@@ -369,17 +369,26 @@ def find_metrics_by_tag(metrics_dir: Path, tag: str) -> List[Path]:
369
369
 
370
370
  matching_metrics = []
371
371
 
372
- for metric_file in metrics_dir.glob("**/*.yml"):
373
- try:
374
- with open(metric_file) as f:
375
- config = yaml.safe_load(f)
376
-
377
- if config and "tags" in config:
378
- if tag in config["tags"]:
379
- matching_metrics.append(metric_file)
380
- except Exception:
381
- # Skip files that can't be parsed
382
- continue
372
+ # Search both .yml and .yaml extensions (consistent with find_metric_by_name)
373
+ for pattern in ["**/*.yml", "**/*.yaml"]:
374
+ for metric_file in metrics_dir.glob(pattern):
375
+ try:
376
+ with open(metric_file) as f:
377
+ config = yaml.safe_load(f)
378
+
379
+ if config and "tags" in config:
380
+ if tag in config["tags"]:
381
+ matching_metrics.append(metric_file)
382
+ except Exception as e:
383
+ # Warn about unparseable files but continue searching
384
+ click.echo(
385
+ click.style(
386
+ f"Warning: Skipping {metric_file.relative_to(metrics_dir.parent)}: {e}",
387
+ fg="yellow"
388
+ ),
389
+ err=True
390
+ )
391
+ continue
383
392
 
384
393
  return matching_metrics
385
394
 
@@ -406,8 +415,15 @@ def find_metric_by_name(metrics_dir: Path, name: str) -> Optional[Path]:
406
415
 
407
416
  if config and config.get("name") == name:
408
417
  return metric_file
409
- except Exception:
410
- # Skip files that can't be parsed
418
+ except Exception as e:
419
+ # Warn about unparseable files but continue searching
420
+ click.echo(
421
+ click.style(
422
+ f"Warning: Skipping {metric_file.relative_to(metrics_dir.parent)}: {e}",
423
+ fg="yellow"
424
+ ),
425
+ err=True
426
+ )
411
427
  continue
412
428
 
413
429
  return None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: detectkit
3
- Version: 0.3.0
3
+ Version: 0.3.1
4
4
  Summary: Metric monitoring with automatic anomaly detection
5
5
  Author: detectkit team
6
6
  License: MIT
@@ -68,12 +68,19 @@ Dynamic: license-file
68
68
 
69
69
  ## Status
70
70
 
71
- ✅ **Production Ready** - Version 0.1.2
71
+ ✅ **Production Ready** - Version 0.3.0
72
72
 
73
73
  Published to PyPI: https://pypi.org/project/detectkit/
74
74
 
75
75
  Complete rewrite with modern architecture and full documentation (2025).
76
76
 
77
+ ### What's New in v0.3.0
78
+
79
+ 🎯 **Alert Cooldown** - Prevent alert spam from persistent anomalies
80
+ - Configure minimum time between alerts (`alert_cooldown: "30min"`)
81
+ - Automatic recovery detection (`cooldown_reset_on_recovery: true`)
82
+ - Stops duplicate alerts during long-running issues
83
+
77
84
  ## Features
78
85
 
79
86
  - ✅ **Pure numpy arrays** - No pandas dependency in core logic
@@ -225,13 +232,14 @@ This project is currently in active development. Contributions are welcome once
225
232
 
226
233
  ## Changelog
227
234
 
228
- ### 0.1.0 (2025-11-07)
229
- - Initial release with complete rewrite
230
- - Core foundation: models, database, config
231
- - ✅ Metric loading with gap filling and seasonality extraction
232
- - Statistical detectors (Z-Score, MAD, IQR, Manual Bounds)
233
- - Alert channels (Webhook, Mattermost, Slack)
234
- - Alert orchestration with consecutive anomaly logic
235
- - Task manager for pipeline execution
236
- - ✅ CLI commands (dtk init, dtk run)
237
- - 📊 287 unit tests, 87% coverage
235
+ See [CHANGELOG.md](CHANGELOG.md) for complete version history.
236
+
237
+ ### Recent Releases
238
+
239
+ **[0.3.0]** (2025-11-10) - Alert cooldown system, spam prevention
240
+ **[0.2.8]** (2025-11-10) - Fix incomplete interval detection
241
+ **[0.2.7]** (2025-11-10) - Add _dtk_metrics table
242
+ **[0.2.0]** (2025-11-06) - Detector preprocessing and value weighting
243
+ **[0.1.0]** (2025-11-03) - Initial release
244
+
245
+ [Full changelog →](CHANGELOG.md)
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "detectkit"
7
- version = "0.3.0"
7
+ version = "0.3.1"
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