Nggawe Persahabatan Python lan Bash: Rilis saka perpustakaan python-shell lan pinter-env v. 1.0.1

Sugeng dina kanggo kabeh!

29 Februari 2020 taun micro-release resmi perpustakaan njupuk Panggonan pinter-env ΠΈ cangkang python. Kanggo sing ora ngerti, aku saranake maca dhisik kirim pisanan.

Ing cendhak, owah-owahan kalebu printah completion, ditambahi kapabilitas kanggo mbukak printah, sawetara refactoring lan bug fix.

Kanggo rincian, deleng kucing.

Apa sing anyar ing cangkang python?

Aku bakal miwiti langsung karo panganan cuci mulut.

Completion printah

Setuju - luwih trep nalika editor / IDE / terminal njaluk sampeyan jeneng printah, lan kadhangkala paramèter telpon? Dadi python-shell mboko sithik nggawe kemajuan ing nyedhiyakake fungsi sing padha. Amarga kasunyatan sing lapangan saka kelas Shell ing hood de-facto ora kothak sawijining (ing __getattr__ nang endi wae), autocompletion uga digawe saka ngeruk (kanthi overloading cara __dir__, mungguh). Autocompletion saiki bisa digunakake ing lingkungan BPython lan IPython. Mesthine, aku pengin ndeleng integrasi karo produk sing luwih dihormati kaya PyCharm, lan kemungkinan implementasine lagi diteliti ing arah iki.

Nambah properti

Minangka bagΓ©an saka release, kelas Shell nampa properti last_command anyar. Kabutuhan kanggo muncul amarga nalika ShellException dibuwang dening printah karo kode bali non-nol, obyek Command ora bali saka __call __ () nelpon kanggo obyek printah. Saiki ana kesempatan kanggo nindakake iki:

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

Dhaptar properti saka obyek Command uga wis ditambahi. Nambahake kolom kesalahan sing ngasilake output printah menyang stream kesalahan.

Mlaku printah karo jeneng Python ora bener

Meh saben sistem duwe paling ora siji program sing jenenge ora cocog minangka pengenal ing Python (contone, utilitas 2to3 sing kondhang). Telpon dheweke karo

Shell.2to3()

Yen ora bisa, juru basa ora bakal nglilani.
Solusi kasebut yaiku nelpon printah kanthi cara bunder:

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

Wigati dicathet yen kanthi cara sing padha sampeyan bisa mbukak perintah sing bener saka sudut pandang juru, sing menehi kesempatan kanggo nggawe skrip fleksibel kaya

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

Pangowahan suntingan

  • Metode __repr__() lan __str__() saka obyek kelas Command wis dileksanakake, sing saiki ngasilake nilai intuisi (prentah karo paramΓ¨ter lan output stdout, masing-masing).
  • Ndandani kode cilik.
  • Nambahake jangkoan tes, uga ngatur maneh sing wis ana.
  • Nambahake kelas Subproses lan Proses, tujuane kanggo nggawe tingkat abstraksi tambahan nalika nggarap modul subproses. Biasane perlu kanggo ngilangke duplikasi kode nalika nggarap Python 2/3, nanging uga bisa nyedhiyani bonus liyane.

Apa anyar ing smart-env?

Ora kaya cangkang python, owah-owahan luwih sithik ing perpustakaan smart-env. Alesan kanggo iki prasaja - kurang wektu luang, sajrone sawetara dandan potensial (contone, autocompletion variabel lingkungan) dipindhah menyang rilis sabanjure.

Ing kasunyatan, owah-owahan ing ngisor iki wis digawe kanggo perpustakaan:

  • Ndandani kode cilik.
  • Refactoring.
  • Reorganisasi lan refinement saka tes ana.

Rencana kanggo rilis sabanjure

perpustakaan python-shell

  • Nambahake dhukungan kanggo telpon printah non-blocking (parallelization of execution).

perpustakaan pinter-env

  • Implementasi autocompletion variabel lingkungan ing kelas ENV.
  • Dhukungan kanggo operator ing mriksa anane variabel env.
  • Implementasine support kanggo str () lan repr () fungsi kanggo kelas ENV.

Tanggal rilis sabanjure bakal diumumake ing saluran komunikasi ing ngisor iki:

Source: www.habr.com

Add a comment