بهصورت بازگشتی درخت پوشهای را که با dir نامگذاری شده است میپیماید و در طول مسیر، همهی پروندههای .py را کامپایل میکند. اگر همهی پروندهها با موفقیت کامپایل شده باشند، یک مقدار درست و در غیر این صورت یک مقدار نادرست برمیگرداند.
پارامتر maxlevels برای محدود کردن عمق بازگشت استفاده میشود؛ مقدار پیشفرض آن sys.getrecursionlimit() است.
اگر ddir داده شود، این مقدار به ابتدای مسیر هر پروندهای که کامپایل میشود افزوده میشود تا در ردگیریهای پشته در زمان کامپایل استفاده شود، و همچنین بهصورت کامپایلشده در پرونده بایتکد نیز قرار میگیرد؛ در آنجا این مقدار در ردگیریهای پشته و سایر پیامها در مواردی به کار خواهد رفت که پرونده منبع در زمان اجرای پرونده بایتکد وجود ندارد.
اگر force مقدار true داشته باشد، ماژولها دوباره کامپایل میشوند، حتی اگر برچسبهای زمانی بهروز باشند.
اگر rx داده شود، متد search آن روی مسیر کامل هر پرونده در نظر گرفتهشده برای کامپایل فراخوانی میشود، و اگر مقدار درستی برگرداند، آن پرونده نادیده گرفته میشود. این میتواند برای مستثنی کردن پروندههایی که با یک عبارت باقاعده مطابقت دارند، به کار رود؛ عبارت باقاعدهای که بهصورت یک شیء re.Pattern داده شده است.
اگر quiet برابر False یا 0 (پیشفرض) باشد، نام پروندهها و سایر اطلاعات به خروجی استاندارد چاپ میشوند. اگر روی 1 تنظیم شود، فقط خطاها چاپ میشوند. اگر روی 2 تنظیم شود، تمام خروجیها سرکوب میشوند.
اگر legacy درست باشد، پروندههای بایتکد در مکانها و با نامهای قدیمی خود نوشته میشوند، که ممکن است باعث رونویسی پروندههای بایتکد ایجادشده توسط نسخهای دیگر از پایتون شود. پیشفرض این است که پروندهها در مکانها و با نامهای PEP 3147 نوشته شوند، که امکان وجود همزمان پروندههای بایتکد چندین نسخه از پایتون را فراهم میکند.
optimize سطح بهینهسازی برای کامپایلر را مشخص میکند. این پارامتر به تابع توکار compile() ارسال میشود. همچنین دنبالهای از سطحهای بهینهسازی را میپذیرد که به کامپایلهای متعدد یک پرونده .py در یک فراخوانی منجر میشود.
آرگومان workers مشخص میکند که چند کارگر برای کامپایل موازی پروندهها استفاده میشوند. پیشفرض این است که از چند کارگر استفاده نشود. اگر سکو نتواند از چند کارگر استفاده کند و آرگومان workers داده شده باشد، کامپایل متوالی بهعنوان حالت جایگزین استفاده خواهد شد. اگر workers برابر ۰ باشد، تعداد هستههای سیستم استفاده میشود. اگر workers کوچکتر از 0 باشد، یک ValueError پرتاب خواهد شد.
invalidation_mode، که باید یکی از اعضای enum py_compile.PycInvalidationMode باشد، نحوهی بیاعتبارشدن پروندههای pyc تولیدشده در رانتایم را کنترل میکند.
آرگومانهای stripdir، prependdir و limit_sl_dest متناظر با گزینههای -s، -p و -e هستند که در بالا توضیح داده شدهاند. میتوان آنها را بهصورت str یا os.PathLike مشخص کرد.
اگر hardlink_dupes برابر true باشد و دو پرونده .pyc با سطح بهینهسازی متفاوت محتوای یکسانی داشته باشند، برای ادغام پروندههای تکراری از پیوندهای سخت (hard links) استفاده میشود.
تغییر یافته در نسخهی 3.2: پارامترهای legacy و optimize افزوده شدند.
تغییر یافته در نسخهی 3.5: پارامتر workers افزوده شد.
تغییر یافته در نسخهی 3.5: پارامتر quiet به یک مقدار چندسطحی تغییر کرده است.
تغییر یافته در نسخهی 3.5: پارامتر legacy فقط پروندههای .pyc را مینویسد، نه پروندههای .pyo را، صرفنظر از اینکه مقدار optimize چه باشد.
تغییر یافته در نسخهی 3.7: پارامتر invalidation_mode افزوده شد.
تغییر یافته در نسخهی 3.7.2: مقدار پیشفرض پارامتر invalidation_mode به None بهروزرسانی شده است.
تغییر یافته در نسخهی 3.8: تنظیم workers روی ۰ اکنون تعداد بهینه هستهها را انتخاب میکند.
تغییر یافته در نسخهی 3.9: آرگومانهای stripdir، prependdir، limit_sl_dest و hardlink_dupes افزوده شدند. مقدار پیشفرض maxlevels از 10 به sys.getrecursionlimit() تغییر کرد