Membuat Persahabatan Python dan Bash: Keluaran perpustakaan python-shell dan smart-env v. 1.0.1

hari yang baik untuk semua!

29 Februari 2020 tahun siaran mikro rasmi perpustakaan telah berlangsung smart-env ΠΈ tempurung ular sawa. Bagi yang belum tahu, saya cadangkan anda membacanya dahulu jawatan pertama.

Ringkasnya, perubahan itu termasuk penyelesaian perintah, keupayaan yang diperluas untuk menjalankan arahan, beberapa pemfaktoran semula dan pembetulan pepijat.

Untuk butiran sila lihat kucing.

Apa yang baharu dalam cangkerang ular sawa?

Saya akan mulakan segera dengan pencuci mulut.

Penyelesaian arahan

Setuju - senang apabila editor/IDE/terminal menggesa anda untuk nama arahan, dan kadangkala juga parameter panggilan? Jadi python-shell secara beransur-ansur membuat kemajuan dalam menyediakan fungsi yang serupa. Disebabkan fakta bahawa medan kelas Shell di bawah tudung adalah de-facto bukan medannya (__getattr__ di mana-mana), autolengkap juga dibuat dari awal (dengan melebihkan kaedah __dir__, masing-masing). Autolengkap pada masa ini berfungsi dalam persekitaran BPython dan IPython. Sudah tentu, saya ingin melihat penyepaduan dengan produk yang lebih dihormati seperti PyCharm, dan kemungkinan pelaksanaan sedang dikaji ke arah ini.

Menambah sifat

Sebagai sebahagian daripada keluaran, kelas Shell menerima sifat last_command baharu. Keperluan untuk itu timbul kerana apabila ShellException dilemparkan oleh arahan dengan kod pulangan bukan sifar, objek Perintah tidak dikembalikan daripada panggilan __call__() ke objek arahan. Sekarang ada peluang untuk melakukan ini:

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

Senarai sifat objek Perintah juga telah berkembang. Menambah medan ralat yang mengembalikan output arahan kepada aliran ralat.

Menjalankan arahan dengan nama Python yang tidak sah

Hampir setiap sistem mempunyai sekurang-kurangnya satu program yang namanya tidak sesuai sebagai pengecam dalam Python (contohnya, utiliti 2to3 yang terkenal). Panggil dia dengan

Shell.2to3()

Jika ia tidak berkesan, jurubahasa tidak akan membenarkannya.
Penyelesaiannya adalah untuk memanggil arahan dengan cara bulat:

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

Perlu diingat bahawa dengan cara yang sama anda boleh menjalankan arahan yang sah dari sudut pandangan penterjemah, yang meninggalkan peluang untuk mencipta skrip fleksibel seperti

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

Perubahan kecil

  • Kaedah __repr__() dan __str__() bagi objek kelas Perintah telah dilaksanakan, yang kini menghasilkan nilai intuitif (masing-masing arahan dengan parameter dan output stdoutnya).
  • Pembetulan kod kecil.
  • Menambah liputan ujian, serta menyusun semula yang sedia ada.
  • Menambah kelas Subproses dan Proses, yang tujuannya adalah untuk mencipta tahap abstraksi tambahan apabila bekerja dengan modul subproses. Kebanyakannya diperlukan untuk menghapuskan pertindihan kod apabila bekerja dengan Python 2/3, tetapi berpotensi memberikan bonus lain juga.

Apa yang baharu dalam smart-env?

Tidak seperti cangkang ular sawa, terdapat lebih sedikit perubahan dalam perpustakaan smart-env. Sebabnya adalah mudah - kekurangan masa lapang, di mana beberapa kemungkinan peningkatan (contohnya, autolengkap pembolehubah persekitaran) telah dialihkan ke keluaran seterusnya.

Malah, perubahan berikut telah dibuat pada perpustakaan:

  • Pembetulan kod kecil.
  • Pemfaktoran semula.
  • Penyusunan semula dan penghalusan ujian sedia ada.

Rancangan untuk keluaran seterusnya

perpustakaan python-shell

  • Menambah sokongan untuk panggilan arahan tidak menyekat (penyejajaran pelaksanaan).

perpustakaan smart-env

  • Pelaksanaan autolengkap pembolehubah persekitaran dalam kelas ENV.
  • Sokongan untuk operator in untuk menyemak kewujudan pembolehubah env.
  • Pelaksanaan sokongan untuk fungsi str() dan repr() untuk kelas ENV.

Tarikh keluaran seterusnya akan diumumkan selanjutnya dalam saluran komunikasi berikut:

Sumber: www.habr.com

Tambah komen