د Python کوډ 4 ملیون لینونو ټایپ چیک کولو لاره. برخه 3

موږ ستاسو پام ته د هغه لارې په اړه د موادو ژباړې دریمه برخه وړاندې کوو چې ډراپ باکس د Python کوډ لپاره د ډول چیک کولو سیسټم پلي کولو پرمهال اخیستې.

د Python کوډ 4 ملیون لینونو ټایپ چیک کولو لاره. برخه 3

← پخوانۍ برخې: لومړی и دوهم

د ټایپ شوي کوډ 4 ملیون لاینونو ته رسیدل

بله لویه ننګونه (او په داخلي توګه د سروې شویو کسانو ترمنځ دویمه خورا عام اندیښنه) په ډراپ باکس کې د ډول چکونو لخوا پوښل شوي کوډ مقدار زیاتول و. موږ د دې ستونزې د حل لپاره ډیری طریقې هڅه کړې، په طبیعي توګه د ټایپ شوي کوډبیس د اندازې له زیاتوالي څخه د جامد او متحرک اتوماتیک ډول انفرنس باندې د mypy ټیم هڅو تمرکز کولو پورې. په پای کې، داسې بریښي چې د ګټلو کومه ساده ستراتیژي شتون نلري، مګر موږ وکولی شو د ډیری طریقو په یوځای کولو سره د تشریح شوي کوډ حجم کې چټکه وده ترلاسه کړو.

د پایلې په توګه، زموږ ترټولو لوی Python ذخیره (د بیک انډ کوډ سره) د تشریح شوي کوډ نږدې 4 ملیون لینونه لري. د جامد کوډ ټایپ کولو کار په نږدې دریو کلونو کې بشپړ شو. Mypy اوس د کوډ پوښښ راپورونو مختلف ډولونه ملاتړ کوي چې د ټایپ کولو پرمختګ څارنه اسانه کوي. په ځانګړې توګه، موږ کولی شو د کوډ په اړه راپورونه په ډولونو کې د ابهامونو سره تولید کړو، لکه د بیلګې په توګه، د یو ډول ښکاره کارول Any په تشریحاتو کې چې نشي تایید کیدی، یا د داسې شیانو سره لکه د دریمې ډلې کتابتونونو واردول چې ډول تشریحات نلري. په ډراپ باکس کې د ډول چیک کولو دقت د ښه کولو لپاره د پروژې د یوې برخې په توګه، موږ په مرکزي Python ذخیره کې د ځینې مشهور خلاصې سرچینې کتابتونونو لپاره د ډول تعریفونو (د سټب فایلونو په نوم یادیږي) ښه کولو کې مرسته وکړه. ټایپ شوی.

موږ د ډول سیسټم نوې بڼې پلي کړې (او په راتلونکو PEPs کې معیاري شوي) چې د ځینې ځانګړي Python نمونو لپاره ډیر دقیق ډولونو ته اجازه ورکوي. د دې یو د پام وړ مثال دی TypeDict، کوم چې د JSON په څیر قاموسونو لپاره ډولونه چمتو کوي چې د سټینګ کلیدونو ثابت سیټ لري ، هر یو د خپل ډول ارزښت سره. موږ به د ډول سیسټم پراخولو ته دوام ورکړو. زموږ بل ګام به احتمال وي چې د Python شمیري وړتیاو لپاره ملاتړ ته وده ورکړي.

د Python کوډ 4 ملیون لینونو ټایپ چیک کولو لاره. برخه 3
د تشریح شوي کوډ د لینونو شمیر: سرور

د Python کوډ 4 ملیون لینونو ټایپ چیک کولو لاره. برخه 3
د تشریح شوي کوډ د لینونو شمیر: پیرودونکي

د Python کوډ 4 ملیون لینونو ټایپ چیک کولو لاره. برخه 3
د تشریح شوي کوډ لینونو ټولټال شمیر

دلته د هغه شیانو اصلي ځانګړتیاو یوه کتنه ده چې موږ یې په ډراپ باکس کې د تشریح شوي کوډ مقدار زیاتولو لپاره ترسره کړل:

د تشریح سختۍ. موږ په تدریجي ډول د نوي کوډ تشریح کولو لپاره اړتیاوې زیاتې کړې. موږ د لینټر لارښوونو سره پیل وکړ چې وړاندیز یې وکړ چې فایلونو ته تشریحات اضافه کړي چې دمخه یې ځینې تشریحات درلودل. موږ اوس په نوي Python فایلونو او ډیری موجوده فایلونو کې د ډول تشریحاتو ته اړتیا لرو.

د راپورونو ټایپ کول. موږ ټیمونو ته د دوی په کوډ کې د ټایپ کولو کچې په اړه اونۍ راپورونه لیږو او مشوره ورکوو چې لومړی باید تشریح شي.

د mypy مشهور کول. موږ په پیښو کې د mypy په اړه خبرې کوو او د ټیمونو سره خبرې کوو ترڅو د دوی سره د ډول تشریحاتو سره پیل کولو کې مرسته وکړي.

ټولپوښتنې. موږ د لویو ستونزو پیژندلو لپاره دوره ایز کارونکي سروې ترسره کوو. موږ چمتو یو چې د دې ستونزو په حل کې خورا لرې لاړ شو (حتی د مای پی ګړندی کولو لپاره نوې ژبه رامینځته کړئ!).

فعالیت. موږ د ډیمون او mypyc په کارولو سره د mypy فعالیت خورا ښه کړی دی. دا د دې لپاره ترسره شوی و چې د تشریح کولو پروسې په جریان کې رامینځته شوي نیمګړتیاوې اسانه کړي ، او د دې لپاره چې د لوی مقدار کوډ سره کار کولو وړ وي.

د مدیرانو سره یوځای کول. موږ په ایډیټرو کې د mypy چلولو ملاتړ کولو لپاره وسیلې جوړې کړې چې په ډراپ باکس کې مشهور دي. پدې کې PyCharm، Vim او VS کوډ شامل دي. دا د کوډ تشریح کولو او د هغې د فعالیت چک کولو پروسه خورا ساده کړې. دا ډول کړنې عام دي کله چې موجوده کوډ تشریح کوي.

جامد تحلیل. موږ د جامد تحلیلي وسیلو په کارولو سره د فعالیت لاسلیکونو اټکل کولو لپاره وسیله رامینځته کړې. دا وسیله یوازې په نسبتا ساده حالتونو کې کار کولی شي، مګر دا زموږ سره مرسته کړې چې پرته له ډیرې هڅې زموږ د کوډ ډول پوښښ زیات کړي.

د دریمې ډلې کتابتونونو لپاره ملاتړ. زموږ ډیری پروژې د SQLAlchemy Toolkit کاروي. دا د Python متحرک وړتیاو څخه ګټه پورته کوي چې د PEP 484 ډولونه نشي کولی مستقیم ماډل کړي. موږ، د PEP 561 سره سم، اړونده سټب فایل جوړ کړ او د mypy لپاره یې یو پلگ ان ولیکه (خلاص سرچینه)، کوم چې د SQLAlchemy ملاتړ ته وده ورکوي.

هغه ستونزې چې موږ ورسره مخ شوي یو

د ټایپ شوي کوډ 4 ملیون لینونو ته لاره تل زموږ لپاره اسانه نه وه. په دې لاره کې موږ له ډېرو کثافاتو سره مخ شو او ډېرې تېروتنې مو وکړې. دا ځینې ستونزې دي چې موږ ورسره مخ شوي یو. موږ امید لرو چې د دوی په اړه ویل به د نورو سره د ورته ستونزو څخه مخنیوي کې مرسته وکړي.

ورک شوي فایلونه موږ یوازې د لږ مقدار فایلونو په چک کولو سره خپل کار پیل کړ. هر هغه څه چې په دې فایلونو کې شامل ندي چک شوي ندي. فایلونه د سکینینګ لیست کې اضافه شوي کله چې لومړی تشریحات په دوی کې څرګند شول. که یو څه د تایید له ساحې بهر موقعیت لرونکي ماډل څخه وارد شوي وي ، نو موږ د ارزښتونو سره د کار کولو په اړه خبرې کولې لکه Any، کوم چې په هیڅ ډول ازمول شوي ندي. دا د ټایپ کولو دقت د پام وړ زیان لامل شوی، په ځانګړې توګه د مهاجرت په لومړیو مرحلو کې. دې طریقې تر دې دمه په حیرانتیا سره ښه کار کړی، که څه هم یو عادي حالت دا دی چې د بیاکتنې په ساحه کې د فایلونو اضافه کول د کوډبیس په نورو برخو کې ستونزې څرګندوي. په بدترین حالت کې، کله چې د کوډ دوه جلا شوي ساحې یوځای شوي، په کوم کې چې د یو بل څخه په خپلواکه توګه، ډولونه دمخه چک شوي، دا معلومه شوه چې د دې سیمو ډولونه یو له بل سره مطابقت نلري. دا د دې لامل شو چې په توضیحاتو کې ډیری بدلونونه رامینځته شي. اوس شاته ګورو، موږ پوهیږو چې موږ باید ژر تر ژره د mypy ډول چیک کولو ساحې ته د اصلي کتابتون ماډلونه اضافه کړي. دا به زموږ کار ډیر د وړاندوینې وړ کړي.

زاړه کوډ تشریح کول. کله چې موږ پیل کړ، موږ د موجوده Python کوډ شاوخوا 4 ملیون لینونه درلودل. دا څرګنده وه چې د دې ټول کوډ تشریح کول اسانه کار نه و. موږ د PyAnnotate په نوم یوه وسیله رامینځته کړې چې کولی شي د ټیسټونو په جریان کې د ډول معلومات راټول کړي او کولی شي د راټول شوي معلوماتو پراساس ستاسو کوډ کې ډول تشریحات اضافه کړي. په هرصورت، موږ د دې وسیلې په ځانګړي ډول پراخه اختیار نه دی لیدلی. د ډول معلوماتو راټولول ورو و، او په اتوماتيک ډول تولید شوي تشریحات ډیری وخت ډیری لاسي سمونونو ته اړتیا لري. موږ د دې وسیلې په اتوماتيک ډول چلولو په اړه فکر کاوه هرکله چې موږ کوډ بیاکتنه کوو، یا د ډول ډول معلوماتو راټولولو پر بنسټ د حقیقي شبکې غوښتنو ځینې وړو حجمونو تحلیل کولو پراساس، مګر پریکړه یې نده کړې ځکه چې دواړه طریقې خورا خطرناکه وې.

د پایلې په توګه، دا یادونه کیدی شي چې ډیری کوډ په لاسي ډول د دې مالکینو لخوا تشریح شوی. د دې پروسې د سم لوري ته د لارښوونې لپاره، موږ په ځانګړي ډول د مهمو ماډلونو او دندو په اړه راپورونه چمتو کوو چې باید تشریح شي. د مثال په توګه، دا مهمه ده چې د کتابتون ماډل لپاره ډول تشریحات چمتو کړئ چې په سلګونو ځایونو کې کارول کیږي. مګر یو زوړ خدمت چې د نوي سره ځای په ځای کیږي نور د تشریح کولو لپاره دومره مهم ندي. موږ د میراث کوډ لپاره د ډول تشریحاتو رامینځته کولو لپاره د جامد تحلیل کارولو تجربه هم کوو.

سایکلیک واردات. پورته، ما د سایکلیک وارداتو په اړه خبرې وکړې (د "انحصار تنګو")، چې شتون یې د مایپي ګړندی کول ستونزمن کړي. موږ باید سخت کار وکړو چې مایپي د هر ډول محاورې ملاتړ وکړي چې د دې سایکلیک وارداتو له امله رامینځته کیږي. موږ په دې وروستیو کې د سیسټم د بیا ډیزاین یوه لویه پروژه بشپړه کړه چې د سرکلر وارداتو په اړه د مایپي ډیری مسلې حل کړي. دا ستونزې په حقیقت کې د پروژې په لومړیو ورځو کې رامینځته شوي، د الور څخه بیرته، هغه تعلیمي ژبه چې مایپي پروژه په اصل کې تمرکز درلود. د الور ترکیب د سایکلیک وارداتو کمانډونو سره ستونزې حل کول اسانه کوي. عصري مای پی د خپل پخوانی، ساده فکري پلي کولو څخه ځینې محدودیتونه په میراث پاتې دي (کوم چې د الور لپاره خورا مناسب و). Python د سرکلر وارداتو سره کار کول ستونزمن کوي، په عمده توګه ځکه چې څرګندونې مبهم دي. د مثال په توګه، د دندې عملیات ممکن واقعیا یو ډول عرف تعریف کړي. Mypy تل نشي کولی دا ډول شیان کشف کړي تر هغه چې د وارداتو ډیری لوپ پروسس شوي نه وي. په الور کې داسې ابهام نه وو. د سیسټم پراختیا په لومړیو مرحلو کې ضعیف پریکړې کولی شي ډیری کلونه وروسته پروګرام کونکي ته ناخوښه حیرانتیا وړاندې کړي.

پایلې: د کوډ 5 ملیون لینونو او نوي افقونو ته لاره

د mypy پروژه اوږده لاره راغلې ده - له لومړني پروټوټایپ څخه داسې سیسټم ته چې د تولید کوډ ډولونو 4 ملیون لینونه کنټرولوي. لکه څنګه چې mypy وده وکړه، د Python ډوله اشارې معیاري شوي. پدې ورځو کې ، د Python کوډ ټایپ کولو شاوخوا یو پیاوړی ایکوسیستم رامینځته شوی. دا د کتابتون مالتړ لپاره ځای لري، دا د IDEs او مدیرانو لپاره مرستندویه وسیلې لري، دا د کنټرول څو ډوله سیسټمونه لري، چې هر یو یې خپل ګټې او زیانونه لري.

که څه هم د ټایپ چیک کول دمخه په ډراپ باکس کې ورکړل شوي ، زه باور لرم چې موږ لاهم د پایتون کوډ ټایپ کولو په لومړیو ورځو کې یو. زه فکر کوم چې د ډول چک کولو ټیکنالوژي به وده او پرمختګ ته دوام ورکړي.

که تاسو دمخه په خپله لویه پیمانه Python پروژه کې د ټایپ چیک کولو څخه کار نه دی اخیستی، نو پوه شئ چې اوس د جامد ټایپ کولو پیل کولو لپاره خورا ښه وخت دی. ما له هغو کسانو سره خبرې کړې دي چې ورته لیږد یې کړی دی. هیڅ یو یې پښیمانه نه و. د ډول چک کول Python یوه ژبه جوړوي چې د "منظم پایتون" په پرتله د لویو پروژو پراختیا لپاره خورا مناسبه ده.

ګرانو لوستونکو! ایا تاسو په خپلو Python پروژو کې د ډول چک کول کاروئ؟

د Python کوډ 4 ملیون لینونو ټایپ چیک کولو لاره. برخه 3
د Python کوډ 4 ملیون لینونو ټایپ چیک کولو لاره. برخه 3

سرچینه: www.habr.com

Add a comment