Bringing Together Python and Bash: release of the python-shell and smart-env libraries v. 1.0.1

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 esimest postitust.

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_command

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

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

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster