منصوبے کے بارے میں

fastapi-faults FastAPI کے لیے typed error contracts فراہم کرتا ہے، جو Python exceptions کو RFC 9457 Problem Details اور OpenAPI documentation سے جوڑتا ہے۔ اس کا بنیادی تصور یہ ہے کہ ہر ایپلی کیشن ایرر کی ایک immutable تعریف ہوتی ہے، جسے exception handling، application/problem+json responses، اور generated OpenAPI schemas کے لیے مستقل طور پر استعمال کیا جاتا ہے۔ اس پروجیکٹ کا مقصد duplicated responses dictionaries، process-global registries، اور documented اور actual endpoint errors کے درمیان فرق کو ختم کرنا ہے۔ بنیادی تصورات Fault اور FaultRegistry ہیں۔ ایک Fault کسی domain exception کو status، stable code، title، detail، headers، examples، اور schemas جیسے فیلڈز سے جوڑتا ہے۔ ایک feature اپنے کوڈ کے ساتھ ایک چھوٹی FaultRegistry بیان کر سکتا ہے، اور ایپلی کیشن FaultRegistry.merge کے ذریعے registries کو واضح طور پر ترتیب دیتی ہے۔ تعریفیں immutable ہیں، merge کرنے کی ترتیب deterministic ہے، اور متصادم exception classes، codes، type URIs، یا schema names کنفیگریشن کے دوران ناکام ہو جاتے ہیں۔ type_base آپشن ہر fault code سے ایک stable problem type URI اخذ کرتا ہے؛ ایک fault اس کے بجائے ایک واضح type فراہم کر سکتا ہے۔ انسٹالیشن اس وقت ناکام ہو جاتی ہے جب کسی domain fault میں ان دونوں میں سے کچھ نہ ہو، جو نامکمل contracts کو چلتی ہوئی ایپلی کیشن سے باہر رکھتا ہے۔ Routes FastAPI کے معیاری APIRouter کا استعمال کرتے ہیں، اور registry.responses(...) بیان کردہ faults کے لیے responses metadata تیار کرتا ہے۔ یہ لائبریری APIRouter کو subclass یا replace نہیں کرتی۔ بیان کردہ faults کا ایپلی کیشن پر انسٹال شدہ registry سے تعلق ہونا ضروری ہے۔ RFC 9457 extension members کو Pydantic models کے ساتھ typed کیا جا سکتا ہے: ایک extensions_model کسٹم problem fields کی تصدیق کرتا ہے، اور ایک extensions callable ویلیوز پیدا کرتا ہے، جس کے ساتھ تیار کردہ problem schema ان members کی وضاحت کرتا ہے۔ ایک registry انسٹال کرنا ڈیفالٹ طور پر framework failures کو normalize کر سکتا ہے۔ Request validation ایک 422 Problem Details response بن جاتا ہے جس میں stable اور location-aware errors ہوتے ہیں۔ HTTPException اور routing errors کو مطابق Problem Details responses ملتے ہیں۔ Response validation اور غیر متوقع exceptions محفوظ internal-error responses بن جاتے ہیں۔ انسٹالیشن آپشنز میں include_validation_error، include_http_exceptions، اور include_unhandled_error شامل ہیں۔ ٹیسٹنگ ہیلپرز ریپوزٹری کے tests/helpers.py میں موجود ہیں اور لائبریری کے ساتھ فراہم نہیں کیے جاتے۔ ایک checkout کے اندر، وہ assert_no_undeclared_faults، assert_openapi_contract، اور assert_problem جیسے فنکشنز کے ذریعے runtime اور documentation drift کی تصدیق کر سکتے ہیں۔ undeclared-fault monitor کو ایپلی کیشن کی پہلی request سے پہلے فعال کیا جانا چاہیے۔ ضروریات CPython 3.12، 3.13، یا 3.14؛ FastAPI 0.115 یا اس سے نیا (1.0 سے نیچے)؛ اور Pydantic 2.9 یا اس سے نیا (3.0 سے نیچے) ہیں۔ انسٹالیشن pip install fastapi_faults کے ذریعے ہوتی ہے۔ ڈویلپمنٹ کے لیے uv sync --all-groups استعمال ہوتا ہے اور quality gates کے لیے ruff format --check، ruff check، mypy، pytest، اور uv build چلائے جاتے ہیں۔ قابلِ عمل مثالیں examples/minimal اور examples/namespaced میں موجود ہیں۔ یہ پروجیکٹ MIT License کے تحت جاری کیا گیا ہے۔