ProHoster > Blog > podávání > Vytvoření přátelství Python a Bash: Vydání knihoven python-shell a smart-env v. 1.0.1
Vytvoření přátelství Python a Bash: Vydání knihoven python-shell a smart-env v. 1.0.1
Dobrý den všem!
29 února 2020 rok proběhlo oficiální mikrovydání knihoven smart-env и python-shell. Pro ty, kteří to neznají, doporučuji si to nejprve přečíst první příspěvek.
Stručně řečeno, změny zahrnují dokončování příkazů, rozšířené možnosti spouštění příkazů, některé refaktory a opravy chyb.
Podrobnosti viz kat.
Co je nového v python-shell?
Začnu hned dezertem.
Dokončení příkazu
Souhlasíte - je to pohodlné, když vás editor/IDE/terminál vyzve k zadání názvu příkazu a někdy i parametrů volání? Takže python-shell postupně dělá pokroky v poskytování podobné funkce. Vzhledem k tomu, že pole třídy Shell pod kapotou de-facto nejsou jejími poli (všudypřítomný __getattr__), vzniklo také automatické doplňování od nuly (přetížením metody __dir__). Automatické dokončování aktuálně funguje v prostředích BPython a IPython. Samozřejmě bych rád viděl integraci s úctyhodnějšími produkty, jako je PyCharm, a v tomto směru se studují možnosti implementace.
Přidání vlastností
V rámci vydání získala třída Shell novou vlastnost last_command. Potřeba toho vznikla, protože když byla příkazem s nenulovým návratovým kódem vyvolána výjimka ShellException, z volání __call__() do objektu příkazu nebyl vrácen objekt Command. Nyní je příležitost to udělat:
Rozšířil se také seznam vlastností objektu Command. Přidáno pole chyb, které vrací výstup příkazu do proudu chyb.
Spouštění příkazů s neplatnými názvy Pythonu
Téměř každý systém má alespoň jeden program, jehož jméno není vhodné jako identifikátor v Pythonu (například známá utilita 2to3). Zavolej jí s
Shell.2to3()
Pokud to nefunguje, tlumočník to nepustí.
Řešením je zavolat příkaz kruhovým objezdem:
Shell("2to3") # возвращает объект команды
Stojí za zmínku, že stejným způsobem můžete spouštět příkazy, které jsou platné z pohledu interpreta, což ponechává možnost vytvářet flexibilní skripty jako
Byly implementovány metody __repr__() a __str__() objektu třídy Command, které nyní produkují intuitivní hodnoty (příkaz s parametry a jeho výstup stdout).
Drobné opravy kódu.
Přidání testovacího pokrytí a také reorganizace stávajících.
Přidání tříd Subprocess a Process, jejichž účelem je vytvořit další úroveň abstrakce při práci s modulem subprocess. Většinou je potřeba k odstranění duplikace kódu při práci s Pythonem 2/3, ale může potenciálně poskytovat i další bonusy.
Co je nového ve smart-env?
Na rozdíl od python-shell bylo v knihovně smart-env méně změn. Důvod je jednoduchý – nedostatek volného času, během kterého byla některá potenciální vylepšení (například automatické doplňování proměnných prostředí) přesunuta do dalšího vydání.
Ve skutečnosti byly v knihovně provedeny následující změny:
Drobné opravy kódu.
Refaktoring.
Reorganizace a zpřesnění stávajících testů.
Plány na další vydání
python-shell knihovna
Přidání podpory pro neblokující volání příkazů (paralelizace provádění).
knihovna smart-env
Implementace automatického doplňování proměnných prostředí ve třídě ENV.
Podpora operátoru in pro kontrolu existence proměnné env.
Implementace podpory funkcí str() a repr() pro třídu ENV.
Data dalších vydání budou dále oznámena v následujících komunikačních kanálech: