Ny lalana mankany amin'ny fanoratana sora-baventy 4 tapitrisa andalana Python. Fizarana 3

Atolotray ny sainao ny ampahany fahatelo amin'ny fandikan-teny momba ny lalana nalehan'i Dropbox rehefa nampihatra rafitra fanamarinana karazana ho an'ny kaody Python.

Ny lalana mankany amin'ny fanoratana sora-baventy 4 tapitrisa andalana Python. Fizarana 3

β†’ Fizarana teo aloha: voalohany ΠΈ ny faharoa

Mahatratra 4 tapitrisa andalana misy kaody voatendry

Fanamby lehibe iray hafa (ary ny olana faharoa mahazatra indrindra amin'ireo natao fanadihadiana anatiny) dia ny fampitomboana ny habetsaky ny kaody voarakotry ny fisavana karazana ao amin'ny Dropbox. Nanandrana fomba maro hamahana ity olana ity izahay, manomboka amin'ny fampitomboana ara-boajanahary ny haben'ny codebase voatendry ho amin'ny fifantohana ny ezaka ataon'ny ekipa mypy amin'ny fanatsoahan-kevitra karazana mandeha ho azy static sy mavitrika. Tamin'ny farany, toa tsy nisy tetika fandresena tsotra, saingy afaka nahatratra ny fitomboana haingana tamin'ny habetsaky ny fehezan-dalΓ na misy annotated izahay tamin'ny fampifangaroana fomba maro.

Vokatr'izany, ny tahiry Python lehibe indrindra (miaraka amin'ny kaody backend) dia manana tsipika efa ho 4 tapitrisa misy kaody misy annotated. Vita tao anatin'ny telo taona teo ho eo ny asa fanoratana code static. Mypy izao dia manohana karazana tatitra momba ny fandrakofana kaody izay manamora ny fanaraha-maso ny fivoaran'ny fanoratana. Indrindra indrindra, afaka mamokatra tatitra momba ny kaody misy tsy mazava amin'ny karazany isika, ohatra, ny fampiasana mazava karazana iray. Any amin'ny fanamarihana izay tsy azo hamarinina, na amin'ny zavatra toy ny fanafarana tranomboky an'ny antoko fahatelo izay tsy misy fanamarihana karazana. Ao anatin'ny tetikasa hanatsarana ny fahamarinan'ny fanamarinana karazana ao amin'ny Dropbox, dia nandray anjara tamin'ny fanatsarana ny famaritana karazana (antsoina hoe stub files) izahay ho an'ny tranomboky loharano misokatra malaza sasany ao amin'ny tahiry Python afovoany. milina fanoratana.

Nametraka (ary nanara-penitra ao amin'ny PEPs manaraka) ny endri-javatra vaovao amin'ny rafitra karazana izay mamela karazana mazava kokoa ho an'ny lamina Python manokana. Ohatra iray miavaka amin'izany ny TypeDict, izay manome karazana diksionera mitovy amin'ny JSON izay manana fanalahidin'ny tady raikitra, samy manana sanda mitovy amin'ny karazana azy. Hanohy hanitarana ny rafitra karazana izahay. Ny dingana manaraka dia azo inoana fa ny fanatsarana ny fanohanana ny fahaiza-manaon'i Python.

Ny lalana mankany amin'ny fanoratana sora-baventy 4 tapitrisa andalana Python. Fizarana 3
Isan'ny andalana misy kaody misy fanamarihana: server

Ny lalana mankany amin'ny fanoratana sora-baventy 4 tapitrisa andalana Python. Fizarana 3
Isan'ny andalana misy kaody misy fanamarihana: mpanjifa

Ny lalana mankany amin'ny fanoratana sora-baventy 4 tapitrisa andalana Python. Fizarana 3
Total isan'ny andalana misy kaody misy annotated

Ity misy topimaso momba ny endri-javatra lehibe indrindra nataonay mba hampitomboana ny habetsaky ny kaody misy fanamarihana ao amin'ny Dropbox:

Henjana annotation. Nampitomboinay tsikelikely ny fepetra takiana amin'ny hamafin'ny fametahana kaody vaovao. Nanomboka tamin'ny toro-hevitra momba ny linter izahay izay nanolo-kevitra ny hanisy fanamarihana amin'ny rakitra efa misy fanamarihana. Mitaky fanamarihana karazana amin'ny rakitra Python vaovao sy amin'ny ankamaroan'ny rakitra efa misy izahay izao.

Manoratra tatitra. Mandefa tatitra isan-kerinandro ho an'ny ekipa momba ny haavon'ny fanoratana ao amin'ny kaody misy azy ireo izahay ary manome torohevitra momba izay tokony hosoratana voalohany.

Popularization ny mypy. Miresaka momba ny mypy izahay amin'ny hetsika ary miresaka amin'ny ekipa hanampy azy ireo hanomboka amin'ny karazana fanamarihana.

fitsapan-kevitra. Manao fanadihadian'ny mpampiasa tsindraindray izahay hamantarana olana lehibe. Vonona ny handeha lavitra isika amin'ny famahana ireo olana ireo (na ny famoronana fiteny vaovao hanafainganana ny mypy aza!).

Fampisehoana. Nanatsara ny fampandehanana ny mypy izahay tamin'ny fampiasana ny daemon sy mypyc. Natao izany mba hanamaivanana ny fahasahiranana mipoitra mandritra ny fizotran'ny fanamarihana, ary mba hahafahana miasa miaraka amin'ny kaody marobe.

Fampidirana amin'ny tonian-dahatsoratra. Nanangana fitaovana izahay hanohanana ny fampandehanana mypy amin'ny mpanonta izay malaza amin'ny Dropbox. Anisan'izany ny PyCharm, Vim ary VS Code. Nanamora ny fizotran'ny fanondroana ny kaody izany ary nanamarina ny fampiasany. Ireo karazana hetsika ireo dia mahazatra rehefa manisy fanamarihana kaody efa misy.

Fanadihadiana static. Namorona fitaovana hanatsoaka sonia fiasana amin'ny fampiasana fitaovana famakafakana static izahay. Ity fitaovana ity dia tsy afaka miasa afa-tsy amin'ny toe-javatra somary tsotra, saingy nanampy anay hampitombo ny fandrakofana karazana kaody tsy misy ezaka be.

Fanohanana ireo tranomboky fahatelo. Maro amin'ireo tetikasanay no mampiasa ny fitaovana SQLAlchemy. Manararaotra ny fahaiza-manaon'ny Python izay tsy azon'ny karazana PEP 484 atao mivantana. Izahay, mifanaraka amin'ny PEP 561, dia namorona ny rakitra stub mifanaraka amin'izany ary nanoratra plugin ho an'ny mypy (loharano misokatra), izay manatsara ny fanohanana SQLAlchemy.

Fahasahiranana sendra anay

Tsy mora ho anay ny lalana mankany amin'ny andalana 4 tapitrisa misy kaody voatendry. Tamin'ity lalana ity dia nifanena tamin'ny lavaka maro izahay ary nanao fahadisoana maro. Ireto ny sasany amin'ireo olana sedrainay. Manantena izahay fa ny fitantarana momba azy ireo dia hanampy ny hafa hisoroka olana mitovy amin’izany.

Tsy hita ny rakitra. Nanomboka ny asanay tamin'ny fijerena rakitra kely fotsiny izahay. Izay rehetra tsy tafiditra ao anatin'ireo rakitra ireo dia tsy voamarina. Nampidirina tao amin'ny lisitry ny scan ny rakitra rehefa niseho tao ireo fanamarihana voalohany. Raha misy zavatra nafarana avy amin'ny maodely iray ivelan'ny sehatry ny fanamarinana, dia niresaka momba ny fiasana amin'ny soatoavina toy ny Any, izay tsy nosedraina mihitsy. Izany dia nitarika ho amin'ny fatiantoka lehibe amin'ny fanoratana, indrindra tamin'ny dingana voalohan'ny fifindra-monina. Ity fomba fiasa ity dia niasa tsara hatreto, na dia toe-javatra mahazatra aza dia ny fampidirana rakitra amin'ny sehatry ny famerenana dia manambara olana any amin'ny faritra hafa amin'ny codebase. Amin'ny tranga ratsy indrindra, rehefa natambatra faritra roa mitoka-monina ny fehezan-dalΓ na, izay, tsy miankina amin'ny tsirairay, karazana efa voamarina, dia hita fa ny karazana faritra ireo dia tsy mifanaraka amin'ny tsirairay. Izany dia nitarika ho amin'ny filΓ na fanovana maro tamin'ireo fanamarihana. Rehefa manao jery todika isika izao dia tsikaritra fa tokony nampiana ireo maody famakiam-boky fototra ho an'ny faritra fisavana karazana mypy haingana kokoa. Izany dia hahatonga ny asantsika ho azo antoka kokoa.

Manorata code taloha. Rehefa nanomboka izahay dia nanana andalana 4 tapitrisa eo ho eo amin'ny code Python efa misy. Mazava fa tsy asa mora ny fanoratana an-tsoratra an'io fehezan-dalΓ na rehetra io. Namorona fitaovana antsoina hoe PyAnnotate izahay izay afaka manangona fampahalalana momba ny karazana rehefa mandeha ny fitsapana ary afaka manampy fanamarihana karazana amin'ny kaody mifototra amin'ny fampahalalana nangonina. Na izany aza, tsy nahatsikaritra ny fampiasana ity fitaovana ity izahay. Niadana ny fanangonam-baovao momba ny karazana, ary matetika no nitaky fanitsiana tanana maro ny fanontana ho azy. Nieritreritra ny hampandeha ho azy ity fitaovana ity izahay isaky ny mandinika ny kaody, na manangona fampahalalana karazana mifototra amin'ny famakafakana ny habetsaky ny fangatahana tambajotra tena izy, saingy nanapa-kevitra ny tsy hanao izany izahay satria mety hampidi-doza loatra ny fomba iray.

Vokatr'izany dia azo marihina fa ny ankamaroan'ny kaody dia nosoratan'ny tompony tamin'ny tanana. Mba hitarihana an'io dingana io amin'ny lalana marina, dia manomana tatitra momba ny maodely sy ny asa tena manan-danja izay mila asiana fanamarihana. Ohatra, zava-dehibe ny manome fanamarihana karazana ho an'ny maody tranomboky ampiasaina amin'ny toerana an-jatony. Saingy ny serivisy taloha izay soloina vaovao dia tsy dia zava-dehibe loatra amin'ny fanamarihana. Manandrana mampiasa famakafakana static ihany koa izahay mba hamoronana karazana fanamarihana momba ny kaody lova.

Fanafarana cyclic. Etsy ambony, niresaka momba ny fanafarana cyclic (ireo "fiankinan-doha") aho, izay nanasarotra ny fanafainganana ny mypy ny fisian'izany. Tsy maintsy niasa mafy ihany koa izahay mba hanohanana ny mypy ireo karazana fomba fiteny ateraky ny fanafarana cyclic ireo. Vao haingana izahay no nahavita tetikasa fanavaozana rafitra lehibe izay namaha ny ankamaroan'ny olana momba ny mypy momba ny fanafarana boribory. Ireo olana ireo raha ny marina dia niainga tamin'ny andro voalohan'ny tetikasa, niverina avy any Alore, ny fiteny fanabeazana izay nifantohan'ny tetikasa mypy tany am-boalohany. Ny syntax Alore dia manamora ny famahana olana amin'ny baiko fanafarana cyclic. Ny mypy maoderina dia nandova fetra sasany tamin'ny fampiharana azy teo aloha sy tsotra (izay mety tsara ho an'i Alore). Ny Python dia manasarotra ny miasa amin'ny fanafarana boribory, indrindra satria tsy mazava ny fomba fiteny. Ohatra, ny asa fanendrena dia mety hamaritra karazana alias. Ny Mypy dia tsy afaka mamantatra zavatra toy izany foana raha tsy efa voakarakara ny ankamaroan'ny tsipika fanafarana. Tsy nisy fisalasalana toy izany tany Alore. Ny fanapahan-kevitra ratsy natao tany am-piandohan'ny fivoaran'ny rafitra dia mety tsy hahagaga ny mpandrindra taona maro aty aoriana.

Vokatra: ny lalana mankany amin'ny andalana 5 tapitrisa kaody sy ny faravodilanitra vaovao

Lasa lavitra ny tetikasa mypy - avy amin'ny prototype tany am-boalohany ka hatramin'ny rafitra iray izay mifehy tsipika 4 tapitrisa karazana kaody famokarana. Rehefa nivoatra ny mypy dia nohavaozina ny karazana toro-hevitra Python. Amin'izao andro izao, misy tontolo iainana matanjaka nivoatra manodidina ny fanoratana kaody Python. Manana toerana ho an'ny fanohanan'ny tranomboky izy io, misy fitaovana fanampiny ho an'ny IDE sy ny tonian-dahatsoratra, manana rafitra fanaraha-maso karazana maromaro, izay samy manana ny tombony sy ny lafy ratsiny.

Na dia efa nomena ao amin'ny Dropbox aza ny fanamarinana karazana, mino aho fa mbola ao anatin'ny andro voalohan'ny fanoratana kaody Python isika. Heveriko fa hivoatra sy hivoatra hatrany ny teknolojia fanamarinana karazana.

Raha mbola tsy nampiasa fanamarinana karazana ianao amin'ny tetikasa Python midadasika, dia fantaro fa izao no fotoana tena tsara hanombohana mifindra amin'ny fanoratana static. Niresaka tamin’ireo nanao tetezamita mitovy amin’izany aho. Tsy nisy nanenina tamin’izany izy ireo. Ny fanaraha-maso karazana dia mahatonga an'i Python ho fiteny izay mety kokoa amin'ny famolavolana tetikasa lehibe noho ny "Python mahazatra."

Ry mpamaky malala! Mampiasa fanamarinana karazana ve ianao amin'ny tetikasa Python anao?

Ny lalana mankany amin'ny fanoratana sora-baventy 4 tapitrisa andalana Python. Fizarana 3
Ny lalana mankany amin'ny fanoratana sora-baventy 4 tapitrisa andalana Python. Fizarana 3

Source: www.habr.com

Add a comment