ValidateLite
ValidateLite: A lightweight, scenario-driven data validation tool for modern data practitioners.
Whether you're a data scientist cleaning a messy CSV, a data engineer building robust pipelines, or a developer needing a quick check, ValidateLite provides powerful, focused commands for your use case:
-
vlite check: For quick, ad-hoc data checks. Need to verify if a column is unique or not null right now? Thecheckcommand gets you an answer in seconds, zero config required. -
vlite schema: For robust, repeatable, and automated validation. Define your data's contract in a JSON schema and let ValidateLite verify everything from data types and ranges to complex type-conversion feasibility.
Who is it for?
For the Data Scientist: Preparing Data for Analysis
You have a messy dataset (legacy_data.csv) where everything is a string. Before you can build a model, you need to clean it up and convert columns to their proper types (integer, float, date). How much work will it be?
Instead of writing complex cleaning scripts first, use vlite schema to assess the feasibility of the cleanup.
1. Define Your Target Schema (rules.json)
Create a schema file that describes the current type and the desired type.
{
"legacy_users": {
"rules": [
{
"field": "user_id",
"type": "string",
"desired_type": "integer",
"required": true
},
{
"field": "salary",
"type": "string",
"desired_type": "float(10,2)",
"required": true
},
{
"field": "bio",
"type": "string",
"desired_type": "string(500)",
"required": false
}
]
}
}
2. Run the Validation
vlite schema --conn legacy_data.csv --rules rules.json
ValidateLite will generate a report telling you exactly what can and cannot be converted, saving you hours of guesswork.
FIELD VALIDATION RESULTS
========================
Field: user_id
✓ Field exists (string)
✓ Not Null constraint
✗ Type Conversion Validation (string → integer): 15 incompatible records found
Field: salary
✓ Field exists (string)
✗ Type Conversion Validation (string → float(10,2)): 8 incompatible records found
Field: bio
✓ Field exists (string)
✓ Length Constraint Validation (string → string(500)): PASSED
For the Data Engineer: Ensuring Data Integrity in CI/CD
You need to prevent breaking schema changes and bad data from ever reaching production. Embed ValidateLite into your CI/CD pipeline to act as a quality gate.
Example Workflow (.github/workflows/ci.yml)
This workflow automatically validates the database schema on every pull request.
jobs:
validate-db-schema:
name: Validate Database Schema
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Install ValidateLite
run: pip install validatelite
- name: Run Schema Validation
run: |
vlite schema --conn "mysql://${{ secrets.DB_USER }}:${{ secrets.DB_PASS }}@${{ secrets.DB_HOST }}/sales" \
--rules ./schemas/customers_schema.json \
--fail-on-error
This same approach can be used to monitor data quality at every stage of your ETL/ELT pipelines, preventing "garbage in, garbage out."
Quick Start: Ad-Hoc Checks with check
For temporary, one-off validation needs, the check command is your best friend. You can run multiple rules on any supported data source (files or databases) directly from the command line.
1. Install (if you haven't already):
pip install validatelite
2. Run a check:
# Check for nulls and uniqueness in a CSV file
vlite check --conn "customers.csv" --table customers \
--rule "not_null(id)" \
--rule "unique(email)"
# Check value ranges and formats in a database table
vlite check --conn "mysql://user:pass@host/db" --table customers \
--rule "range(age, 18, 99)" \
--rule "enum(status, 'active', 'inactive')"
Learn More
- Usage Guide (docs/usage.md): Learn about all commands, data sources, rule types, and advanced features like the Desired Type system.
- Configuration Reference (docs/CONFIG_REFERENCE.md): See how to configure the tool via
tomlfiles. - Contributing Guide (CONTRIBUTING.md): We welcome contributions!
📝 Development Blog
Follow the journey of building ValidateLite through our development blog posts:
- DevLog #1: Building a Zero-Config Data Validation Tool
- **DevLog #2: Why I Scrapped My Half-Built Data Validation Platform
- **Rule-Driven Schema Validation: A Lightweight Solution
📄 License
This project is licensed under the MIT License
Metadata
Release files for validatelite 0.5.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 |
|---|---|---|---|---|
| validatelite-0.5.0.tar.gz | 344.0 kB | Without provenance | Details for validatelite-0.5.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| validatelite-0.5.0-py3-none-any.whl | Python 3 | none | any | Details for validatelite-0.5.0-py3-none-any.whl |
Total release size: 536.0 kB
Release files / validatelite-0.5.0.tar.gz
| Download URL | validatelite-0.5.0.tar.gz |
|---|---|
| Size | 344.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8c0425b850f06163f7bb4eab471c70245db57d7e138c14fc2daaa62c07baf72d
|
|
BLAKE2b-256 checksum How to use checksums |
be43b00de4b25fd9735844332ef361cbf45c68fdc9ef28d0638464938f1c5417
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.2.0 CPython/3.11.13
|
Release files / validatelite-0.5.0-py3-none-any.whl
| Download URL | validatelite-0.5.0-py3-none-any.whl |
|---|---|
| Size | 192.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d081c6c7f6e31fb6e6042752893f2551f2a6557b8ff2e3c2b7416ee2e0c8e353
|
|
BLAKE2b-256 checksum How to use checksums |
19549f7013c1f1ba28ea8165156c900eef25422fdb5d2566ff2619a3bc44da17
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.2.0 CPython/3.11.13
|
Security for validatelite 0.5.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.