Nagħmlu Python u Bash Ħbiberija: Rilaxx tal-libreriji python-shell u smart-env v. 1.0.1

Il-ġurnata t-tajba lil kulħadd!

Snin Frar 29 2020 sar mikro-rilaxx uffiċjali tal-libreriji smart-env и python-qoxra. Għal dawk li mhumiex jafu, nissuġġerixxi li taqrah l-ewwel l-ewwel post.

Fil-qosor, il-bidliet jinkludu t-tlestija tal-kmand, kapaċitajiet estiżi għat-tmexxija tal-kmandi, xi refactoring u bug fixes.

Għad-dettalji jekk jogħġbok ara cat.

X'hemm ġdid fil-python-shell?

Nibda mill-ewwel bid-deżerta.

Tlestija tal-kmand

Naqbel - huwa konvenjenti meta l-editur/IDE/terminal iqanqlek għall-isem tal-kmand, u xi kultant anke l-parametri tas-sejħa? Allura python-shell qed jagħmel progress gradwalment biex jipprovdi funzjonalità simili. Minħabba l-fatt li l-oqsma tal-klassi Shell taħt il-barnuża huma de-facto mhux l-oqsma tagħha (il-__getattr__ kullimkien), inħoloq ukoll l-awtokompletazzjoni mill-bidu (bil-tagħbija żejda tal-metodu __dir__, rispettivament). L-awtokompletazzjoni bħalissa taħdem f'ambjenti BPython u IPython. Naturalment, nixtieq nara integrazzjoni ma 'prodotti aktar venerabbli bħal PyCharm, u l-possibilitajiet ta' implimentazzjoni qed jiġu studjati f'din id-direzzjoni.

Żieda ta 'proprjetajiet

Bħala parti mir-rilaxx, il-klassi Shell irċeviet proprjetà last_command ġdida. Il-ħtieġa għaliha qamet minħabba li meta ShellException ġiet mitfugħa minn kmand b'kodiċi ta 'ritorn mhux żero, l-oġġett tal-Kmand ma ġiex ritornat mis-sejħa __call__() lill-oġġett tal-kmand. Issa hemm l-opportunità li tagħmel dan:

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

Il-lista tal-proprjetajiet tal-oġġett tal-Kmand espandiet ukoll. Żid qasam ta 'żbalji li jirritorna l-output tal-kmand għall-fluss ta' żbalji.

Tmexxi kmandi b'ismijiet Python invalidi

Kważi kull sistema għandha mill-inqas programm wieħed li ismu mhux adattat bħala identifikatur f'Python (pereżempju, l-utilità magħrufa 2to3). Ċempelha ma

Shell.2to3()

Jekk ma taħdimx, l-interpretu ma jħallihiex jgħaddi.
Is-soluzzjoni hija li ssejjaħ il-kmand b'mod roundabout:

Shell("2to3")  # возвращает объект команды

Ta’ min jinnota li bl-istess mod tista’ tmexxi kmandi li huma validi mil-lat tal-interpretu, li jħalli l-opportunità li toħloq skripts flessibbli bħal

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

Bidliet minuri

  • Ġew implimentati l-metodi __repr__() u __str__() tal-oġġett tal-klassi Kmand, li issa jipproduċu valuri intuwittivi (kmand b'parametri u l-output stdout tiegħu, rispettivament).
  • Fixs ta' kodiċi minuri.
  • Iż-żieda tal-kopertura tat-test, kif ukoll ir-riorganizzazzjoni ta 'dawk eżistenti.
  • Iż-żieda tal-klassijiet Subprocess u Process, li l-għan tagħhom huwa li jinħoloq livell addizzjonali ta 'estrazzjoni meta taħdem mal-modulu subprocess. L-aktar meħtieġ biex tiġi eliminata d-duplikazzjoni tal-kodiċi meta taħdem ma 'Python 2/3, iżda tista' potenzjalment tipprovdi bonusijiet oħra wkoll.

X'hemm ġdid fi smart-env?

B'differenza mill-python-shell, kien hemm inqas bidliet fil-librerija smart-env. Ir-raġuni għal dan hija sempliċi - nuqqas ta 'ħin liberu, li matulu xi titjib potenzjali (per eżempju, awtokompletazzjoni ta' varjabbli ambjentali) tmexxa għar-rilaxx li jmiss.

Fil-fatt, saru l-bidliet li ġejjin fil-librerija:

  • Fixs ta' kodiċi minuri.
  • Refactoring.
  • Riorganizzazzjoni u rfinar ta' testijiet eżistenti.

Pjanijiet għall-ħruġ li jmiss

librerija python-shell

  • Żieda ta 'appoġġ għal sejħiet ta' kmand li ma jimblukkawx (parallelizzazzjoni ta 'eżekuzzjoni).

librerija smart-env

  • Implimentazzjoni ta 'awtokompletazzjoni ta' varjabbli ambjentali fil-klassi ENV.
  • Appoġġ għall-operatur in biex jiċċekkja l-eżistenza ta 'varjabbli env.
  • Implimentazzjoni ta' appoġġ għall-funzjonijiet str() u repr() għall-klassi ENV.

Id-dati tar-rilaxxi li jmiss se jitħabbru aktar fil-kanali ta' komunikazzjoni li ġejjin:

Sors: www.habr.com

Żid kumment