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.2.tar.gz (40.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.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (162.0 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ x86-64

dhi-1.1.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (163.4 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

dhi-1.1.2-cp313-cp313t-macosx_13_0_arm64.whl (60.3 kB view details)

Uploaded CPython 3.13tmacOS 13.0+ ARM64

dhi-1.1.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (149.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

dhi-1.1.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (150.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

dhi-1.1.2-cp313-cp313-macosx_13_0_arm64.whl (59.3 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

dhi-1.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (149.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

dhi-1.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (150.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

dhi-1.1.2-cp312-cp312-macosx_13_0_arm64.whl (59.3 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

dhi-1.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (147.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

dhi-1.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (148.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

dhi-1.1.2-cp311-cp311-macosx_13_0_arm64.whl (59.3 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

dhi-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (144.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

dhi-1.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (146.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

dhi-1.1.2-cp310-cp310-macosx_13_0_arm64.whl (59.3 kB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

dhi-1.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (144.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

dhi-1.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (144.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

dhi-1.1.2-cp39-cp39-macosx_13_0_arm64.whl (59.2 kB view details)

Uploaded CPython 3.9macOS 13.0+ ARM64

File details

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

File metadata

  • Download URL: dhi-1.1.2.tar.gz
  • Upload date:
  • Size: 40.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.2.tar.gz
Algorithm Hash digest
SHA256 b0fde2939aa4a378e539894465cf3716a0f942236c829d03384d5ae717513991
MD5 440c3e4871aa570ac0be1972912d25d6
BLAKE2b-256 531d9f895ab1574f9f8acd12bfd1d947801f29e5448c288acd896307ff39aec6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d3e82c99387766917a9d2675858743269f35773e8bf8cd31dfd99b620a7c995a
MD5 70b47a8d06c7148d33420961c43493ad
BLAKE2b-256 7ba91f6276b1afc0c76c9277abca250c9f6eafe90b7e9d87c97d445c8a77d228

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 138b5ac1826a72fe11d7ed86189478da163b2f9d25413942b6a3ea2ed8f92c03
MD5 45ea2659ca7e8844866783a80422628c
BLAKE2b-256 864b0876afcd3a4984aa17da109d5dd080d9f5676cabb899241b4de9846ea8b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.2-cp313-cp313t-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 8bddda8c7e6338f2e3b2a40e3e11ab2365ccb98bde4a7ef21df9f18450e14f36
MD5 efbc1a74e07b34ad5e2ef9718c1af530
BLAKE2b-256 4dd78f16088e339f555e3d07d21a5ce83317d4a3e660a897c864f19d4c71e91f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ce7350bf9a46d70df34f1763a40ab658ca76b87cdf60e086081c8e40e59dfb2f
MD5 18818a83b929e0b0b336563d8847c290
BLAKE2b-256 e362231373264eb8002a9de919061ee76a92417389e7f2f703382125c5de48ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6964899963f615ef38d745ff4e5123764902b9ac67cce8d35a016921007effc1
MD5 f30a8afbc65efe693ce5aab0032fd3d2
BLAKE2b-256 3c002f60457865ec2616a9d7916a01727277971b831aa878fd08e73fb5cf363c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.2-cp313-cp313-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 59.3 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.2-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 ddb508caf8819ee960cc79a10dcc7dd35449430c060ff95ce9bb00d4c3b527b4
MD5 63de1a677058c3c9f706f8bb241ecf5d
BLAKE2b-256 57c1fc140f7a8b41829ec16dd0e122d391743a5d5f1b358811fea927e6ba10d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1ffa98a24a63ad8061af428d02b9f286898c3eeb2c19f1aa7458fb3c1588c523
MD5 ca07d86e072850a0dea6d207e64ff5d5
BLAKE2b-256 c2d2c6110fbd3c58acb2c160e2f60288d83d2b845d029b1355a28c052f967483

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 45c7b97cb676d2e8603c04dabb02e7a9d73f4e4623dea579614336eff814181b
MD5 551961553595a657847402689ec1799a
BLAKE2b-256 340188caedeaaeb192db7b6559342965aa09c76e4fcc5e11349f269269c53862

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.2-cp312-cp312-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 59.3 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.2-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 01f7a681614f2c0ab99392bafc4d2dc76566e58462f3082c5941bf12dbf7af1f
MD5 3ab731afcef5f8841e8c2b52512dc1cf
BLAKE2b-256 d4836bb34d4b4f225696e779499557e9985759f2136b6fdfb8af52afbc9d1d91

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 56080ef2a7cb2aa0adcc18975aa2e47f0b141ad2350ea62fbb1bce67ea42f553
MD5 91a5ea435363c6b58f178420a012c0f3
BLAKE2b-256 1b2be547f0f2ef8987d49ff25d06b3cb907185a9a0897ce7166051f249b3db0a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 577cdf0b7ec41470999eb42cb866739fda92db40f578c1b47dae2a49ae805d35
MD5 3a35b9d5c2b7537e56a2f99e84e95f3c
BLAKE2b-256 392ccddc9287f8e320142b4a5c794919de918523cb41583d30fb81fa1489c448

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.2-cp311-cp311-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 59.3 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.2-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 16536609ec867c4f30a8522e254b0057224382e450408eea3355bd5dab1a454a
MD5 c1812d2fe5f127314a1d105b6e1687f7
BLAKE2b-256 4d9ef6e04c949c2334d0eccc8c9a465d2c35910bffeb9b5000a3ebcd26ef905e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ac55f37cdb5f007f78a9ea0a50347b2573fd5867db418732e675a95e12570d33
MD5 379d2f20e4b56d06dc11c451879f74d3
BLAKE2b-256 27f8e1641de23eb99c6ffe05bd7d3858057ac59d550905a19c6aeebde4e7d189

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ca5da0e8b6dfce3944e9a4891cff8b3c05202f47de37544155be21de80a08cf1
MD5 dbdc9c2e1b5f68328809dac77a18d093
BLAKE2b-256 1641cec5511b8b454e0e14995266dc1f60f1363d7a1ffead9bff4f0a3a58d683

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.2-cp310-cp310-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 59.3 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.2-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 c7e676632f627476dc04d8575bcb1383f73e2680c0c38bcaab277f645f70f788
MD5 15d0c6d10c0aab9d9c2e9d9d24968bf0
BLAKE2b-256 e5be7150cf2d410d3f4c14fa4b5e7d249bb541c2a7aeb6ce68126014d4b02d38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6cb17a04ce276eae84ef19f904f6a59a3caa16f0f5771fc6bc45c0ec67a9a595
MD5 0b106472352dde38905e4a9f476f8d66
BLAKE2b-256 042f7541cd75f4cbc7df4894f058d8232cecbb39420c6bfb299965c8f7df5619

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for dhi-1.1.2-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dd17ed8400c2bf452d5b7af7fb8ff00f7fbcf34fe803b40314ee446f6efaca74
MD5 2f6b8a15524c5270a92234583225f3fb
BLAKE2b-256 81a9dbacd57308f8f99ddd9c9beaf8794d4a1f19977ab77962134b005f798b7b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: dhi-1.1.2-cp39-cp39-macosx_13_0_arm64.whl
  • Upload date:
  • Size: 59.2 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.2-cp39-cp39-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 cfbee2cb16149eed19052196f11c8fdfddd8383d83db69763ad5e2289bb8c44c
MD5 795bde70734aebc35e85af08b1fb2981
BLAKE2b-256 3a332ffc8b285b8895553faf2acf7d237ec4fbcb7db81fbd3d96181f53e623be

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