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