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.20.tar.gz (51.3 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.20-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (735.1 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

dhi-1.1.20-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (715.9 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

dhi-1.1.20-cp313-cp313t-macosx_13_0_arm64.whl (131.4 kB view details)

Uploaded CPython 3.13tmacOS 13.0+ ARM64

dhi-1.1.20-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (710.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

dhi-1.1.20-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (689.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

dhi-1.1.20-cp313-cp313-macosx_13_0_arm64.whl (129.0 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

dhi-1.1.20-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (710.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

dhi-1.1.20-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (689.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

dhi-1.1.20-cp312-cp312-macosx_13_0_arm64.whl (129.0 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

dhi-1.1.20-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (704.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

dhi-1.1.20-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (682.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

dhi-1.1.20-cp311-cp311-macosx_13_0_arm64.whl (128.8 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

dhi-1.1.20-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (698.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

dhi-1.1.20-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (676.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

dhi-1.1.20-cp310-cp310-macosx_13_0_arm64.whl (128.8 kB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

dhi-1.1.20-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (697.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

dhi-1.1.20-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (674.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

dhi-1.1.20-cp39-cp39-macosx_13_0_arm64.whl (128.7 kB view details)

Uploaded CPython 3.9macOS 13.0+ ARM64

File details

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

File metadata

  • Download URL: dhi-1.1.20.tar.gz
  • Upload date:
  • Size: 51.3 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.20.tar.gz
Algorithm Hash digest
SHA256 ed3f5ab455432b7cac6821181c1a90cb188b65050d609235b78c2f0ad822da40
MD5 b69559bfa91e52a465ef623fadfd2a72
BLAKE2b-256 1573304ad081f5579624695a81b4a67eb57b0a2c28421a7a1b29273d00431e7f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.20-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3bb5481abab95e03ca2e7039ede36fcbb49f2d42558625d0468a722f6acd8b10
MD5 66beba99b4caa64793cb44bf48104959
BLAKE2b-256 78886b48a46ce22ee01d0c080901e69bacdff7c758fdf442bb53d2d63fb60168

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.20-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b38139f1d1561eee0d7b3e654ce0581453df28c0d3e09e87f08efe68c73c9da9
MD5 bab13b15efc7a9a8a70bcc584a480db0
BLAKE2b-256 c0acc4ca77a2efd1859444e1234ac46c5c65441f0e54cca81d355f64a6ccb4a0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.20-cp313-cp313t-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 b80bdba3311dd1e2d6b713502d7b4556bc533ba91b872f40a48f000bf1b1d555
MD5 6707b1309617993cee740f36f94b717a
BLAKE2b-256 248de9fb3a334410634403e40768fb814e7199f4d9b093bac989a3452bf0850b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.20-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1d82e28123e483669a36f464448c228ec312a0a562e40bd75de22bcd29273f2d
MD5 6bdd826f684b5e157e6a7f86941042a8
BLAKE2b-256 a66231ce7647a275758734b947198bd30bed233ffe5b3ecc43f482befd14aae9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.20-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4de241af62eb60717abc0ea1fa992f91b74aece6ea4cdb435ec3aff267fa7e67
MD5 e4879149a758638af45c217ae1883462
BLAKE2b-256 2e9c18bd184ac34d655cdf979f069117efe897389dd3d44c642abb56ba1715ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.20-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 8292507ce8af79944662fe83e88e6f9a5ababbe16b195269f00c4495f3dbc7ef
MD5 b9f4312c6f07a19e3e2371723fc918b8
BLAKE2b-256 a08d20b899d5e748930162ef0e17de9ce4905a43121f1c6ed7596f0f10335737

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.20-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e3e2b8a0ba6215e061a2e5a2e6a673027505da66de70295df401ce0dd1dc0271
MD5 590bedf7821c7c1b33a485d65738e1de
BLAKE2b-256 682c56da3aaccf32992528eb5714d297ca190947d1b6d334e88ca509d569a520

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.20-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 548d6477439cacf4d706b69c6339db424e79ab654f5700004df991f27dfae35f
MD5 5e1a758d011031cab2b031579ac5f916
BLAKE2b-256 99f8c67b0e24fdf109bc81def114a13731f57292c35d5b8d33008674fb6e2241

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.20-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 2173fb21d26f0dcc2037c30b0b3b30356b0559c3c43bc619c920cde3cd82de52
MD5 0ffec8a8c15c4accc79abc3b405f7dbb
BLAKE2b-256 25c800b8ec97f010e9f19ef2c23cd880063117fb43d5719479d14a9e86ad5271

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.20-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fb869c60fcdc037acada112f1d7205fc4822ffd4b78e52094941156a17f7c65f
MD5 5fd1a4d45391e387175ec2fe6468fee5
BLAKE2b-256 75b27cdacef32335f8f653d3e9d7af9da4565bc92ba80fd9b6602a9aa1d06a15

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.20-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e6b993e8097e94b4aaef853b415f89644c30bd6201aee0cf859ea9de8c1b50b5
MD5 2d89166b4caa16700870e9745d3e9572
BLAKE2b-256 18c822742bf70ba5380a06ded420811df6f1eb6ec079eb512ceebc2f4dadf770

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.20-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 ed109eaef9e6d97bb3cd0ba622ef2e93d8181e5987b040f35ac89806511a403d
MD5 6acecc9c09fe51b42178397aa1567532
BLAKE2b-256 09806de462761bb37e00452bddeef92881cfe975b459921049eaa76f90297c3f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.20-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 290c03e0edff093e04981f71b6c34080cae9605f0353e2d4ceddf9e176d63645
MD5 9cfbb4dc0b9c8bc1e58a9c49d21d1fb2
BLAKE2b-256 f3521c02d83d3c11eff9db69ad9cd61d4ff03fef6c92011e9210457fc8289a30

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.20-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 79130a291c9d35020976d6885c59134114a390dd00e54c21f8485666d7f0e24a
MD5 a4aaeaef6289bc84bd3eaee2778aa49c
BLAKE2b-256 fe162a9d8325671145368791bf9eda0a2cbf5bffcad16b435e4559dc681a8855

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.20-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 a64222c80d8c813adbe262dcb46e4bf7efd8cd984d2aebad5841d77835c11aba
MD5 afd98cd83c45e4df1f99315436812d27
BLAKE2b-256 a53ce3dc5c03112c785554e0e9321bb40d67d3a81d9835b8cdf43bd3c30979b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.20-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0c964192fd39f18b0d5624d8d98ce728083813ddc1ff6fa853c3e3afdfe4a191
MD5 677957630079e9ba679ba6aab10a125b
BLAKE2b-256 9b7a85c0dd016884c7c1b4505e2b4f51e637ead6359f2986af93cd9a32b3b1c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.20-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 01d0eb078b27567b1905ee9e62a518a4f07b19d030976dfaa8ad70406364eaa9
MD5 21aec1324eda38c12eb7ebd35bf9ed7b
BLAKE2b-256 6bb18f987bcfc9522fff486b8d606932419150d060403c06eaf9a7009d444acd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.20-cp39-cp39-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 128.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.20-cp39-cp39-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 48addd1064a3c8cb452fb11fb03cd1043feff19cdbf3126a7f5ebb4cd36ae395
MD5 871d5c97f72305103efe7cf5ec413a34
BLAKE2b-256 83ffecbe2a81af0cf6184a648a6911c9f20ae23be71cc1817ca399cd5bee8eb7

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