Making Python and Bash Friendship: Frigivelse af python-shell- og smart-env v-bibliotekerne. 1.0.1

God dag alle sammen!

Februar 29 2020 år officiel mikro-udgivelse af biblioteker fandt sted smart-env и python-skal. For dem, der ikke ved det, foreslår jeg, at du læser den først første indlæg.

Kort sagt omfatter ændringerne fuldførelse af kommandoer, udvidede muligheder for at køre kommandoer, nogle refactoring og fejlrettelser.

For detaljer se kat.

Hvad er nyt i python-shell?

Jeg starter med det samme med dessert.

Kommandofuldførelse

Enig - det er praktisk, når editoren/IDE/terminalen beder dig om navnet på kommandoen og nogle gange endda opkaldsparametrene? Så python-shell gør gradvist fremskridt med at levere lignende funktionalitet. På grund af det faktum, at felterne i Shell-klassen under motorhjelmen de-facto ikke er dens felter (den allestedsnærværende __getattr__), blev autofuldførelse også skabt fra bunden (ved at overbelaste __dir__-metoden, henholdsvis). Autofuldførelse fungerer i øjeblikket i BPython- og IPython-miljøer. Selvfølgelig vil jeg gerne se integration med mere ærværdige produkter som PyCharm, og implementeringsmuligheder bliver undersøgt i denne retning.

Tilføjelse af egenskaber

Som en del af udgivelsen modtog Shell-klassen en ny last_command-egenskab. Behovet for det opstod, fordi når en ShellException blev kastet af en kommando med en returkode, der ikke var nul, blev Command-objektet ikke returneret fra __call__()-kaldet til kommandoobjektet. Nu er der mulighed for at gøre dette:

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

Listen over egenskaber for kommandoobjektet er også udvidet. Tilføjet et fejlfelt, der returnerer kommandooutputtet til fejlstrømmen.

Kører kommandoer med ugyldige Python-navne

Næsten hvert system har mindst ét ​​program, hvis navn ikke er egnet som identifikator i Python (f.eks. det velkendte 2to3-værktøj). Ring til hende med

Shell.2to3()

Hvis det ikke virker, slipper tolken det ikke igennem.
Løsningen er at kalde kommandoen i en rundkørsel:

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

Det er værd at bemærke, at man på samme måde kan køre kommandoer, der er gyldige fra tolkens synspunkt, hvilket giver mulighed for at lave fleksible scripts som f.eks.

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

Mindre ændringer

  • Metoderne __repr__() og __str__() i Command-klasseobjektet er blevet implementeret, som nu producerer intuitive værdier (en kommando med henholdsvis parametre og dens stdout-output).
  • Mindre koderettelser.
  • Tilføjelse af testdækning samt omorganisering af eksisterende.
  • Tilføjelse af underproces- og procesklasserne, hvis formål er at skabe et ekstra abstraktionsniveau, når man arbejder med delprocesmodulet. Mest nødvendigt for at eliminere kodeduplikering, når du arbejder med Python 2/3, men kan potentielt også give andre bonusser.

Hvad er nyt i smart-env?

I modsætning til python-shell har der været færre ændringer i smart-env-biblioteket. Årsagen til dette er enkel - mangel på fritid, hvor nogle potentielle forbedringer (for eksempel autofuldførelse af miljøvariabler) blev flyttet til den næste udgivelse.

Faktisk er der foretaget følgende ændringer på biblioteket:

  • Mindre koderettelser.
  • Refaktorering.
  • Reorganisering og forfining af eksisterende tests.

Planer for næste udgivelser

python-shell bibliotek

  • Tilføjelse af støtte til ikke-blokerende kommandokald (parallelisering af udførelse).

smart-env bibliotek

  • Implementering af autofuldførelse af miljøvariabler i ENV-klassen.
  • Understøttelse af in-operatøren til at kontrollere eksistensen af ​​en env-variabel.
  • Implementering af understøttelse af funktionerne str() og repr() for ENV-klassen.

Datoerne for de næste udgivelser vil blive annonceret yderligere i følgende kommunikationskanaler:

Kilde: www.habr.com

Tilføj en kommentar