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.1.tar.gz (33.8 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.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (107.0 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

dhi-1.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (109.0 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

dhi-1.1.1-cp313-cp313t-macosx_13_0_arm64.whl (45.8 kB view details)

Uploaded CPython 3.13tmacOS 13.0+ ARM64

dhi-1.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (106.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

dhi-1.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (107.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

dhi-1.1.1-cp313-cp313-macosx_13_0_arm64.whl (45.7 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

dhi-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (106.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

dhi-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (108.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

dhi-1.1.1-cp312-cp312-macosx_13_0_arm64.whl (45.7 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

dhi-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (106.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

dhi-1.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (107.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

dhi-1.1.1-cp311-cp311-macosx_13_0_arm64.whl (45.7 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

dhi-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (105.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

dhi-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (107.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

dhi-1.1.1-cp310-cp310-macosx_13_0_arm64.whl (45.7 kB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

dhi-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (105.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

dhi-1.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (107.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

dhi-1.1.1-cp39-cp39-macosx_13_0_arm64.whl (45.7 kB view details)

Uploaded CPython 3.9macOS 13.0+ ARM64

File details

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

File metadata

  • Download URL: dhi-1.1.1.tar.gz
  • Upload date:
  • Size: 33.8 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.1.tar.gz
Algorithm Hash digest
SHA256 e9559ef6e725e91dcf44344f7d15cece3db1c9fcb75c38d7005055267314645e
MD5 17fed226e278a485cdc5f7a78cf051dd
BLAKE2b-256 4c4da6458a4315b5230cc1d56a4c8f24b4eb3252bf41afc7252e75271f76fa93

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0ab5f92add54967691638d56cd3142ad749573346a0cb1dfc49cb7dbe3d1b2c1
MD5 599057fd8e2daf5823581b7653887b63
BLAKE2b-256 c9cbc5064656a58e90030f4de066e3e692777f7e319a518adeb2d23b8e67cdc7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4beec6136ed72fd2017aac35dc21190caf9000e4419cec6021f78e9266d26e75
MD5 3e43715d9d84a4d266a0ad1d6ad454cc
BLAKE2b-256 9713c22ff609257c742e6f24a2147a4955bd5b693984c5693f7311af08e1af37

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.1-cp313-cp313t-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 8a4af97cae4b30c2f4b91d42ebb735a5d256042cee9541bd27ec48aa8cc10ed7
MD5 70498dd925d1a6eb1b092312e35a2e30
BLAKE2b-256 f77fa69f45e5be499c1088f1f04e4b86de2a7cf3cab6904fc08f00f3dc70879c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4b5cc31888c7f2e88fcf0f00e004e25430299a5a3951e07d07065522033befc5
MD5 3d5871248a36cf0f609cae0366114427
BLAKE2b-256 4a2b23f4aa40e4ecfdb47b391e51688d3a727d80801d1a1181054224c17494ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6dcb97e989356ed565f7215a4c305a0506538591d7c33665102b6888fd865ab3
MD5 e0601175a5d52fe43b720b472ce11bab
BLAKE2b-256 3b939a44a5d42ea90a4f4d62bc1931dfbbd99ddfeae7aacbb07f0d58556b1732

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.1-cp313-cp313-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 45.7 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.1-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 6074bd35325ffb8a77706e1cb578bc303d7d9c5621771c65f441abbe8e23950c
MD5 a13f17cdfb10b16b1845d9fab9761105
BLAKE2b-256 7eaa52ae5ff7c8c1819e52b948e3ea9cbc0996f1475697dfc2b89ed4a8fe5eaa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 777ca679a191ccf87eee6d8d00a0386ec183db2cceaf9f6bff067d958f47d0e9
MD5 fdb401a81b0bd24e26a8321e6e689a73
BLAKE2b-256 9dd9613a729cd4c694ade144fca1c918f8b974f243f5d7df34b5d7ecb9819e0f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ccf6cf6042e16c581533e986335b5062e0b9684b68e43421aaf40c1923d4d21b
MD5 05528aed5ab8fe766c141f752df0de78
BLAKE2b-256 c89ac450a143dc7044798a99f171a0c78722f5c835d52ec122421a153f32c638

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.1-cp312-cp312-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 45.7 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.1-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 d9cf371998d8adff091f4155f71ced2629aa398d5997850654b0eddbf8164601
MD5 d0ebd5f75f8765fb5c09a55e7fb6ce89
BLAKE2b-256 3382f7dd8d1f8bcd695096a2342fd813a82290593403b732860b3c3694a017a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4935a0856ac59d6ff29f1808ff19c4c76c2a410bb708358a370a18d8fef05d0e
MD5 3872d46a1b41f17a44a0b875e2ae9457
BLAKE2b-256 4b87838c3f0193d8cde4390c5ed645188382f35469c1fcaaa2444dfe2d0a0283

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e1acc39370666467ee02203d8da54df24d233688f2f741d0d3faa28ae6da5fd8
MD5 eeada3ac2962279b166ffccf7c29ea40
BLAKE2b-256 021e9f86bb00e6c219b210eefd7b9d9be5763288e2814b373ed379bcc99f8a7a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.1-cp311-cp311-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 45.7 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.1-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 76f509ae16a0866abd8f58246f3a1c55b648e946593478e321be24fa12920fa0
MD5 bd4a5e843db25e55b3e6ae562f7950fe
BLAKE2b-256 6d55f1720719a9715be5094bff6a4d34c16fa25429f6ae60e3b5f521e991c415

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2521144cfb7a29cca224fa40374949420e1b5f0d57d9116a64711fd902839953
MD5 82d7ee469d781fb68e60e721e397507b
BLAKE2b-256 15809ec3303599e072780f2a2686d0893f6f3fc041683359b40e4398f132bc36

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9d860eb6f4121b21ce472a0e7caaac8def5d54cbf31264dc5532a93905382def
MD5 9755a479264d7cc31c126ce8415fe666
BLAKE2b-256 57625c5b5a49a9521ba8acadab602ae1d194b85b624234504484f85d096e0f61

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.1-cp310-cp310-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 45.7 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.1-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 754bdfd123a159d5e40f26ca706413674f8dc1bc6c5bc1128435e6f28fada8f6
MD5 748769b4a1841d70c98c8a2f5a0ec2b5
BLAKE2b-256 c600d0e67ca449725ae6378863d5fd5144d549609314100e5ce3dceee395f8d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0d67f2a87a218b06f978a1b9f55171cb2e04fa27a9f4a80f9242752827e652b8
MD5 414bbfc3544574a95195018698eb7fc3
BLAKE2b-256 1e53211cdf96de2303961b8fa705f5d40525d67b1d2e413c6aaeea6c35218eaa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3c7a22d144e6509a0a59ad4d274951b00f38eafdff1855da150485f4b2fa8dcc
MD5 087ab0e59b07ee221a41b283caaca86e
BLAKE2b-256 b0ddc00e69003b5a6c7be6eb6781c7e283a068351f863f01d27dbd76fba98a2c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.1-cp39-cp39-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 45.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.1-cp39-cp39-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 d1694f1803c0b04ff441264aeb2e8c7da16c6ce0a44525ccde2af855f7c92247
MD5 6c2eca607bd7181071bb330a8c6504e0
BLAKE2b-256 e8a31e4e83e20a948274182b2b41f4cbc5c12ce65dff100e28655fff96267146

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