mcpField
P
pydantic-validation

pydantic-validation

github.com/majesticlabs-devデータ・データベース5060 回インストール7 週間前に更新
リポジトリ

pydantic-validation について

ETLパイプラインでレコードを検証するデータエンジニア向けの、再利用可能なPydanticパターン集です。単一レコード、バッチ、ネストされたデータの検証モデルとヘルパーを含みます。

主な機能

  1. 01Pydanticモデルによるレコード検証
  2. 02バッチ検証と無効レコードの分類
  3. 03ネストしたデータ構造のモデル化
  4. 04辞書とJSONの変換
  5. 05フィールド制約の適用

活用シーン

  1. 01ETL処理中のレコード検証
  2. 02APIリクエストやレスポンスの確認
  3. 03ネストした顧客住所データの検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/majesticlabs-dev/majestic-marketplace --skill pydantic-validation

インストール後、Claude Code で/pydantic-validationを入力して読み込まれたか確認します。

同梱ファイルscripts/validators.py

詳細

Pydantic による検証

対象読者: ETL パイプラインでレコードを検証するデータエンジニア。

目標: レコード単位の検証に再利用できる Pydantic のパターンを提供します。

スクリプト

scripts/validators.py の検証関数を実行します。

from scripts.validators import (
    UserRecord,
    Customer,
    Order,
    Address,
    validate_records,
    print_validation_errors,
    PositiveInt,
    Email
)

使用例

基本的なモデル検証
from scripts.validators import UserRecord

# Validate single record
user = UserRecord(
    id=1,
    email="[email protected]",
    status="active",
    created_at="2024-01-15",
    age=25
)
print(user.email)  # [email protected] (lowercased)
バッチ検証
from scripts.validators import validate_records, print_validation_errors

raw_data = [
    {"id": 1, "email": "[email protected]", "status": "active", "created_at": "2024-01-01", "age": 25},
    {"id": -1, "email": "invalid", "status": "bad", "created_at": "2024-01-01", "age": 200},
]

valid, invalid = validate_records(raw_data)
if invalid:
    print_validation_errors(invalid)
ネストされたモデル
from scripts.validators import Customer, Address

customer = Customer(
    id=1,
    name="John Doe",
    billing_address=Address(
        street="123 Main St",
        city="NYC",
        postal_code="10001"
    )
)
# shipping_address defaults to billing_address

フィールド制約のリファレンス

制約例説明
gt, geField(gt=0)より大きい/以上
lt, leField(le=100)より小さい/以下
patternField(pattern=r'^\d+$')正規表現に一致
min_length, max_lengthField(min_length=1)文字列の長さ

JSON/Dict 変換

# Parse from dict
customer = Customer(**data_dict)

# Parse from JSON
customer = Customer.model_validate_json(json_string)

# Export to dict/JSON
data = customer.model_dump()
json_str = customer.model_dump_json()

Pydantic を使用する場合

ユースケースPydantic代替手段
API のリクエスト/レスポンス✓FastAPI との統合
レコード単位の ETL✓-
DataFrame 全体の検証-pandera
パイプラインの期待値-Great Expectations

依存関係

pydantic>=2.0
pydantic-settings  # For config validation

コメント