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

Uploaded CPython 3.13tmacOS 13.0+ ARM64

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

Uploaded CPython 3.13macOS 13.0+ ARM64

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

Uploaded CPython 3.12macOS 13.0+ ARM64

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

Uploaded CPython 3.11macOS 13.0+ ARM64

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

Uploaded CPython 3.10macOS 13.0+ ARM64

dhi-1.1.15-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.15-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.15-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.15.tar.gz.

File metadata

  • Download URL: dhi-1.1.15.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.15.tar.gz
Algorithm Hash digest
SHA256 230e919c8a72a39555ef6d9ce2cb84e0db0fca9440a575ee090d543c66526853
MD5 891415155506c442e2dd8508eab20eaf
BLAKE2b-256 2d4923e9b934615de23388edc853efcfff384e97ee2b718832943e50a706d457

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.15-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f0362ae8a4a55d41b5dec285510609fb647431344ded97896b1a9eee8e4f4447
MD5 04c3e6b5f400bfcfce0d626a02f67ec8
BLAKE2b-256 02d547d4dc2072ac0192d9b618ee82242e7ab203a8ebf5ce6a621bbcc0f2970a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.15-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9057b46e19d115b9d456cc71236ab142e1a58dd059f64ed56f5061afa3494f2c
MD5 0a60dfa21d86c6b8f6163e6647a7ac8a
BLAKE2b-256 2de0f6dac0939fb6245b1a2930828206b3227fb897a9101cc1de94e29a7e14b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.15-cp313-cp313t-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 8db8693aa28aac329fabb81a10cf3e21b055ba098714005a8129350f6f8eee1b
MD5 acec8c077a49f678f6b7c6c67d666006
BLAKE2b-256 a822473d0a9ed436b63cc73d44f4c82543d6131b7d5f12ec8bc592c579d55b3a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.15-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fae4ac9c21583dd041f610b9aece91a2e945a2648039124364ae6a47296d898d
MD5 1677613ae18e6615ace2266fa7a91a87
BLAKE2b-256 72bc3799b063084b17735e1c8a68a41be45dbfd3f95341bdb154f64c20fdea0c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.15-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b8c7eb6f120bdf0dfd28518702123e9194d1c04ff553d7aefc25e611bcae26b3
MD5 e5ae5634971054da773930ed2f4ef02d
BLAKE2b-256 676fcd51fe07cbb7bbbba565e9aa89a2231289f84a861a3e664a998cb7ff8ff3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.15-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 c64ab43a8e1e6d1893838101ba46822b0b3c4d75a1e3cf3695bafa4e437fabc9
MD5 d42077ab357230cac0b521dd748be462
BLAKE2b-256 a3614bec743304c482f7531db0b38187354fdb78edd27f72248c58c05bc9f6ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 be25936fad15904d1587f3a3df34f2a4c0876fc3e027d719a5bcc5586f356c5f
MD5 d4238ddb013512302b93f70a781d6358
BLAKE2b-256 d28eb02ae635e8a9cc317c598a587c06ff7a50b7d4c2a6d4bb46627954e6e7f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.15-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1e7982a27567da65966f730ae3a1432eaa2bd5433f100831a02217ad4593da8b
MD5 70725c9dacc0802a65f04b496cb3c715
BLAKE2b-256 1437c3a4889d14af6d137b4df5abccdb78b0ef186dae1d5a87b272ebe196eecd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.15-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 71ce3a13f43ef07e549e8046b0c15559c713c0949385411bfd04ba2cc2062870
MD5 3dc84943d6602157bc19b9665040fb8e
BLAKE2b-256 326b30c7a56bc248aeb8cb33b926001077de3aaa59daefc4633402842512254f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7e7d52c680a8ddc20569bf1a3c67704f666c9879e4d151497e411418bf4c1205
MD5 0043bdb72af93d5055b2aa7fb4e40b22
BLAKE2b-256 aeaaefd40ec999d36ad04caadd5129c3446435ceaf859967f4c5ee4f7674a0f2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.15-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8f700f93ed18cd9ce7a6df04c07f24d2e8cc8658c00be58b432bee55d3549826
MD5 43a3483f3443a7fdc568c05be59b2608
BLAKE2b-256 a7a7097c1d67b2b0005df23e69b963f7be4ee0670484f41cad898d847f8f11d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.15-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 5cabf9097f5f70268ed1dad515dc7b356829444cbf57b26d86ea567233aa44dc
MD5 b30affc7a8286ce37e4563de0bf0d0c6
BLAKE2b-256 88ea7e2f56da455a5bc5e4bb3f8d5cd6d3e7173176eca5357d22dd10aa80b591

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2f84dab7e8924c3c0e4ad9050eda987cd937d09280e17b63bd10d64f8945fd9a
MD5 6c043e2f2d55c95a7428a9770ddc3ce3
BLAKE2b-256 1ab9aeecd766dd8ef3d11bbe67a058ee1f671430cd8e875666abf89a21664969

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.15-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 89d375ab6f403de448150d6419e08e783eb8a9ea12cff2a699317059f6891baf
MD5 c35bbae2fe2082f336601963c373d6bf
BLAKE2b-256 47e1c988cba6c9e0fe60f261786272f64153b43b827c85701f4f858a66ced6a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.15-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 3e50a45bbcdf138d90d1e1eeb08762e01ad7ced1d6480a6201fffc5da4a0c99f
MD5 beda01d6a723d89829657f17f174e553
BLAKE2b-256 04772aea40cc4cfbac5ecf67cc98b01b3ae77ba9e65e27ff0c685258e97ce20d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 56734e3af9dc9d3befc89500500977fc19134c40ca1c672e1922e275b9a446c1
MD5 1b9ed532e6671fea307468a77a1c35e8
BLAKE2b-256 47a6e97ad9822dba403c1c986be9c2057d3d2015e92db82a082b3d8a8428bba0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.15-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3ad90dde01120f281cfee9f95e8d3300d0126e7854525e1c20161a4ce62e0842
MD5 ddeda30a897a73b4939600675853096a
BLAKE2b-256 a78728b8adb0aa1f32d0e1b8be9d96c909667916578b0b5e01a4766e04f9ab25

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.15-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.15-cp39-cp39-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 dd8a2d2eaca7aaa7b4c5146c186f2d80096b068ed5e701496a7c7896ece21ea9
MD5 cb74ab31e3e1a29c422157f9bd3f3a4c
BLAKE2b-256 03671c05b4c150619c79627f1b062957e0c282f56e93390b06b0f82740080ad7

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