detectkit 0.23.0__tar.gz → 0.23.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 (126) hide show
  1. {detectkit-0.23.0/detectkit.egg-info → detectkit-0.23.1}/PKG-INFO +1 -1
  2. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/__init__.py +1 -1
  3. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/autotune/html_labeler.py +31 -2
  4. {detectkit-0.23.0 → detectkit-0.23.1/detectkit.egg-info}/PKG-INFO +1 -1
  5. {detectkit-0.23.0 → detectkit-0.23.1}/LICENSE +0 -0
  6. {detectkit-0.23.0 → detectkit-0.23.1}/MANIFEST.in +0 -0
  7. {detectkit-0.23.0 → detectkit-0.23.1}/README.md +0 -0
  8. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/alerting/__init__.py +0 -0
  9. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/alerting/channels/__init__.py +0 -0
  10. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/alerting/channels/base.py +0 -0
  11. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/alerting/channels/branding.py +0 -0
  12. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/alerting/channels/email.py +0 -0
  13. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/alerting/channels/factory.py +0 -0
  14. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/alerting/channels/mattermost.py +0 -0
  15. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/alerting/channels/slack.py +0 -0
  16. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/alerting/channels/telegram.py +0 -0
  17. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/alerting/channels/webhook.py +0 -0
  18. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/alerting/orchestrator/__init__.py +0 -0
  19. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/alerting/orchestrator/_base.py +0 -0
  20. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/alerting/orchestrator/_cooldown.py +0 -0
  21. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/alerting/orchestrator/_decision.py +0 -0
  22. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/alerting/orchestrator/_dispatch.py +0 -0
  23. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/alerting/orchestrator/_recovery.py +0 -0
  24. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/alerting/orchestrator/_types.py +0 -0
  25. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/alerting/orchestrator/orchestrator.py +0 -0
  26. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/autotune/__init__.py +0 -0
  27. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/autotune/_base.py +0 -0
  28. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/autotune/_types.py +0 -0
  29. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/autotune/autotuner.py +0 -0
  30. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/autotune/config_emitter.py +0 -0
  31. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/autotune/crossval.py +0 -0
  32. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/autotune/detector_select.py +0 -0
  33. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/autotune/distribution.py +0 -0
  34. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/autotune/grid_search.py +0 -0
  35. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/autotune/label_server.py +0 -0
  36. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/autotune/labels.py +0 -0
  37. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/autotune/result.py +0 -0
  38. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/autotune/scoring.py +0 -0
  39. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/autotune/seasonality_search.py +0 -0
  40. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/autotune/settings.py +0 -0
  41. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/autotune/window_select.py +0 -0
  42. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/__init__.py +0 -0
  43. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/_output.py +0 -0
  44. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/assets/claude/CLAUDE.section.md +0 -0
  45. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/assets/claude/rules/alerting.md +0 -0
  46. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/assets/claude/rules/autotune.md +0 -0
  47. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/assets/claude/rules/cli.md +0 -0
  48. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/assets/claude/rules/detectors.md +0 -0
  49. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/assets/claude/rules/metrics.md +0 -0
  50. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/assets/claude/rules/overview.md +0 -0
  51. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/assets/claude/rules/project.md +0 -0
  52. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/assets/claude/skills/dtk-autotune/SKILL.md +0 -0
  53. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/assets/claude/skills/dtk-feedback/SKILL.md +0 -0
  54. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/assets/claude/skills/dtk-new-metric/SKILL.md +0 -0
  55. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/assets/claude/skills/dtk-setup-project/SKILL.md +0 -0
  56. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/commands/__init__.py +0 -0
  57. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/commands/autotune.py +0 -0
  58. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/commands/clean.py +0 -0
  59. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/commands/init.py +0 -0
  60. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/commands/init_claude.py +0 -0
  61. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/commands/run.py +0 -0
  62. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/commands/test_alert.py +0 -0
  63. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/commands/unlock.py +0 -0
  64. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/cli/main.py +0 -0
  65. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/config/__init__.py +0 -0
  66. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/config/metric_config.py +0 -0
  67. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/config/profile.py +0 -0
  68. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/config/project_config.py +0 -0
  69. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/config/validator.py +0 -0
  70. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/core/__init__.py +0 -0
  71. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/core/interval.py +0 -0
  72. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/core/models.py +0 -0
  73. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/database/__init__.py +0 -0
  74. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/database/_sql_manager.py +0 -0
  75. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/database/clickhouse_manager.py +0 -0
  76. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/database/internal_tables/__init__.py +0 -0
  77. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/database/internal_tables/_alert_states.py +0 -0
  78. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/database/internal_tables/_autotune_runs.py +0 -0
  79. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/database/internal_tables/_base.py +0 -0
  80. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/database/internal_tables/_datapoints.py +0 -0
  81. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/database/internal_tables/_detections.py +0 -0
  82. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/database/internal_tables/_maintenance.py +0 -0
  83. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/database/internal_tables/_metrics.py +0 -0
  84. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/database/internal_tables/_schema.py +0 -0
  85. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/database/internal_tables/_tasks.py +0 -0
  86. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/database/internal_tables/manager.py +0 -0
  87. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/database/manager.py +0 -0
  88. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/database/mysql_manager.py +0 -0
  89. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/database/postgres_manager.py +0 -0
  90. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/database/tables.py +0 -0
  91. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/detectors/__init__.py +0 -0
  92. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/detectors/base.py +0 -0
  93. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/detectors/factory.py +0 -0
  94. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/detectors/seasonality.py +0 -0
  95. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/detectors/statistical/__init__.py +0 -0
  96. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/detectors/statistical/_windowed.py +0 -0
  97. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/detectors/statistical/iqr.py +0 -0
  98. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/detectors/statistical/mad.py +0 -0
  99. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/detectors/statistical/manual_bounds.py +0 -0
  100. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/detectors/statistical/zscore.py +0 -0
  101. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/loaders/__init__.py +0 -0
  102. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/loaders/metric_loader.py +0 -0
  103. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/loaders/query_template.py +0 -0
  104. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/orchestration/__init__.py +0 -0
  105. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/orchestration/error_dispatch.py +0 -0
  106. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/orchestration/task_manager/__init__.py +0 -0
  107. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/orchestration/task_manager/_alert_step.py +0 -0
  108. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/orchestration/task_manager/_base.py +0 -0
  109. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/orchestration/task_manager/_detect_step.py +0 -0
  110. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/orchestration/task_manager/_load_step.py +0 -0
  111. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/orchestration/task_manager/_types.py +0 -0
  112. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/orchestration/task_manager/manager.py +0 -0
  113. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/utils/__init__.py +0 -0
  114. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/utils/datetime_utils.py +0 -0
  115. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/utils/env_interpolation.py +0 -0
  116. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/utils/json_utils.py +0 -0
  117. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit/utils/stats.py +0 -0
  118. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit.egg-info/SOURCES.txt +0 -0
  119. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit.egg-info/dependency_links.txt +0 -0
  120. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit.egg-info/entry_points.txt +0 -0
  121. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit.egg-info/requires.txt +0 -0
  122. {detectkit-0.23.0 → detectkit-0.23.1}/detectkit.egg-info/top_level.txt +0 -0
  123. {detectkit-0.23.0 → detectkit-0.23.1}/pyproject.toml +0 -0
  124. {detectkit-0.23.0 → detectkit-0.23.1}/requirements.txt +0 -0
  125. {detectkit-0.23.0 → detectkit-0.23.1}/setup.cfg +0 -0
  126. {detectkit-0.23.0 → detectkit-0.23.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: detectkit
3
- Version: 0.23.0
3
+ Version: 0.23.1
4
4
  Summary: Metric monitoring with automatic anomaly detection
5
5
  Author: detectkit team
6
6
  License: MIT
@@ -4,7 +4,7 @@ detectk - Anomaly Detection for Time-Series Metrics
4
4
  A Python library for data analysts and engineers to monitor metrics with automatic anomaly detection.
5
5
  """
6
6
 
7
- __version__ = "0.23.0"
7
+ __version__ = "0.23.1"
8
8
 
9
9
  from detectkit.core.interval import Interval
10
10
  from detectkit.core.models import ColumnDefinition, TableModel
@@ -242,7 +242,35 @@ function draw() {
242
242
  ctx.fillStyle='rgba(240,173,78,0.28)'; ctx.fillRect(Math.min(x0,x1), M.t*dpr, Math.abs(x1-x0), plotH()); }
243
243
  drawSeries(ctx, px, py, viewMin, viewMax, M.l*dpr, plotW(), '#d15b36', 1.5);
244
244
  ctx.restore();
245
- if (hover && !dragging && !ovAct) drawHover();
245
+ if (dragging && !ovAct) drawDragLabel();
246
+ else if (hover && !ovAct) drawHover();
247
+ }
248
+
249
+ // Live time readout while marking/resizing/moving an incident, so you can place
250
+ // an edge precisely (an edge shows old → new; move/new show the resulting span).
251
+ function drawDragLabel() {
252
+ let text, atTs;
253
+ if (dragging.mode==='new') {
254
+ const a=Math.min(dragging.a,dragging.b), b=Math.max(dragging.a,dragging.b);
255
+ text = fmtTs(a)+' → '+fmtTs(b); atTs = dragging.b;
256
+ } else { const iv=incidents[dragging.i]; if (!iv) return;
257
+ if (dragging.mode==='edge') {
258
+ const old = dragging.edge==='a' ? dragging.a0 : dragging.b0;
259
+ const cur = dragging.edge==='a' ? iv.a : iv.b;
260
+ text = (dragging.edge==='a' ? 'start: ' : 'end: ') + fmtTs(old) + ' → ' + fmtTs(cur);
261
+ atTs = cur;
262
+ } else { text = fmtTs(iv.a) + ' → ' + fmtTs(iv.b); atTs = (iv.a+iv.b)/2; }
263
+ }
264
+ const X = clamp(px(atTs), M.l*dpr, c.width-M.r*dpr);
265
+ ctx.font=(11*dpr)+'px ui-monospace, monospace';
266
+ const tw=ctx.measureText(text).width, bw=tw+14*dpr, bh=22*dpr, by=M.t*dpr+2;
267
+ let bx = X - bw/2;
268
+ if (bx < M.l*dpr) bx = M.l*dpr;
269
+ if (bx+bw > c.width-M.r*dpr) bx = c.width-M.r*dpr-bw;
270
+ ctx.fillStyle='rgba(27,25,22,0.96)'; ctx.strokeStyle='#d15b36'; ctx.lineWidth=1*dpr;
271
+ ctx.fillRect(bx, by, bw, bh); ctx.strokeRect(bx, by, bw, bh);
272
+ ctx.fillStyle='#f5f1e8'; ctx.textAlign='left'; ctx.textBaseline='middle';
273
+ ctx.fillText(text, bx+7*dpr, by+bh/2);
246
274
  }
247
275
 
248
276
  function drawHover() {
@@ -309,7 +337,8 @@ c.addEventListener('mousedown', e => {
309
337
  const hit = hitIncident(e.clientX), t = tsAt(e.clientX);
310
338
  if (hit && hit.edge==='move') { const iv=incidents[hit.i];
311
339
  dragging={mode:'move', i:hit.i, grab:t, a0:iv.a, b0:iv.b, sx:e.clientX, cx:e.clientX}; }
312
- else if (hit) dragging={mode:'edge', i:hit.i, edge:hit.edge, sx:e.clientX, cx:e.clientX};
340
+ else if (hit) { const iv=incidents[hit.i];
341
+ dragging={mode:'edge', i:hit.i, edge:hit.edge, a0:iv.a, b0:iv.b, sx:e.clientX, cx:e.clientX}; }
313
342
  else dragging={mode:'new', a:t, b:t, sx:e.clientX, cx:e.clientX};
314
343
  });
315
344
  c.addEventListener('mousemove', e => { if (ovAct) return;
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: detectkit
3
- Version: 0.23.0
3
+ Version: 0.23.1
4
4
  Summary: Metric monitoring with automatic anomaly detection
5
5
  Author: detectkit team
6
6
  License: MIT
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes