ProHoster > Blog > Adminisztráció > Python és Bash barátság létrehozása: A python-shell és smart-env v könyvtárak kiadása. 1.0.1
Python és Bash barátság létrehozása: A python-shell és smart-env v könyvtárak kiadása. 1.0.1
Jó napot mindenkinek!
29 február 2020 év megtörtént a könyvtárak hivatalos mikrokiadása smart-env и python-shell. Aki nem ismeri, annak javaslom, hogy először olvassa el első poszt.
Röviden, a változtatások közé tartozik a parancsok befejezése, a parancsok futtatásának bővített lehetőségei, néhány átalakítás és hibajavítások.
A részletekért lásd a kat.
Mi az új a python-shellben?
Mindjárt a desszerttel kezdem.
A parancs teljesítése
Egyetértek – kényelmes, ha a szerkesztő/IDE/terminál bekéri a parancs nevét, és néha még a hívási paramétereket is? Tehát a python-shell fokozatosan halad a hasonló funkciók biztosítása terén. Tekintettel arra, hogy a Shell osztály motorháztető alatti mezői valójában nem a mezői (a mindenütt jelenlévő __getattr__), az automatikus kiegészítés is a semmiből jött létre (a __dir__ metódus túlterhelésével). Az automatikus kiegészítés jelenleg BPython és IPython környezetben működik. Természetesen szeretném látni az integrációt olyan tiszteletreméltó termékekkel, mint a PyCharm, és a megvalósítási lehetőségeket ez irányban tanulmányozzák.
Tulajdonságok hozzáadása
A kiadás részeként a Shell osztály új last_command tulajdonságot kapott. Erre azért volt szükség, mert amikor egy ShellException-t dobott egy nem nulla visszatérési kódú parancs, akkor a Command objektum nem került vissza a __call__() hívásból a parancsobjektumhoz. Most erre van lehetőség:
A Command objektum tulajdonságainak listája is bővült. Hozzáadott egy hibamezőt, amely visszaadja a parancs kimenetét a hibafolyamba.
Parancsok futtatása érvénytelen Python-nevekkel
Szinte minden rendszerben van legalább egy program, amelynek a neve nem alkalmas azonosítóként a Pythonban (például a jól ismert 2to3 segédprogram). Hívd fel vele
Shell.2to3()
Ha nem működik, a tolmács nem engedi át.
A megoldás a parancs körkörös meghívása:
Shell("2to3") # возвращает объект команды
Érdemes megjegyezni, hogy ugyanígy futtathatók az értelmező szempontjából érvényes parancsok, ami lehetőséget ad rugalmas szkriptek létrehozására, mint pl.
Megvalósult a Command osztály objektum __repr__() és __str__() metódusa, amelyek immár intuitív értékeket állítanak elő (egy parancs paraméterekkel és annak stdout kimenetével).
Kisebb kódjavítások.
Tesztlefedettség hozzáadása, valamint a meglévők átszervezése.
A Subprocess és Process osztályok hozzáadása, amelyek célja egy további absztrakciós szint létrehozása az alfolyamat modullal végzett munka során. Leginkább a kódduplikáció kiküszöbölésére van szükség a Python 2/3-mal való munka során, de más előnyökkel is járhat.
Mi az új smart-env?
A python-shell-lel ellentétben kevesebb változás történt a smart-env könyvtárban. Ennek egyszerű oka van - a szabadidő hiánya, amely során néhány lehetséges fejlesztés (például a környezeti változók automatikus kiegészítése) átkerült a következő kiadásba.
Valójában a következő változások történtek a könyvtárban:
Kisebb kódjavítások.
Refaktorálás.
A meglévő tesztek átszervezése és finomítása.
A következő kiadások tervei
python-shell könyvtár
Támogatás hozzáadása a nem blokkoló parancshívásokhoz (végrehajtás párhuzamosítása).
smart-env könyvtár
Környezeti változók automatikus kiegészítésének megvalósítása az ENV osztályban.
Az in operátor támogatása az env változó meglétének ellenőrzéséhez.
Az ENV osztály str() és repr() függvényeinek támogatásának megvalósítása.
A következő megjelenések időpontjait az alábbi kommunikációs csatornákon közöljük: