ProHoster > Blog > administracja > Tworzenie przyjaźni Pythona i Basha: wydanie bibliotek Python-Shell i Smart-env v. 1.0.1
Tworzenie przyjaźni Pythona i Basha: wydanie bibliotek Python-Shell i Smart-env v. 1.0.1
оброго времени суток всем!
Luty 29 2020 roku odbyło się oficjalne mikrowydanie bibliotek inteligentne środowisko и powłoka Pythona. Tym, którzy nie są obeznani, radzę najpierw przeczytać pierwszy post.
Krótko mówiąc, zmiany obejmują uzupełnianie poleceń, rozszerzone możliwości uruchamiania poleceń, niektóre refaktoryzacje i poprawki błędów.
Szczegóły można znaleźć w kat.
Co nowego w powłoce Pythona?
Zacznę od razu od deseru.
Zakończenie polecenia
Zgadzam się - jest to wygodne, gdy edytor/IDE/terminal pyta o nazwę polecenia, a czasem nawet o parametry wywołania? Zatem powłoka Pythona stopniowo czyni postępy w zapewnianiu podobnej funkcjonalności. Z uwagi na to, że znajdujące się pod maską pola klasy Shell nie są de facto jej polami (wszechobecny __getattr__), autouzupełnianie również zostało stworzone od podstaw (odpowiednio poprzez przeciążenie metody __dir__). Autouzupełnianie działa obecnie w środowiskach BPython i IPython. Oczywiście chciałbym zobaczyć integrację z bardziej szanowanymi produktami, takimi jak PyCharm i badane są możliwości wdrożenia w tym kierunku.
Dodawanie właściwości
W ramach wydania klasa Shell otrzymała nową właściwość last_command. Było to potrzebne, ponieważ gdy polecenie z niezerowym kodem powrotu spowodowało zgłoszenie wyjątku ShellException, obiekt Command nie został zwrócony przez wywołanie __call__() do obiektu polecenia. Teraz jest ku temu okazja:
Rozszerzyła się także lista właściwości obiektu Command. Dodano pole błędów, które zwraca dane wyjściowe polecenia do strumienia błędów.
Uruchamianie poleceń z nieprawidłowymi nazwami języka Python
Prawie każdy system posiada przynajmniej jeden program, którego nazwa nie nadaje się jako identyfikator w Pythonie (przykładowo dobrze znane narzędzie 2to3). Zadzwoń do niej
Shell.2to3()
Jeśli to nie zadziała, tłumacz tego nie przepuści.
Rozwiązaniem jest wywołanie polecenia w okrężny sposób:
Shell("2to3") # возвращает объект команды
Warto zaznaczyć, że w ten sam sposób można uruchamiać polecenia ważne z punktu widzenia interpretera, co pozostawia możliwość tworzenia elastycznych skryptów typu
Zaimplementowano metody __repr__() i __str__() obiektu klasy Command, które obecnie generują intuicyjne wartości (odpowiednio polecenie z parametrami i jego standardowe wyjście).
Drobne poprawki kodu.
Dodawanie pokrycia testowego, a także reorganizacja istniejących.
Dodanie klas Subprocess i Process, których celem jest stworzenie dodatkowego poziomu abstrakcji podczas pracy z modułem subprocess. Głównie potrzebne do wyeliminowania duplikacji kodu podczas pracy z Pythonem 2/3, ale potencjalnie mogą zapewnić również inne bonusy.
Co nowego w smart-env?
W przeciwieństwie do Pythona-Shell, w bibliotece smart-env wprowadzono mniej zmian. Powód tego jest prosty – brak wolnego czasu, podczas którego niektóre potencjalne ulepszenia (np. autouzupełnianie zmiennych środowiskowych) zostały przeniesione do kolejnej wersji.
W rzeczywistości w bibliotece wprowadzono następujące zmiany:
Drobne poprawki kodu.
Refaktoryzacja.
Reorganizacja i udoskonalenie istniejących testów.