DataWatcher
A lightweight Python library for monitoring data changes and recording them to lists.
Features
- Monitor multiple data sources simultaneously
- Record data changes over time
- Thread-safe operations
- Simple and intuitive API
- Lightweight with zero dependencies
Installation
pip install datawatcher
Examples
Quick Start
from datawatcher import DataWatcher
import time
# Create a watcher instance
watcher = DataWatcher()
# Define a variable to monitor
counter = 0
# Register the variable for monitoring
watcher.watch(lambda: counter, "counter")
# Start monitoring (samples every 1 second by default)
watcher.start()
# Modify the variable
for i in range(10):
counter += 1
time.sleep(1.1)
# Stop monitoring
watcher.stop()
# Access recorded data
print(watcher["counter"]) # Print the recorded values
print(watcher.value_list("counter")) # Alternative way to get values
print(watcher.time_list()) # Get timestamps
System Resource Monitoring
Monitor CPU and memory usage over time:
from datawatcher import DataWatcher
import psutil # pip install psutil
import time
# Create watcher instance
watcher = DataWatcher()
# Register system metrics for monitoring
watcher.watch(lambda: psutil.cpu_percent(), "cpu_usage", callback=lambda x: print(x))
watcher.watch(lambda: psutil.virtual_memory().percent, "memory_usage")
# Start monitoring every 1 seconds
watcher.start(interval=1.0)
# Let it run for 10 seconds
print("Monitoring system resources for 10 seconds...")
time.sleep(10)
# Stop monitoring
watcher.stop()
# Display results
print("\n=== System Monitoring Results ===")
print(f"CPU Usage: {watcher['cpu_usage']}")
print(f"Memory Usage: {watcher['memory_usage']}")
print(f"Timestamps: {watcher.time_list()}")
API Reference
DataWatcher
Main class for monitoring data changes.
Methods
watch(func: Callable[[], Any], key: str, callback: Optional[Callable[[Any], Any]] = None)- Register a function to monitorunwatch(key: str)- Remove a monitored functionclear()- Clear all monitored functions and historystart(interval: float = 1.0)- Start monitoring with specified intervalstop()- Stop monitoringtime_list() -> List[float]- Get timestamp listvalue_list(key: str) -> List[Any]- Get recorded values for a key__getitem__(key: str) -> List[Any]- Access values using bracket notation
License
MIT License
Metadata
Release files for datawatcher 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| datawatcher-0.1.0.tar.gz | 4.1 kB | Without provenance | Details for datawatcher-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| datawatcher-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for datawatcher-0.1.0-py3-none-any.whl |
Total release size: 8.6 kB
Release files / datawatcher-0.1.0.tar.gz
| Download URL | datawatcher-0.1.0.tar.gz |
|---|---|
| Size | 4.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
09e9bc1c61859c55d0249a531eac086eae21078115d3ddf96ecd1b72406807d5
|
|
BLAKE2b-256 checksum How to use checksums |
9af289ad66b540b4da52912490cf8fb58c7b9a4c4a49ef256bd6d1327b96baa3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / datawatcher-0.1.0-py3-none-any.whl
| Download URL | datawatcher-0.1.0-py3-none-any.whl |
|---|---|
| Size | 4.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
40e94834e1a3009c37e9bf1ab9754e5453428acb3fbcdc38c7e6f023e6c49717
|
|
BLAKE2b-256 checksum How to use checksums |
915e415f2dc32c243172d0b3e025a29fd0119abd0778044d17ee29d3c0609705
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Security for datawatcher 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.