Skip to main content

data-watchtower

A data verification tool. Detect issues before your CTO does.

Installation

Install via pip:

pip install data-watchtower

Data Loader

Loads data into memory for validation by checkers.

Validators

Validate whether the loaded data meets expectations.

Built-in Validators

  • ExpectColumnValuesToNotBeNull
  • ExpectColumnRecentlyUpdated
  • ExpectColumnStdToBeBetween
  • ExpectColumnMeanToBeBetween
  • ExpectColumnNullRatioToBeBetween
  • ExpectRowCountToBeBetween
  • ExpectColumnDistinctValuesToContainSet
  • ExpectColumnDistinctValuesToEqualSet
  • More...

Custom Loaders

Support for tailor-made loaders to handle specific data sources.

Macros

Custom macros enable referencing variables like dates or config files within monitoring tasks.

Scope of Effect

Applies to Watchtower names, checker parameters, and loader configurations.

Custom Macros

Leverage personalized macros for dynamic content insertion.

Supported Databases

  • MySQL
  • PostgreSQL
  • SQLite
  • And more...

TODO

  • web frontend

Example

import datetime
from data_watchtower import DbServices, Watchtower, DatabaseLoader, ExpectRowCountToBeBetween,
    ExpectColumnValuesToNotBeNull

# Database URLs
dw_test_data_db_url = "sqlite:///test.db"
dw_backend_db_url = "sqlite:///data.db"

# Custom Macro Definitions
custom_macro_map = {
    'today': {'impl': lambda: datetime.datetime.today().strftime("%Y-%m-%d")},
    'start_date': '2024-04-01',
    'column': 'name',
}

# Configure Data Loader
query = "SELECT * FROM score WHERE date='${today}'"
data_loader = DatabaseLoader(query=query, connection=dw_test_data_db_url)
data_loader.load()

# Instantiate Watchtower
wt = Watchtower(name='Score Data of ${today}', data_loader=data_loader, custom_macro_map=custom_macro_map)

# Add Validators
row_count_params = ExpectRowCountToBeBetween.Params(min_value=20)
wt.add_validator(ExpectRowCountToBeBetween(row_count_params))

null_check_params = ExpectColumnValuesToNotBeNull.Params(column='${column}')
wt.add_validator(ExpectColumnValuesToNotBeNull(null_check_params))

# Execute Validation
validation_result = wt.run()
print(validation_result['success'])

# Persist Monitoring Setup and Results
db_service = DbServices(dw_backend_db_url)
db_service.create_tables()
db_service.add_watchtower(wt)
db_service.save_result(wt, validation_result)
db_service.update_watchtower_success_status(wt)

Metadata

Release files for data-watchtower 0.0.7

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

Source distribution (sdist)

Source distribution for data-watchtower 0.0.7
File Size Uploaded
data_watchtower-0.0.7.tar.gz 62.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for data-watchtower 0.0.7
File Interpreter ABI Platform
data_watchtower-0.0.7-py3-none-any.whl Python 3 none any Details

Total release size: 103.5 kB

Release files / data_watchtower-0.0.7.tar.gz

Download URL data_watchtower-0.0.7.tar.gz
Size 62.5 kB
Tags Source
SHA-256 checksum
How to use checksums
fb6220b4765880bd9d6759ee75b81e7786909f3f5029acfe879c5d556ae29a53
BLAKE2b-256 checksum
How to use checksums
9a00ee67f2caa80bcc5b71e9b42e5400dee7c5046be6d0a12be486c4b76e9281
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / data_watchtower-0.0.7-py3-none-any.whl

Download URL data_watchtower-0.0.7-py3-none-any.whl
Size 41.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2c44a928b6a9fefe73a8de96d401527bcde556078546bb539197db69b21f29d4
BLAKE2b-256 checksum
How to use checksums
8ceda53d44a0cb2eb7d61a7293318ae5afb119f5160afc296f1c45099644452a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.0.7 This release

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

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