Fè Python ak Bash Friendship: Liberasyon bibliyotèk python-shell ak smart-env v. 1.0.1

Bon jounen tout moun!

Fevriye 29 2020 ane mikwo piblikasyon ofisyèl bibliyotèk yo te fèt entelijan-env и piton-koki. Pou moun ki pa konnen, mwen sijere ou li li an premye premye pòs.

Nan ti bout tan, chanjman yo enkli fini kòmand, kapasite elaji pou kouri kòmandman, kèk refactoring ak korije ensèk.

Pou plis detay tanpri gade chat.

Ki sa ki nouvo nan python-shell?

Mwen pral kòmanse touswit ak desè.

Kòmandman fini

Dakò - li pratik lè editè a/IDE/tèminal mande w non kòmandman an, epi pafwa menm paramèt apèl yo? Se konsa, python-shell ap fè pwogrè piti piti nan bay fonksyonalite menm jan an. Akòz lefèt ke jaden yo nan klas la Shell anba kapo a se de-fakto pa jaden li yo (omniprésente __getattr__), otokonplesyon te kreye tou nan grafouyen (pa surcharge metòd la __dir__, respektivman). Otokonplesyon kounye a ap travay nan anviwònman BPython ak IPython. Natirèlman, mwen ta renmen wè entegrasyon ak pwodwi plis venere tankou PyCharm, ak posiblite aplikasyon yo ap etidye nan direksyon sa a.

Ajoute Pwopriyete

Kòm yon pati nan lage a, klas la Shell te resevwa yon nouvo pwopriyete last_command. Bezwen pou li te parèt paske lè yon kòmandman te voye yon ShellException ak yon kòd retounen ki pa zewo, objè a kòmand pa te retounen soti nan apèl la __call__() nan objè a lòd. Koulye a, gen yon opòtinite pou fè sa:

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

Lis pwopriyete objè kòmandman an te elaji tou. Te ajoute yon jaden erè ki retounen pwodiksyon lòd nan kouran erè a.

Kouri kòmandman ak non Python envalid

Prèske chak sistèm gen omwen yon pwogram ki gen non pa apwopriye kòm yon idantifyan nan Python (pa egzanp, sèvis piblik la byen li te ye 2to3). Rele l avèk

Shell.2to3()

Si li pa mache, entèprèt la p ap kite l pase.
Solisyon an se rele lòd la nan yon fason otonòm:

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

Li se vo anyen ke nan menm fason an ou ka kouri kòmandman ki valab nan pwen de vi nan entèprèt la, ki kite opòtinite pou yo kreye scripts fleksib tankou

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

Ti chanjman

  • Metòd __repr__() ak __str__() nan objè klas Kòmand yo te aplike, ki kounye a pwodui valè entwisyon (yon lòd ak paramèt ak pwodiksyon stdout li yo, respektivman).
  • Korije kòd minè.
  • Ajoute kouvèti tès yo, osi byen ke reòganize sa yo ki deja egziste.
  • Ajoute klas Sou-pwosesis ak Pwosesis, objektif ki se kreye yon nivo adisyonèl nan abstraksyon lè w ap travay ak modil sou-pwosesis la. Sitou bezwen elimine duplication kòd lè w ap travay ak Python 2/3, men li ka potansyèlman bay lòt bonis tou.

Ki nouvo nan smart-env?

Kontrèman ak python-shell, te gen mwens chanjman nan bibliyotèk smart-env la. Rezon ki fè la pou sa a se senp - mank de tan lib, pandan ki kèk amelyorasyon potansyèl (pa egzanp, otokonplesyon nan varyab anviwònman) yo te deplase nan pwochen lage a.

An reyalite, chanjman sa yo te fè nan bibliyotèk la:

  • Korije kòd minè.
  • Refactoring.
  • Reòganizasyon ak rafine tès ki egziste deja.

Plan pou pwochen degaje yo

bibliyotèk python-shell

  • Ajoute sipò pou apèl lòd ki pa bloke (paralelizasyon nan ekzekisyon).

bibliyotèk smart-env

  • Aplikasyon otokonplesyon varyab anviwònman yo nan klas ENV la.
  • Sipò pou operatè a pou tcheke egzistans yon varyab env.
  • Aplikasyon sipò pou fonksyon str() ak repr() pou klas ENV la.

Dat pwochen yo pral anonse plis nan chanèl kominikasyon sa yo:

Sous: www.habr.com

Add nouvo kòmantè