Megjelent a Pydantic 2.14, Python 3.15-támogatással

Megjelent a Pydantic 2.14, amely támogatja a Python 3.15-öt, stabilizálja a MISSING jelzőt, és több új típussal bővíti a validációs lehetőségeket. A kiadás egyben megszünteti a Python 3.9 támogatását.
- A Pydantic 2.14 támogatja a Python 3.15-öt, a Python 3.9 támogatása megszűnik.
- Stabil API-rész lett a MISSING jelző, amelynek értékei kimaradnak a szerializált kimenetből.
- A kiadás támogatja a lusta importokat, a TypeFormot és a frozendict típust.
- Több típus validálását és szerializálását natívan a pydantic-core Rust-komponens végzi.
- A verzió több JSON-séma- és konfigurációs változást is tartalmaz, ezért frissítés előtt át kell nézni a változáslistát.
Python 3.15 és új importlehetőségek
A Pydantic közlése szerint a 2.14-es verzió október 8-án vált elérhetővé a PyPI-on. A csomag mostantól a Python 3.15-öt is támogatja, miközben a Python 3.9 támogatása megszűnik. A kiadás 13 külső közreműködő munkáját is tartalmazza.
A verzió támogatja a Python 3.15-ben bevezetett lusta importokat, amelyek lehetővé teszik, hogy külön modulokban lévő modellek egymásra hivatkozzanak ciklikus importhiba nélkül. A Pydantic emellett kezeli a frozendict típust is, amelyet a rendszer a hagyományos szótárakhoz hasonlóan validál és szerializál.
A Pydantic 2.14 támogatást kapott a TypeForm típushoz is. A TypeAdapter használatakor a statikus típusellenőrzők így a Pydanticnak átadott típusformák, például az uniók és az Annotated formák helyes típusát következtethetik ki.
Stabilizálták a MISSING jelzőt
A 2.12-ben kísérleti funkcióként megjelent MISSING mostantól a Pydantic fő API-jának stabil része. Ez egy egyedi jelzőérték, amely azt mutatja, hogy egy mezőhöz nem érkezett érték az ellenőrzés során.
Ha egy mező értéke MISSING, a szerializálás során kimarad a kimenetből. A jelzőérték a JSON-sémában sem jelenik meg, így különválasztható a ténylegesen megadott értékektől és az alapértelmezett értékektől. A Pydantic példája szerint ez lehetővé teszi, hogy egy konfigurációs modellben a hiányzó mező értékét később, külön tárolt alapértelmezésből állítsák elő.
Új modellkészítési lehetőségek és natív validáció
A create_model() függvény mostantól __namespace__ argumentumot is elfogad. Ezzel attribútumok, validátorok, metódusok és számított mezők adhatók a létrehozott modell osztálynévteréhez. A Pydantic a korábban használt __validators__ argumentum helyett ezt az általánosabb megoldást javasolja, a __validators__ ugyanis a tervek szerint a 3-as főverzióban elavulttá válik.
Több típus saját, úgynevezett core sémát kapott, ezért ezeket már natívan a pydantic-core Rust-komponense validálja és szerializálja. Az érintett típusok közé tartozik a fractions.Fraction, a névvel rendelkező tuple, a collections.deque, a collections.OrderedDict és a collections.Counter. A Pydantic szerint a korábbi, Pythonban megírt egyedi validátorok lassabbak voltak, és nem támogattak korlátozásokat.
A kiadás a numerikus korlátozások kezelését is módosítja a kísérleti pipeline API-ban. A gt(), ge(), lt(), le() és multiple_of() korlátozásokat a pydantic-core most minden esetben natívan alkalmazza numerikus típusokon. Ezek ennek eredményeként bekerülnek a JSON-sémába, és a validációs hibák a hagyományos mezők hibáihoz igazodnak.
JSON-séma és kompatibilitási változások
A Pydantic figyelmeztet, hogy a 2.14 több kisebb, a meglévő kódot érintő változást tartalmaz, ezért frissítés előtt érdemes áttekinteni a teljes változáslistát. A JSON-sémák több ponton módosulnak.
A Decimal típusokhoz generált sémákból alapértelmezés szerint kikerül a reguláris kifejezéses minta. Ez a Pydantic szerint azért történt, mert a korábbi megoldás gondot okozott azoknak, akik a generált sémára épített validációs szerződéseket használnak. A minta egyedi GenerateJsonSchema alosztály segítségével ismét engedélyezhető.
A TypeAdapter beállításait mostantól a JSON-séma előállításakor is figyelembe veszi a rendszer. Emellett a model_config attribútumot a Pydantic már nem módosítja, így az mindig a felhasználó által megadott, valamint a szülőosztályok konfigurációjából örökölt beállításokat tükrözi.
A Pydantic 2.14 a modellek és a Pydantic-adatosztályok generált aláírását is pontosítja. Ha a validate_by_alias értéke hamis, az aláírás a mező nevét használja az alias helyett, összhangban azzal, amit a validáció ténylegesen elfogad. A multiple_of nem pozitív értéke most már a modell definiálásakor hibát vált ki.
A frissítés jelenleg a PyPI-ról telepíthető a pip install --upgrade pydantic paranccsal. A projekt a teljes változáslistát a GitHubon teszi közzé.
Pydantic: Announcement: Pydantic v2.14 Release


