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

Uploaded CPython 3.13tmacOS 13.0+ ARM64

dhi-1.1.19-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.19-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.19-cp313-cp313-macosx_13_0_arm64.whl (129.0 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

dhi-1.1.19-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.19-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.19-cp312-cp312-macosx_13_0_arm64.whl (129.0 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

dhi-1.1.19-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.19-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.19-cp311-cp311-macosx_13_0_arm64.whl (128.8 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

dhi-1.1.19-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.19-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.19-cp310-cp310-macosx_13_0_arm64.whl (128.8 kB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

dhi-1.1.19-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.19-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.19-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.19.tar.gz.

File metadata

  • Download URL: dhi-1.1.19.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.19.tar.gz
Algorithm Hash digest
SHA256 3a3140d99a58e4133efdba71e6867e1391d43a5ea5347a04a9f8c3aa6851e019
MD5 002896360ef8ac0cb3405d6544442897
BLAKE2b-256 9245d4c7f1b0fa3516cd03fc162cc8359ddd86f5786fe5268909005ea1f768a4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.19-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fa63fa53498af7b99c7fde21f896f28c1d6dc5ae7908a8942516508f9d1aa43d
MD5 098717e4ca689d42210f0927fb7c5003
BLAKE2b-256 e185aa3967a35e37b52f9670c2382a4bcf793d4a084c9d505563d5720de2616d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.19-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2c4a1ef4c9a071cedc394bc4f35c1c44e52dcc0c4c7be81a4479ba0a5b10bdb2
MD5 e98cb523158800696820f4566f5ea524
BLAKE2b-256 da51d4b3284f742a0d1fb0824792a17672ee8e89c87e604066113904cf34a65d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.19-cp313-cp313t-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 af51143c8ff34d780924b6c98886da05b376afa620c672f213694d2c6c098bf0
MD5 c32dccf1af11d8da620beae2741ae12b
BLAKE2b-256 2d81dab928b9929dc0cc804cee3c4e692b2173589915272ab6d88da2007d4c6f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.19-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 59a0cfdeaa7ebd72e64a9e3637e433cf32e10668fcd23085ce25077980d61c33
MD5 404359904451c6d75e8cdad3c20135d9
BLAKE2b-256 166eaf10d58ca306fbca6652279ab33f98e476e8a8b8bb04b04ecf4da6fddff8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.19-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 b14a319e0b289856879308238dd6184097db19b4ab9ce0e55544d6ae6a58276b
MD5 7b97d149054aede2a757bf97c587a51c
BLAKE2b-256 5a1051b67ca506f7523f9d5225595996143c6b696903dfa6c81ca2a84d9f3933

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.19-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 409e9a455acfb9e44f4c0b660ca3cb516912b0139dd5859cd6e346e4ddd6fd3d
MD5 15a55e946f6f2f5acee4cd6d347e9646
BLAKE2b-256 95da2661b421b118646fd6fb77e235300ccea1d1b1b175aba5ba3076a4eac3c7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.19-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4aa6ea1b775d89a9f29c0da2ef18ec37e217e21f772dac6452bd8636133f8ec8
MD5 8e080f6e1fd4bb25c64f1cfe033b2425
BLAKE2b-256 284e4b35598c5fdaec8e600335313fc0a323b277e1499565f8aaf60f0831053e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.19-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8e6044ce4df5ff6e0f7567519f6fd1a78a26084307cb72401e45f5a95d8f3ea0
MD5 aefefdb4e7ccad0f6d533283a0b72404
BLAKE2b-256 92547f8ae0f6e0f5042e038380da0fb999d143810b51bc2c4bff0ff24a9515d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.19-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 229faece9ae957a92a2f338e966141ae5c67acfb7eeee99a0c09a5d0bbe4d97e
MD5 10d3921efb0584c6a44f2e90ae6f000d
BLAKE2b-256 719922dc729dfec86c6c89f48c11e8902e3cce1d14dc578d51ecaa74bfa32a43

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.19-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bc87cd95027be83af20db400cffa15907dcdb40f240a573c7249cd97ea32c9b6
MD5 c86c828d93d2ea9a1859ce6e0b531b54
BLAKE2b-256 6bdd6ec37ab6bd6f025f26f6a6de22d3f439999575fe1e3c9d575ff31f1bdb47

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.19-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3c069e6fc0d00358ec288274c41a9efc23c3b233d01ffde273602d96041fff9e
MD5 9739981d2b59dfe34773ba5ba82853c8
BLAKE2b-256 192e8dccc31baaee7dee3e92c07dda8a96eab09e9f10d702d581970d47c1a34d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.19-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 673c436cc5e1ec3a5a50440d3377d8160c39bedd339d293ffa156c8418dd8a28
MD5 104d376b0f7b3c8b8d578c90d4ff332d
BLAKE2b-256 c473c82daaa0f46cbc2ed775657505fc09145e137675cbbc08ff4fbe8b563d2d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.19-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 390430eda284a3bbaf47d27824806a75326026b4ac281e47e832ba53eaff8aea
MD5 2349db7766c4095023b3746f0c125cbf
BLAKE2b-256 14a35c57aa084f8bb5f03ed8068d16afe58b29e4285c9acaffe13c6a25a64fdb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.19-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ae71f6019e0ccb746cb8a99350901377f1a0cbf487d5a4c019eef1c26af6f4d1
MD5 a4081566a43eb6fbdef53edfd2b1947c
BLAKE2b-256 fc22a4b6d7ae6ba0f0bdd873c4785dd88e88c4e0bfa5851b40b05a5c9fadfdd5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.19-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 0e7fa1c98d6e13b020deeddff1ae26e36514401018849587c4cc222bc3245094
MD5 c0a3a136a28b0db8335e785699067320
BLAKE2b-256 c36f28a17c012ebb46ff4051a8dc42d791d4ac70f5021feb4486cf522f5dfdce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.19-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 728780734c74c44d4ec0186f820b01898dcb3955bbab4844f0219fea94a33cdb
MD5 92b83145028683f24c3e3a7a0d4b072c
BLAKE2b-256 377cdc781c4c2bb0bac2efa168dcda2c9389d6ec8cff660b68120c2537257f5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.19-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d54308cf18a9b5e23e9eae47a3c5398e3fa804f701366ef91986c5e83500be12
MD5 5544312535b14b3b59950a0af5c1ac4e
BLAKE2b-256 ac89121cb96a2650424c2c04457f1f5a7101f77671d6c9ff16d15a40c9dc4509

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.19-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.19-cp39-cp39-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 01b5780c99d9660ca0e929034cbd057fb3a88e90f5acebc0ecb22eca7df24dd0
MD5 ce147c6ca92784c022e295237e970cb9
BLAKE2b-256 1bd8b8c3ece4544a03c66cd34014d91b217ce9d80c2473a0fbee629b12e308f3

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