Skip to main content

A simple and powerful validation library for Python.

Project description

ValidKit

ValidKit は、辞書ベースで簡潔に定義でき、日本語キーや複雑なネストに対応した Python バリデーションライブラリです。 Pydantic よりも軽量かつ、Discord ボットの設定管理などの複雑なデータ構造を直感的に扱うことができます。

特徴

  • 📝 辞書ベースのスキーマ: クラス定義不要。データ構造をそのままスキーマとして定義可能
  • 🌏 日本語キー対応: 日本語をキーにした設定データもそのまま検証
  • 🔗 チェイン可能なバリデータ: v.int().range(1, 10) のように直感的に記述
  • 🔄 マイグレーション機能: 古い形式のデータを検証と同時に新形式へ自動変換
  • 🛠️ 部分更新・デフォルト値: 足りないキーの補完や部分的な検証をサポート
  • 🔍 詳細なエラー収集: 全エラーを一括で取得し、エラー箇所のパスを明確に表示

インストール

pip install validkit

(注: 現時点ではプレリリース版です)

クイックスタート

from validkit import v, validate

# スキーマ定義
SCHEMA = {
    "ユーザー名": v.str().regex(r"^\w{3,15}$"),
    "レベル": v.int().range(1, 100),
    "スキル": v.list(v.oneof(["火", "水", "風"])),
    "設定": {
        "通知": v.bool(),
        "言語": v.oneof(["日本語", "English"])
    }
}

# 検証データ
data = {
    "ユーザー名": "nana_kit",
    "レベル": 50,
    "スキル": ["火", "風"],
    "設定": {
        "通知": True,
        "言語": "日本語"
    }
}

try:
    validated = validate(data, SCHEMA)
    print("検証成功!")
except ValidationError as e:
    print(f"エラー: {e.path} - {e.message}")

便利な高度な機能

部分更新とデフォルト値のマージ

DEFAULT_CONFIG = {"言語": "English", "音量": 50}
partial_input = {"音量": 80}

updated = validate(
    partial_input, 
    SCHEMA, 
    partial=True,  # 不足キーを許可
    base=DEFAULT_CONFIG  # デフォルト値とマージ
)

マイグレーション

old_data = {"旧キー": "値", "timeout": 30}
migrated = validate(old_data, SCHEMA, migrate={
    "旧キー": "新キー",
    "timeout": lambda v: f"{v}s"  # 値の変換
})

ライセンス

MIT

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

validkit_py-1.0.0.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

validkit_py-1.0.0-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

File details

Details for the file validkit_py-1.0.0.tar.gz.

File metadata

  • Download URL: validkit_py-1.0.0.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for validkit_py-1.0.0.tar.gz
Algorithm Hash digest
SHA256 e417d0d91a3da37837834640ff4bf5a364ffef3dd6238cda6a226374e2b6ff1a
MD5 5924e19d3da48577699f397cf63c0f94
BLAKE2b-256 4b43b898c45d488f6a513c3d967dec8bb5eaf156cfa5505f6425a80740280745

See more details on using hashes here.

Provenance

The following attestation bundles were made for validkit_py-1.0.0.tar.gz:

Publisher: ci.yml on disnana/ValidKit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file validkit_py-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: validkit_py-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 6.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for validkit_py-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ee3209c0b8b3263cc888332d64c9428002811b1b22e882444fbc2d5d921ef0c0
MD5 345ae30a9bd01bbb01a30b0ab334bc5b
BLAKE2b-256 20532b7da3e9423bfb1bd351abd723cc815b51f038ab43eba0041f0017867796

See more details on using hashes here.

Provenance

The following attestation bundles were made for validkit_py-1.0.0-py3-none-any.whl:

Publisher: ci.yml on disnana/ValidKit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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