{!.version.md!}
Python 型アノテーションを使用したデータバリデーションと設定管理。
pydantic は実行時に型ヒントを適用し、データが無効な場合にユーザーフレンドリーなエラーを提供します。
純粋で標準的な Python を用いてデータがどのようにあるべきかを定義し、pydantic でバリデーションします。
{!.tmp_examples/index_main.py!}
(このスクリプトは完成しているので、"そのまま"実行してください)
ここで何が起きているか:
id
は int 型です。アノテーションのみの宣言は、このフィールドが必須であることを pydantic に伝えます。 文字列、バイト、または浮動小数点は可能であれば int に強制変換されます。
name
は提供されたデフォルトから文字列として推論されます。デフォルトがあるため、必須ではありません。
signup_ts
は datetime フィールドです (指定されていない場合はNone
値を取ります)。 pydantic は Unix タイムスタンプ (例:1496498400
) または日付と時刻を表す文字列のいずれかを処理します。
friends
は Python の typing を使用しており、入力のリストが必要です。id
のように、 整数のようなオブジェクトは整数に変換されます。
バリデーションが失敗した場合、pydantic は何が悪かったかの内訳とともにエラーを発生させます。
{!.tmp_examples/index_error.py!}
出力:
{!.tmp_examples/index_error.json!}
それで、pydantic はいくつかのクールな新しい言語機能を使用していますが、なぜ私が使う必要があるのですか?
あなたのIDE/リンター/脳とうまく連携します
: 新しいスキーマ定義のマイクロ言語を学ぶ必要はありません。Python の型ヒントの使い方を知っていれば、あなたは pydantic の使い方を知っています。 データ構造は型アノテーションで定義したクラスの単なるインスタンスに過ぎないので、自動補完、リンティング、mypy、 IDE(特にPyCharm)、そしてあなたの直感は検証済みのデータで全て適切に機能するはずです。
兼用
: pydantic の BaseSettings クラスは、pydantic に"このリクエストデータをバリデートする"というコンテキストと、 "システム設定をロードする"というコンテキスト両方を与えます。主な違いは環境変数から読み込めることと、 DSN や Python オブジェクトのようなより複雑なオブジェクトに多く必要とされることです。
高速
: ベンチマークでは、pydantic は他の全てのテスト済みライブラリよりも高速です。
複雑な構造をバリデートする
: 再帰的な pydantic モデル、typing の標準タイプ(例: List
、Tuple
、Dict
など)、
およびバリデータを使用すると、複雑なデータスキーマを明確かつ簡単に定義、検証、および解析することができます。
拡張可能
pydantic では、カスタムデータ型を定義したり、
validator
デコレータで装飾されたモデルを使用してバリデーションを拡張することができます。
データクラスの統合
BaseModel
と同様に、pydantic は dataclass
デコレータを提供し、
入力データの解析とバリデーションを行う(ほぼ)バニラの Python データクラスを作成します。
何百もの組織やパッケージが pydantic を使用しています。
: pydantic と Starlette に基づいた、習得が容易で、コードを素早く書ける、 本番環境に対応した高性能 API フレームワーク
: Jupyter Notebook の開発者はサブプロジェクトで pydantic を使用しています。
Microsoft
: pydantic を(FastAPI経由で)使用しており、そのうちのいくつかは、"Windows のコア製品と Office 製品に統合されるようになってきています"。
Amazon Web Services
: オープンソースの確率的時系列モデリングライブラリ gluon-ts で pydantic を使用しています。
The NSA
: オープンソースの自動化フレームワーク WALKOFF で pydantic を使用しています。
Uber
: オープンソースの TensorFlow ラッパー Ludwig で pydantic を使用しています。
Cuenca
: メキシコのネット銀行 Cuenca は、いくつかの(API検証を含む)内部ツール、 およびメキシコで24時間年中無休のリアルタイムの銀行感想金を処理するために使用される stpmex などのオープンソースプロジェクトに pydantic を使用しています。
The Molecular Sciences Software Institute
: 量子化学用の大規模分散コンピューティングのフレームワーク QCFractal で pydantic を使用しています。
: 複数のミッションクリティカルなマイクロサービスを確実に動かすために、 pydantic (FastAPI経由) と arq (Samuel の優れた非同期タスクキュー)を信頼しています。
pydantic を使用したオープンソースプロジェクトのより包括的なリストは、 Githubの依存関係リストを参照してください。
ポッドキャストやビデオで Pydantic が議論されています。
Podcast.__init__{target=_blank}
: pydantic がどこから来たのか、そして次の方向性のアイデアについて pydantic の作者である Samuel Colvin とディスカッション
Python Bytes Podcast{target=_blank}
: "これはいくつかの問題を解決する本当に素晴らしいシンプルなフレームワークです…… Python 型アノテーションを使用したデータのバリデーションと設定管理、そして私を本当に幸せにするのは Python アノテーションです…… あなたが既に持っている全ての IDE で自動的に動作します。" --Michael Kennedy
Python pydantic Introduction – Give your data classes super powers{target=_blank}
: Alexander Hultnér による Python Pizza Conference の講演で、新しいユーザーに pydantic を紹介し、コア機能についてウォークスルーを行いました。