Përshëndetje të gjithëve!
29 shkurt 2020 u zhvillua lançimi zyrtar i bibliotekave smart-env dhe python-shell. Për ata që nuk janë në dijeni, sugjeroj të lexoni më parë .
NĂ«se e themi shkurt, midis ndryshimeve janĂ«âkompletimi automatik i komandave, zgjerimi i mundĂ«sive pĂ«r ekzekutimin e komandave, pak refaktorizim dhe rregullime tĂ« gabimeve.
Për detaje, ju lutem shihni më poshtë.
ĂfarĂ« ka tĂ« re nĂ« python-shell?
Të fillojmë direkt me ëmbëlsirën.
Kompletimi automatik i komandave
Pranojini â Ă«shtĂ« e pĂ«rshtatshme kur redaktori/IDE/terminali sugjeron emrin e komandĂ«s, dhe ndonjĂ«herĂ« edhe parametrat e thirrjes? KĂ«shtu qĂ« python-shell Ă«shtĂ« duke e avancuar gradualisht kĂ«tĂ« funksionalitet. Duke pasur parasysh se fushat e klasĂ«s Shell nĂ«n kapak de-facto nuk janĂ« fushat e saj (vazhdimi i gjithanshĂ«m __getattr__), kompletimi automatik Ă«shtĂ« krijuar gjithashtu nga e para (duke mbingarkuar pĂ«rkatĂ«sisht metodĂ«n __dir__). Aktualisht, kompletimi automatik funksionon nĂ« mjediset BPython dhe IPython. Sigurisht, dĂ«shirojmĂ« tĂ« shohim integrimin me produkte mĂ« tĂ« njohura si PyCharm, dhe nĂ« kĂ«tĂ« drejtim po studiohen mundĂ«sitĂ« e implementimit.
Shtimi i pronave
Në kuadër të lançimit, klasa Shell ka marrë një pronë të re last_command. Nevoja për të ka lindur si pasojë që, kur ndodhte një përjashtim ShellException me një kod kthimi të ndryshëm nga zero, objekti Command nuk kthehej nga thirrja __call__() e komandës. Tani, ka mundësi të bëhet kështu:
try:
command = Shell.touch('/foo.txt')
except ShellException:
command = Shell.last_commandNĂ« tĂ« njĂ«jtĂ«n kohĂ«, Ă«shtĂ« zgjeruar lista e pronave tĂ« objektit Command. ĂshtĂ« shtuar fusha errors, e cila kthen daljen e komandĂ«s nĂ« kanalin e gabimeve.
Ekzekutimi i komandave me emra jo të vlefshëm për Python
Në çdo sistem ka të paktën një program, emri i të cilit nuk është i përshtatshëm si identifikues në Python (për shembull, utilitari i njohur 2to3). Ta thirrni atë përmes
Shell.2to3() nuk do tĂ« jetĂ« e mundur â interpretuese nuk do ta lejojĂ«.
Zgjidhja â tĂ« thirret komanda nĂ« mĂ«nyrĂ« anĂ«sore:
Shell("2to3") # kthen objektin e komandësVlen të theksohet se në të njëjtën mënyrë mund të ekzekutohen edhe komandat e vlefshme sipas interpretes, gjë që lë hapësirë për të krijuar skenarë fleksibël si
cmd = "python{}".format(sys.version_info[0])
Shell(cmd)(*args, **kwargs)Ndryshime të vogla
- Janë realizuar metodat __repr__() dhe __str__() të objektit të klasës Command, të cilat tani japin vlera intuitivisht kuptimplota (komandën me parameteret dhe daljen e saj stdout përkatësisht).
- Këtu ka disa rregullime të vogla në kod.
- Shtimi i mbulimit me teste, si dhe reorganizimi i ekzistueseve.
- Shtimi i klasave Subprocess dhe Process, qëllimi i të cilave është krijimi i një nivele shtesë abstrahimi gjatë punës me modulën subprocess. Kryesisht, është e nevojshme për të eliminuar përsëritjet e kodit gjatë punës me Python 2/3, por potencialisht mund të ofrojë edhe përfitime të tjera.
ĂfarĂ« Ă«shtĂ« e re nĂ« smart-env?
NĂ« ndryshim nga python-shell, nĂ« bibliotekĂ«n smart-env ka pasur mĂ« pak ndryshime. Arsyetimi Ă«shtĂ« i thjeshtĂ«âmungesa e kohĂ«s sĂ« lirĂ«, ku disa pĂ«rmirĂ«sime potenciale (pĂ«r shembull, autocompletimi i variablave tĂ« mjedisit) janĂ« shtyrĂ« pĂ«r rreze deri nĂ« versionin e ardhshĂ«m.
Në fakt, në bibliotekë janë bërë këto ndryshime:
- Këtu ka disa rregullime të vogla në kod.
- Rifaktorizimi.
- Reorganizuese dhe përmirësim i testeve ekzistuese.
Planet për versionet e ardhshme
Biblioteka python-shell
- Shtimi i mbështetjes për thirrje jo-bllokuese të komandave (paralelizimi i ekzekutimit).
Biblioteka smart-env
- Implementimi i autocompletimit të variablave të mjedisit në klasën ENV.
- Mbështetje për operatorin in për kontrollin e ekzistencës së variablës env.
- Implementimi i mbështetjes për funksionet str() dhe repr() për klasën ENV.
Për datat e versioneve të ardhshme do të shpallen përditësime në kanalet e komunikimit të mëtejshme:
- Me përditësimin në këtë artikull.
Burimi: habr.com
