Seome Python ja Bash: python-shell ja smart-env raamatukogude vÀljaanne v. 1.0.1

Tere, kÔigile!

29. veebruar 2020 toimus ametlik mikro-vÀljalase raamatukogudest smart-env ja python-shell. Neile, kes pole kursis, soovitan eelnevalt lugeda esimest postitust.

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_command

Samuti 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 objekti

Tasub 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:

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster