Indlela yokuchwetheza imigca ezizigidi ezi-4 zekhowudi yePython. Icandelo loku-3

Sinikezela ingqalelo yakho inxalenye yesithathu yokuguqulelwa kwezinto malunga nendlela eyathathwa yiDropbox xa iphumeza inkqubo yokujonga uhlobo lwekhowudi yePython.

Indlela yokuchwetheza imigca ezizigidi ezi-4 zekhowudi yePython. Icandelo loku-3

β†’ Amacandelo angaphambili: kuqala ΠΈ okwesibini

Ukufikelela kwi-4 yezigidi zemigca yekhowudi echwetheziweyo

Omnye umngeni omkhulu (kwaye okwesibini inkxalabo eqhelekileyo phakathi kwezo ziphandwayo ngaphakathi) yayinyusa inani lekhowudi egutyungelwe ngohlobo lokuhlola kwiDropbox. Sizame iindlela ezininzi zokusombulula le ngxaki, ukusuka ekukhuliseni ngokwendalo ubungakanani bekhowudi echwetheziweyo ukuya kugxininiso lweqela le-mypy kwiinzame zohlobo olusisigxina kunye noluguquguqukayo oluzenzekelayo. Ekugqibeleni, kwakubonakala ngathi akukho sicwangciso esilula sokuphumelela, kodwa sakwazi ukufezekisa ukukhula ngokukhawuleza kumthamo wekhowudi echazwe ngokudibanisa iindlela ezininzi.

Ngenxa yoko, indawo yethu enkulu yokugcina iPython (enekhowudi yangasemva) iphantse ibe zizigidi ezi-4 zemigca yekhowudi echaziweyo. Umsebenzi wokuchwetheza ikhowudi engatshintshiyo wagqitywa malunga neminyaka emithathu. I-Mypy ngoku ixhasa iintlobo ezahlukeneyo zeengxelo zekhowudi ezenza kube lula ukubeka iliso kwinkqubela phambili yokuchwetheza. Ngokukodwa, sinokwenza iingxelo ngekhowudi enokungaqondakali kwiintlobo, ezinje, umzekelo, ukusetyenziswa okucacileyo kohlobo. Any kumanqakwana angenakuqinisekiswa, okanye ngezinto ezifana nokurhweba ngaphandle kwethala leencwadi lomntu wesithathu angenazo izihlomelo zohlobo. Njengenxalenye yeprojekthi yokuphucula ukuchaneka kohlobo lokukhangela kwiDropbox, sibe negalelo ekuphuculeni uhlobo lweenkcazelo (ekuthiwa ziifayile zestub) kwezinye iilayibrari ezithile ezivulekileyo ezivulelekileyo kwindawo yokugcina iPython. ichwetheziwe.

Siphumeze (kwaye silinganiswe kwii-PEPs ezilandelayo) iimpawu ezintsha zenkqubo yohlobo oluvumela iindidi ezichanekileyo kwiipateni ezithile zePython. Umzekelo ophawulekayo woku TypeDict, ebonelela ngeendidi ze-JSON-ezifana nezichazi-magama ezineseti esisigxina yezitshixo zomtya, ngasinye sinexabiso lohlobo lwaso. Siya kuqhubeka nokwandisa inkqubo yohlobo. Inyathelo lethu elilandelayo liya kuba kukuphucula inkxaso yePython yamanani amanani.

Indlela yokuchwetheza imigca ezizigidi ezi-4 zekhowudi yePython. Icandelo loku-3
Inani lemigca yekhowudi echaziweyo: iseva

Indlela yokuchwetheza imigca ezizigidi ezi-4 zekhowudi yePython. Icandelo loku-3
Inani lemigca yekhowudi echaziweyo: umxhasi

Indlela yokuchwetheza imigca ezizigidi ezi-4 zekhowudi yePython. Icandelo loku-3
Lilonke inani lemigca yekhowudi yamanqaku

Nantsi isishwankathelo sezona mpawu ziphambili zezinto esizenzileyo ukonyusa inani lekhowudi echaziweyo kwiDropbox:

Ukuqina kochazo. Siye sanyusa ngokuthe ngcembe iimfuno zokuqina kwekhowudi entsha. Siqale ngeengcebiso ze-linter ezicebisa ukongeza izichasiselo kwiifayile esele zinezihlomelo. Ngoku sifuna amanqakwana ochwethezo kwiifayile zePython ezintsha nakwiifayile ezininzi ezikhoyo.

Ukuchwetheza iingxelo. Sithumela amaqela ngeveki iingxelo kwinqanaba lokuchwetheza kwikhowudi yawo kwaye sinike iingcebiso malunga nokuba yintoni na ekufuneka ichazwe kuqala.

Ukuthandwa kwe-mypy. Sithetha nge-mypy kwimisitho kwaye sithethe namaqela ukubanceda baqalise ngohlobo lwezihlomelo.

Uvoto. Senza uphando lwabasebenzisi ngamaxesha athile ukuchonga iingxaki ezinkulu. Sikulungele ukuya kude kakhulu ekusombululeni ezi ngxaki (kwanokudala ulwimi olutsha ukukhawulezisa i-mypy!).

Ukusebenza. Siphucule kakhulu ukusebenza kwe-mypy ngokusebenzisa i-daemon kunye ne-mypyc. Oku kwenzelwa ukulungisa iziphazamiso ezivela ngexesha lenkqubo yochazo, kunye nokukwazi ukusebenza ngezixa ezikhulu zekhowudi.

Ukudityaniswa nabahleli. Sakhe izixhobo zokuxhasa ukuqhuba i-mypy kubahleli abadumileyo kwiDropbox. Oku kubandakanya iPyCharm, iVim kunye neVS Code. Oku kwenze lula kakhulu inkqubo yokuchaza ikhowudi kunye nokujonga ukusebenza kwayo. Ezi ntlobo zezenzo ziqhelekile xa kuchazwa ikhowudi ekhoyo.

Uhlalutyo olungatshintshiyo. Senze isixhobo sokuchaza utyikityo lomsebenzi usebenzisa izixhobo zokuhlalutya ezimileyo. Esi sixhobo sinokusebenza kuphela kwiimeko ezilula, kodwa sincede sonyusa uhlobo lwekhowudi yethu ngaphandle komzamo omkhulu.

Inkxaso yamathala eencwadi eqela lesithathu. Uninzi lweeprojekthi zethu zisebenzisa i-SQLAlchemy toolkit. Kuthatha ithuba lobuchule obuguqukayo bePython ukuba iintlobo ze-PEP 484 azikwazi ukwenza imodeli ngokuthe ngqo. Thina, ngokuhambelana ne-PEP 561, senze ifayile ye-stub ehambelanayo kwaye sabhala iplagin ye-mypy (Vula Umnikezi), ephucula inkxaso yeSQLAlchemy.

Ubunzima esidibene nabo

Indlela eya kwimigca ezizigidi ezi-4 zekhowudi echwetheziweyo ayisoloko ilula kuthi. Kule ndlela siye sadibana nemingxuma emininzi kwaye senza iimpazamo ezininzi. Ezi zezinye zeengxaki esidibene nazo. Sinethemba lokuba ukubalisa ngabo kuya kunceda abanye baphephe iingxaki ezifanayo.

Iifayile ezingekhoyo. Saqala umsebenzi wethu ngokujonga ifayile encinci kuphela. Nantoni na engafakwanga kwezi fayile ayizange ihlolwe. Iifayile zongezwa kuluhlu lokuskena xa izichasiselo zokuqala zivela kuzo. Ukuba kukho into ethe yangeniswa kwimodyuli engaphandle komda wokuqinisekisa, ke besithetha ngokusebenza ngamaxabiso afana Any, ezingazange zivavanywe konke konke. Oku kukhokelele kwilahleko enkulu yokuchaneka kokuchwetheza, ngakumbi kumanqanaba okuqala okufuduka. Le ndlela isebenze ngokumangalisayo ngoku, nangona imeko eqhelekileyo kukuba ukongeza iifayile kububanzi bokuhlaziywa kubonisa iingxaki kwezinye iindawo zekhowudi. Kwimeko embi kakhulu, xa iindawo ezimbini ezizimeleyo zekhowudi zahlanganiswa, apho, ngokuzimeleyo, iindidi sele zihlolisisiwe, kwavela ukuba iindidi zale mimandla azihambelani. Oku kukhokelele kwisidingo sokwenziwa kweenguqu ezininzi kwiinkcazo. Xa sijonga emva ngoku, siyaqonda ukuba bekufanele ukuba songeze iimodyuli zethala leencwadi ezingundoqo kwindawo yokukhangela ye-mypy kwakamsinya. Oku kuya kwenza umsebenzi wethu uqikeleleke ngakumbi.

Inkcazo yekhowudi endala. Xa sasiqala, sasinemigca ye-4 yezigidi zekhowudi ekhoyo yePython. Kwakucacile ukuba ukuchaza yonke le khowudi yayingengomsebenzi olula. Senze isixhobo esibizwa ngokuba yiPyAnnotate enokuqokelela ulwazi lohlobo njengoko uvavanyo luqhutywa kwaye lunokongeza uhlobo lwenkcazo kwikhowudi yakho ngokusekelwe kulwazi oluqokelelweyo. Nangona kunjalo, asiqaphelanga ukwamkelwa ngokubanzi kwesi sixhobo. Ukuqokelela ulwazi lohlobo kwakucotha, kwaye amanqakwana avele ngokuzenzekelayo aye afune ukuhlelwa okwenziwa ngesandla. Siye sacinga ngokuqhuba esi sixhobo ngokuzenzekelayo ngalo lonke ixesha sijonga ikhowudi, okanye siqokelela ulwazi lohlobo olusekwe ekuhlalutyeni umthamo omncinci wezicelo zenethiwekhi, kodwa sigqibe kwelokuba singakwenzi oko kuba nayiphi na indlela inobungozi kakhulu.

Ngenxa yoko, kunokuqatshelwa ukuba uninzi lwekhowudi yachazwa ngesandla ngabanini bayo. Ukuze sikhokele le nkqubo kwicala elichanekileyo, silungiselela iingxelo kwiimodyuli ezibaluleke kakhulu kunye nemisebenzi efuna ukuchazwa. Umzekelo, kubalulekile ukubonelela ngodidi lwamanqaku kwimodyuli yethala leencwadi esetyenziswa kumakhulu eendawo. Kodwa inkonzo endala ethi ithatyathelwe indawo entsha ayisabalulekanga kangako ukuba ihlaziywe. Sikwazama ukusebenzisa uhlalutyo olungatshintshiyo ukuvelisa uhlobo lwenkcazo yekhowudi yelifa.

Ukungenisa elizweni ngebhayisekile. Ngaphezulu, ndathetha malunga nokungeniswa kwe-cyclic ("i-dependency tangles"), ubukho obenze kube nzima ukukhawulezisa i-mypy. Kwakhona kuye kwafuneka sisebenze nzima ukwenza i-mypy ixhase zonke iintlobo zezaci ezibangelwa koku kuthunyelwa ngaphandle komjikelo. Kutshanje sigqibe iprojekthi enkulu yoyilo ngokutsha eye yalungisa uninzi lwemiba ye-mypy malunga nokungenisa elizweni okusetyhula. Ezi ngxaki ngokwenene zisuka kwiintsuku zangaphambili zeprojekthi, emva kwe-Alore, ulwimi lokufundisa iprojekthi ye-mypy yayigxile kuyo. I-syntax ye-Alore yenza kube lula ukusombulula iingxaki nge-cyclic yokungenisa imiyalelo. I-mypy yanamhlanje izuze izithintelo ezithile ekuphumezeni kwayo kwangaphambili, okunengqondo elula (eyayilunge kakhulu i-Alore). I-Python yenza ukuba kube nzima ukusebenza ngokungeniswa ngaphandle kwesetyhula, ikakhulu ngenxa yokuba iintetho azicacanga. Umzekelo, umsebenzi wesabelo unokuchaza uhlobo lwesiteketiso. I-Mypy ayisoloko ikwazi ukubona izinto ezinje de uninzi lwelophu yokungenisa sele iqhutywe. Kwakungekho ngqiqweni enjalo e-Alore. Izigqibo ezigwenxa ezenziwe kumanqanaba okuqala ophuhliso lwenkqubo zinokubonisa into eyothusayo kumdwelisi wenkqubo kwiminyaka emininzi kamva.

Iziphumo: indlela eya kwi-5 yezigidi zemigca yekhowudi kunye ne-horizons entsha

Iprojekthi ye-mypy ifikile indlela ende - ukusuka kwiiprototypes zangaphambili ukuya kwinkqubo elawula imigca ye-4 yezigidi zeentlobo zekhowudi yokuvelisa. Njengoko i-mypy yavela, iingcebiso zohlobo lwePython zalungiswa. Kwezi ntsuku, inkqubo yendalo enamandla iphuhliswe malunga nokuchwetheza ikhowudi yePython. Inendawo yokuxhasa ithala leencwadi, iqulethe izixhobo ezincedisayo ze-IDE kunye nabahleli, ineenkqubo ezininzi zokulawula uhlobo, nganye kuzo ineenzuzo zayo kunye neengxaki.

Nangona ukujonga uhlobo sele kunikezelwe kwiDropbox, ndiyakholelwa ukuba sisekwimihla yokuqala yokuchwetheza ikhowudi yePython. Ndicinga ukuba itekhnoloji yokujonga uhlobo iya kuqhubeka nokuvela kwaye iphucule.

Ukuba awukasebenzisi uhlobo lokukhangela kwiprojekthi yakho enkulu yePython, ke yazi ukuba ngoku lixesha elilungileyo lokuqalisa ukuya kuchwethezo olungatshintshiyo. Ndiye ndathetha nabo baye benza inguqulelo efanayo. Akukho namnye kubo owazisolayo. Ukukhangela uhlobo kwenza iPython ibe lulwimi olulunge ngakumbi ukuphuhlisa iiprojekthi ezinkulu kune "Python eqhelekileyo."

Bafundi abathandekayo! Ngaba usebenzisa ukujonga uhlobo kwiiprojekthi zakho zePython?

Indlela yokuchwetheza imigca ezizigidi ezi-4 zekhowudi yePython. Icandelo loku-3
Indlela yokuchwetheza imigca ezizigidi ezi-4 zekhowudi yePython. Icandelo loku-3

umthombo: www.habr.com

Yongeza izimvo