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.3.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.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (172.5 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

dhi-1.1.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (173.8 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

dhi-1.1.3-cp313-cp313t-macosx_13_0_arm64.whl (63.2 kB view details)

Uploaded CPython 3.13tmacOS 13.0+ ARM64

dhi-1.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (158.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

dhi-1.1.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (159.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

dhi-1.1.3-cp313-cp313-macosx_13_0_arm64.whl (62.1 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

dhi-1.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (158.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

dhi-1.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (159.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

dhi-1.1.3-cp312-cp312-macosx_13_0_arm64.whl (62.1 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

dhi-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (156.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

dhi-1.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (156.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

dhi-1.1.3-cp311-cp311-macosx_13_0_arm64.whl (62.0 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

dhi-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (153.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

dhi-1.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (154.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

dhi-1.1.3-cp310-cp310-macosx_13_0_arm64.whl (62.0 kB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

dhi-1.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (152.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

dhi-1.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (152.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

dhi-1.1.3-cp39-cp39-macosx_13_0_arm64.whl (62.0 kB view details)

Uploaded CPython 3.9macOS 13.0+ ARM64

File details

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

File metadata

  • Download URL: dhi-1.1.3.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.3.tar.gz
Algorithm Hash digest
SHA256 33deb19c94de1c3cd54fba44080465a03bcb32062c73a8423db6df126871b6f7
MD5 32a18d0b9234952257fda8e43d97bfb5
BLAKE2b-256 f7332ce0b935d73714eac09aee018cb22f773e9b96413c73bdad9624f416d37d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 87cd96b614e6538c7426157bdf048d3f2011e91ddadd5e3e010ae00556f6a9c6
MD5 25eff1a6c3017c5c6bfe6efc899c61d1
BLAKE2b-256 975c01c0bddc9d9b36469345faf2575d8777c02aab062cc5f5fd02135fc90eab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9af731a7ffe79a869fd9d5c2b2d3e58bda5683ccb93aa527252a2e271f33cc9a
MD5 7eef26722334be7323323bcdfd6d1d78
BLAKE2b-256 4e6c824e22ab910cea98554853e781b73a44beb3b411f3d74a5f75fabac5c1c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.3-cp313-cp313t-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 d54a621cead83017c2f42b955eb15c5cd44f65ddb65e3ec6bf9dc539b10e9e4b
MD5 32fbbbc846dd500ab762ec0eaf0cc037
BLAKE2b-256 df2a9579ad4ba5e9196946b0e045ac3d869e75bac869f600cfa9eb08ae685f6b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 44278dfc9a88097b327573ae495a338a0d063e54b544b834bb770cd3289fe474
MD5 fb4da0a7c6766f51e78ef7702556b806
BLAKE2b-256 05e73f67e4e5c239b9f74118259c15fc8a09ec3b7ebfc8d2cbf157939872b64d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 51dde970e78c7b51d4dfe5c0954b708eea41fe5c0b09f65ba9b20a2d5ef8e38c
MD5 6a37c3195b13d430f788e4cfa3ff1d3b
BLAKE2b-256 ef7f940be19c5faae347f7175503aa8e537b3dbb3ecd4a8519abf302268ea302

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.3-cp313-cp313-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 62.1 kB
  • Tags: CPython 3.13, 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.3-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 a13edf1902e5124e6cd916997e5c4a663f1a69f030802d51df90992c2be88128
MD5 155d99b218387a33508f7f21f5dcc893
BLAKE2b-256 6b6717d761890ac1ff412d79700f09fff2d53bdbb8c607a2af74c11437587e3b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fc20cd4e1407a9936f837b1002d88df12b9fbce155eda6ad66b86bf12f33a091
MD5 225cdd2cb01461e8b0434c50cd92e0ac
BLAKE2b-256 9fbdb774d9ecd20d4438a90056709e95e3782baa71cf73c462cf26d965237498

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 600f82d44f3d35df59d6eb964e2294617793bea896b5d841f12af20fcf10d5c3
MD5 9a8355c6418f10d925bba62902fbefcf
BLAKE2b-256 3f1a03045880595cae360127d7e3af64a81c40bf2ca797e3c22cfbc009e6003b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.3-cp312-cp312-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 62.1 kB
  • Tags: CPython 3.12, 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.3-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 098e74a81465587679d51a73273982489a5771e938d9b05d90244b79cdff6fd9
MD5 344c4056e2de4944bcf27d734cd2ef6c
BLAKE2b-256 b4914b106af92f4059d81c726ea8e7cd5933220ce0266886c8efdb38f561a006

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dfbf617b9d4bd0fc05ce641e984c806389b45de643e096d5ccb20f67ac479b4a
MD5 385eabc3f566003edc85bba53fa6d995
BLAKE2b-256 d85e6299c282edae03fc1a2c95960fda2b22b0863151bfb2ea2cbae6ed3c28eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e0ad69bb66783228c13281ac25527ea4601edbfc6fb7ab9b8aee9e8fb9250c01
MD5 a502556a23a0d5314527ea9dc6e1f1e4
BLAKE2b-256 0225ca3232222f962b4964291d45ee912ef2565bf7c915fb2d2da70cf77038ba

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.3-cp311-cp311-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 62.0 kB
  • Tags: CPython 3.11, 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.3-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 5b9d0f6ee1a120a1fe5c1719622c6bcee9a3ba3b6be39eb519aa8548013482c7
MD5 9f5c186cdfcb0affa88fa665711b10d7
BLAKE2b-256 5691c502ff9322579636740897b5484cd01e77616f498f7ca80e81743e490164

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ed05b5568d2aac3e983144486e0708d3169e0d8f9b8983ce40eec7b2d2402b0e
MD5 0df4f1b3643da998847bf1a90761dc9a
BLAKE2b-256 7b795d254b7d45925d0d973102e26c6c214c4a679fed198c60af01055b16bfee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0d6d36c87695b569cec03869e1899004a94b07cabdc7adac7a117de434d63e59
MD5 8bc6b5016047cddaab40909a4ef88eda
BLAKE2b-256 e9b02852d8950d8c94c367003188d44319da82dc749f56c3066f50bb4090f6a2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.3-cp310-cp310-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 62.0 kB
  • Tags: CPython 3.10, 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.3-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 4f798b2e0bf09ed598e6fc1332d11ca840954a1002d5d24eb6c1f594d047045e
MD5 954be43ea454ece35e1228744bce25e4
BLAKE2b-256 6162e2ec3b37d2aa1aa68280543a6c630b15d846382724c524618ad2b1b99681

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 83e12e7f5d56f8f9dcb5467d6fb1f5ed575319d47c4d6c3eeda594eee8916582
MD5 b44d127c68d91a6135a64d4ae695d8e3
BLAKE2b-256 2ddb69a3bdd00464140e24e7563694dfe3295b40013c8558a76060b7de9992e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a9fd2a3d30ded22e5ac64c4e265394cd961840cc43680fe5fdf3130d107c9115
MD5 1fe1543b6fb92f51a53dbe58cb78dda3
BLAKE2b-256 c70a1311de1e3103590bb1e5d2f1315a2b89e44aa4335d331a2afb298de1fa16

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.3-cp39-cp39-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 62.0 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.3-cp39-cp39-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 a69cf6c8e5500b34497808b25a46e88849370a6523b20cb07ee15250663b9796
MD5 6050ada3cadb26a67605ef4f22235626
BLAKE2b-256 46fa5f0d8c7ec0a3a705e20788a5a3dd13d5656b06502e20f74b82dc0f59cad1

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