تطوير Python
سيناريو

تطوير Python

أنشئ سكريبتات Python وخدمات FastAPI ومجموعات الاختبارات باستخدام الأدوات الحديثة — uv وPEP 723 وأفضل ممارسات pytest

3 مهارات 9 عمليات التثبيت
تم التحديث قبل 3 يومًا

تثبيت

شغّل هذا الأمر لتثبيت جميع المهارات في هذا الحزمة:

npx skillstore add @python-development

تكتشف CLI مجلدات Codex وClaude Code تلقائيًا وتثبّت فيهما عند توفرهما.

نظرة عامة

دليل الاستخدام

محسّن بالذكاء الاصطناعي

دليل مفصل

# تطوير Python

أنشئ سكريبتات Python وخدمات FastAPI ومجموعات الاختبارات باستخدام الأدوات الحديثة — uv وPEP 723 وأفضل ممارسات pytest.

10 分钟起一个带测试的 FastAPI 服务。

## وظائف هذا المكون الإضافي

ثلاث مهارات تغطي سير العمل الكامل للواجهة الخلفية لـ Python:

| المهارة | الغرض |
|-------|---------|
| **Python Scripting** | سكريبتات مستقلة مع uv وتبعيات PEP 723 المضمنة — لا حاجة لإعداد virtualenv |
| **FastAPI Mastery** | إنشاء REST API مع التوجيه والتحقق من الطلبات والبرمجيات الوسيطة والمصادقة وتكامل قاعدة البيانات |
| **pytest Mastery** | مجموعات الاختبارات مع fixtures وparametrize ومحاكاة والاختبار غير المتزامن وتغطية الاختبارات |

## مثال كامل: إنشاء API لتقصير الروابط مع الاختبارات

### الخطوة 1: إنشاء هيكل خدمة FastAPI

```
Create a FastAPI URL shortener service with:
- POST /shorten — accepts {"url": "https://..."}, returns {"short_code": "abc123", "short_url": "http://localhost:8000/abc123"}
- GET /{short_code} — redirects to original URL
- GET /stats/{short_code} — returns click count
- Use SQLite via SQLAlchemy for storage
- Add input validation: reject invalid URLs, max URL length 2048
- Include proper error responses (404 for unknown codes, 422 for invalid input)
```

### الخطوة 2: إضافة اختبارات شاملة

```
Write pytest tests for the URL shortener:
- Test POST /shorten with valid URL returns 201 + short_code
- Test POST /shorten with invalid URL returns 422
- Test GET /{short_code} redirects correctly (status 307)
- Test GET /{short_code} with unknown code returns 404
- Test GET /stats/{short_code} returns correct click count after multiple visits
- Use httpx AsyncClient as test client
- Use a separate test database (SQLite in-memory)
- Add fixtures for: app client, sample shortened URL, database setup/teardown
```

### الخطوة 3: إضافة سكريبت أدوات مساعدة

```
Create a Python script with PEP 723 inline dependencies that:
- Reads a CSV file of URLs (one per line)
- Calls the /shorten endpoint for each URL
- Outputs a new CSV with original_url, short_url, short_code columns
- Use uv for dependency management (httpx, csv are dependencies)
- Add retry logic for failed requests
- Include a --dry-run flag that validates URLs without shortening
```

**النتيجة:** خدمة API كاملة ومختبرة + سكريبت أدوات مساعدة للدفعات — كلها مولدة من أوامر اللغة الطبيعية، جاهزة للنشر.

## متطلبات البيئة

- **Python 3.10+** (يُنصح بـ 3.12)
- **مدير الحزم uv** لحل التبعيات بسرعة:
  ```bash
  curl -LsSf https://astral.sh/uv/install.sh | sh
  ```
- لمشاريع FastAPI، تُدار التبعيات عبر `pyproject.toml` أو `requirements.txt`
- للسكريبتات المستقلة، تتيح لك البيانات الوصفية المضمنة لـ PEP 723 تعريف التبعيات مباشرة في ملف السكريبت — لا حاجة لتكوين منفصل

### فحص سريع

```bash
python3 --version   # 3.10+
uv --version        # أي إصدار حديث
```

## معالجة الأخطاء

### uv غير مثبت

```
command not found: uv
```
**الحل:** قم بتثبيت uv: `curl -LsSf https://astral.sh/uv/install.sh | sh`
بدلاً من ذلك، يمكنك الرجوع إلى pip: `pip install -r requirements.txt`

### أخطاء الاستيراد في الاختبارات

```
ModuleNotFoundError: No module named 'httpx'
```
**الحل:** قم بتثبيت تبعيات الاختبار: `uv pip install httpx pytest pytest-asyncio`

### خادم FastAPI لا يعمل

الأسباب الشائعة:
- المنفذ مستخدم بالفعل: `uvicorn app:app --port 8001`
- تبعيات مفقودة: `uv pip install fastapi uvicorn sqlalchemy`
- إصدار Python قديم جدًا: ترقية إلى 3.10+

### pytest fixtures غير موجودة

إذا فشلت الاختبارات مع رسالة `fixture not found`، تأكد من:
- وجود `conftest.py` في دليل الاختبار
- دوال fixtures مزينة بـ `@pytest.fixture`
- fixtures غير المتزامنة تستخدم `@pytest_asyncio.fixture`

المهارات

3