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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e417d0d91a3da37837834640ff4bf5a364ffef3dd6238cda6a226374e2b6ff1a
|
|
| MD5 |
5924e19d3da48577699f397cf63c0f94
|
|
| BLAKE2b-256 |
4b43b898c45d488f6a513c3d967dec8bb5eaf156cfa5505f6425a80740280745
|
Provenance
The following attestation bundles were made for validkit_py-1.0.0.tar.gz:
Publisher:
ci.yml on disnana/ValidKit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
validkit_py-1.0.0.tar.gz -
Subject digest:
e417d0d91a3da37837834640ff4bf5a364ffef3dd6238cda6a226374e2b6ff1a - Sigstore transparency entry: 849672041
- Sigstore integration time:
-
Permalink:
disnana/ValidKit@305ac04bcb8df819c36448b39fd161633a739685 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/disnana
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@305ac04bcb8df819c36448b39fd161633a739685 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ee3209c0b8b3263cc888332d64c9428002811b1b22e882444fbc2d5d921ef0c0
|
|
| MD5 |
345ae30a9bd01bbb01a30b0ab334bc5b
|
|
| BLAKE2b-256 |
20532b7da3e9423bfb1bd351abd723cc815b51f038ab43eba0041f0017867796
|
Provenance
The following attestation bundles were made for validkit_py-1.0.0-py3-none-any.whl:
Publisher:
ci.yml on disnana/ValidKit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
validkit_py-1.0.0-py3-none-any.whl -
Subject digest:
ee3209c0b8b3263cc888332d64c9428002811b1b22e882444fbc2d5d921ef0c0 - Sigstore transparency entry: 849672042
- Sigstore integration time:
-
Permalink:
disnana/ValidKit@305ac04bcb8df819c36448b39fd161633a739685 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/disnana
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@305ac04bcb8df819c36448b39fd161633a739685 -
Trigger Event:
push
-
Statement type: