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 .
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_commandPo 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ësMerret 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:
- Në artikullin e këtij përditësimi.
Burimi: habr.com
