विषय पर बढ़ें

पाइडेंटिक

CI Coverage
pypi CondaForge downloads
license

पाइडेंटिक पायथन के लिए सबसे व्यापक रूप से उपयोग की जाने वाली डेटा सत्यापन लाइब्रेरी है।

तेज़ और एक्स्टेंसिबल, पाइडेंटिक आपके लिंटर/आईडीई/मस्तिष्क के साथ अच्छी तरह से खेलता है। परिभाषित करें कि डेटा शुद्ध, कैनोनिकल पायथन 3.8+ में कैसा होना चाहिए; इसे पाइडेंटिक से सत्यापित करें।

!!! सफलता "पाइडेंटिक V2 की ओर पलायन" पाइडेंटिक V1 का उपयोग? अपने एप्लिकेशन में पाइडेंटिक V2 में अपग्रेड करने पर नोट्स के लिए माइग्रेशन गाइड देखें!

from datetime import datetime
from typing import Tuple

from pydantic import BaseModel


class Delivery(BaseModel):
    timestamp: datetime
    dimensions: Tuple[int, int]


m = Delivery(timestamp='2020-01-02T03:04:05Z', dimensions=['10', '20'])
print(repr(m.timestamp))
#> datetime.datetime(2020, 1, 2, 3, 4, 5, tzinfo=TzInfo(UTC))
print(m.dimensions)
#> (10, 20)

!!! प्रश्न "पाइडेंटिक का नाम इस प्रकार क्यों रखा गया है?"

The name "Pydantic" is a portmanteau of "Py" and "pedantic." The "Py" part indicates that the library is associated with Python, and
"pedantic" refers to the library's meticulous approach to data validation and type enforcement.

Combining these elements, "Pydantic" describes our Python library that provides detail-oriented, rigorous data validation.

We’re aware of the irony that Pydantic V1 was not strict in its validation, so if we're being pedantic, "Pydantic" was a misnomer until V2 😉.

पाइडेंटिक का उपयोग क्यों करें?

  • प्रकार के संकेतों द्वारा संचालित - पाइडेंटिक के साथ, स्कीमा सत्यापन और क्रमबद्धता को प्रकार के एनोटेशन द्वारा नियंत्रित किया जाता है; सीखने के लिए कम, लिखने के लिए कम कोड, और आपके आईडीई और स्थिर विश्लेषण टूल के साथ एकीकरण। और अधिक जानें…
  • गति - पाइडेंटिक का मुख्य सत्यापन तर्क रस्ट में लिखा गया है। परिणामस्वरूप, पायडेंटिक पायथन के लिए सबसे तेज़ डेटा सत्यापन पुस्तकालयों में से एक है। और अधिक जानें…
  • JSON स्कीमा - पाइडेंटिक मॉडल JSON स्कीमा उत्सर्जित कर सकते हैं, जिससे अन्य टूल के साथ आसान एकीकरण हो सकता है। और अधिक जानें…
  • स्ट्रिक्ट और लैक्स मोड - पाइडेंटिक या तो स्ट्रिक्ट=ट्रू मोड (जहां डेटा परिवर्तित नहीं होता है) या स्ट्रिक्ट=गलत मोड में चल सकता है, जहां पाइडेंटिक डेटा को जहां उपयुक्त हो, सही प्रकार के लिए बाध्य करने का प्रयास करता है। और अधिक जानें…
  • डेटाक्लास, टाइप्डडिक्ट्स और बहुत कुछ - पाइडेंटिक डेटाक्लास और टाइपेडडिक्ट सहित कई मानक लाइब्रेरी प्रकारों के सत्यापन का समर्थन करता है। और अधिक जानें…
  • अनुकूलन - पाइडेंटिक कस्टम सत्यापनकर्ताओं और धारावाहिकों को यह बदलने की अनुमति देता है कि डेटा को कई शक्तिशाली तरीकों से कैसे संसाधित किया जाता है। और अधिक जानें…
  • पारिस्थितिकी तंत्र - PyPI पर लगभग 8,000 पैकेज Pydantic का उपयोग करते हैं, जिनमें बड़े पैमाने पर लोकप्रिय पुस्तकालय भी शामिल हैं फास्टएपीआई, हगिंगफेस, डीजेंगो निंजा, एसक्यूएलमॉडल, और लैंगचेन। और अधिक जानें…
  • लड़ाई का परीक्षण किया गया - पाइडेंटिक को प्रति माह 70M से अधिक बार डाउनलोड किया जाता है और इसका उपयोग सभी FAANG कंपनियों और NASDAQ की 25 सबसे बड़ी कंपनियों में से 20 द्वारा किया जाता है। यदि आप पाइडेंटिक के साथ कुछ करने का प्रयास कर रहे हैं, तो संभवतः कोई और पहले ही यह कर चुका है। और अधिक जानें…

पाइडेंटिक को इंस्टाल करना उतना ही सरल है: पिप इंस्टाल पाइडेंटिक

पायडेंटिक उदाहरण

पाइडेंटिक को काम पर देखने के लिए, आइए एक सरल उदाहरण से शुरू करें, एक कस्टम क्लास बनाएं जो बेसमॉडल से प्राप्त हो:

from datetime import datetime

from pydantic import BaseModel, PositiveInt


class User(BaseModel):
    id: int  # (1)!
    name: str = 'John Doe'  # (2)!
    signup_ts: datetime | None  # (3)!
    tastes: dict[str, PositiveInt]  # (4)!


external_data = {
    'id': 123,
    'signup_ts': '2019-06-01 12:22',  # (5)!
    'tastes': {
        'wine': 9,
        b'cheese': 7,  # (6)!
        'cabbage': '1',  # (7)!
    },
}

user = User(**external_data)  # (8)!

print(user.id)  # (9)!
#> 123
print(user.model_dump())  # (10)!
"""
{
    'id': 123,
    'name': 'John Doe',
    'signup_ts': datetime.datetime(2019, 6, 1, 12, 22),
    'tastes': {'wine': 9, 'cheese': 7, 'cabbage': 1},
}
"""
  1. आईडी int प्रकार की है; एनोटेशन-केवल घोषणा पाइडेंटिक को बताती है कि यह फ़ील्ड आवश्यक है। यदि संभव हो तो स्ट्रिंग्स, बाइट्स या फ़्लोट्स को इनट्स से ज़बरदस्ती किया जाएगा; अन्यथा एक अपवाद उठाया जाएगा.
  2. नाम एक स्ट्रिंग है; क्योंकि इसमें डिफ़ॉल्ट है, इसकी आवश्यकता नहीं है।
  3. साइनअप_टीएस एक डेटाटाइम फ़ील्ड है जो आवश्यक है, लेकिन कोई भी मूल्य प्रदान नहीं किया जा सकता है; पाइडेंटिक या तो एक यूनिक्स टाइमस्टैम्प इंट (जैसे 1496498400) या दिनांक और समय का प्रतिनिधित्व करने वाली एक स्ट्रिंग को संसाधित करेगा।
  4. स्वाद स्ट्रिंग कुंजियों और सकारात्मक पूर्णांक मानों वाला एक शब्दकोश है। PositiveInt प्रकार इसके लिए आशुलिपि है Annotated[int, annotated_types.Gt(0)] .
  5. यहां इनपुट ISO8601 स्वरूपित डेटाटाइम है, पाइडेंटिक इसे डेटाटाइम ऑब्जेक्ट में बदल देगा।
  6. यहां कुंजी बाइट्स है, लेकिन पाइडेंटिक इसे एक स्ट्रिंग में बांधने का ध्यान रखेगा।
  7. इसी प्रकार, पाइडेंटिक स्ट्रिंग '1' को एक पूर्णांक 1 तक बाध्य करेगा।
  8. यहां हम अपने बाहरी डेटा को कीवर्ड तर्कों के रूप में उपयोगकर्ता को पास करके उपयोगकर्ता का उदाहरण बनाते हैं
  9. हम फ़ील्ड को मॉडल की विशेषताओं के रूप में एक्सेस कर सकते हैं
  10. हम model_dump() के साथ मॉडल को एक शब्दकोश में बदल सकते हैं

यदि सत्यापन विफल हो जाता है, तो पाइडेंटिक जो गलत था उसके विवरण के साथ एक त्रुटि उत्पन्न करेगा:

# continuing the above example...

from pydantic import ValidationError


class User(BaseModel):
    id: int
    name: str = 'John Doe'
    signup_ts: datetime | None
    tastes: dict[str, PositiveInt]


external_data = {'id': 'not an int', 'tastes': {}}  # (1)!

try:
    User(**external_data)  # (2)!
except ValidationError as e:
    print(e.errors())
    """
    [
        {
            'type': 'int_parsing',
            'loc': ('id',),
            'msg': 'Input should be a valid integer, unable to parse string as an integer',
            'input': 'not an int',
            'url': 'https://errors.pydantic.dev/2/v/int_parsing',
        },
        {
            'type': 'missing',
            'loc': ('signup_ts',),
            'msg': 'Field required',
            'input': {'id': 'not an int', 'tastes': {}},
            'url': 'https://errors.pydantic.dev/2/v/missing',
        },
    ]
    """
  1. यहां इनपुट डेटा गलत है - आईडी एक वैध पूर्णांक नहीं है, और साइनअप_टीएस गायब है
  2. उपयोगकर्ता(...) त्रुटियों की सूची के साथ एक ValidationError उठाएगा

पाइडैंटिक का उपयोग कौन कर रहा है?

सैकड़ों संगठन और पैकेज पाइडेंटिक का उपयोग कर रहे हैं। दुनिया भर की कुछ प्रमुख कंपनियाँ और संगठन जो पाइडेंटिक का उपयोग कर रहे हैं उनमें शामिल हैं:

पाइडेंटिक का उपयोग करके ओपन-सोर्स परियोजनाओं की अधिक विस्तृत सूची के लिए देखें जीथब पर आश्रितों की सूची, या आप अमेजिंग-पाइडेंटिक में पाइडेंटिक का उपयोग करके कुछ अद्भुत परियोजनाएं पा सकते हैं।


本文总阅读量