Bashkoni Python dhe Bash: lëshimi i bibliotekave python-shell dhe smart-env v. 1.0.1

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ë postin e 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_command

NĂ« 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ës

Vlen 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:

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster