Making Python and Bash Friendship: Utgivelse av python-shell- og smart-env v-bibliotekene. 1.0.1

Ønsker dere alle en god dag!

Februar 29 2020 år offisiell mikroutgivelse av biblioteker fant sted smart-env и python-skall. For de som ikke vet, foreslår jeg at du leser den først første innlegg.

Kort fortalt inkluderer endringene fullføring av kommandoer, utvidede muligheter for å kjøre kommandoer, noen refaktorisering og feilrettinger.

For detaljer, se kat.

Hva er nytt i python-shell?

Jeg begynner med en gang med dessert.

Kommandofullføring

Enig - det er praktisk når editoren/IDE/terminalen ber deg om navnet på kommandoen, og noen ganger til og med anropsparametrene? Så python-shell gjør gradvis fremskritt i å tilby lignende funksjonalitet. På grunn av det faktum at feltene til Shell-klassen under panseret de facto ikke er feltene (den allestedsnærværende __getattr__), ble autofullføring også opprettet fra bunnen av (ved å overbelaste __dir__-metoden, henholdsvis). Autofullføring fungerer for tiden i BPython- og IPython-miljøer. Selvfølgelig skulle jeg gjerne sett integrasjon med mer ærverdige produkter som PyCharm, og implementeringsmuligheter studeres i denne retningen.

Legger til egenskaper

Som en del av utgivelsen mottok Shell-klassen en ny last_command-egenskap. Behovet for det oppsto fordi når et ShellException ble kastet av en kommando med en returkode som ikke var null, ble ikke Command-objektet returnert fra __call__()-kallet til kommandoobjektet. Nå er det en mulighet til å gjøre dette:

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

Listen over egenskaper til Command-objektet er også utvidet. Lagt til et feilfelt som returnerer kommandoutgangen til feilstrømmen.

Kjører kommandoer med ugyldige Python-navn

Nesten hvert system har minst ett program hvis navn ikke er egnet som identifikator i Python (for eksempel det velkjente 2to3-verktøyet). Ring henne med

Shell.2to3()

Hvis det ikke fungerer, vil ikke tolken slippe det gjennom.
Løsningen er å kalle kommandoen i en rundkjøringsmåte:

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

Det er verdt å merke seg at på samme måte kan du kjøre kommandoer som er gyldige fra tolkens synspunkt, noe som gir muligheten til å lage fleksible skript som f.eks.

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

Små forandringer

  • Metodene __repr__() og __str__() til Command-klasseobjektet er implementert, som nå produserer intuitive verdier (en kommando med henholdsvis parametere og dens stdout-utgang).
  • Mindre koderettinger.
  • Legge til testdekning, samt omorganisere eksisterende.
  • Legge til underprosess- og prosessklassene, hvis formål er å skape et ekstra abstraksjonsnivå når du arbeider med underprosessmodulen. Mest nødvendig for å eliminere kodeduplisering når du arbeider med Python 2/3, men kan potensielt gi andre bonuser også.

Hva er nytt i smart-env?

I motsetning til python-shell, har det vært færre endringer i smart-env-biblioteket. Årsaken til dette er enkel - mangel på ledig tid, hvor noen potensielle forbedringer (for eksempel autofullføring av miljøvariabler) ble flyttet til neste utgivelse.

Faktisk er følgende endringer gjort i biblioteket:

  • Mindre koderettinger.
  • Refaktorering.
  • Omorganisering og foredling av eksisterende tester.

Planer for neste utgivelser

python-shell-bibliotek

  • Legger til støtte for ikke-blokkerende kommandoanrop (parallellisering av utførelse).

smart-env-bibliotek

  • Implementering av autofullføring av miljøvariabler i ENV-klassen.
  • Støtte for in-operatøren for å sjekke eksistensen av en env-variabel.
  • Implementering av støtte for str()- og repr()-funksjonene for ENV-klassen.

Datoene for de neste utgivelsene vil bli ytterligere annonsert i følgende kommunikasjonskanaler:

Kilde: www.habr.com

Legg til en kommentar