detectkit 0.44.0__tar.gz → 0.44.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 (137) hide show
  1. {detectkit-0.44.0/detectkit.egg-info → detectkit-0.44.1}/PKG-INFO +1 -1
  2. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/__init__.py +1 -1
  3. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/assets/claude/rules/alerting.md +3 -5
  4. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/assets/claude/rules/overview.md +1 -2
  5. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/assets/claude/rules/project.md +1 -2
  6. {detectkit-0.44.0 → detectkit-0.44.1/detectkit.egg-info}/PKG-INFO +1 -1
  7. {detectkit-0.44.0 → detectkit-0.44.1}/LICENSE +0 -0
  8. {detectkit-0.44.0 → detectkit-0.44.1}/MANIFEST.in +0 -0
  9. {detectkit-0.44.0 → detectkit-0.44.1}/README.md +0 -0
  10. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/__init__.py +0 -0
  11. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/channels/__init__.py +0 -0
  12. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/channels/base.py +0 -0
  13. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/channels/branding.py +0 -0
  14. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/channels/email.py +0 -0
  15. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/channels/factory.py +0 -0
  16. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/channels/mattermost.py +0 -0
  17. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/channels/slack.py +0 -0
  18. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/channels/telegram.py +0 -0
  19. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/channels/webhook.py +0 -0
  20. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/orchestrator/__init__.py +0 -0
  21. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/orchestrator/_base.py +0 -0
  22. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/orchestrator/_cooldown.py +0 -0
  23. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/orchestrator/_decision.py +0 -0
  24. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/orchestrator/_dispatch.py +0 -0
  25. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/orchestrator/_recovery.py +0 -0
  26. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/orchestrator/_replay.py +0 -0
  27. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/orchestrator/_types.py +0 -0
  28. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/alerting/orchestrator/orchestrator.py +0 -0
  29. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/autotune/__init__.py +0 -0
  30. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/autotune/_base.py +0 -0
  31. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/autotune/_types.py +0 -0
  32. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/autotune/autotuner.py +0 -0
  33. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/autotune/config_emitter.py +0 -0
  34. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/autotune/crossval.py +0 -0
  35. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/autotune/detector_select.py +0 -0
  36. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/autotune/distribution.py +0 -0
  37. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/autotune/grid_search.py +0 -0
  38. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/autotune/labels.py +0 -0
  39. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/autotune/result.py +0 -0
  40. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/autotune/runner.py +0 -0
  41. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/autotune/scoring.py +0 -0
  42. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/autotune/seasonality_search.py +0 -0
  43. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/autotune/settings.py +0 -0
  44. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/autotune/window_select.py +0 -0
  45. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/__init__.py +0 -0
  46. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/_output.py +0 -0
  47. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/assets/claude/CLAUDE.section.md +0 -0
  48. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/assets/claude/rules/autotune.md +0 -0
  49. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/assets/claude/rules/cli.md +0 -0
  50. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/assets/claude/rules/detectors.md +0 -0
  51. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/assets/claude/rules/metrics.md +0 -0
  52. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/assets/claude/skills/dtk-autotune/SKILL.md +0 -0
  53. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/assets/claude/skills/dtk-feedback/SKILL.md +0 -0
  54. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/assets/claude/skills/dtk-new-metric/SKILL.md +0 -0
  55. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/assets/claude/skills/dtk-setup-project/SKILL.md +0 -0
  56. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/commands/__init__.py +0 -0
  57. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/commands/autotune.py +0 -0
  58. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/commands/clean.py +0 -0
  59. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/commands/init.py +0 -0
  60. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/commands/init_claude.py +0 -0
  61. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/commands/run.py +0 -0
  62. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/commands/test_alert.py +0 -0
  63. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/commands/tune.py +0 -0
  64. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/commands/unlock.py +0 -0
  65. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/cli/main.py +0 -0
  66. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/config/__init__.py +0 -0
  67. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/config/metric_config.py +0 -0
  68. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/config/profile.py +0 -0
  69. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/config/project_config.py +0 -0
  70. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/config/validator.py +0 -0
  71. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/core/__init__.py +0 -0
  72. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/core/interval.py +0 -0
  73. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/core/models.py +0 -0
  74. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/database/__init__.py +0 -0
  75. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/database/_sql_manager.py +0 -0
  76. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/database/clickhouse_manager.py +0 -0
  77. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/database/internal_tables/__init__.py +0 -0
  78. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/database/internal_tables/_alert_states.py +0 -0
  79. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/database/internal_tables/_autotune_runs.py +0 -0
  80. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/database/internal_tables/_base.py +0 -0
  81. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/database/internal_tables/_datapoints.py +0 -0
  82. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/database/internal_tables/_detections.py +0 -0
  83. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/database/internal_tables/_maintenance.py +0 -0
  84. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/database/internal_tables/_metrics.py +0 -0
  85. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/database/internal_tables/_schema.py +0 -0
  86. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/database/internal_tables/_tasks.py +0 -0
  87. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/database/internal_tables/manager.py +0 -0
  88. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/database/manager.py +0 -0
  89. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/database/mysql_manager.py +0 -0
  90. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/database/postgres_manager.py +0 -0
  91. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/database/tables.py +0 -0
  92. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/detectors/__init__.py +0 -0
  93. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/detectors/base.py +0 -0
  94. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/detectors/factory.py +0 -0
  95. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/detectors/seasonality.py +0 -0
  96. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/detectors/statistical/__init__.py +0 -0
  97. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/detectors/statistical/_windowed.py +0 -0
  98. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/detectors/statistical/iqr.py +0 -0
  99. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/detectors/statistical/mad.py +0 -0
  100. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/detectors/statistical/manual_bounds.py +0 -0
  101. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/detectors/statistical/zscore.py +0 -0
  102. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/loaders/__init__.py +0 -0
  103. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/loaders/metric_loader.py +0 -0
  104. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/loaders/query_template.py +0 -0
  105. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/orchestration/__init__.py +0 -0
  106. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/orchestration/error_dispatch.py +0 -0
  107. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/orchestration/task_manager/__init__.py +0 -0
  108. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/orchestration/task_manager/_alert_step.py +0 -0
  109. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/orchestration/task_manager/_base.py +0 -0
  110. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/orchestration/task_manager/_detect_step.py +0 -0
  111. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/orchestration/task_manager/_load_step.py +0 -0
  112. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/orchestration/task_manager/_types.py +0 -0
  113. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/orchestration/task_manager/manager.py +0 -0
  114. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/reporting/__init__.py +0 -0
  115. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/reporting/assets/report.js +0 -0
  116. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/reporting/builder.py +0 -0
  117. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/reporting/html_report.py +0 -0
  118. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/tuning/__init__.py +0 -0
  119. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/tuning/assets/tune.js +0 -0
  120. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/tuning/config_writer.py +0 -0
  121. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/tuning/html.py +0 -0
  122. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/tuning/payload.py +0 -0
  123. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/tuning/server.py +0 -0
  124. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/utils/__init__.py +0 -0
  125. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/utils/datetime_utils.py +0 -0
  126. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/utils/env_interpolation.py +0 -0
  127. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/utils/json_utils.py +0 -0
  128. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit/utils/stats.py +0 -0
  129. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit.egg-info/SOURCES.txt +0 -0
  130. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit.egg-info/dependency_links.txt +0 -0
  131. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit.egg-info/entry_points.txt +0 -0
  132. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit.egg-info/requires.txt +0 -0
  133. {detectkit-0.44.0 → detectkit-0.44.1}/detectkit.egg-info/top_level.txt +0 -0
  134. {detectkit-0.44.0 → detectkit-0.44.1}/pyproject.toml +0 -0
  135. {detectkit-0.44.0 → detectkit-0.44.1}/requirements.txt +0 -0
  136. {detectkit-0.44.0 → detectkit-0.44.1}/setup.cfg +0 -0
  137. {detectkit-0.44.0 → detectkit-0.44.1}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: detectkit
3
- Version: 0.44.0
3
+ Version: 0.44.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.44.0"
7
+ __version__ = "0.44.1"
8
8
 
9
9
  from detectkit.core.interval import Interval
10
10
  from detectkit.core.models import ColumnDefinition, TableModel
@@ -164,8 +164,7 @@ config needed. Control it project-wide with `alert_help_url` in
164
164
  - **a URL string** → your own runbook/wiki page instead
165
165
  - **`false`** → hide the link entirely
166
166
 
167
- Per-channel rendering (defaults only; resolved by
168
- `ProjectConfig.resolve_alert_help_url`):
167
+ Per-channel rendering (defaults only; the resolved help URL is rendered per channel as follows):
169
168
 
170
169
  - **Slack / Mattermost / generic webhook** — a clickable `How to read this alert`
171
170
  label in the compact `Links` field (alongside `Dashboard` + any extra links),
@@ -185,7 +184,7 @@ mirrors `{dashboard_url}` / `{dashboard_line}`. See the template table below.
185
184
 
186
185
  With no custom `template`, each channel renders a structured, branded message
187
186
  (alert-centric: the rule that fired leads, the anomaly value is evidence). The
188
- shared value computation lives in one place (`BaseAlertChannel.build_context`),
187
+ shared value computation lives in one place,
189
188
  so templates and native rendering stay consistent. Every alert title/headline
190
189
  leads with a colored **status circle** — 🔴 anomaly, 🟢 recovery, 🟡 no-data,
191
190
  🔵 pipeline error — so the status reads from color alone. It also leads with the
@@ -241,8 +240,7 @@ Latest reading** fields bound the span. Labels are self-describing so the onset
241
240
  isn't misread as the alert-fire moment: **Anomaly began** is the resolved onset,
242
241
  **not** when the alert fired. Recovery shows the fuller **began → fired →
243
242
  recovered** timeline (`Incident lasted …`), where **Alert fired** =
244
- `onset + (consecutive_required − 1) × interval` (computed in `build_context`,
245
- exposed as `{fired_display}`, omitted when the run is capped). The true
243
+ `onset + (consecutive_required − 1) × interval` (exposed as `{fired_display}`, omitted when the run is capped). The true
246
244
  streak/onset is resolved only when an alert fires/clears (a bounded lookback over
247
245
  the detection history; a run older than the window shows `over …`), so the hot
248
246
  no-alert path stays cheap. Exposed to templates as `{anomaly_lead}` /
@@ -114,6 +114,5 @@ series, watch the band recompute live, then write the config back into the metri
114
114
 
115
115
  ## Authoritative sources
116
116
 
117
- The shipped detectkit docs (`docs/` in the repo, or
118
- <https://dtk.pipelab.dev>) and the `CHANGELOG.md` are authoritative for
117
+ The detectkit docs at <https://dtk.pipelab.dev> and the project changelog are authoritative for
119
118
  behavior. These rule files summarize them for the installed version.
@@ -45,8 +45,7 @@ overrides it; unset → a built-in `0.5`. Tuning-only — it never touches the p
45
45
  ### `alert_help_url` — "How to read this alert" link
46
46
 
47
47
  Every default-rendered alert on every channel carries a `How to read this alert`
48
- link for non-operator stakeholders. Tri-state, resolved by
49
- `ProjectConfig.resolve_alert_help_url`:
48
+ link for non-operator stakeholders. Tri-state:
50
49
 
51
50
  - **unset / null** (default) → the official detectkit guide
52
51
  (`https://dtk.pipelab.dev/guides/reading-alerts/`).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: detectkit
3
- Version: 0.44.0
3
+ Version: 0.44.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