इस प्रोजेक्ट के बारे में

fastapi-faults FastAPI के लिए टाइप्ड एरर कॉन्ट्रैक्ट्स प्रदान करता है, जो Python अपवादों (exceptions) को RFC 9457 Problem Details और OpenAPI दस्तावेज़ीकरण से जोड़ता है। इसका मुख्य विचार यह है कि प्रत्येक एप्लिकेशन एरर की एक अपरिवर्तनीय परिभाषा होती है, जिसका उपयोग अपवाद हैंडलिंग, application/problem+json प्रतिक्रियाओं और उत्पन्न OpenAPI स्कीमा के लिए निरंतर रूप से किया जाता है। इस प्रोजेक्ट का उद्देश्य डुप्लिकेट रिस्पॉन्स डिक्शनरी, प्रोसेस-ग्लोबल रजिस्ट्री और दस्तावेज़ित एवं वास्तविक एंडपॉइंट एरर के बीच के अंतर को रोकना है। इसके मुख्य कॉन्सेप्ट Fault और FaultRegistry हैं। एक Fault डोमेन अपवाद को स्टेटस, स्टेबल कोड, टाइटल, डिटेल, हेडर, उदाहरण और स्कीमा जैसे फ़ील्ड्स से मैप करता है। एक फीचर अपने कोड के साथ एक छोटा FaultRegistry परिभाषित कर सकता है, और एप्लिकेशन FaultRegistry.merge के माध्यम से रजिस्ट्रियों को स्पष्ट रूप से संयोजित करता है। परिभाषाएं अपरिवर्तनीय होती हैं, मर्ज क्रम नियतात्मक (deterministic) होता है, और कॉन्फ़िगरेशन के दौरान परस्पर विरोधी अपवाद क्लास, कोड, टाइप URI या स्कीमा नाम विफल हो जाते हैं। type_base विकल्प प्रत्येक फॉल्ट कोड से एक स्टेबल प्रॉब्लम टाइप URI प्राप्त करता है; इसके बजाय एक फॉल्ट स्पष्ट टाइप प्रदान कर सकता है। जब किसी डोमेन फॉल्ट में दोनों में से कुछ भी नहीं होता है, तो इंस्टालेशन विफल हो जाता है, जिससे अधूरे कॉन्ट्रैक्ट्स रनिंग एप्लिकेशन से बाहर रहते हैं। रूट्स FastAPI के मानक APIRouter का उपयोग करते हैं, और registry.responses(...) घोषित फॉल्ट्स के लिए रिस्पॉन्स मेटाडेटा उत्पन्न करता है। यह लाइब्रेरी APIRouter को सबक्लास या रिप्लेस नहीं करती है। घोषित फॉल्ट्स को एप्लिकेशन पर इंस्टॉल की गई रजिस्ट्री से संबंधित होना चाहिए। RFC 9457 एक्सटेंशन मेंबर्स को Pydantic मॉडल के साथ टाइप किया जा सकता है: एक extensions_model कस्टम प्रॉब्लम फ़ील्ड्स को वैलिडेट करता है, और एक extensions कॉलेबल वैल्यूज उत्पन्न करता है, जिसमें उत्पन्न प्रॉब्लम स्कीमा उन मेंबर्स का वर्णन करता है। एक रजिस्ट्री इंस्टॉल करना डिफ़ॉल्ट रूप से फ्रेमवर्क विफलताओं को नॉर्मलाइज़ कर सकता है। रिक्वेस्ट वैलिडेशन एक 422 Problem Details रिस्पॉन्स बन जाता है जिसमें स्टेबल, लोकेशन-अवेयर एरर होते हैं। HTTPException और राउटिंग एरर को मैचिंग Problem Details रिस्पॉन्स मिलते हैं। रिस्पॉन्स वैलिडेशन और अप्रत्याशित अपवाद सुरक्षित इंटरनल-एरर रिस्पॉन्स बन जाते हैं। इंस्टालेशन विकल्पों में include_validation_error, include_http_exceptions और include_unhandled_error शामिल हैं। टेस्टिंग हेल्पर्स रिपॉजिटरी के tests/helpers.py में हैं और लाइब्रेरी के साथ शिप नहीं किए जाते हैं। चेकआउट के भीतर, वे assert_no_undeclared_faults, assert_openapi_contract और assert_problem जैसे फंक्शन के माध्यम से रनटाइम और दस्तावेज़ीकरण ड्रिफ्ट का दावा कर सकते हैं। अनडिक्लेयर्ड-फॉल्ट मॉनिटर को एप्लिकेशन के पहले रिक्वेस्ट से पहले एंटर किया जाना चाहिए। आवश्यकताएं CPython 3.12, 3.13, या 3.14; 1.0 से नीचे FastAPI 0.115 या नया; और 3.0 से नीचे Pydantic 2.9 या नया हैं। इंस्टालेशन pip install fastapi_faults के माध्यम से है। डेवलपमेंट uv sync --all-groups का उपयोग करता है और क्वालिटी गेट्स ruff format --check, ruff check, mypy, pytest और uv build चलाते हैं। चलाने योग्य उदाहरण examples/minimal और examples/namespaced में हैं। यह प्रोजेक्ट MIT लाइसेंस के तहत जारी किया गया है।