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.14.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.14-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.14-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.14-cp313-cp313t-macosx_13_0_arm64.whl (81.4 kB view details)

Uploaded CPython 3.13tmacOS 13.0+ ARM64

dhi-1.1.14-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.14-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.14-cp313-cp313-macosx_13_0_arm64.whl (79.9 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

dhi-1.1.14-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.14-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.14-cp312-cp312-macosx_13_0_arm64.whl (79.9 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

dhi-1.1.14-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.14-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.14-cp311-cp311-macosx_13_0_arm64.whl (79.8 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

dhi-1.1.14-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.14-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.14-cp310-cp310-macosx_13_0_arm64.whl (79.8 kB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

dhi-1.1.14-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.14-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.14-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.14.tar.gz.

File metadata

  • Download URL: dhi-1.1.14.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.14.tar.gz
Algorithm Hash digest
SHA256 df8d8f431c45590c532d3a9f27ae16cff2ecf114c51d68478d310dd5477656f3
MD5 9c1740f1dd749cd3f2b5b39bfa2a98e7
BLAKE2b-256 e0964a044f6d11daa0a1f9cac94edfecabc6941d93fc3ee1e5a58541fca3b4e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.14-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e28b62175b673cc44878eb27bd5d30908497d3bca8f3eb09d60116f6ffb12c28
MD5 97eb11c8569afc41ae62c8e956c83193
BLAKE2b-256 502fbacfdebfc46998f800e46b78b0b41e9fe37fa055236f32ea10b2ec0f624a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.14-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 31a301e57edc3f2c9461f8ff671f20eac3b83a4d601d54d85f983bdede3765af
MD5 f58a798c15db1cff7acb04292dd4a950
BLAKE2b-256 eb712006f711a8be633dac66fb749cda474423d348b305d38bd084a1edf09d72

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.14-cp313-cp313t-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 66d0a3e7a2a841da0cea83ef1633eb789914e978ab10651c017c898d2f4734c7
MD5 e4a277a9ce84ceacb43b4325854f5509
BLAKE2b-256 a14f051e8ca3361d503e24b5f06514cb80aceecc7db0510e735e6b7193dd60c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7a97387d08ef70a5221418644c5477c8bcac206769ef6b68ebd75ea0207ab000
MD5 643b29f35b47171d0875954196403a08
BLAKE2b-256 a39522e7c3618cc0b02e06f951b884006a5991104387deaea4a4833dd9f7f3bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.14-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 14f6200ec2ac6936749c006882a5324751bf125bb992dd9a973fca6348bce865
MD5 5c61b2feced68cfb60bf88818bdc3016
BLAKE2b-256 8a849daebfa2a3e2f6c6df7d881cd58befc6adca63a8299df510c470d041e218

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.14-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 a1dcc6566c360aea911b632b551e28c6763ef3e84bcd13907e42e1183ae6a2a9
MD5 3423ead57fc63f019ee372106aad4152
BLAKE2b-256 c8aa2653d58a0d01526ff297de12ef48b908351178944a4858224f980333df42

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1c96fa23705d70c9ddb363d8169313907048e7c5e89f8c0bb1a12d3cbdb648b2
MD5 112f9708dda01046f4dd454fb6e833b8
BLAKE2b-256 1eb259f4f6329e27f7b749bdbe804ca46104a223584ea8cb545b8e7142be9b84

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.14-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bc30f440a04c97aed70635882c4063c71316ea94288639bc7091a2af690f47f8
MD5 250d78ab1ba685656506fb15ac91cf77
BLAKE2b-256 6197292ad7b7741c9f9009db065d6d43829fffbc078a0a6c451cd92b9734aec8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.14-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 606c25bbc9f9d0c35ff71a3be47cb10a0057335f59d4c7a76069bf5d10163ad8
MD5 b9ffd895b78e59b7c557c99938f119fd
BLAKE2b-256 169044473fe76e8ce099aa3508d4673de992783437e77c72433cfb9eeae2aa7b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cfbd4d6a3eebdf824eae5573289f1cbfb02e6df75ef95b9b379ee9056fc332b7
MD5 758a179c007c4a5d4118b1f08e53adc1
BLAKE2b-256 087b8b4778263728a77cb11513b155e72be8d5d72b44fc16798aa43de1c69ac1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.14-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a12fd4fefbfc7d70b270223952cc19ff3d345ffff89bb0e5757111e677be98ce
MD5 71a44113747ae8be37dc8a0567e206ce
BLAKE2b-256 94866261a25a35f78ae4f51027af937c1b46081287053fc0b4f8dd9f1970bfdc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.14-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 977a4c626741c303f312ec2dd46a22d2ee781d59672469e105bf2c3713c52696
MD5 a8450cd39b59e8856b61a0fce7f81674
BLAKE2b-256 102138e51f9c26046608e3194f1af72f0fbbe6f6dfd2487cd63cac6a60b49e10

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b928568bea6cd2e30910fab3b64664bb0ef4244c0219b70a88a7a99cf79accb1
MD5 3b8ab11ad99a76d7a97695b54e25cf79
BLAKE2b-256 2c7ae8bc74d26376f80b4094b9bb150f9a93684d5798db2ea9b0462d0983b95a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.14-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 803690deeea90f01c9ada4d83bd9d1d4bb2a6fc307aea31802d2ba5ace289943
MD5 1d5c3d50a6d33fe0a4773482c0654feb
BLAKE2b-256 b70b1a8586f5931b8791bc830f766b0f0b8672b1952467d5853e392ed14e33fd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.14-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 7ea85052c0f693a4b8a4a45f0c1b6326350c016d3fbfbafb41e480431daa42e9
MD5 9b5bb4c207595ab9223012c4454fff60
BLAKE2b-256 f8f01c5a489775e9b15b658af1ca1066d74f397883f03cce4255be933ce192a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9673465880114ce677337ca5871df357b50867a191e80e1eb8282653da01bce7
MD5 c7752b44f8505283ae10a18e11e59a57
BLAKE2b-256 abf75a2cdcfd62c2f4ee35451ebaf50ca72630b8a4012e8320a2d4fdb24ff875

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.14-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1a7191336c4867de8d454ed8dfd5aa9be8f52e01fcdee7c5d085a2b46529e92f
MD5 6a6a19ddb8902c549996c38dafb94e64
BLAKE2b-256 bf9d3512a6eb23ebf4ed2d27da8a9434693c5cb15af06515461e49eddc7c8b05

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.14-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.14-cp39-cp39-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 926cee07203eae5cf94a6a885ecfcdecd7211f27255f78c6371846ef6269a8f7
MD5 7abca83b1bbb191ba77c69661ce2f695
BLAKE2b-256 29f2f7005ccd020417008e27a4107199cd05cf1950f4e597a3eb8fe43349c6fc

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