பைதான் குறியீட்டின் 4 மில்லியன் வரிகளை தட்டச்சு செய்வதற்கான பாதை. பகுதி 3

பைதான் குறியீட்டிற்கான வகைச் சரிபார்ப்பு முறையைச் செயல்படுத்தும்போது டிராப்பாக்ஸ் எடுத்த பாதையைப் பற்றிய பொருளின் மொழிபெயர்ப்பின் மூன்றாவது பகுதியை உங்கள் கவனத்திற்கு வழங்குகிறோம்.

பைதான் குறியீட்டின் 4 மில்லியன் வரிகளை தட்டச்சு செய்வதற்கான பாதை. பகுதி 3

→ முந்தைய பாகங்கள்: முதல் и இரண்டாவது

தட்டச்சு செய்யப்பட்ட குறியீட்டின் 4 மில்லியன் வரிகளை எட்டுகிறது

மற்றொரு பெரிய சவால் (மற்றும் உள்நாட்டில் ஆய்வு செய்யப்பட்டவர்களில் இரண்டாவது பொதுவான கவலை) டிராப்பாக்ஸில் உள்ள வகை காசோலைகளால் மூடப்பட்ட குறியீட்டின் அளவை அதிகரிப்பதாகும். இந்தச் சிக்கலைத் தீர்க்க, தட்டச்சு செய்யப்பட்ட கோட்பேஸின் அளவை இயற்கையாக அதிகரிப்பது முதல் நிலையான மற்றும் மாறும் தானியங்கு வகை அனுமானத்தில் mypy குழுவின் முயற்சிகளை மையப்படுத்துவது வரை பல அணுகுமுறைகளை நாங்கள் முயற்சித்தோம். முடிவில், எளிமையான வெற்றிகரமான உத்தி எதுவும் இல்லை என்று தோன்றியது, ஆனால் பல அணுகுமுறைகளை இணைப்பதன் மூலம் சிறுகுறிப்பு குறியீட்டின் அளவில் விரைவான வளர்ச்சியை எங்களால் அடைய முடிந்தது.

இதன் விளைவாக, எங்களின் மிகப்பெரிய பைதான் களஞ்சியத்தில் (பின்னணி குறியீட்டுடன்) கிட்டத்தட்ட 4 மில்லியன் வரிகள் சிறுகுறிப்புக் குறியீடு உள்ளது. நிலையான குறியீடு தட்டச்சு வேலை சுமார் மூன்று ஆண்டுகளில் முடிக்கப்பட்டது. தட்டச்சு முன்னேற்றத்தைக் கண்காணிப்பதை எளிதாக்கும் பல்வேறு வகையான குறியீடு கவரேஜ் அறிக்கைகளை Mypy இப்போது ஆதரிக்கிறது. குறிப்பாக, எடுத்துக்காட்டாக, ஒரு வகையின் வெளிப்படையான பயன்பாடு போன்ற வகைகளில் தெளிவின்மையுடன் குறியீட்டைப் பற்றிய அறிக்கைகளை உருவாக்கலாம். Any சரிபார்க்க முடியாத சிறுகுறிப்புகளில் அல்லது வகைக் குறிப்புகள் இல்லாத மூன்றாம் தரப்பு நூலகங்களை இறக்குமதி செய்வது போன்ற விஷயங்களில். டிராப்பாக்ஸில் வகை சரிபார்ப்பின் துல்லியத்தை மேம்படுத்துவதற்கான திட்டத்தின் ஒரு பகுதியாக, மையப்படுத்தப்பட்ட பைதான் களஞ்சியத்தில் உள்ள சில பிரபலமான திறந்த மூல நூலகங்களுக்கான வகை வரையறைகளை (ஸ்டப் கோப்புகள் என அழைக்கப்படுவது) மேம்படுத்துவதற்கு நாங்கள் பங்களித்தோம். தட்டச்சுக் கொட்டகை.

சில குறிப்பிட்ட பைதான் வடிவங்களுக்கு மிகவும் துல்லியமான வகைகளை அனுமதிக்கும் வகை அமைப்பின் புதிய அம்சங்களை நாங்கள் செயல்படுத்தினோம் (மற்றும் அடுத்தடுத்த PEP களில் தரப்படுத்தப்பட்டது). இதற்கு ஒரு குறிப்பிடத்தக்க உதாரணம் TypeDict, இது JSON போன்ற அகராதிகளுக்கான வகைகளை வழங்குகிறது, அவை நிலையான சரம் விசைகளைக் கொண்டுள்ளன, ஒவ்வொன்றும் அதன் சொந்த வகையின் மதிப்பைக் கொண்டுள்ளன. நாங்கள் தொடர்ந்து வகை அமைப்பை விரிவுபடுத்துவோம். பைத்தானின் எண்ணியல் திறன்களுக்கான ஆதரவை மேம்படுத்துவதே எங்கள் அடுத்த படியாக இருக்கும்.

பைதான் குறியீட்டின் 4 மில்லியன் வரிகளை தட்டச்சு செய்வதற்கான பாதை. பகுதி 3
சிறுகுறிப்பு குறியீட்டின் வரிகளின் எண்ணிக்கை: சேவையகம்

பைதான் குறியீட்டின் 4 மில்லியன் வரிகளை தட்டச்சு செய்வதற்கான பாதை. பகுதி 3
சிறுகுறிப்பு குறியீட்டின் வரிகளின் எண்ணிக்கை: கிளையன்ட்

பைதான் குறியீட்டின் 4 மில்லியன் வரிகளை தட்டச்சு செய்வதற்கான பாதை. பகுதி 3
சிறுகுறிப்பு குறியீட்டின் மொத்த வரிகளின் எண்ணிக்கை

டிராப்பாக்ஸில் சிறுகுறிப்பு குறியீட்டின் அளவை அதிகரிக்க நாங்கள் செய்த விஷயங்களின் முக்கிய அம்சங்களின் கண்ணோட்டம் இங்கே:

சிறுகுறிப்பு கடுமை. புதிய குறியீட்டைக் குறிப்பிடுவதற்கான கடுமைக்கான தேவைகளை படிப்படியாக அதிகரித்தோம். ஏற்கனவே சில சிறுகுறிப்புகளைக் கொண்ட கோப்புகளில் சிறுகுறிப்புகளைச் சேர்க்க பரிந்துரைக்கும் லிண்டர் டிப்ஸுடன் தொடங்கினோம். புதிய பைதான் கோப்புகள் மற்றும் ஏற்கனவே உள்ள பெரும்பாலான கோப்புகளில் வகை குறிப்புகள் தேவை.

தட்டச்சு அறிக்கைகள். குழுக்களின் குறியீட்டை தட்டச்சு செய்யும் நிலை குறித்த வாராந்திர அறிக்கைகளை நாங்கள் அனுப்புகிறோம், மேலும் எதை முதலில் சிறுகுறிப்பு செய்ய வேண்டும் என்பது குறித்து ஆலோசனை வழங்குகிறோம்.

mypy இன் பிரபலப்படுத்தல். நாங்கள் நிகழ்வுகளில் mypy பற்றி பேசுகிறோம் மற்றும் வகை சிறுகுறிப்புகளுடன் தொடங்குவதற்கு குழுக்களுடன் பேசுவோம்.

கருத்துக்கணிப்புகள். பெரிய சிக்கல்களைக் கண்டறிய அவ்வப்போது பயனர் கணக்கெடுப்புகளை நடத்துகிறோம். இந்தச் சிக்கல்களைத் தீர்ப்பதில் வெகுதூரம் செல்ல நாங்கள் தயாராக உள்ளோம் (மைபியை விரைவுபடுத்த புதிய மொழியை உருவாக்குவதும் கூட!).

செயல்திறன். டீமான் மற்றும் mypyc ஐப் பயன்படுத்தி mypy இன் செயல்திறனை நாங்கள் பெரிதும் மேம்படுத்தியுள்ளோம். சிறுகுறிப்புச் செயல்பாட்டின் போது ஏற்படும் அசௌகரியங்களைச் சமாளிப்பதற்கும், அதிக அளவு குறியீட்டுடன் வேலை செய்வதற்கும் இது செய்யப்பட்டது.

ஆசிரியர்களுடன் ஒருங்கிணைப்பு. டிராப்பாக்ஸில் பிரபலமான எடிட்டர்களில் mypy இயங்குவதை ஆதரிக்கும் கருவிகளை உருவாக்கியுள்ளோம். இதில் PyCharm, Vim மற்றும் VS குறியீடு ஆகியவை அடங்கும். இது குறியீட்டை சிறுகுறிப்பு மற்றும் அதன் செயல்பாட்டை சரிபார்க்கும் செயல்முறையை பெரிதும் எளிதாக்கியது. ஏற்கனவே உள்ள குறியீட்டைக் குறிப்பிடும்போது இந்த வகையான செயல்கள் பொதுவானவை.

நிலையான பகுப்பாய்வு. நிலையான பகுப்பாய்வு கருவிகளைப் பயன்படுத்தி செயல்பாட்டு கையொப்பங்களை ஊகிக்க ஒரு கருவியை உருவாக்கினோம். இந்தக் கருவி ஒப்பீட்டளவில் எளிமையான சூழ்நிலைகளில் மட்டுமே வேலை செய்ய முடியும், ஆனால் அதிக முயற்சி இல்லாமல் எங்கள் குறியீடு வகை கவரேஜை அதிகரிக்க இது எங்களுக்கு உதவியது.

மூன்றாம் தரப்பு நூலகங்களுக்கான ஆதரவு. எங்கள் பல திட்டங்கள் SQLAlchemy கருவித்தொகுப்பைப் பயன்படுத்துகின்றன. PEP 484 வகைகளால் நேரடியாக மாதிரியாக்க முடியாத பைத்தானின் மாறும் திறன்களைப் பயன்படுத்திக் கொள்கிறது. நாங்கள், PEP 561 க்கு இணங்க, தொடர்புடைய ஸ்டப் கோப்பை உருவாக்கி, mypy க்காக ஒரு செருகுநிரலை எழுதினோம் (திறந்த மூல), இது SQLalchemy ஆதரவை மேம்படுத்துகிறது.

நாங்கள் சந்தித்த சிரமங்கள்

தட்டச்சு செய்யப்பட்ட குறியீட்டின் 4 மில்லியன் வரிகளுக்கான பாதை எப்போதும் எங்களுக்கு எளிதானது அல்ல. இந்தப் பாதையில் பல பள்ளங்களைச் சந்தித்தோம், பல தவறுகளைச் செய்தோம். இவை நாம் சந்தித்த சில பிரச்சனைகள். அவர்களைப் பற்றி கூறுவது மற்றவர்களுக்கு இதுபோன்ற பிரச்சனைகளைத் தவிர்க்க உதவும் என்று நம்புகிறோம்.

கோப்புகள் காணவில்லை. சிறிய அளவிலான கோப்புகளை மட்டுமே சரிபார்த்து எங்கள் வேலையைத் தொடங்கினோம். இந்தக் கோப்புகளில் சேர்க்கப்படாத எதுவும் சரிபார்க்கப்படவில்லை. முதல் சிறுகுறிப்புகள் தோன்றியபோது கோப்புகள் ஸ்கேனிங் பட்டியலில் சேர்க்கப்பட்டன. சரிபார்ப்பு எல்லைக்கு வெளியே அமைந்துள்ள ஒரு தொகுதியிலிருந்து ஏதாவது இறக்குமதி செய்யப்பட்டிருந்தால், நாங்கள் போன்ற மதிப்புகளுடன் வேலை செய்வது பற்றி பேசுகிறோம் Any, இவை அனைத்தும் சோதிக்கப்படவில்லை. இது தட்டச்சு துல்லியம் குறிப்பிடத்தக்க இழப்புக்கு வழிவகுத்தது, குறிப்பாக இடம்பெயர்வின் ஆரம்ப கட்டங்களில். இந்த அணுகுமுறை இதுவரை வியக்கத்தக்க வகையில் சிறப்பாகச் செயல்பட்டுள்ளது, இருப்பினும் ஒரு பொதுவான சூழ்நிலை என்னவென்றால், மதிப்பாய்வின் நோக்கத்தில் கோப்புகளைச் சேர்ப்பது கோட்பேஸின் பிற பகுதிகளில் உள்ள சிக்கல்களை வெளிப்படுத்துகிறது. மோசமான நிலையில், குறியீட்டின் இரண்டு தனிமைப்படுத்தப்பட்ட பகுதிகள் ஒன்றிணைக்கப்பட்டபோது, ​​அதில், ஒருவருக்கொருவர் சுயாதீனமாக, வகைகள் ஏற்கனவே சரிபார்க்கப்பட்டன, இந்த பகுதிகளின் வகைகள் ஒருவருக்கொருவர் பொருந்தாது என்று மாறியது. இது சிறுகுறிப்புகளில் பல மாற்றங்களைச் செய்ய வேண்டிய அவசியம் ஏற்பட்டது. இப்போது திரும்பிப் பார்க்கும்போது, ​​மைபியின் வகைச் சரிபார்ப்புப் பகுதியில் கோர் லைப்ரரி மாட்யூல்களை விரைவில் சேர்த்திருக்க வேண்டும் என்பதை உணர்கிறோம். இது எங்கள் வேலையை மிகவும் கணிக்கக்கூடியதாக மாற்றும்.

பழைய குறியீட்டைக் குறிப்பிடுகிறது. நாங்கள் தொடங்கும் போது, ​​ஏற்கனவே உள்ள பைதான் குறியீட்டின் 4 மில்லியன் கோடுகள் எங்களிடம் இருந்தன. இந்தக் குறியீடு அனைத்தையும் குறிப்பது எளிதான காரியம் அல்ல என்பது தெளிவாகத் தெரிந்தது. PyAnnotate என்ற கருவியை நாங்கள் உருவாக்கியுள்ளோம், இது சோதனைகள் இயங்கும்போது வகைத் தகவலைச் சேகரிக்கலாம் மற்றும் சேகரிக்கப்பட்ட தகவலின் அடிப்படையில் உங்கள் குறியீட்டில் வகை சிறுகுறிப்புகளைச் சேர்க்கலாம். இருப்பினும், இந்த கருவியின் பரவலான தத்தெடுப்பை நாங்கள் கவனிக்கவில்லை. வகைத் தகவலைச் சேகரிப்பது மெதுவாக இருந்தது, மேலும் தானாக உருவாக்கப்பட்ட சிறுகுறிப்புகளுக்குப் பல கைமுறைத் திருத்தங்கள் தேவைப்படுகின்றன. ஒவ்வொரு முறையும் குறியீட்டை மதிப்பாய்வு செய்யும் ஒவ்வொரு முறையும் இந்தக் கருவியை தானாக இயக்குவது அல்லது சில சிறிய அளவிலான உண்மையான நெட்வொர்க் கோரிக்கைகளை பகுப்பாய்வு செய்வதன் அடிப்படையில் வகைத் தகவலைச் சேகரிப்பது பற்றி யோசித்தோம், ஆனால் இரண்டு அணுகுமுறைகளும் மிகவும் ஆபத்தானது என்பதால் வேண்டாம் என்று முடிவு செய்தோம்.

இதன் விளைவாக, பெரும்பாலான குறியீடுகள் அதன் உரிமையாளர்களால் கைமுறையாக சிறுகுறிப்பு செய்யப்பட்டன என்பதைக் குறிப்பிடலாம். இந்தச் செயல்முறையை சரியான திசையில் வழிநடத்தும் பொருட்டு, குறிப்பீடு செய்யப்பட வேண்டிய முக்கியமான தொகுதிகள் மற்றும் செயல்பாடுகள் பற்றிய அறிக்கைகளை நாங்கள் தயார் செய்கிறோம். எடுத்துக்காட்டாக, நூற்றுக்கணக்கான இடங்களில் பயன்படுத்தப்படும் ஒரு நூலக தொகுதிக்கான வகை சிறுகுறிப்புகளை வழங்குவது முக்கியம். ஆனால் புதிய சேவையுடன் மாற்றப்படும் ஒரு பழைய சேவை இனி சிறுகுறிப்பு செய்வது அவ்வளவு முக்கியமல்ல. மரபுக் குறியீட்டிற்கான வகை சிறுகுறிப்புகளை உருவாக்க நிலையான பகுப்பாய்வைப் பயன்படுத்துவதையும் நாங்கள் பரிசோதித்து வருகிறோம்.

சுழற்சி இறக்குமதி. மேலே, நான் சுழற்சி இறக்குமதிகள் ("சார்பு சிக்கல்கள்") பற்றி பேசினேன், அதன் இருப்பு மைபியை விரைவுபடுத்துவதை கடினமாக்கியது. இந்த சுழற்சி இறக்குமதிகளால் ஏற்படும் அனைத்து வகையான சொற்பொழிவுகளுக்கும் mypy ஆதரவை வழங்க நாங்கள் கடுமையாக உழைக்க வேண்டியிருந்தது. வட்ட இறக்குமதி தொடர்பான மைபியின் பெரும்பாலான சிக்கல்களை சரிசெய்த ஒரு பெரிய சிஸ்டம் மறுவடிவமைப்பு திட்டத்தை நாங்கள் சமீபத்தில் முடித்தோம். இந்த சிக்கல்கள் உண்மையில் திட்டத்தின் ஆரம்ப நாட்களில் இருந்து உருவானவை, மைபி திட்டம் முதலில் கவனம் செலுத்திய கல்வி மொழியான அலோரிலிருந்து. அலோர் தொடரியல் சுழற்சி இறக்குமதி கட்டளைகளில் உள்ள சிக்கல்களைத் தீர்ப்பதை எளிதாக்குகிறது. நவீன mypy அதன் முந்தைய, எளிமையான எண்ணம் கொண்ட செயலாக்கத்திலிருந்து சில வரம்புகளைப் பெற்றுள்ளது (அலோருக்கு இது மிகவும் பொருத்தமாக இருந்தது). பைதான் வட்ட இறக்குமதிகளுடன் வேலை செய்வதை கடினமாக்குகிறது, முக்கியமாக வெளிப்பாடுகள் தெளிவற்றதாக இருப்பதால். எடுத்துக்காட்டாக, ஒரு அசைன்மென்ட் செயல்பாடு உண்மையில் ஒரு வகை மாற்றுப்பெயரை வரையறுக்கலாம். பெரும்பாலான இறக்குமதி லூப் செயலாக்கப்படும் வரை Mypy ஆல் எப்போதும் இதுபோன்ற விஷயங்களைக் கண்டறிய முடியாது. ஆலூரில் அவ்வாறான தெளிவின்மைகள் இருக்கவில்லை. கணினி வளர்ச்சியின் ஆரம்ப கட்டங்களில் எடுக்கப்பட்ட மோசமான முடிவுகள் பல ஆண்டுகளுக்குப் பிறகு புரோகிராமருக்கு விரும்பத்தகாத ஆச்சரியத்தை அளிக்கும்.

முடிவுகள்: 5 மில்லியன் கோடுகள் மற்றும் புதிய எல்லைகளுக்கான பாதை

mypy திட்டம் நீண்ட தூரம் வந்துள்ளது - ஆரம்ப முன்மாதிரிகள் முதல் 4 மில்லியன் வரிசைகள் உற்பத்தி குறியீடு வகைகளை கட்டுப்படுத்தும் அமைப்பு வரை. mypy உருவாகும்போது, ​​பைத்தானின் வகை குறிப்புகள் தரப்படுத்தப்பட்டன. இந்த நாட்களில், பைதான் குறியீட்டைத் தட்டச்சு செய்வதைச் சுற்றி ஒரு சக்திவாய்ந்த சுற்றுச்சூழல் அமைப்பு உருவாகியுள்ளது. இது நூலக ஆதரவுக்கான இடத்தைக் கொண்டுள்ளது, இது IDE கள் மற்றும் எடிட்டர்களுக்கான துணை கருவிகளைக் கொண்டுள்ளது, இது பல வகை கட்டுப்பாட்டு அமைப்புகளைக் கொண்டுள்ளது, ஒவ்வொன்றும் அதன் சொந்த நன்மை தீமைகள் உள்ளன.

டிராப்பாக்ஸில் தட்டச்சு சரிபார்ப்பு ஏற்கனவே கொடுக்கப்பட்டிருந்தாலும், பைதான் குறியீட்டை தட்டச்சு செய்யும் ஆரம்ப நாட்களில் நாங்கள் இன்னும் இருக்கிறோம் என்று நான் நம்புகிறேன். வகை சரிபார்ப்பு தொழில்நுட்பங்கள் தொடர்ந்து உருவாகி மேம்படுத்தப்படும் என்று நினைக்கிறேன்.

உங்கள் பெரிய அளவிலான பைதான் திட்டத்தில் நீங்கள் ஏற்கனவே தட்டச்சுச் சரிபார்ப்பைப் பயன்படுத்தவில்லை என்றால், நிலையான தட்டச்சுக்கு நகரத் தொடங்க இது மிகவும் நல்ல நேரம் என்பதை அறிந்து கொள்ளுங்கள். இதேபோன்ற மாற்றத்தை ஏற்படுத்தியவர்களுடன் நான் பேசினேன். அவர்களில் யாரும் வருத்தப்படவில்லை. வகை சரிபார்ப்பு பைத்தானை "வழக்கமான பைத்தானை" விட பெரிய திட்டங்களை உருவாக்குவதற்கு மிகவும் பொருத்தமான ஒரு மொழியாக மாற்றுகிறது.

அன்புள்ள வாசகர்கள்! உங்கள் பைதான் திட்டங்களில் வகை சரிபார்ப்பைப் பயன்படுத்துகிறீர்களா?

பைதான் குறியீட்டின் 4 மில்லியன் வரிகளை தட்டச்சு செய்வதற்கான பாதை. பகுதி 3
பைதான் குறியீட்டின் 4 மில்லியன் வரிகளை தட்டச்சு செய்வதற்கான பாதை. பகுதி 3

ஆதாரம்: www.habr.com

கருத்தைச் சேர்