Pythoni ja Bashi sõpruse loomine: python-shelli ja smart-env v teekide väljaandmine. 1.0.1

Head päeva kõigile!

Veebruar 29 2020 aastat toimus raamatukogude ametlik mikroväljaanne smart-env и python-shell. Neile, kes asjaga kursis pole, soovitan enne läbi lugeda esimene postitus.

Lühidalt öeldes hõlmavad muudatused käskude lõpetamist, laiendatud võimalusi käskude käivitamiseks, mõningaid ümbertegemist ja veaparandusi.

Üksikasju vt kat.

Mis on python-shellis uut?

Alustan kohe magustoiduga.

Käsu täitmine

Nõus - see on mugav, kui redaktor / IDE / terminal küsib teilt käsu nime ja mõnikord isegi kõne parameetreid? Nii et python-shell teeb sarnaste funktsioonide pakkumisel järk-järgult edusamme. Kuna kapoti all olevad Shelli klassi väljad on de facto mitte selle väljad (üldlevinud __getattr__), loodi ka automaatne täitmine nullist (vastavalt __dir__ meetodi ülekoormamisega). Automaatne täitmine töötab praegu BPythoni ja IPythoni keskkondades. Muidugi tahaksin näha integratsiooni auväärsemate toodetega nagu PyCharm ja juurutusvõimalusi selles suunas uuritakse.

Omaduste lisamine

Väljalaske osana sai Shelli klass uue atribuudi last_command. Vajadus selle järele tekkis seetõttu, et kui nullist erineva tagastuskoodiga käsuga visati ShellException, ei tagastatud Command objekti __call__() kutsest käsuobjektile. Nüüd on selleks võimalus:

try:
    command = Shell.touch('/foo.txt')
except ShellException:
    command = Shell.last_command

Samuti on laienenud käsuobjekti omaduste loend. Lisatud vigade väli, mis tagastab käsu väljundi veavoogu.

Kehtetute Pythoni nimedega käskude käivitamine

Peaaegu igas süsteemis on vähemalt üks programm, mille nimi ei sobi Pythonis identifikaatoriks (näiteks tuntud utiliit 2to3). Helista talle

Shell.2to3()

Kui see ei tööta, ei lase tõlk seda läbi.
Lahendus on käsu kutsumine ringteel:

Shell("2to3")  # возвращает объект команды

Väärib märkimist, et samamoodi saab käivitada tõlgi seisukohalt kehtivaid käske, mis jätab võimaluse luua paindlikke skripte nagu

cmd = "python{}".format(sys.version_info[0])
Shell(cmd)(*args, **kwargs)

Väiksemad muudatused

  • Rakendatud on Command klassi objekti meetodid __repr__() ja __str__(), mis toodavad nüüd intuitiivseid väärtusi (vastavalt parameetritega käsk ja selle stdout väljund).
  • Väikesed koodiparandused.
  • Testide katvuse lisamine, samuti olemasolevate ümberkorraldamine.
  • Alamprotsesside ja protsesside klasside lisamine, mille eesmärk on luua alamprotsessimooduliga töötamisel täiendav abstraktsioonitase. Peamiselt on see vajalik koodi dubleerimise kõrvaldamiseks Python 2/3-ga töötamisel, kuid sellel on potentsiaali pakkuda ka muid eeliseid.

Mis on smart-envis uut?

Erinevalt python-shellist on smart-env teegis tehtud vähem muudatusi. Põhjus on lihtne – vaba aja puudumine, mille jooksul mõned võimalikud täiustused (näiteks keskkonnamuutujate automaatne täitmine) viidi üle järgmisse versiooni.

Tegelikult on raamatukogus tehtud järgmised muudatused:

  • Väikesed koodiparandused.
  • Refaktoreerimine.
  • Olemasolevate testide ümberkorraldamine ja täiustamine.

Järgmiste väljaannete plaanid

python-shelli raamatukogu

  • Mitteblokeerivate käsukõnede toe lisamine (täitmise paralleelsus).

smart-env raamatukogu

  • Keskkonnamuutujate automaatse täitmise rakendamine ENV klassis.
  • In operaatori tugi env muutuja olemasolu kontrollimiseks.
  • Funktsioonide str() ja repr() toe juurutamine ENV klassi jaoks.

Järgmiste väljaannete kuupäevad tehakse teatavaks järgmistes suhtluskanalites:

Allikas: www.habr.com

Lisa kommentaar