Pyrefly؛ ابزار سریع Static Type Checker برای پروژه‌های Python

چرا مهم است

اگر تو روی پروژه‌ای در حال رشد کار می‌کنی، Pyrefly می‌تواند ناسازگاری‌های type را پیش از اجرای برنامه نشانت بدهد. قابلیت تولید type hint و سنجش type coverage هم برای بررسی وضعیت کد موجود به کارت می‌آید.

قبل از خواندن، این‌ها را بدان۵ مفهوم
Static Type Checker

ابزاری که بدون اجرای برنامه، سازگاری type‌ها را بررسی می‌کند و ناسازگاری‌های قابل‌تشخیص را گزارش می‌دهد.

بیشتر درباره این مفهوم

Type Checking

بررسی سازگاری type مقدارها و نحوهٔ استفاده از آن‌ها با قواعد و type hint‌های برنامه.

بیشتر درباره این مفهوم

type hint

اعلام type مورد انتظار برای متغیر، ورودی یا خروجی function که ابزارهای بررسی می‌توانند از آن استفاده کنند.

بیشتر درباره این مفهوم

نمایش همه (۵)
type coverage

معیاری برای توصیف میزان پوشش کد از نظر اطلاعات type؛ تعریف دقیق و شیوهٔ اندازه‌گیری آن می‌تواند میان ابزارها متفاوت باشد.

بیشتر درباره این مفهوم

virtual environment

محیطی جدا برای نصب package‌های یک پروژهٔ Python، بدون وابسته کردن آن‌ها به محیط سایر پروژه‌ها.

بیشتر درباره این مفهوم

آموزش Real Python، ابزار Pyrefly را به‌عنوان یک Static Type Checker سریع برای Python معرفی می‌کند؛ ابزاری که بدون اجرای برنامه، ناسازگاری‌های type را بررسی می‌کند. این ابزار علاوه بر Type Checking، قابلیت تولید type hint برای کد موجود و اندازه‌گیری type coverage در پروژه را هم دارد. برای دنبال کردن آموزش، آشنایی با نوشتن function و type hint‌های پایه در Python 3.10 یا بالاتر توصیه شده است.

Pyrefly در PyPI موجود است و نمونهٔ آموزش، پس از ساخت و فعال‌سازی یک virtual environment، نسخهٔ 1.2.0 را با دستور python -m pip install pyrefly==1.2.0 نصب می‌کند. برای امتحان سریع ابزار هم نیازی به ساخت فایل نیست: دستور pyrefly snippet "x: str = 1" یک قطعه کد کوتاه را بررسی می‌کند. در این مثال، چون برای x مقدار str اعلام شده اما مقدار int به آن داده شده، Pyrefly خطا گزارش می‌دهد. با تغییر مقدار به یک string، خطا برطرف می‌شود.

برای بررسی پروژه، دستور pyrefly init --non-interactive تنظیمات پیش‌فرض را بدون پرسیدن سؤال می‌پذیرد و فایل pyrefly.toml را می‌سازد. تنظیمات ایجادشده، بررسی فایل‌های Python و Jupyter notebook‌های پروژهٔ جاری را مشخص می‌کند. همین دستور پس از ساخت تنظیمات، به‌طور خودکار Type Checking را نیز اجرا می‌کند؛ دستور pyrefly check هم برای بررسی کد پروژه در دسترس است.

در مقایسهٔ ارائه‌شده، هر سه ابزار Pyrefly، Pyright و mypy قابلیت Type Checking دارند و سرعت Pyrefly «سریع» و دو ابزار دیگر «متوسط» توصیف شده است؛ بااین‌حال، بخش در دسترس آموزش عدد یا نتیجهٔ اندازه‌گیری سرعت ارائه نمی‌کند. همچنین نباید جدول مقایسه را به معنای نبود هرگونه گزارش پوشش در ابزارهای دیگر دانست: گزینهٔ --verifytypes در Pyright، public interface یک package را بررسی می‌کند و گزینه‌های گزارش‌گیری mypy می‌توانند میزان وجود type hint در کد را خلاصه کنند.

Pyrefly علاوه بر CLI، یک language server برای اتصال به editor دارد، اما تمرکز این آموزش بر کار با CLI است. بخش ارائه‌شده، شروع کار و تشخیص خطای ساده را نشان می‌دهد و هنوز وارد جزئیات عملی تولید type hint یا اندازه‌گیری type coverage نشده است.

نکته کلیدی

برای امتحان اولیه، تو می‌توانی یک نمونهٔ کوچک را با pyrefly snippet بررسی کنی و بعد سراغ تنظیم پروژه بروی. هنگام مقایسهٔ ابزارها هم فقط به جدول تکیه نکن؛ معنای گزارش پوشش در هر ابزار را جدا بررسی کن.

خواندن مقاله اصلی (در زبانه‌ی جدید باز می‌شود)
برچسب‌ها (۳)