ty - مدقق النوع Python السريع (Cheatsheet)
ty هو مدقق نوع Python وخادم لغة سريع جداً، مكتوب بـ Rust من قبل Astral (فريق Ruff و uv). يطبق نفس فلسفة الأداء على التحقق من النوع: عندما يمكن لـ mypy أن يستغرق دقائق في قاعدة بيانات كبيرة، يستهدف ty ردود فعل فورية تقريباً، مما يجعل التحقق من النوع عملياً للتشغيل في كل حفظ بدلاً من CI فقط. إنه يكمل سلسلة أدوات Astral Python الحديثة — uv للحزم، Ruff للفحص/التنسيق، ty للأنواع.
ty أحدث من mypy ولا يزال ينضج. تحقق من صحته ضد قاعدة البيانات الخاصة بك قبل جعله بوابة CI صعبة.
التثبيت
| الطريقة | الأمر |
|---|
| uv (موصى به) | uv tool install ty |
| uvx (بدون تثبيت) | uvx ty check |
| pip | pip install ty |
| التحقق | ty --version |
فحص الكود
| الأمر | الوصف |
|---|
ty check | فحص المشروع الحالي |
ty check src/ | فحص مسار محدد |
ty check --watch | إعادة فحص عند تغييرات الملف |
ty check --output-format concise | مخرجات مضغوطة |
ty check --error-on-warning | اعتبر التحذيرات أخطاء |
ty --help | قائمة الخيارات الكاملة |
التكوين
ty يقرأ pyproject.toml:
[tool.ty]
# المسارات المراد فحصها
src = ["src", "tests"]
[tool.ty.environment]
python-version = "3.12"
# حيث يمكن العثور على التبعيات
python = ".venv"
[tool.ty.rules]
# ضبط التشخيصات الفردية
possibly-unbound-attribute = "warn"
unused-ignore-comment = "ignore"
| القسم | الغرض |
|---|
[tool.ty] | تخطيط المشروع / المسارات المضمنة |
[tool.ty.environment] | نسخة Python، venv، مسارات البحث |
[tool.ty.rules] | اضبط كل قاعدة على error, warn, أو ignore |
كبت التشخيصات
| الشكل | التأثير |
|---|
# ty: ignore | اكبت جميع التشخيصات على السطر |
# ty: ignore[rule-name] | اكبت قاعدة محددة |
# type: ignore | يتم احترامها أيضاً (متوافق مع mypy) |
خادم اللغة (تكامل المحرر)
| المحرر | كيف |
|---|
| VS Code | ثبت امتداد Astral ty |
| Neovim | كوّن ty server كـ LSP |
| أي عميل LSP | شغّل ty server |
يعطي خادم اللغة أخطاء النوع المضمنة، وأنواع الحوم، والانتقال إلى التعريف بنفس سرعة CLI.
التشخيصات النموذجية
| التشخيص | المعنى |
|---|
invalid-argument-type | الحجة لا تطابق نوع المعامل |
unresolved-attribute | السمة غير موجودة على النوع |
possibly-unbound-variable | المتغير قد يُستخدم قبل الإسناد |
invalid-return-type | الإرجاع لا يطابق التعليق |
unresolved-import | لا يمكن حل الاستيراد |
سلسلة أدوات Astral
# بوابة جودة Python حديثة كاملة
uv sync # deps، مقفول وسريع
uv run ruff format . # تنسيق
uv run ruff check . # فحص
uv run ty check # أنواع
uv run pytest # اختبارات
| الأداة | تستبدل |
|---|
| uv | pip, pip-tools, virtualenv, pyenv, poetry |
| Ruff | black, flake8, isort, pyupgrade, + more |
| ty | mypy (التحقق من النوع) |
تكامل CI
# فشل البناء على أخطاء النوع
uvx ty check --error-on-warning
# فحص الملفات المتغيرة فقط (مع git)
git diff --name-only origin/main -- '*.py' | xargs uvx ty check
ty مقابل مدققي النوع الآخرين
| الجانب | ty | mypy | Pyright |
|---|
| اللغة | Rust | Python | TypeScript/Node |
| السرعة | سريع جداً | أبطأ | سريع |
| النضج | أحدث | الأكثر نضجاً | ناضج |
| Editor LSP | مدمج | عبر البلاجينات | مدمج (Pylance) |
| الأفضل لـ | السرعة + سلسلة Astral | توافقية النظام البيئي | مستخدمو VS Code |
الموارد