Paghimo sa Python ug Bash Friendship: Pagpagawas sa python-shell ug smart-env v library. 1.0.1

Maayong adlaw sa tanan!

29 Pebrero 2020 ka tuig opisyal nga micro-release sa mga librarya nahitabo smart-env ΠΈ python-shell. Sa mga wala kabalo, I suggest nga basahon una ninyo unang post.

Sa laktud, ang mga pagbag-o naglakip sa pagkompleto sa command, gipalapdan nga kapabilidad sa pagpadagan sa mga sugo, pipila ka refactoring ug pag-ayo sa bug.

Para sa mga detalye palihog tan-awa ang iring.

Unsa ang bag-o sa python-shell?

Magsugod dayon ko sa dessert.

Pagkompleto sa sugo

Pag-uyon - kombenyente kung ang editor / IDE / terminal nag-aghat kanimo alang sa ngalan sa mando, ug usahay bisan ang mga parameter sa pagtawag? Mao nga ang python-shell anam-anam nga nag-uswag sa paghatag parehas nga gamit. Tungod sa kamatuoran nga ang mga natad sa Shell nga klase sa ilawom sa hood kay de-facto dili ang mga natad niini (ang ubiquitous __getattr__), ang autocompletion gihimo usab gikan sa wala (pinaagi sa pag-overload sa __dir__ nga pamaagi, matag usa). Ang Autocompletion karon nagtrabaho sa BPython ug IPython nga mga palibot. Siyempre, gusto nako nga makita ang panagsama sa labi ka halangdon nga mga produkto sama sa PyCharm, ug ang mga posibilidad sa pagpatuman gitun-an sa kini nga direksyon.

Pagdugang mga kabtangan

Isip kabahin sa pagpagawas, ang Shell class nakadawat og bag-ong last_command property. Ang panginahanglan alang niini mitumaw tungod kay sa diha nga ang usa ka ShellException gilabay pinaagi sa usa ka sugo uban sa usa ka non-zero pagbalik code, ang Command butang wala ibalik gikan sa __call__() tawag ngadto sa sugo butang. Karon adunay usa ka oportunidad sa pagbuhat niini:

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

Ang lista sa mga kabtangan sa butang nga Command gipalapad usab. Gidugang ang field sa mga error nga nagbalik sa command output sa error stream.

Pagpadagan sa mga sugo nga adunay dili balido nga mga ngalan sa Python

Halos tanang sistema adunay labing menos usa ka programa kansang ngalan dili angay isip identifier sa Python (pananglitan, ang iladong 2to3 utility). Tawga siya sa

Shell.2to3()

Kung kini dili molihok, ang tighubad dili motugot niini.
Ang solusyon mao ang pagtawag sa command sa usa ka roundabout nga paagi:

Shell("2to3")  # Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Angay nga matikdan nga sa parehas nga paagi mahimo nimong ipadagan ang mga mando nga balido gikan sa punto sa pagtan-aw sa tighubad, nga nagbilin sa oportunidad sa paghimo og mga flexible script sama sa

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

Mga gagmay nga pagbag-o

  • Ang __repr__() ug __str__() nga mga pamaagi sa Command class object gipatuman, nga karon nagpatunghag intuitive values ​​​​(usa ka command nga adunay mga parameter ug ang stdout output niini, matag usa).
  • Menor nga pag-ayo sa code.
  • Pagdugang sa pagsakup sa pagsulay, ingon man pag-organisar pag-usab sa mga naa na.
  • Pagdugang sa mga klase sa Subprocess ug Proseso, ang katuyoan niini mao ang paghimo og dugang nga lebel sa abstraction kung nagtrabaho kauban ang subprocess module. Kasagaran gikinahanglan aron mawagtang ang pagdoble sa code kung nagtrabaho kauban ang Python 2/3, apan mahimo usab nga makahatag sa ubang mga bonus.

Unsa ang bag-o sa smart-env?

Dili sama sa python-shell, adunay gamay nga mga pagbag-o sa smart-env library. Ang hinungdan niini yano ra - kakulang sa libre nga oras, diin ang pipila nga mga potensyal nga pag-uswag (pananglitan, autocompletion sa mga variable sa palibot) gibalhin sa sunod nga pagpagawas.

Sa pagkatinuod, ang mosunod nga mga kausaban gihimo sa librarya:

  • Menor nga pag-ayo sa code.
  • Refactoring.
  • Pag-organisar pag-usab ug pagpino sa kasamtangan nga mga pagsulay.

Mga plano alang sa sunod nga pagpagawas

librarya sa python-shell

  • Pagdugang og suporta alang sa mga non-blocking command calls (parallelization of execution).

smart-env library

  • Pagpatuman sa autocompletion sa environment variables sa ENV class.
  • Suporta alang sa in operator aron masusi ang paglungtad sa usa ka env variable.
  • Pag-implementar sa suporta alang sa str() ug repr() function para sa ENV class.

Ang mga petsa sa sunod nga pagpagawas ipahibalo pa sa mosunod nga mga channel sa komunikasyon:

Source: www.habr.com

Idugang sa usa ka comment