ProHoster > Blog > Administrácia > Vytváranie priateľstva Python a Bash: Vydanie knižníc python-shell a smart-env v. 1.0.1
Vytváranie priateľstva Python a Bash: Vydanie knižníc python-shell a smart-env v. 1.0.1
Dobrý deň všetkým!
29 februára 2020 rok prebehlo oficiálne mikrovydanie knižníc smart-env и python-shell. Pre tých, ktorí to nevedia, odporúčam, aby ste si to najskôr prečítali prvý príspevok.
Stručne povedané, zmeny zahŕňajú dokončenie príkazov, rozšírené možnosti spúšťania príkazov, niektoré zmeny a opravy chýb.
Podrobnosti nájdete v kat.
Čo je nové v python-shell?
Začnem hneď dezertom.
Dokončenie príkazu
Súhlasíte - je vhodné, keď vás editor/IDE/terminál vyzve na zadanie názvu príkazu a niekedy aj parametrov volania? Takže python-shell postupne napreduje v poskytovaní podobnej funkcionality. Vzhľadom na to, že polia triedy Shell pod kapotou de-facto nie sú jej poliami (všadeprítomné __getattr__), bolo od základu vytvorené aj automatické dopĺňanie (preťažením metódy __dir__). Automatické dokončovanie momentálne funguje v prostrediach BPython a IPython. Samozrejme, rád by som videl integráciu s úctyhodnejšími produktmi, ako je PyCharm, a v tomto smere sa skúmajú možnosti implementácie.
Pridávanie vlastností
V rámci vydania dostala trieda Shell novú vlastnosť last_command. Potreba toho vznikla, pretože keď bola príkazom s nenulovým návratovým kódom vyvolaná výnimka ShellException, objekt Command sa nevrátil z volania __call__() do objektu príkazu. Teraz je príležitosť urobiť to:
Rozšíril sa aj zoznam vlastností objektu Command. Pridané chybové pole, ktoré vracia výstup príkazu do chybového prúdu.
Spúšťanie príkazov s neplatnými názvami Pythonu
Takmer každý systém má aspoň jeden program, ktorého názov nie je vhodný ako identifikátor v Pythone (napríklad známa utilita 2to3). Zavolajte jej s
Shell.2to3()
Ak to nefunguje, tlmočník to nepustí.
Riešením je zavolať príkaz kruhovým objazdom:
Shell("2to3") # возвращает объект команды
Stojí za zmienku, že rovnakým spôsobom môžete spúšťať príkazy, ktoré sú platné z pohľadu interpreta, čo ponecháva možnosť vytvárať flexibilné skripty ako napr.
Boli implementované metódy __repr__() a __str__() objektu triedy Command, ktoré teraz vytvárajú intuitívne hodnoty (príkaz s parametrami a jeho výstup stdout).
Drobné opravy kódu.
Pridanie testovacieho pokrytia, ako aj reorganizácia existujúcich.
Pridanie tried Subprocess a Process, ktorých účelom je vytvorenie ďalšej úrovne abstrakcie pri práci s modulom subprocess. Väčšinou je potrebný na odstránenie duplicity kódu pri práci s Pythonom 2/3, ale môže potenciálne poskytnúť aj ďalšie bonusy.
Čo je nové v smart-env?
Na rozdiel od python-shell bolo v knižnici smart-env menej zmien. Dôvod je jednoduchý – nedostatok voľného času, počas ktorého sa niektoré potenciálne vylepšenia (napríklad automatické dopĺňanie premenných prostredia) presunuli do ďalšieho vydania.
V knižnici boli vykonané tieto zmeny:
Drobné opravy kódu.
Refaktorovanie.
Reorganizácia a spresnenie existujúcich testov.
Plány na ďalšie vydania
knižnica python-shell
Pridanie podpory pre neblokujúce volania príkazov (paralelizácia vykonávania).
knižnica smart-env
Implementácia automatického dopĺňania premenných prostredia v triede ENV.
Podpora operátora in na kontrolu existencie premennej env.
Implementácia podpory funkcií str() a repr() pre triedu ENV.
Dátumy ďalších vydaní budú ďalej oznámené prostredníctvom nasledujúcich komunikačných kanálov: