コンテンツにスキップ

Version Policy

まず第一に、Pydantic V1からV2への移行は、一部のユーザにとって苦痛であり、これからも苦痛であることを認識しています。 私たちはこの苦痛についてお詫びします 🙏、これは不幸なことでしたが、V1の設計ミスを修正するために必要なステップでした。

この規模の重大な変更はもうありません!

Pydantic V1

V1の積極的な開発はすでに中止されていますが、重大なバグ修正とセキュリティ脆弱性は、V2のリリース(2024年6月30日)から1年間V1で修正されます。

Pydantic V2

V2のマイナーリリースで意図的に重大な変更を加えることはありません。

deprecatedとマークされたメソッドは、次のメジャーリリースであるV3まで削除されません。

もちろん、一見安全な変更やバグ修正の中には、XKCDへの必須リンクなど、一部のユーザーのコードを破壊するものもあります。

以下の変更は、重大な変更とはみなされず、マイナーリリースで発生する可能性があります。

  • JSONスキーマで使用されるrefのフォーマットを変更します。
  • ValidationErrorエラーのmsgctxlocフィールドを変更します。typeは変更されません。プログラムでエラーメッセージを解析している場合は、typeを使用する必要があります。
  • ValidationErrorエラーに新しいキーを追加します。たとえば、新しいJSONパーサに移行した後、JSONを検証するときにエラーにline_numbercolumn_numberを追加する予定です。
  • 新しいValidationErrorエラーを追加します。
  • パブリッククラスの"repr"も変更します。

いずれの場合も、私たちはひっかきまわすことをを最小限に抑えることを目指し、ユーザーにとって"pydantic"の質の向上によって正当化される場合にのみ修正します。

Pydantic V3 and beyond

今後、新しいメジャーリリースはほぼ1年に1回行われる予定ですが、前述したように、関連する重大な変更は、V 1からV 2への移行と比較して簡単に修正できるはずです。

Experimental Features

Pydanticでは、私たちは迅速に行動し、革新することを望んでいます!そのために、マイナーリリースで実験的な機能を導入することがあります。

Usage Documentation

現在の試験的な機能の詳細については、experimental features documentationを参照してください。

実験的な機能は進行中の活発な作業であることを覚えておいてください。これらの機能が成功すれば、最終的にはPydanticの一部になるでしょう。失敗した場合、これらの機能はほとんど予告なしに削除されます。実験段階では、機能のAPIと動作が安定していない可能性があり、機能に加えられた変更が下位互換性を持たない可能性が非常に高くなります。

Naming Conventions

次の命名規則のいずれかを使用して、機能が試験的であることを示します。

  1. 機能はexperimentalモジュールにあります。この場合、次のように機能にアクセスできます。

    from pydantic.experimental import feature_name
    
  1. 機能はメインモジュールにありますが、先頭にexperimental_が付いています。このケースは、メインのpydanticモジュール内にすでにある既存のデータ構造に新しいフィールド、引数、またはメソッドを追加したときに発生します。

これらの命名規則を持つ新機能は変更または削除される可能性があり、Pydanticの恒久的な一部にする前にフィードバックと提案を求めています。詳細については、feedback sectionを参照してください。

Importing Experimental Features

experimentalモジュールから試験的な機能をインポートすると、その機能が試験的であることを示す警告メッセージが表示されます。この警告を無効にするには、次のようにします。

import warnings

from pydantic import PydanticExperimentalWarning

warnings.filterwarnings('ignore', category=PydanticExperimentalWarning)

Lifecycle of Experimental Features

  1. 新しい機能がexperimentalモジュールかexperimental_プレフィックスで追加されます。
  2. 動作は、パッチ/マイナーリリース中に変更されることが多く、API/動作が変更される可能性があります。
  3. 機能が成功した場合は、次の手順でPydanticにプロモートします: a. それがexperimentalモジュールにあった場合、その機能はPydanticのメインモジュールにクローンされます。元の実験的な機能はまだexperimentalモジュールに残っていますが、使用時に警告が表示されます。機能がすでにメインのPydanticモジュールにあった場合、experimental_プレフィックスなしで機能のコピーを作成するので、その機能は正式な名前と実験的な名前の両方で存在します。非推奨の警告は実験バージョンに添付されます。 b. ある時点で、実験的な機能のコードは削除されますが、適切な指示とともにエラーメッセージを提供する機能のスタブがまだ存在します。 c. 最後のステップとして、機能の実験バージョンがコードベースから完全に削除されます。

機能が成功しなかったり、人気がない場合は、ほとんど通知なしに削除されます。スタブは、エラーメッセージとともに非推奨の機能の場所に残ります。

新しい実験的な機能パターンのライフサイクルと命名規則のヒントを与えてくれたstreamlitに感謝します。

Support for Python versions

Pydanticは、次の条件が満たされた場合、Pythonバージョンのサポートを終了します。

  • Pythonのバージョンが[EOL]に達したとき(https://devguide.python.org/versions/)。
  • 最新のマイナーリリースのダウンロードの5%未満しかそのバージョンを使用していないとき。