Fà Python è Bash Friendship: Liberazione di e librerie python-shell è smart-env v. 1.0.1

Bon ghjornu à tutti !

29 Februdu 2020 anni A micro-liberazione ufficiale di e biblioteche hè stata smart-env и python-shell. Per quelli chì ùn sò micca in u sapè, vi cunsigliu di leghje prima primu postu.

In breve, i cambiamenti includenu cumandante cumpletu, capacità ampliate per l'esecuzione di cumandamenti, qualchì refactoring è correzioni di bug.

Per i dettagli, vede cat.

Chì ci hè di novu in python-shell?

Cuminciaraghju subitu cù u dessert.

Cumandamentu cumpletu

D'accordu - hè cunvenutu quandu l'editore / IDE / terminal vi invita per u nome di u cumandamentu, è qualchì volta ancu i paràmetri di chjama? Allora python-shell progressa gradualmente in furnisce funziunalità simili. A causa di u fattu chì i campi di a classa Shell sottu u cappucciu sò de-facto micca i so campi (l'ubiquitous __getattr__), l'autocompletion hè statu ancu creatu da zero (per sopra à u metudu __dir__, rispettivamente). L'autocompletion funziona attualmente in ambienti BPython è IPython. Di sicuru, mi piacerebbe vede l'integrazione cù prudutti più venerabili cum'è PyCharm, è e pussibilità di implementazione sò studiate in questa direzzione.

Aghjunghje proprietà

Comu parte di a liberazione, a classe Shell hà ricevutu una nova pruprietà last_command. A nicissità hè stata perchè quandu una ShellException hè stata lanciata da un cumandamentu cù un codice di ritornu micca zero, l'ughjettu Command ùn hè micca tornatu da a chjama __call__() à l'ughjettu di cumandamentu. Avà ci hè l'uppurtunità di fà questu:

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

A lista di pruprietà di l'ughjettu Command hè ancu allargata. Aggiuntu un campu d'errore chì torna l'output di cumandamentu à u flussu di errore.

Esecuzione di cumandamenti cù nomi Python invalidi

Quasi ogni sistema hà almenu un prugramma chì u nome ùn hè micca adattatu cum'è identificatore in Python (per esempiu, a famosa utilità 2to3). Chjamala cun

Shell.2to3()

S'ellu ùn funziona micca, l'interprete ùn lasciarà micca.
A suluzione hè di chjamà u cumandamentu in una manera rotonda:

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

Hè da nutà chì in u listessu modu pudete eseguisce cumandamenti chì sò validi da u puntu di vista di l'interprete, chì lascia l'uppurtunità di creà script flexible cum'è

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

Cambiamenti minori

  • I metudi __repr__() è __str__() di l'ughjettu di classa Command sò stati implementati, chì avà pruducenu valori intuitivi (un cumandamentu cù parametri è u so stdout output, rispettivamente).
  • Correzioni di codice minori.
  • Aghjunghjendu a copertura di teste, è ancu riurganizà quelli esistenti.
  • Aghjunghjendu e classi Subprocess è Process, u scopu di quale hè di creà un livellu supplementu di astrazione quandu travaglia cù u modulu di sottoprocessu. Soprattuttu necessariu per eliminà a duplicazione di codice quandu travaglia cù Python 2/3, ma pò ancu furnisce altre bonus.

Chì ci hè di novu in smart-env?

A cuntrariu di python-shell, ci sò stati menu cambiamenti in a biblioteca smart-env. U mutivu di questu hè simplice - a mancanza di tempu liberu, durante quale alcune potenziali migliure (per esempiu, l'autocompletion di variabili di l'ambiente) sò stati spustati à a prossima versione.

In fatti, i seguenti cambiamenti sò stati fatti à a biblioteca:

  • Correzioni di codice minori.
  • Refactoring.
  • Riurganizazione è raffinamentu di e teste esistenti.

Piani per e prossime versioni

libreria python-shell

  • Agghiuncennu supportu per e chjama di cumandamenti senza bloccu (parallelizazione di l'esekzione).

biblioteca smart-env

  • Implementazione di l'autocompletion di variabili di l'ambiente in a classa ENV.
  • Supportu per l'operatore in per verificà l'esistenza di una variabile env.
  • Implementazione di supportu per e funzioni str() è repr() per a classa ENV.

E date di e prossime versioni seranu ulteriormente annunziate in i seguenti canali di cumunicazione:

Source: www.habr.com

Add a comment