Tere kÔigile!
29. veebruar 2020 toimus ametlik mikro-vÀljalase raamatukogudest smart-env ja python-shell. Neile, kes ei ole kursis, soovitan eelnevalt lugeda .
KokkuvÔtteks, muudatuste seas on automaatne kÀsu tÀiendamine, kÀskude kÀivitamise vÔimaluste laiendamine, veidi refaktooringut ja bugfix-e.
Detailide jaoks palun vaadake alla.
Mis on uut python-shellis?
Alustan kohe magustoidust.
KÀskude automaatne tÀiendamine
Noh, on ju mugav, kui redigeerija/IDE/terminal soovitab kĂ€su nime ja mĂ”nikord ka kutsumise parameetreid? Nii et python-shell liigub aeglaselt sellise funktsionaalsuse tagamise suunas. Arvestades, et klassi Shell vĂ€ljad ei ole de facto selle vĂ€ljad (kĂ”ige kohta sisenev __getattr__), on automaatne tĂ€iendamine loodud samuti nullist (vastava meetodi __dir__ ĂŒlekoormamise teel). Praegu töötab automaatne tĂ€iendamine keskkondades BPython ja IPython. Muidugi, tahaks nĂ€ha integreerimist tuntumate toodetega nagu PyCharm, ja selles suunas uuritakse teostamise vĂ”imalusi.
Omaduste lisamine
VĂ€ljalase klass Shell sai uue omaduse last_command. Selle vajadus tekkis sellest, et ShellExceptioni genereerimisel mittetĂŒhja vĂ€ljamise koodiga ei tagastatud Commandi objekti meetodi __call__() kaudu. NĂŒĂŒd on vĂ”imalik teha jĂ€rgnevat:
try:
command = Shell.touch('/foo.txt')
except ShellException:
command = Shell.last_commandSamuti on laienenud Command objekti omaduste loetelu. Lisatud on vÀli errors, mis tagastab kÀsu vÀljundi veavoolu.
KÀskude kÀivitamine Pythoniga mittesobivate nimedega
Peaaegu igas sĂŒsteemis on vĂ€hemalt ĂŒks programm, mille nimi ei sobi identifikaatoriks Pythonis (nĂ€iteks tuntud utiliit 2to3). Kutsuda seda ĂŒles
Shell.2to3() ei Ă”nnestu â interpreter ei lase lĂ€bi.
Lahendus on kutsuda kÀsk ringteed pidi:
Shell("2to3") # tagastab kÀsu objektiOluline on mÀrkida, et sama moodi saab kÀivitada ka valide kÀsud interpreteri vaatepunktist, mis vÔimaldab paindlike skriptide loomist nagu
cmd = "python{}".format(sys.version_info[0])
Shell(cmd)(*args, **kwargs)VĂ€ikesed muudatused
- Olen ellu viinud meetodid __repr__() ja __str__() klassi Command objektis, mis nĂŒĂŒd teevad arusaadavaid vĂ€ljundeid (kĂ€sk koos parameetritega ja selle stdout vĂ€ljund vastavalt).
- VĂ€ikesed parandused koodis.
- Testide katte lisamine ning olemasolevate ĂŒmberkorraldamine.
- Subprocess ja Process klasside lisamine, mille eesmÀrk on luua tÀiendav abstraktsioonitasand subprocess mooduliga töötamisel. Peamiselt on see vajalik, et eliminida koodi kordusi Python 2/3 töötamisel, kuid see vÔib potentsiaalselt anda ka muid eeliseid.
Mis on uut smart-env-is?
Erinevalt python-shell-ist on smart-env teegis toimunud vĂ€hem muudatusi. PĂ”hjus on lihtne â vaba aja puudumine, mille tĂ”ttu mĂ”ned potentsiaalsed tĂ€iustused (nĂ€iteks keskkonnamuutujate automaatne tĂ€iendamine) on edasi lĂŒkatud jĂ€rgnevatesse vĂ€ljaannetesse.
Tegelikult on teegis tehtud jÀrgmised muudatused:
- VĂ€ikesed parandused koodis.
- Refaktoreerimine.
- Olemasolevate testide ĂŒmberkorraldamine ja tĂ€iustamine.
Plaane jÀrgnevateks vÀljaanneteks
Python-shell teek
- Toetamine mitteblokeerivate kÀsu kutsungite jaoks (tÀitmise paralelizatsioon).
Raamatukogu smart-env
- Keskkonnamuutujate automaatse tÀiendamise rakendamine ENV klassis.
- Toetamine operaatori in kasutamiseks env-muutuja olemasolu kontrollimiseks.
- Str() ja repr() funktsioonide toe rakendamine ENV klassile.
JÀrgmiste vÀljaannete kuupÀevade kohta antakse tÀiendavalt teada jÀrgmistes suhtluskanaalides:
- Artiklis toimuva uuenduse kaudu.
Allikas: habr.com
