pydantic

pydanticの使い方

タグ pydantic type safe


概要

  • pythonのdataclassより簡単でwell managedなdataclass関連を提供するライブラリ
  • .dict(), .json()メソッドを使うことで、dict形式やjson形式への変換が可能

インストール

$ python3 -m pip install pydantic

具体例と特徴

  • 指定した型への変換がエラー無しで行えるときは行う
  • 指定した型と異なる場合(e.g. 文字 -> 数値)、わかりやすい例外を送出する
  • json形式へのserializeをサポートする
from pydantic import BaseModel
import pydantic

class User(BaseModel):
    id: int
    weight: float = 55.4
    name = 'Jane Doe'

user = User(id="123") # 数値に自動的なキャスト可能な値ならOK
print(user)
assert user.id == 123, "数値に自動的にキャストされる"

# dict形式でのデータの取得
print(user.dict())
# データのシリアライズ
print(user.json())

try:
    user2 = User(id="2ab", name=123) # "2ab"は数値に変換できないのでエラーが出る
except pydantic.error_wrappers.ValidationError as ex:
    print(ex.json())

user3 = User(id="234", weight=999, name=123) # int <-> floatはok, 123 <-> "123"に変換可能なのでok

print(user3.json())

参考