پٿون ڪوڊ جون 4 ملين لائينون ٽائپ چيڪ ڪرڻ جو رستو. حصو 3

اسان توهان جي توجهه لاءِ پيش ڪريون ٿا مواد جي ترجمي جو ٽيون حصو انهي رستي بابت جيڪو ڊراپ باڪس ورتو جڏهن پائٿون ڪوڊ لاءِ ٽائپ چيڪنگ سسٽم لاڳو ڪيو ويو.

پٿون ڪوڊ جون 4 ملين لائينون ٽائپ چيڪ ڪرڻ جو رستو. حصو 3

→ پويون حصا: پهريون и ٻيو

ٽائپ ٿيل ڪوڊ جي 4 ملين لائنن تائين رسائي

ٻيو وڏو چيلنج (۽ ٻيو سڀ کان وڌيڪ عام خدشو جيڪي اندروني طور تي سروي ڪيا ويا آهن) ڊروپباڪس ۾ قسم جي چيڪن ذريعي ڍڪيل ڪوڊ جي مقدار کي وڌائي رهيو هو. اسان هن مسئلي کي حل ڪرڻ لاءِ ڪيترائي طريقا آزمايا آهن، قدرتي طور تي ٽائپ ڪيل ڪوڊ بيس جي سائيز کي وڌائڻ کان وٺي mypy ٽيم جي ڪوششن کي جامد ۽ متحرڪ خودڪار قسم جي انفرنس تي ڌيان ڏيڻ تائين. آخر ۾، اهو لڳي رهيو هو ته ڪا سادي کٽڻ واري حڪمت عملي نه هئي، پر اسان ڪيترن ئي طريقن کي گڏ ڪندي بيان ڪيل ڪوڊ جي مقدار ۾ تيز رفتار حاصل ڪرڻ جي قابل هئاسين.

نتيجي طور، اسان جي سڀ کان وڏي پٿون ريپوزٽري (بئڪ اينڊ ڪوڊ سان) لڳ ڀڳ 4 ملين لائنن جون تشريح ٿيل ڪوڊ آهن. جامد ڪوڊ ٽائپنگ تي ڪم لڳ ڀڳ ٽن سالن ۾ مڪمل ڪيو ويو. Mypy هاڻي مختلف قسم جي ڪوڊ ڪوريج رپورٽن کي سپورٽ ڪري ٿو جيڪا ٽائپنگ جي ترقي کي مانيٽر ڪرڻ آسان بڻائي ٿي. خاص طور تي، اسان ڪوڊ تي رپورٽون ٺاهي سگھون ٿا قسمن ۾ مونجهارن سان، مثال طور، ھڪڙي قسم جو واضح استعمال Any تشريحن ۾ جن جي تصديق نه ٿي ڪري سگھجي، يا ٽئين پارٽي لائبريرين کي درآمد ڪرڻ جهڙين شين سان جن ۾ تشريحون نه هونديون آهن. ڊراپ باڪس ۾ قسم جي چڪاس جي درستگي کي بهتر ڪرڻ جي منصوبي جي حصي جي طور تي، اسان مرڪزي پٿون ريپوزٽري ۾ ڪجهه مشهور اوپن سورس لائبريرين لاءِ قسم جي وصفن (نام نهاد اسٽب فائلن) کي بهتر ڪرڻ ۾ مدد ڪئي. ٽائيپ ٿيل.

اسان لاڳو ڪيو (۽ بعد ۾ PEPs ۾ معياري) ٽائپ سسٽم جون نيون خاصيتون جيڪي ڪجهه مخصوص پٿون نمونن لاءِ وڌيڪ صحيح قسم جي اجازت ڏين ٿيون. ان جو هڪ قابل ذڪر مثال آهي TypeDict، جيڪو JSON-جهڙي لغتن لاءِ قسمون مهيا ڪري ٿو جن ۾ اسٽرنگ ڪيز جو هڪ مقرر سيٽ آهي، هر هڪ پنهنجي پنهنجي قسم جي قيمت سان. اسان ٽائپ سسٽم کي وڌائڻ جاري رکون ٿا. اسان جو ايندڙ قدم ممڪن ٿيندو ته پٿون جي عددي صلاحيتن لاءِ سپورٽ کي بهتر بڻايو وڃي.

پٿون ڪوڊ جون 4 ملين لائينون ٽائپ چيڪ ڪرڻ جو رستو. حصو 3
نوٽ ڪيل ڪوڊ جي لائينن جو تعداد: سرور

پٿون ڪوڊ جون 4 ملين لائينون ٽائپ چيڪ ڪرڻ جو رستو. حصو 3
نوٽ ڪيل ڪوڊ جي لائينن جو تعداد: ڪلائنٽ

پٿون ڪوڊ جون 4 ملين لائينون ٽائپ چيڪ ڪرڻ جو رستو. حصو 3
نوٽ ڪيل ڪوڊ جي لائينن جو ڪل تعداد

هتي انهن شين جي مکيه خاصيتن جو هڪ جائزو آهي جيڪو اسان ڊروپباڪس ۾ اينوٽيڊ ڪوڊ جي مقدار کي وڌائڻ لاءِ ڪيو آهي:

تشريح جي سختي. اسان آهستي آهستي نئين ڪوڊ جي تشريح جي سختيءَ لاءِ گهرجون وڌايون. اسان شروع ڪيو لينٽر ٽوڪن سان جيڪي تجويز ڪيل فائلن ۾ تشريحون شامل ڪرڻ جي صلاح ڏنيون جيڪي اڳ ۾ ئي ڪجهه تشريحون هيون. اسان کي ھاڻي ضرورت آھي نون پٿون فائلن ۾ ۽ اڪثر موجود فائلن ۾ ٽائپ اينوٽيشنز.

ٽائپنگ رپورٽون. اسان ٽيمن کي هفتيوار رپورٽون موڪليندا آهيون انهن جي ڪوڊ ۾ ٽائپنگ جي سطح تي ۽ مشورو ڏيون ٿا ته پهريان ڇا بيان ڪيو وڃي.

Mypy جي مقبوليت. اسان واقعن تي mypy بابت ڳالهايون ٿا ۽ ٽيمن سان ڳالهايون ٿا انهن جي مدد ڪرڻ لاءِ ٽائپ اينوٽيشنز سان شروع ڪرڻ ۾.

پولس. اسان وڏين مسئلن جي نشاندهي ڪرڻ لاءِ وقتي استعمال ڪندڙ سروي ڪندا آهيون. اسان انهن مسئلن کي حل ڪرڻ ۾ ڪافي پري وڃڻ لاءِ تيار آهيون (جيتوڻيڪ mypy کي تيز ڪرڻ لاءِ نئين ٻولي ٺاهڻ!).

ڪارڪردگي. اسان ڊيمون ۽ mypyc استعمال ڪندي mypy جي ڪارڪردگي کي تمام گهڻو بهتر ڪيو آهي. اهو ڪيو ويو ته تڪليفن کي آسان ڪرڻ لاءِ جيڪو تشريح جي عمل دوران پيدا ٿئي ٿو، ۽ انهي لاءِ ته ڪوڊ جي وڏي مقدار سان ڪم ڪرڻ جي قابل ٿي وڃي.

ايڊيٽرن سان انضمام. اسان ڊروپباڪس تي مشهور آهن ايڊيٽرن ۾ mypy هلائڻ جي مدد لاءِ اوزار ٺاهيا آهن. ھن ۾ شامل آھي PyCharm، Vim ۽ VS ڪوڊ. هن ڪوڊ کي تشريح ڪرڻ ۽ ان جي ڪارڪردگي کي جانچڻ جي عمل کي تمام گهڻو آسان ڪيو. انهن قسمن جا عمل عام آهن جڏهن موجوده ڪوڊ کي تشريح ڪندي.

جامد تجزيو. اسان جامد تجزياتي اوزار استعمال ڪندي فنڪشن جي دستخطن کي ڳولڻ لاء هڪ اوزار ٺاهيو. ھي اوزار صرف نسبتاً سادو حالتن ۾ ڪم ڪري سگھي ٿو، پر اھو اسان جي مدد ڪئي اسان جي ڪوڊ قسم جي ڪوريج کي بغير گھڻي ڪوشش جي.

ٽئين پارٽي لائبريرين لاءِ سپورٽ. اسان جا ڪيترائي منصوبا استعمال ڪن ٿا SQLAlchemy ٽول ڪٽ. اهو Python جي متحرڪ صلاحيتن جو فائدو وٺي ٿو ته PEP 484 قسمون سڌو نموني ڪرڻ جي قابل نه آهن. اسان، PEP 561 جي مطابق، لاڳاپيل اسٽب فائل ٺاهي ۽ mypy لاءِ هڪ پلگ ان لکيو (کليل ذريعو)، جيڪو SQLAlchemy سپورٽ کي بهتر بڻائي ٿو.

مشڪلاتون اسان کي منهن ڏيڻو پيو

ٽائپ ٿيل ڪوڊ جي 4 ملين لائنن جو رستو هميشه اسان لاءِ آسان نه رهيو آهي. انهيءَ رستي ۾ اسان ڪيترن ئي پٿرن کي منهن ڏنو ۽ ڪيتريون ئي غلطيون ڪيون. اهي ڪجهه مسئلا آهن جن کي اسان منهن ڪيو آهي. اسان کي اميد آهي ته انهن جي باري ۾ ٻڌائڻ ٻين جي مدد ڪندو ساڳي مسئلن کان بچڻ.

فائلون غائب. اسان پنهنجو ڪم شروع ڪيو صرف ٿوري مقدار ۾ فائلن جي جانچ ڪندي. انهن فائلن ۾ شامل نه ڪيل ڪجھ به چيڪ نه ڪيو ويو. فائلون اسڪيننگ لسٽ ۾ شامل ڪيون ويون جڏھن انھن ۾ پھريون تشريحون ظاهر ٿيون. جيڪڏهن ڪا شيءِ درآمد ڪئي وئي هئي ماڊل مان جيڪا تصديق جي دائري کان ٻاهر واقع آهي، ته پوءِ اسان ڪم ڪرڻ بابت ڳالهائي رهيا هئاسين قدرن سان Any، جيڪي ڪجھ به آزمائي نه ويا آھن. اهو ٽائپنگ جي درستگي جي هڪ اهم نقصان جي ڪري، خاص طور تي لڏپلاڻ جي شروعاتي مرحلن ۾. اهو طريقو اڃا تائين حيرت انگيز طور تي سٺو ڪم ڪيو آهي، جيتوڻيڪ هڪ عام صورتحال اها آهي ته فائلن کي نظرثاني جي دائري ۾ شامل ڪرڻ ڪوڊ بيس جي ٻين حصن ۾ مسئلا ظاهر ڪري ٿو. بدترين صورت ۾، جڏهن ڪوڊ جا ٻه الڳ ٿيل علائقا ضم ڪيا ويا، جن ۾، هڪ ٻئي کان آزاد طور تي، قسمون اڳ ۾ ئي چڪاس ڪيون ويون آهن، اهو ظاهر ٿيو ته انهن علائقن جا قسم هڪ ٻئي سان مطابقت نه رکندا هئا. ان ڪري تشريحن ۾ ڪيتريون ئي تبديليون ڪرڻ جي ضرورت پيش آئي. هاڻي پوئتي ڏسي رهيا آهيون، اسان محسوس ڪيو آهي ته اسان کي جلد ئي mypy جي قسم جي چڪاس واري علائقي ۾ بنيادي لائبريري ماڊل شامل ڪرڻ گهرجي. اهو اسان جي ڪم کي تمام گهڻو اڳڪٿي ڪري سگهندو.

پراڻي ڪوڊ جي تشريح. جڏهن اسان شروع ڪيو، اسان وٽ موجود پيٿون ڪوڊ جون اٽڪل 4 ملين لائينون هيون. اهو واضح هو ته هن سڀني ڪوڊ کي تشريح ڪرڻ ڪو آسان ڪم نه هو. اسان PyAnnotate نالي ھڪڙو اوزار ٺاھيو آھي جيڪو گڏ ڪري سگھي ٿو قسم جي معلومات کي گڏ ڪري سگھي ٿو جيئن ٽيسٽ هلائي ٿو ۽ گڏ ڪيل معلومات جي بنياد تي توھان جي ڪوڊ ۾ ٽائپ اينوٽيشن شامل ڪري سگھي ٿو. بهرحال، اسان هن اوزار جي خاص طور تي وسيع اپنائڻ جو نوٽيس نه ڪيو آهي. گڏ ڪرڻ واري قسم جي معلومات سست هئي، ۽ خودڪار طور تي ٺاهيل تشريحون اڪثر ڪري ڪيترن ئي دستي ترميمن جي ضرورت هونديون آهن. اسان سوچيو ته هن اوزار کي خودڪار طريقي سان هلائڻ جي باري ۾ هر وقت جڏهن اسان ڪوڊ جو جائزو وٺون ٿا، يا حقيقي نيٽ ورڪ جي درخواستن جي ڪجهه ننڍي مقدار جي تجزيو جي بنياد تي قسم جي معلومات گڏ ڪريون، پر فيصلو نه ڪيو ڇو ته ٻنهي جو طريقو تمام خطرناڪ هو.

نتيجي طور، اهو نوٽ ڪري سگهجي ٿو ته اڪثر ڪوڊ دستي طور تي ان جي مالڪن طرفان بيان ڪيل هئي. ھن عمل کي صحيح رخ ۾ ھدايت ڪرڻ لاءِ، اسان خاص طور تي اھم ماڊلز ۽ ڪمن تي رپورٽون تيار ڪريون ٿا جن کي نوٽ ڪرڻ جي ضرورت آھي. مثال طور، اهو ضروري آهي ته لائبريري ماڊل لاءِ قسم جي تشريح مهيا ڪئي وڃي جيڪا سئو هنڌن تي استعمال ٿئي ٿي. پر هڪ پراڻي خدمت جيڪا نئين سان تبديل ٿي رهي آهي، ان کي نوٽ ڪرڻ لاءِ ايترو اهم نه رهيو آهي. اسان پڻ استعمال ڪري رهيا آهيون جامد تجزيي کي استعمال ڪرڻ لاءِ ورثي واري ڪوڊ لاءِ قسم جون تشريحون.

سائيڪل جي واردات. مٿي، مون cyclic وارداتن جي باري ۾ ڳالهايو ("انحصار tangles")، جنهن جي وجود ان کي تيز ڪرڻ ڏکيو ڪيو mypy. اسان کي به سخت محنت ڪرڻي پوندي هئي ته Mypy جي هر قسم جي محاوري کي سپورٽ ڪري، جيڪي انهن سائيڪل جي وارداتن جو سبب بڻجن ٿا. اسان تازو مڪمل ڪيو هڪ وڏو سسٽم ريڊزائن پروجيڪٽ جنهن ۾ سرڪيولر امپورٽس جي حوالي سان mypy جي اڪثر مسئلن کي حل ڪيو. اهي مسئلا اصل ۾ پروجيڪٽ جي شروعاتي ڏينهن کان پيدا ٿيا، الور کان واپس، تعليمي ٻولي جنهن تي Mypy پروجيڪٽ اصل ۾ مرکوز هو. Alore نحو کي آسان بڻائي ٿو مسئلا حل ڪرڻ سان گڏ سائيڪلڪ درآمد حڪمن سان. جديد mypy کي وراثت ۾ ورثي ۾ مليون آهن ڪجهه حدون ان جي اڳئين، سادو ذهن تي عمل ڪرڻ کان (جيڪا الور لاءِ بهترين هئي). Python سرڪلر وارداتن سان ڪم ڪرڻ ڏکيو بڻائي ٿو، خاص طور تي ڇاڪاڻ ته اظهار مبهم آهن. مثال طور، هڪ تفويض آپريشن اصل ۾ هڪ قسم جي عرف جي وضاحت ڪري سگهي ٿي. Mypy هميشه اهڙين شين کي ڳولڻ جي قابل ناهي جيستائين اڪثر درآمد لوپ تي عمل نه ڪيو ويو آهي. الور ۾ اهڙا مونجهارا نه هئا. سسٽم ڊولپمينٽ جي شروعاتي مرحلن ۾ ناقص فيصلا ڪيا ويا آھن ڪيترن ئي سالن کان پوء پروگرامر کي ھڪڙو ناپسنديده تعجب پيش ڪري سگھي ٿو.

نتيجا: رستو 5 ملين لائنن جو ڪوڊ ۽ نئون افق

mypy پروجيڪٽ هڪ ڊگهو رستو اچي چڪو آهي - شروعاتي پروٽو ٽائپس کان وٺي هڪ سسٽم تائين جيڪو ڪنٽرول ڪري ٿو 4 ملين لائنن جي پيداوار ڪوڊ قسم جي. جيئن mypy ترقي ڪئي، پٿون جي قسم جا اشارا معياري ڪيا ويا. انهن ڏينهن ۾، پائٿون ڪوڊ ٽائپنگ جي چوڌاري هڪ طاقتور ماحولياتي نظام ترقي ڪئي آهي. ان ۾ لائبريري جي مدد لاءِ جاءِ آهي، ان ۾ IDEs ۽ ايڊيٽرن لاءِ معاون اوزار شامل آهن، ان ۾ ڪيترائي قسم جا ڪنٽرول سسٽم آهن، جن مان هر هڪ جا پنهنجا فائدا ۽ نقصان آهن.

جيتوڻيڪ ٽائپ چيڪنگ اڳ ۾ ئي ڊروپباڪس تي ڏنل آهي، مان سمجهان ٿو ته اسان اڃا تائين پائٿون ڪوڊ ٽائپ ڪرڻ جي شروعاتي ڏينهن ۾ آهيون. منهنجو خيال آهي ته ٽائپ چيڪنگ ٽيڪنالاجيون ترقي ۽ بهتر ٿينديون رهنديون.

جيڪڏهن توهان اڳ ۾ ئي استعمال نه ڪيو آهي ٽائپ چيڪنگ توهان جي وڏي پيماني تي پٿون پروجيڪٽ ۾، پوء ڄاڻو ته هاڻي هڪ تمام سٺو وقت آهي جامد ٽائپنگ ڏانهن منتقل ڪرڻ شروع ڪرڻ لاء. مون انهن سان ڳالهايو آهي جن هڪ اهڙي تبديلي ڪئي آهي. انهن مان ڪنهن کي به افسوس نه ٿيو. قسم جي چڪاس پٿون کي هڪ ٻولي بڻائي ٿي جيڪا "باقاعده پٿون" جي ڀيٽ ۾ وڏي منصوبن کي ترقي ڪرڻ لاءِ وڌيڪ موزون آهي.

پيارا پڙهندڙن! ڇا توھان پنھنجي پٿون پروجيڪٽ ۾ ٽائپ چيڪنگ استعمال ڪندا آھيو؟

پٿون ڪوڊ جون 4 ملين لائينون ٽائپ چيڪ ڪرڻ جو رستو. حصو 3
پٿون ڪوڊ جون 4 ملين لائينون ٽائپ چيڪ ڪرڻ جو رستو. حصو 3

جو ذريعو: www.habr.com

تبصرو شامل ڪريو