📋

معرفی کتابخانه Pydantic 2.0

Jul 7, 2024

یادداشت‌های سخنرانی درباره Pydantic 2.0

مقدمه

  • Pydantic: کتابخانه‌ای برای نمایش و اعتبارسنجی داده‌ها با استفاده از رابط‌های مشابه با کلاس‌های داده.
  • نسخه: سخنرانی به‌روزرسانی‌ها از نسخه 1.10 به نسخه 2.0 را شامل می‌شود.
  • استفاده: نمایش مثال‌های پایه و مدیریت داده‌های API.
  • نصب: pip install pydantic

استفاده پایه

ایجاد یک مدل پایدنتیک

  • ایمپورت BaseModel از pydantic
  • مثال مدل: from pydantic import BaseModel from datetime import datetime as DT class Order(BaseModel): id: int item_name: str quantity: int created_at: DT delivered_at: Optional[DT] = None
  • ایجاد یک مدل: o = Order(id=1, item_name='test', quantity=3, created_at=DT.now()) print(o)

ویژگی‌های کلیدی

  • تبدیل نوع: به‌صورت خودکار نوع‌ها را تبدیل می‌کند مثل تبدیل رشته به عدد صحیح. o = Order(id=1, item_name='test', quantity='3', created_at=DT.now()) print(type(o.quantity)) # <class 'int'>
  • اعتبارسنج‌ها: استفاده از دکوراتور field_validator برای اعمال محدودیت‌های فیلد. from pydantic import FieldValidator class Order(BaseModel): id: int item_name: str quantity: int created_at: DT delivered_at: Optional[DT] = None @FieldValidator('quantity') def validate_quantity(cls, value): if value < 1: raise ValueError('Quantity must be greater than zero') return value
  • اعتبارسنجی تخصیص: اعمال اعتبارسنجی‌ها روی تخصیص فیلد. class Order(BaseModel): id: int item_name: str quantity: int created_at: DT delivered_at: Optional[DT] = None class Config: validate_assignment = True

کار با داده‌های API

دریافت داده‌های API

  • کتابخانه Requests: استفاده برای دریافت داده‌ها از APIها. import requests response = requests.get('API_URL') data = response.json()

مدل‌های تو در تو

  • تعریف مدل‌های تو در تو: from pydantic import BaseModel from datetime import datetime as DT from typing import List class Event(BaseModel): title: str date: DT notes: str bunting: bool class Division(BaseModel): name: str events: List[Event] class BankHolidays(BaseModel): england_and_wales: Division scotland: Division northern_ireland: Division
  • دریافت و ایجاد مدل‌ها: holidays = BankHolidays(**data) print(holidays)

مدیریت JSON و نام مستعار

  • مدیریت نام مستعار: class Config: alias_generator = lambda field_name: field_name.replace('_', '-')
  • نام مستعار فیلد سفارشی: from pydantic import Field class Division(BaseModel): name: str = Field(alias='division')

خواص و متدها در مدل‌ها

  • افزودن خواص: class Event(BaseModel): title: str date: DT notes: str bunting: bool @property def is_past(self) -> bool: return self.date < DT.now()

نتیجه‌گیری

  • ویژگی‌های Pydantic: قدرتمند برای اعتبارسنجی و دستکاری داده‌ها.
  • موارد استفاده: موثر برای مدیریت داده‌های پیچیده از APIها.
  • قابلیت‌های پیشرفته‌تر: موارد بیشتری برای کاوش فراتر از ویژگی‌های پایه وجود دارد.

برای نکات و ترفندهای بیشتر درباره پایتون، به سری "پایتون عالی است" سر بزنید.

توجه: اطمینان از سازگاری و عملکرد بر اساس آخرین نسخه‌ها و مستندات.