validatedata

Build status PyPI version

An easier way to validate data in python.

Two validation modes, one simple syntax.

  • High‑performance mode – use validator() to compile rules into fast boolean callables. Ideal for data streams, and anywhere you need maximum throughput.

  • General‑purpose mode – use validate_data or decorators (@validate, @validate_types) to get detailed error messages, nested validation, and optional mutation. Perfect for light APIs, CLI tools, scripts, and forms.

Validatedata gives you expressive, inline validation rules without defining model classes. It fits naturally into any Python workflow – from lightweight scripts to high‑volume data processing.

New in v0.5: The validator() fast path for dramatic performance gains (see benchmarks below).

Benchmarks (1 million repetitions)

Test

validatedata

manual

pydantic v2

msgspec

beartype

fastjsonschema

Scalar: type (int)

0.1109s

0.0842s

0.4254s

0.0793s

0.3594s

0.1478s

Scalar: type + range

0.1508s

0.1286s

0.1314s

0.1353s

0.3841s

0.1493s

Dict (valid)

1.9438s

1.1996s

1.8246s

1.2350s

3.8948s

2.8658s

Dict (invalid)

0.2644s

0.5856s

2.1661s

1.1895s

2.0818s

2.7938s

Key features

  • Compact pipe-syntax shorthand: 'str|strip|min:3|max:32'

  • Mirror-structure rules that match the shape of your data

  • Rich built-in types: email, url, ip, uuid, semver, slug, color, phone, and more

  • Function and method decorators with async support

  • Conditional validation, transforms, and custom error messages


Project