Ne lidhen Python dhe Bash: lëshimi i biblioteka python-shell dhe smart-env v. 1.0.1

Mirëdita të gjithëve!

29 shkurt 2020 u zhvillua një mikro-lirim zyrtar i bibliotekave smart-env dhe python-shell. Për ata që nuk janë në dijeni, ju sugjeroj të lexoni paraprakisht postin e parë.

Nëse e përmbledhim, ndryshimet përfshijnë autokompletimin e komandave, zgjerimin e mundësive për ekzekutimin e komandave, disa ristrukturime dhe rregullime të defekteve.

Për detaje ju lutem ndiqni nën.

ÇfarĂ« Ă«shtĂ« e re nĂ« python-shell?

Nisin menjëherë me ëmbëlsirën.

Autocompletimi i komandave

Të gjithë bien dakord, është e ndihmuar kur editori / IDE / terminali sugjeron emrin e komandës, ndonjëherë edhe parametrat e thirrjes? Kështu, python-shell po e zhvillon këtë funksionalitet. Duke pasur parasysh se fushat e klasës Shell në të vërtetë nuk janë fushat e saj (për shkak të __getattr__), autokompletimi është krijuar gjithashtu nga zeros (përmbi, metoda __dir__). Aktualisht, autokompletimi funksionon në mjediset BPython dhe IPython. Sigurisht, do të doja të shihja integrimin me produkte më të njohura si PyCharm, dhe në këtë drejtim po studiohet mundësia e realizimit.

Shtimi i pronave

Në kuadër të lirimete, klasa Shell mori një pronë të re, last_command. Nevojitet për këtë për shkak se, kur ndodhte një përjashtim ShellException nga një komandë me kodin e rikthimit jo zero, objekti Command nuk kthehej nga thirrja __call__() e objektit të komandës. Tani, mund të bëhet kështu:

try:
    command = Shell.touch('/foo.txt')
except ShellException:
    command = Shell.last_command

Po ashtu, lista e pronave tĂ« objektit Command Ă«shtĂ« zgjeruar. ËshtĂ« shtuar fusha errors, e cila kthen daljen e komandĂ«s nĂ« rrjedhĂ«n 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, utilitarja e njohur 2to3). Nuk është e mundur ta thërrasësh atë me

Shell.2to3()

interpretuesi nuk do e lejojë.
Zgjidhja — thirri komandĂ«n nĂ« njĂ« rrugĂ« alternative:

Shell("2to3")  # kthen objektin e komandës

Merret parasysh se në këtë mënyrë mund të ekzekutohen edhe komandat e vlefshme sipas interpretuesit, duke lënë mundësinë për krijimin e skenarëve fleksibël të tillë si

cmd = "python{}".format(sys.version_info[0])
Shell(cmd)(*args, **kwargs)

Ndryshime të vogla

  • JanĂ« realizuar metodat __repr__() dhe __str__() tĂ« klasĂ«s Command, tĂ« cilat tani kthejnĂ« vlera intuitivisht tĂ« kuptueshme (komandĂ«n me parametrat dhe daljen e saj stdout pĂ«rkatĂ«sisht).
  • Rregullime tĂ« vogla tĂ« kodit.
  • Shtimi i mbulimit me teste, si dhe reorganizimi i tĂ« ekzistuesve.
  • Shtimi i klasave Subprocess dhe Process, qĂ«llimi i tĂ« cilave Ă«shtĂ« krijimi i njĂ« niveli tĂ« shtuar abstraksioni nĂ« punĂ«n me modulin subprocess. Kryesisht, Ă«shtĂ« e nevojshme pĂ«r tĂ« eliminuar pĂ«rsĂ«ritjet e kodit ndĂ«rmjet Python 2/3, por potencialisht mund tĂ« sjellĂ« dhe pĂ«rfitime tĂ« tjera.

ÇfarĂ« Ă«shtĂ« e re nĂ« smart-env?

NĂ« kundĂ«rshtim me python-shell, nĂ« bibliotekĂ«n smart-env kanĂ« ndodhur mĂ« pak ndryshime. Arsyeja pĂ«r kĂ«tĂ« Ă«shtĂ« e thjeshtĂ« — mungesa e kohĂ«s sĂ« lirĂ«, gjatĂ« sĂ« cilĂ«s disa pĂ«rmirĂ«sime tĂ« mundshme (pĂ«r shembull, autokompletimi i variablave tĂ« ambientit) janĂ« shtyrĂ« pĂ«r lirimin e ardhshĂ«m.

Në fakt, janë bërë këto ndryshime në bibliotekë:

  • Rregullime tĂ« vogla tĂ« kodit.
  • Ristrukturim.
  • Reorganizimi dhe pĂ«rmirĂ«simi i testeve ekzistuese.

Planet për lirimet e ardhshme

Biblioteka python-shell

  • Shtimi i mbĂ«shtetjes pĂ«r thirrjet e komandave tĂ« papengueshme (paralelizimi i ekzekutimit).

Biblioteka smart-env

  • Realizimi i autokompletimit tĂ« variablave tĂ« ambientit nĂ« klasĂ«n ENV.
  • MbĂ«shtetje pĂ«r operatorin in pĂ«r tĂ« verifikuar ekzistencĂ«n e variablĂ«s env.
  • Realizimi i mbĂ«shtetjes pĂ«r funksionet str() dhe repr() pĂ«r klasĂ«n ENV.

Data për lirimet e ardhshme do të shpallen në mënyra të tjera të komunikimit:

Burimi: habr.com

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