Version Policy
まず第一に、Pydantic V1からV2への移行は、一部のユーザにとって苦痛であり、これからも苦痛であることを認識しています。
私たちはこの苦痛についてお詫びします 、これは不幸なことでしたが、V1の設計ミスを修正するために必要なステップでした。
この規模の重大な変更はもうありません!
Pydantic V1¶
V1の積極的な開発はすでに中止されていますが、重大なバグ修正とセキュリティ脆弱性は、V2のリリース(2024年6月30日)から1年間V1で修正されます。
Pydantic V2¶
V2のマイナーリリースで意図的に重大な変更を加えることはありません。
deprecated
とマークされたメソッドは、次のメジャーリリースであるV3まで削除されません。
もちろん、一見安全な変更やバグ修正の中には、XKCDへの必須リンクなど、一部のユーザーのコードを破壊するものもあります。
以下の変更は、重大な変更とはみなされず、マイナーリリースで発生する可能性があります。
- JSONスキーマで使用される
ref
のフォーマットを変更します。 ValidationError
エラーのmsg
、ctx
、loc
フィールドを変更します。type
は変更されません。プログラムでエラーメッセージを解析している場合は、type
を使用する必要があります。ValidationError
エラーに新しいキーを追加します。たとえば、新しいJSONパーサに移行した後、JSONを検証するときにエラーにline_number
とcolumn_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¶
次の命名規則のいずれかを使用して、機能が試験的であることを示します。
-
機能は
experimental
モジュールにあります。この場合、次のように機能にアクセスできます。from pydantic.experimental import feature_name
- 機能はメインモジュールにありますが、先頭に
experimental_
が付いています。このケースは、メインのpydantic
モジュール内にすでにある既存のデータ構造に新しいフィールド、引数、またはメソッドを追加したときに発生します。
これらの命名規則を持つ新機能は変更または削除される可能性があり、Pydanticの恒久的な一部にする前にフィードバックと提案を求めています。詳細については、feedback sectionを参照してください。
Importing Experimental Features¶
experimental
モジュールから試験的な機能をインポートすると、その機能が試験的であることを示す警告メッセージが表示されます。この警告を無効にするには、次のようにします。
import warnings
from pydantic import PydanticExperimentalWarning
warnings.filterwarnings('ignore', category=PydanticExperimentalWarning)
Lifecycle of Experimental Features¶
- 新しい機能が
experimental
モジュールかexperimental_
プレフィックスで追加されます。 - 動作は、パッチ/マイナーリリース中に変更されることが多く、API/動作が変更される可能性があります。
- 機能が成功した場合は、次の手順でPydanticにプロモートします:
a. それが
experimental
モジュールにあった場合、その機能はPydanticのメインモジュールにクローンされます。元の実験的な機能はまだexperimental
モジュールに残っていますが、使用時に警告が表示されます。機能がすでにメインのPydanticモジュールにあった場合、experimental_
プレフィックスなしで機能のコピーを作成するので、その機能は正式な名前と実験的な名前の両方で存在します。非推奨の警告は実験バージョンに添付されます。 b. ある時点で、実験的な機能のコードは削除されますが、適切な指示とともにエラーメッセージを提供する機能のスタブがまだ存在します。 c. 最後のステップとして、機能の実験バージョンがコードベースから完全に削除されます。
機能が成功しなかったり、人気がない場合は、ほとんど通知なしに削除されます。スタブは、エラーメッセージとともに非推奨の機能の場所に残ります。
新しい実験的な機能パターンのライフサイクルと命名規則のヒントを与えてくれたstreamlitに感謝します。
Support for Python versions¶
Pydanticは、次の条件が満たされた場合、Pythonバージョンのサポートを終了します。
- Pythonのバージョンが[EOL]に達したとき(https://devguide.python.org/versions/)。
- 最新のマイナーリリースのダウンロードの5%未満しかそのバージョンを使用していないとき。