Към всички skills
py-pydantic-patterns
Pydantic v2 patterns for validation and serialization. Use when creating schemas, validating data, or working with request/response models.
Оригинален текст · няма потвърден превод на българскиПърво прочетете инструкцията.
Файлът се зарежда от посочения източник само по ваше действие. Можете да го прочетете тук, да го копирате или да го запазите като .md.
GitHub хранилище- Звезди на репото
- 428
- Лиценз
- Не е посочен. Проверете в репозитория.
- Последна проверка на записа
- Няма посочена дата
Добавете в своя инструмент.
Командата отваря избора на skills от репозитория. Прочетете файла и условията на автора преди изпълнение.
npx skills add aiskillstore/marketplaceСтраницата копира текст. Не инсталира и не изпълнява нищо на устройството ви.
Откъс от SKILL.md
Началото на файла на автора, без превод.
Pydantic v2 Patterns
Problem Statement
Pydantic v2 has significant API changes from v1. This codebase uses v2. Wrong patterns cause validation failures, serialization bugs, and frontend integration issues.
Pattern: v1 to v2 Migration
Critical changes to know:
# ❌ v1 (OLD - don't use)
from pydantic import validator
class Model(BaseModel):
class Config:
orm_mode = True
@validator("email")
def validate_email(cls, v):
return v.lower()
def dict(self):
...
# ✅ v2 (CURRENT)
from pydantic import field_validator, ConfigDict
class Model(BaseModel):
model_config = ConfigDict(from_attributes=True)
@field_validator("email")
@classmethod
def validate_email(cls, v: str) -> str:
return v.lower()
def model_dump(self):
...
Quick reference:
| v1 | v2 |
|---|---|
class Config | model_config = ConfigDict(...) |
orm_mode = True | from_attributes=True |
.dict() | .model_dump() |
.json() | .model_dump_json() |
@validator | @field_validator |
@root_validator | @model_validator |
parse_obj() | model_validate() |
update_forward_refs() | model_rebuild() |
Pattern: Field Validators
from pydantic import BaseModel, field_validator, ValidationInfo
class AssessmentCreate(BaseModel):
title: str
skill_areas: list[str]
max_score: int
# Single field validator
@field_validator("title")
@classmethod
def title_not_empty(cls, v: str) -> str:
if not v.strip():
raise ValueError("Title cannot be empty")
return v.strip()
# Validator with access to other fields
@field_validator("max_score")
@classmethod
def validate_max_score(cls, v: int, info: ValidationInfo) -> int:
if v < 1:
raise ValueError("Max score must be positive")
return v
# Multiple fields
@field_validator("skill_areas")
@classmethod
def validate_skill_areas(cls, v: list[str]) -> list[str]:
valid = {"fundamentals", "advanced", "strategy"}
for area in v:
if area not in valid:
raise ValueError(f"Invalid skill area: {area}")
return v