Skip to main content

etsi-watchdog

PyPI PyPI Downloads

📄 DOCS

Real-time data drift detection for machine learning pipelines.

etsi-watchdog is a production-ready Python library for drift detection, version comparison, and real-time monitoring of data streams. Designed for ML practitioners, data scientists, and AI engineers who need reliable data quality insights.


✨ Features

  • PSI-based Drift Detection (more algorithms coming)
  • Rolling Monitoring with time-frequency windowing
  • Version Drift Comparison between model/data snapshots
  • Built-in Visualization & JSON Export
  • Minimal Dependencies & Fast Performance
  • Clear API, suitable for both research and production

📦 Installation

pip install etsi-watchdog

⚡ Quickstart

🔹 Drift Detection

from etsi.watchdog import DriftCheck
import pandas as pd

ref = pd.read_csv("reference.csv")
live = pd.read_csv("current.csv")

check = DriftCheck(ref)
results = check.run(live, features=["age", "salary"])

for feat, result in results.items():
    print(result.summary())
    result.plot()

🔹 Rolling Monitoring

from etsi.watchdog import Monitor

monitor = Monitor(reference_df=ref)
monitor.enable_logging("logs/rolling_log.csv")

results = monitor.watch_rolling(
    df=live_data_stream,
    window=50,
    freq="D",
    features=["age", "salary"]
)

🔹 Drift Comparison (A/B)

from etsi.watchdog import DriftComparator

check = DriftCheck(ref)
v1 = check.run(live1, features=["age", "salary"])
v2 = check.run(live2, features=["age", "salary"])

comp = DriftComparator(v1, v2)
print(comp.diff())

🚀 etsi-watchdog v3 — Roadmap & Vision

Feature Area Description
Multi-Algorithm Support Support for additional drift metrics:
- Jensen–Shannon Divergence (JSD)
- Wasserstein Distance
- Kolmogorov–Smirnov Test (K-S)
- Tree-based drift (e.g., DeepDrift)
Plug-in Architecture Drift algorithms will be fully plug-and-play. Custom metric support via register_drift_function() API.
Real-Time Stream Hooks Support for Kafka/Redis/WebSockets to detect drift on live data streams.
Concept Drift Detection Integration with models to detect label or concept drift, not just feature distribution shift.
CLI & YAML Configs Full CLI support:
etsi-watchdog detect --ref ref.csv --live live.csv --features age salary
+ YAML-based configuration for automated pipelines.
Benchmark Suite Built-in benchmarking with synthetic datasets to evaluate metric sensitivity and response time.
Dashboard UI (Optional) Lightweight dashboard (Streamlit/FastAPI) for monitoring drift over time visually.
Drift Summary Reports Generate PDF/HTML reports with drift summary, top features, histograms, and timestamps.
Sklearn & Pandas Integration DriftCheck will support .fit()/.transform() methods like Scikit-learn transformers.

🤝 Contributing

Contributions are welcome! 🙌
If you have an idea for a drift metric, integration, or improvement, feel free to open an issue or pull request.

Please refer to CONTRIBUTING.md for guidelines.


🧾 License

Licensed under the BSD-2-Clause License.
See the LICENSE file for details.


👨‍💻 Maintainers


Metadata

Release files for etsi-watchdog 3.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for etsi-watchdog 3.0.0
File Size Uploaded
etsi_watchdog-3.0.0.tar.gz 24.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for etsi-watchdog 3.0.0
File Interpreter ABI Platform
etsi_watchdog-3.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 49.0 kB

Release files / etsi_watchdog-3.0.0.tar.gz

Download URL etsi_watchdog-3.0.0.tar.gz
Size 24.7 kB
Tags Source
SHA-256 checksum
How to use checksums
71759d5dc6f979f9314c3e79e31469bdbda221365476c0e126601afb77dcc1a6
BLAKE2b-256 checksum
How to use checksums
3d079eb86c6ed99699e952e1f53dffd87099723204492ee5198e90e63ae13c08
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / etsi_watchdog-3.0.0-py3-none-any.whl

Download URL etsi_watchdog-3.0.0-py3-none-any.whl
Size 24.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2ae014d40fbb24e56d32bd6c73f94f27af21f465fce511960cd7de42c186df78
BLAKE2b-256 checksum
How to use checksums
87bd1a40cc1445766202a584fb97250f20f85f43b72ad255d5b776dde088d764
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release history Release notifications | RSS feed

This release

3.0.0 This release

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

1 release file

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page