Skip to main content

Ultra-fast data validation for Python - 28M validations/sec, 3x faster than Rust alternatives

Project description

dhi - Ultra-Fast Data Validation for Python

The fastest data validation library for Python. Powered by Zig for maximum performance.

🚀 Performance

28 million validations/sec - 3x faster than satya (Rust), 3x faster than msgspec (C)

# Validate 10,000 users in 0.36ms
from dhi import _dhi_native

users = [{"name": "Alice", "email": "alice@example.com", "age": 25}, ...]

field_specs = {
    'name': ('string', 2, 100),
    'email': ('email',),
    'age': ('int_positive',),
}

results, valid_count = _dhi_native.validate_batch_direct(users, field_specs)
# 28M users/sec! 🔥

✨ Features

  • �� Fastest: 3x faster than satya (Rust) and msgspec (C)
  • 🎯 24+ Validators: Email, URL, UUID, IPv4, dates, numbers, strings
  • 🔋 Zero Python Overhead: C extension extracts directly from dicts
  • 🌍 General Purpose: Works with any dict structure
  • 💪 Production Ready: Thoroughly tested and benchmarked

📦 Installation

pip install dhi

🎯 Quick Start

from dhi import _dhi_native

users = [
    {"name": "Alice", "email": "alice@example.com", "age": 25},
    {"name": "Bob", "email": "bob@example.com", "age": 30},
]

field_specs = {
    'name': ('string', 2, 100),
    'email': ('email',),
    'age': ('int_positive',),
}

results, valid_count = _dhi_native.validate_batch_direct(users, field_specs)
print(f"Valid: {valid_count}/{len(users)}")

�� Available Validators

String: email, url, uuid, ipv4, base64, iso_date, iso_datetime, string

Number: int, int_gt, int_gte, int_lt, int_lte, int_positive, int_non_negative, int_multiple_of

🏆 Benchmarks

dhi:     28M users/sec  🥇
satya:    9M users/sec  (3.0x slower)
msgspec:  9M users/sec  (3.1x slower)

📝 License

MIT License - see LICENSE file

🔗 Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dhi-1.1.16.tar.gz (42.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

dhi-1.1.16-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (224.0 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

dhi-1.1.16-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (226.6 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

dhi-1.1.16-cp313-cp313t-macosx_13_0_arm64.whl (81.4 kB view details)

Uploaded CPython 3.13tmacOS 13.0+ ARM64

dhi-1.1.16-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (191.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

dhi-1.1.16-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (192.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

dhi-1.1.16-cp313-cp313-macosx_13_0_arm64.whl (79.9 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

dhi-1.1.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (191.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

dhi-1.1.16-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (192.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

dhi-1.1.16-cp312-cp312-macosx_13_0_arm64.whl (79.9 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

dhi-1.1.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (186.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

dhi-1.1.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (188.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

dhi-1.1.16-cp311-cp311-macosx_13_0_arm64.whl (79.8 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

dhi-1.1.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (183.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

dhi-1.1.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (184.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

dhi-1.1.16-cp310-cp310-macosx_13_0_arm64.whl (79.8 kB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

dhi-1.1.16-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (182.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

dhi-1.1.16-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (183.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

dhi-1.1.16-cp39-cp39-macosx_13_0_arm64.whl (79.7 kB view details)

Uploaded CPython 3.9macOS 13.0+ ARM64

File details

Details for the file dhi-1.1.16.tar.gz.

File metadata

  • Download URL: dhi-1.1.16.tar.gz
  • Upload date:
  • Size: 42.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dhi-1.1.16.tar.gz
Algorithm Hash digest
SHA256 4b3a49f935aa124b84dcb4d59af521038a0ed32d20d865e29e625bc32c3390c4
MD5 4c6a5c2ffe113e0d1bbc39cd3d032963
BLAKE2b-256 c94f94f2c03e8c2f7e4e128587bc74055f57eeecea070912fc7bc7cdc2c7057c

See more details on using hashes here.

File details

Details for the file dhi-1.1.16-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dhi-1.1.16-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7b4e033bc13aa96108450abcd7dd4f50e7725aa0294c7d1617930cb75488f940
MD5 90c30eedd2be4cff3703c444175c523f
BLAKE2b-256 6298af34b9c8cc9c6a822624fd0baaafb8084077fe4aec5c856206bc00f43fa4

See more details on using hashes here.

File details

Details for the file dhi-1.1.16-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dhi-1.1.16-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 28ab3ea656f3aecc3c199be11558f8a20f116f0a2561e67663e64e96ceb3b105
MD5 5819cab7735539d8dbd66c35b2c7cd0f
BLAKE2b-256 43466fb448b325da1d64a7d4931300eec4a3637d8340313bc601e746c1ceff7f

See more details on using hashes here.

File details

Details for the file dhi-1.1.16-cp313-cp313t-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for dhi-1.1.16-cp313-cp313t-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 4f0bbfecff4ad603efea6ec4646bda8e3518e8c264b74060ed1b137c28911156
MD5 4b5d74022151776c7bebc39a49684f50
BLAKE2b-256 9b18fda3de5606337278c3fc4f175985f471b5ce389644270b3465f5222f2714

See more details on using hashes here.

File details

Details for the file dhi-1.1.16-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dhi-1.1.16-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 89438712bcf7d7d562d69caa53a101ee3b86a00f7f83ea4c682c1c1bfaf64c6f
MD5 d7b542c276e3d7760c640af63f8f1b51
BLAKE2b-256 720d30f1a98db6dfa266575027bccaa5abec346e1fbc2a15000622af48599b61

See more details on using hashes here.

File details

Details for the file dhi-1.1.16-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dhi-1.1.16-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a5a4b9e94373e81b8c95748eec46e000a7179c2e91296d352a12b3a731c6bbd5
MD5 2ecf60c900bda887fbb8e30f9d4994dd
BLAKE2b-256 27e3c579b19ce45662ab857e899f0ac343a26d59fdd734f4bf2e749e4f282625

See more details on using hashes here.

File details

Details for the file dhi-1.1.16-cp313-cp313-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for dhi-1.1.16-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 5bfc3b3d31f6cbeb83dac630000f2b9ce517ae57bcfddd4bab418c1f70f4062f
MD5 b9415001640fc67d2d845c3e847431ba
BLAKE2b-256 004a769c3f45150a3c9253a05eb1269e9bc94ca6ec8e05bf4f5b244f8fd68ba0

See more details on using hashes here.

File details

Details for the file dhi-1.1.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dhi-1.1.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 06d917b317a09e354674cd8d918ff92e1daad8ce32fc9578562d285b24b24fe2
MD5 cb6ada5fcf8ebbc29a1260493a02e095
BLAKE2b-256 f303555fd28d7b8d2f1c577b4bdec6c1e420c225a2d080c0064e49ecc7c00cce

See more details on using hashes here.

File details

Details for the file dhi-1.1.16-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dhi-1.1.16-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 06e4591c1f0a6ffc7df15b60485f5efdd45799fd1a87cbe6d2b16636d6385b6d
MD5 a5b59f54bad71adfb5056bd140604c5e
BLAKE2b-256 7754031ce02cb9f6fd4282d84b948e71948675a33c98b58d0ed3d5e6f4bc4c03

See more details on using hashes here.

File details

Details for the file dhi-1.1.16-cp312-cp312-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for dhi-1.1.16-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 3464ab752697b63f3c8041fab4eb7c0051252c8aaa651ed59dbeecf39a60aee8
MD5 aa1301e68f3ef11166713352b70bbb2e
BLAKE2b-256 6121480de10c3a6e3474f962906a421af3366211e675eab6119bdd0c52c339aa

See more details on using hashes here.

File details

Details for the file dhi-1.1.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dhi-1.1.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dc1e5d602b5dca1bef52552d38ae3d7a34688a4f44b8b7271028493024047eaf
MD5 a38df811e899c2995b8716248111a615
BLAKE2b-256 d4f235fa96de0898275bfa879698f4324ee0c6b25ed4a951ef276649bc5c8bd7

See more details on using hashes here.

File details

Details for the file dhi-1.1.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dhi-1.1.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6b1b425a864175c62a83210c2c6a97e7dbfc8ffa05363dd37283f71a6ec37d74
MD5 fee9e24bfedc35282e915f784a2b3329
BLAKE2b-256 e919a85cbd40d5f95127b2800ce050688bc444aa5d44d205f29a0f2713d61e82

See more details on using hashes here.

File details

Details for the file dhi-1.1.16-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for dhi-1.1.16-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 6395e6ba02a211602e066fd367e6de1cb6641decf832288fc6409b81868b4362
MD5 916c2d890efacb43a17c43d081aff0a9
BLAKE2b-256 29aec90ca3a1701c974b02e20c5694acabb0f163d27eb2273f818bae9b7b79f9

See more details on using hashes here.

File details

Details for the file dhi-1.1.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dhi-1.1.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dcdff0ef71468bdc58b0421f2b16696cb7de4c47931082665f386ed690cce064
MD5 7cf5749643ed1669fc0d5633aba4a7d2
BLAKE2b-256 d1f4ccbf1f3d4eae710ddc2c4b7019c9e7a8ba6b722e90556a1ec104ee5abfb3

See more details on using hashes here.

File details

Details for the file dhi-1.1.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dhi-1.1.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 79aaa3e53e984ab163ff857543f04573d55cd5d5802e3905c0dd033038dc8cbb
MD5 d89120a99a3572399eb969dbc03aec83
BLAKE2b-256 9d6c8d1b3778a3ad5a4e7e6558bc2e75d7dd0185b688f116567bc16612dcf41c

See more details on using hashes here.

File details

Details for the file dhi-1.1.16-cp310-cp310-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for dhi-1.1.16-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 56902441f9ec531f17b847cb24fa0d784fb7ccf8b3fe1b2161a46d696d0e52e2
MD5 7ec4c0148057f54bdc4585d0f4c0cf58
BLAKE2b-256 77aa4d97db45fd7c39c032963bce17dcbcb3549df496365c5ac3297bd5e41626

See more details on using hashes here.

File details

Details for the file dhi-1.1.16-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for dhi-1.1.16-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 58e86504d344fb10c3582a11bb3d49de0fbb37e966e302e5a33973dd7811dbaa
MD5 a9305776b8bae200cea486c4eafe67f9
BLAKE2b-256 0fd4b9dd7474b1a1effb174562f5b8933b764d220c0cb76a82864e6abac9f797

See more details on using hashes here.

File details

Details for the file dhi-1.1.16-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for dhi-1.1.16-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3c1b96dd939a1423333ae1bd3475ee64edc95feda5f142f9e0b35d5a458783a8
MD5 cf0a7f72bb8f7001e73482f7f86bde2f
BLAKE2b-256 4d52a0d644178488efdfc6d35b1f7739e8d826985e3731c1cbe9cc40673f3a5b

See more details on using hashes here.

File details

Details for the file dhi-1.1.16-cp39-cp39-macosx_13_0_arm64.whl.

File metadata

  • Download URL: dhi-1.1.16-cp39-cp39-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 79.7 kB
  • Tags: CPython 3.9, macOS 13.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for dhi-1.1.16-cp39-cp39-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 aa673e22d0e5013c8865856442253e18fda26a42fd9c539451516720fabb07cf
MD5 55d5b38cf6708df5d11887d9d903ba5f
BLAKE2b-256 6c8008affad87a94000f40a5ebc7715ecceef89a553c6d1241f61fe00609b04a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page