ProHoster > Blog > uprava > Stvaranje prijateljstva Pythona i Basha: Izdanje biblioteka python-shell i smart-env v. 1.0.1
Stvaranje prijateljstva Pythona i Basha: Izdanje biblioteka python-shell i smart-env v. 1.0.1
Dobar dan svima!
29 veljače 2020 godine održano je službeno mikroizdanje knjižnica pametno okruženje и python-ljuska. Za one koji ne znaju, predlažem da ga prvo pročitaju prvi post.
Ukratko, promjene uključuju dovršetak naredbi, proširene mogućnosti za izvođenje naredbi, neke refaktore i ispravke grešaka.
Za detalje pogledajte kat.
Što je novo u python-shell-u?
Odmah ću početi s desertom.
Završetak naredbe
Slažete se - zgodno je kada uređivač/IDE/terminal traži naziv naredbe, a ponekad čak i parametre poziva? Dakle, python-shell postupno napreduje u pružanju slične funkcionalnosti. Zbog činjenice da polja klase Shell ispod haube de facto nisu njezina polja (sveprisutni __getattr__), automatsko dovršavanje također je stvoreno od nule (preopterećenjem metode __dir__). Automatsko dovršavanje trenutno radi u okruženjima BPython i IPython. Naravno, volio bih vidjeti integraciju s uglednijim proizvodima poput PyCharma, a mogućnosti implementacije se proučavaju u tom smjeru.
Dodavanje svojstava
Kao dio izdanja, klasa Shell dobila je novo svojstvo last_command. Potreba za tim se pojavila jer kada je ShellException izbačena naredbom s povratnim kodom koji nije nula, objekt naredbe nije vraćen iz poziva __call__() objektu naredbe. Sada postoji prilika da to učinite:
Popis svojstava objekta Command također je proširen. Dodano je polje pogrešaka koje vraća izlaz naredbe u tok pogrešaka.
Pokretanje naredbi s nevažećim Python nazivima
Gotovo svaki sustav ima barem jedan program čije ime nije prikladno kao identifikator u Pythonu (na primjer, dobro poznati uslužni program 2to3). Nazovi je sa
Shell.2to3()
Ako ne radi, prevoditelj ga neće pustiti.
Rješenje je pozvati naredbu zaobilazno:
Shell("2to3") # возвращает объект команды
Vrijedno je napomenuti da na isti način možete pokretati naredbe koje su važeće sa stajališta tumača, što ostavlja mogućnost stvaranja fleksibilnih skripti poput
Implementirane su metode __repr__() i __str__() objekta klase Command, koje sada proizvode intuitivne vrijednosti (naredbu s parametrima i njezin stdout izlaz).
Manji popravci koda.
Dodavanje pokrivenosti testovima, kao i reorganizacija postojećih.
Dodavanje klasa Subprocess i Process, čija je svrha stvoriti dodatnu razinu apstrakcije pri radu s modulom subprocess. Uglavnom je potrebno za uklanjanje dupliciranja koda pri radu s Python 2/3, ali potencijalno može pružiti i druge bonuse.
Što je novo u smart-env?
Za razliku od python-shell-a, bilo je manje promjena u biblioteci smart-env. Razlog za to je jednostavan - nedostatak slobodnog vremena, tijekom kojeg su neka potencijalna poboljšanja (na primjer, automatsko dovršavanje varijabli okoline) premještena u sljedeće izdanje.
Zapravo, u knjižnici su napravljene sljedeće promjene:
Manji popravci koda.
Refactoring.
Reorganizacija i dorada postojećih testova.
Planovi za sljedeća izdanja
biblioteka python-shell
Dodavanje podrške za neblokirajuće pozive naredbi (paralelizacija izvršenja).
biblioteka smart-env
Implementacija automatskog dovršavanja varijabli okoline u klasi ENV.
Podrška za in operator za provjeru postojanja env varijable.
Implementacija podrške za funkcije str() i repr() za klasu ENV.
Datumi sljedećih izdanja bit će dodatno objavljeni putem sljedećih komunikacijskih kanala: