Tere, kÔigile!
29. veebruar 2020 toimus ametlik mikro-vÀljalase raamatukogudest smart-env ja python-shell. Neile, kes pole kursis, soovitan eelnevalt lugeda .
LĂŒhidalt öeldes, muudatused hĂ”lmavad kĂ€su automaatset tĂ€iendamist, kĂ€su kĂ€ivitamise vĂ”imaluste laiendamist, natuke refaktoreerimist ja veaparandusi.
Detailide jaoks palun vaadake allapoole.
Mis on uut python-shellis?
Alustan kohe magustoidust.
KÀsu automaatne tÀiendamine
Ostate nĂ”ustuda, et see on mugav, kui redaktor/IDE/terminal pakub vĂ€lja kĂ€su nime ja mĂ”nikord isegi vĂ€ljakutse parameetreid? Nii et python-shell teeb aeglaselt edusamme sellise funktsionaalsuse tagamisel. Kuna Shell'i klassi vĂ€ljad ei ole tegelikult tema vĂ€ljad (igale poole ulatuv __getattr__), on automaatne tĂ€iendamine loodud samuti nullist (ĂŒlekoormates, vastavalt, meetodit __dir__). Praegu töötab automaatne tĂ€iendamine keskkondades BPython ja IPython. Loomulikult tahan nĂ€ha integreerimist tuntumate toodetega nagu PyCharm ja selles suunas uuritakse teostamise vĂ”imalusi.
Omaduste lisamine
Uue versiooniga sai Shell klass uut omadust last_command. Selle vajadus tekkis, kuna ShellExceptioni genereerimisel kĂ€suga, mille vĂ€ljakutse kood oli mitte null, ei tagastatud Command objekti __call__() kutsumisel. NĂŒĂŒd on vĂ”imalik toimida jĂ€rgmiselt:
try:
command = Shell.touch('/foo.txt')
except ShellException:
command = Shell.last_commandSamuti on laienenud Command objekti omaduste loetelu. Lisatud on field errors, mis tagastab kÀsu vÀljundi veavoolu.
KÀskude kÀivitamine Pythonile sobimatute nimedega
Peaaegu igas sĂŒsteemis on vĂ€hemalt ĂŒks programm, mille nimi ei sobi Pythonis identifikaatoriks (nĂ€iteks tuntud utiliit 2to3). Selle vĂ€ljakutsumine
Shell.2to3() ei Ă”nnestu â tĂ”lgendaja ei lase lĂ€bi.
Lahendus on kÀivitada kÀsk kaudsete meetodite kaudu:
Shell("2to3") # tagastab kÀsu objektiTasub mÀrkida, et sama moodi saab kÀivitada ka tÔlgendaja seisukohalt kehtivaid kÀske, mis jÀtab vÔimaluse teha paindlikke skripte, nagu
cmd = "python{}".format(sys.version_info[0])
Shell(cmd)(*args, **kwargs)VĂ€iksemad muudatused
- Klassi Command objekti __repr__() ja __str__() meetodid on nĂŒĂŒd rakendatud ning need tagastavad loogilisi vÀÀrtusi (vastavalt kĂ€su ja selle stdout vĂ€ljundi).
- VĂ€ikesed koodimuudatused.
- TĂ”kete katmine, samuti olemasolevate ĂŒmberkorraldamine.
- Subprocess ja Process klasside lisamine, mille eesmÀrk on luua tÀiendav abstraheerimise tase subprocess mooduli kasutamisel. Peamiselt on see vajalik, et vÀhendada koodi kordusi Python 2/3 kasutamisel, kuid see vÔib pakkuda ka muid eeliseid.
Mis on uut smart-envis?
Erinevalt python-shellist on smart-env teek saanud vĂ€hem muudatusi. PĂ”hjus on lihtne â aegade puudus, mille tĂ”ttu mĂ”ned potentsiaalsed tĂ€iustused (nĂ€iteks keskkonnamuutujate automaatne tĂ€iendamine) on lĂŒkatud jĂ€rgmisse vĂ€ljalaskesse.
Tegelikult on teekis tehtud jÀrgmised muudatused:
- VĂ€ikesed koodimuudatused.
- Refaktoreerimine.
- Olemasolevate testide ĂŒmberkorraldamine ja tĂ€iustamine.
Plaanimis jÀrgmiste vÀljalaskede jaoks.
Teek python-shell
- Toetuse lisamine mittetÔkestavatele kÀskude kutsungitele (paralleelne tÀitmine).
Raamatukogu smart-env
- Keskkonnamuutujate automaatse tÀiendamise rakendamine ENV klassis.
- Tugi in operaatori toetust keskkonnaparameetri olemasolu kontrollimiseks.
- ENV klassi str() ja repr() funktsioonide toe rakendamine.
Edasi kuulutatakse jÀrgmiste vÀljaannete kuupÀevad jÀrgmistes suhtluskanalites:
- VĂ€rskendusega selles artiklis.
Allikas: habr.com
