Python va Bash do'stligini yaratish: python-shell va smart-env v kutubxonalarining chiqarilishi. 1.0.1

Hammaga xayrli kun!

29 Fevral 2020 yil kutubxonalarning rasmiy mikrorelizi boʻlib oʻtdi smart-env и piton qobig'i. Bilmaganlar uchun avvalo uni o'qib chiqishingizni maslahat beraman birinchi post.

Muxtasar qilib aytganda, o'zgarishlar buyruqlarni bajarish, buyruqlarni bajarish uchun kengaytirilgan imkoniyatlar, ba'zi refaktoring va xatolarni tuzatishni o'z ichiga oladi.

Tafsilotlar uchun mushukka qarang.

Python-shell-da nima yangiliklar?

Men darhol shirinlik bilan boshlayman.

Buyruqning bajarilishi

Qabul qilaman - muharrir/IDE/terminal sizga buyruq nomini va ba'zan qo'ng'iroq parametrlarini so'raganda qulaymi? Shunday qilib, python-shell asta-sekin shunga o'xshash funksionallikni ta'minlashda muvaffaqiyat qozonmoqda. Kaput ostidagi Shell sinfining maydonlari uning maydonlari emas (hamma joyda mavjud __getattr__) de-fakto bo'lganligi sababli, avtoto'ldirish ham noldan yaratilgan (mos ravishda __dir__ usulini ortiqcha yuklash orqali). Avtomatik yakunlash hozirda BPython va IPython muhitlarida ishlaydi. Albatta, men PyCharm kabi obro'li mahsulotlar bilan integratsiyani ko'rishni istardim va bu yo'nalishda amalga oshirish imkoniyatlari o'rganilmoqda.

Xususiyatlar qo'shish

Chiqarishning bir qismi sifatida Shell klassi yangi last_command xususiyatini oldi. Bunga ehtiyoj paydo bo'ldi, chunki ShellException nolga teng bo'lmagan qaytarish kodi bo'lgan buyruq tomonidan tashlanganida, Buyruq obyekti buyruq obyektiga __call__() chaqiruvidan qaytarilmadi. Endi buni qilish imkoniyati mavjud:

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

Buyruq obyektining xossalari ro'yxati ham kengaytirildi. Buyruq chiqishini xato oqimiga qaytaradigan xatolar maydoni qo'shildi.

Noto'g'ri Python nomlari bilan ishlaydigan buyruqlar

Deyarli har bir tizimda kamida bitta dastur mavjud bo'lib, uning nomi Pythonda identifikator sifatida mos kelmaydi (masalan, taniqli 2to3 yordam dasturi). Unga qo'ng'iroq qiling

Shell.2to3()

Agar u ishlamasa, tarjimon unga ruxsat bermaydi.
Yechim buyruqni aylanma tarzda chaqirishdir:

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

Shuni ta'kidlash kerakki, xuddi shu tarzda siz tarjimon nuqtai nazaridan amal qiladigan buyruqlarni bajarishingiz mumkin, bu kabi moslashuvchan skriptlarni yaratish imkoniyatini qoldiradi.

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

Kichik o'zgarishlar

  • Buyruqlar sinfi ob'ektining __repr__() va __str__() usullari amalga oshirildi, ular endi intuitiv qiymatlarni ishlab chiqaradi (mos ravishda parametrlarga ega buyruq va uning stdout chiqishi).
  • Kichik kod tuzatishlari.
  • Test qamrovini qo'shish, shuningdek, mavjudlarini qayta tashkil etish.
  • Subprocess va Process sinflarini qo'shish, ularning maqsadi subprocess moduli bilan ishlashda qo'shimcha mavhumlik darajasini yaratishdir. Ko'pincha Python 2/3 bilan ishlashda kodning takrorlanishini bartaraf etish uchun kerak bo'ladi, lekin boshqa bonuslarni ham berishi mumkin.

smart-env-da qanday yangiliklar bor?

Python-shelldan farqli o'laroq, smart-env kutubxonasida kamroq o'zgarishlar bo'ldi. Buning sababi oddiy - bo'sh vaqt yo'qligi, uning davomida ba'zi potentsial yaxshilanishlar (masalan, atrof-muhit o'zgaruvchilari avtomatik to'ldirish) keyingi nashrga o'tkazildi.

Aslida, kutubxonaga quyidagi o'zgarishlar kiritildi:

  • Kichik kod tuzatishlari.
  • Refaktoring.
  • Mavjud testlarni qayta tashkil etish va takomillashtirish.

Keyingi nashrlar uchun rejalar

python-qobiq kutubxonasi

  • Bloklanmagan buyruq chaqiruvlari uchun qo'llab-quvvatlashni qo'shish (bajarishning parallellashuvi).

smart-env kutubxonasi

  • ENV sinfida atrof-muhit o'zgaruvchilarini avtomatik to'ldirishni amalga oshirish.
  • env o'zgaruvchisi mavjudligini tekshirish uchun in operatorini qo'llab-quvvatlash.
  • ENV sinfi uchun str() va repr() funksiyalarini qo'llab-quvvatlashni amalga oshirish.

Keyingi nashrlar sanalari quyidagi aloqa kanallarida e'lon qilinadi:

Manba: www.habr.com

a Izoh qo'shish