ProHoster > Blogi > antaminen > Python- ja Bash-ystävyyden luominen: Python-shell- ja smart-env v -kirjastojen julkaisu. 1.0.1
Python- ja Bash-ystävyyden luominen: Python-shell- ja smart-env v -kirjastojen julkaisu. 1.0.1
Hyvää päivää kaikille!
Helmikuu 29 2020 vuotta kirjastojen virallinen mikrojulkaisu tapahtui smart-env и python-kuori. Niille, jotka eivät tiedä, suosittelen lukemaan sen ensin ensimmäinen postaus.
Lyhyesti sanottuna muutokset sisältävät komentojen suorittamisen, laajennetut ominaisuudet komentojen suorittamiseen, joitain uudelleenjärjestelyjä ja virheenkorjauksia.
Katso lisätietoja kohdasta cat.
Mitä uutta python-shellissä?
Aloitan heti jälkiruoalla.
Komennon suorittaminen
Olen samaa mieltä - onko kätevää, kun editori/IDE/pääte pyytää sinua antamaan komennon nimen ja joskus jopa kutsuparametreja? Joten python-shell edistyy vähitellen samanlaisten toimintojen tarjoamisessa. Koska Shell-luokan kentät konepellin alla eivät ole tosiasiallisesti sen kenttiä (yleinen __getattr__), myös automaattinen täydennys luotiin tyhjästä (ylikuormittamalla __dir__-metodia, vastaavasti). Automaattinen täydennys toimii tällä hetkellä BPython- ja IPython-ympäristöissä. Tietysti haluaisin integraation arvostetumpiin tuotteisiin, kuten PyCharm, ja toteutusmahdollisuuksia tutkitaan tähän suuntaan.
Ominaisuuksien lisääminen
Osana julkaisua Shell-luokka sai uuden last_command-ominaisuuden. Tarve sille syntyi, koska kun ShellException heitettiin komennolla, jonka paluukoodi ei ole nolla, Command-objektia ei palautettu __call__() -kutsusta komentoobjektille. Nyt on mahdollisuus tehdä tämä:
Myös Command-objektin ominaisuuksien luettelo on laajentunut. Lisätty virhekenttä, joka palauttaa komennon lähdön virhevirtaan.
Suoritetaan komentoja virheellisillä Python-nimillä
Lähes jokaisessa järjestelmässä on ainakin yksi ohjelma, jonka nimi ei sovellu tunnisteeksi Pythonissa (esimerkiksi tuttu 2to3-apuohjelma). Soita hänelle
Shell.2to3()
Jos se ei toimi, tulkki ei päästä sitä läpi.
Ratkaisu on kutsua komento kiertoradalla:
Shell("2to3") # возвращает объект команды
On syytä huomata, että samalla tavalla voidaan suorittaa tulkin kannalta kelvollisia komentoja, mikä jättää mahdollisuuden luoda joustavia skriptejä, kuten
Command-luokan objektin menetelmät __repr__() ja __str__() on toteutettu, jotka tuottavat nyt intuitiivisia arvoja (parametreilla varustettu komento ja sen stdout-ulostulo).
Pienet koodikorjaukset.
Testin kattavuuden lisääminen sekä olemassa olevien uudelleenjärjestely.
Lisätään Subprocess- ja Process-luokat, joiden tarkoituksena on luoda ylimääräinen abstraktiotaso työskennellessäsi aliprosessimoduulin kanssa. Enimmäkseen tarvitaan koodin päällekkäisyyden poistamiseen käytettäessä Python 2/3:a, mutta se voi tarjota myös muita bonuksia.
Mitä uutta smart-envissä?
Toisin kuin python-shell, smart-env-kirjastossa on ollut vähemmän muutoksia. Syy tähän on yksinkertainen - vapaa-ajan puute, jonka aikana joitain mahdollisia parannuksia (esim. ympäristömuuttujien automaattinen täydennys) siirrettiin seuraavaan julkaisuun.
Itse asiassa kirjastoon on tehty seuraavat muutokset:
Pienet koodikorjaukset.
Refaktorointi.
Nykyisten testien uudelleenjärjestely ja jalostaminen.
Suunnitelmat seuraaville julkaisuille
python-shell -kirjasto
Tuen lisääminen ei-estäville komentokutsuille (suorituksen rinnakkain).