Python ve Bash Dostluğunu Kurmak: Python-Shell ve smart-env v kitaplıklarının piyasaya sürülmesi. 1.0.1

Herkese İyi günler!

29 Şubat 2020 yıl kütüphanelerin resmi mikro sürümü gerçekleşti akıllı ortam и piton kabuğu. Bilmeyenler için öncelikle okumanızı öneririm. ilk gönderi.

Kısacası değişiklikler arasında komut tamamlama, komut çalıştırmaya yönelik genişletilmiş yetenekler, bazı yeniden düzenleme ve hata düzeltmeleri yer alıyor.

Ayrıntılar için lütfen kediye bakın.

Python-Shell'deki yenilikler neler?

Hemen tatlıyla başlayacağım.

Komut tamamlama

Katılıyorum - editör/IDE/terminalin sizden komutun adını ve hatta bazen çağrı parametrelerini istemesi uygun olur mu? Yani python-shell benzer işlevsellik sağlama konusunda yavaş yavaş ilerleme kaydediyor. Shell sınıfının başlık altındaki alanlarının fiili olarak kendi alanları (her yerde bulunan __getattr__) olmaması nedeniyle, otomatik tamamlama da sıfırdan oluşturuldu (sırasıyla __dir__ yönteminin aşırı yüklenmesiyle). Otomatik tamamlama şu anda BPython ve IPython ortamlarında çalışmaktadır. Elbette PyCharm gibi daha saygın ürünlerle entegrasyonu görmek isterim ve uygulama olanakları bu yönde araştırılıyor.

Özellikler ekleme

Sürümün bir parçası olarak, Shell sınıfı yeni bir last_command özelliği aldı. Buna olan ihtiyaç, sıfırdan farklı bir dönüş koduna sahip bir komut tarafından bir ShellException oluşturulduğunda, Command nesnesinin __call__() çağrısından komut nesnesine döndürülmemesi nedeniyle ortaya çıktı. Artık bunu yapmak için bir fırsat var:

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

Komut nesnesinin özelliklerinin listesi de genişletildi. Komut çıktısını hata akışına döndüren bir hata alanı eklendi.

Geçersiz Python adlarıyla komut çalıştırma

Hemen hemen her sistemde, adı Python'da tanımlayıcı olarak uygun olmayan en az bir program vardır (örneğin, iyi bilinen 2to3 yardımcı programı). Onu ara

Shell.2to3()

Eğer işe yaramazsa tercüman buna izin vermez.
Çözüm, komutu dolambaçlı bir şekilde çağırmaktır:

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

Aynı şekilde, yorumlayıcının bakış açısından geçerli olan komutları çalıştırabileceğinizi ve bunun da aşağıdaki gibi esnek komut dosyaları oluşturma fırsatını bıraktığını belirtmekte fayda var.

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

Küçük değişiklikler

  • Command sınıfı nesnesinin __repr__() ve __str__() yöntemleri uygulandı ve bunlar artık sezgisel değerler üretiyor (sırasıyla parametrelere sahip bir komut ve bunun stdout çıktısı).
  • Küçük kod düzeltmeleri.
  • Test kapsamının eklenmesi ve mevcut olanların yeniden düzenlenmesi.
  • Amacı, alt süreç modülüyle çalışırken ek bir soyutlama düzeyi oluşturmak olan Alt Süreç ve Süreç sınıflarının eklenmesi. Çoğunlukla Python 2/3 ile çalışırken kod tekrarını ortadan kaldırmak için gereklidir, ancak potansiyel olarak başka bonuslar da sağlayabilir.

Smart-env'deki yenilikler neler?

Python-Shell'in aksine, smart-env kütüphanesinde daha az değişiklik olmuştur. Bunun nedeni basit: bazı potansiyel iyileştirmelerin (örneğin, ortam değişkenlerinin otomatik tamamlanması) bir sonraki sürüme taşınması nedeniyle boş zaman eksikliği.

Aslında kütüphanede aşağıdaki değişiklikler yapıldı:

  • Küçük kod düzeltmeleri.
  • Yeniden düzenleme.
  • Mevcut testlerin yeniden düzenlenmesi ve iyileştirilmesi.

Sonraki sürümler için planlar

python-kabuk kütüphanesi

  • Engellemeyen komut çağrıları için destek eklenmesi (yürütmenin paralelleştirilmesi).

akıllı-env kütüphanesi

  • ENV sınıfında ortam değişkenlerinin otomatik tamamlanmasının uygulanması.
  • Bir env değişkeninin varlığını kontrol etmek için in operatörü desteği.
  • ENV sınıfı için str() ve repr() işlevlerine yönelik desteğin uygulanması.

Sonraki yayınların tarihleri ​​aşağıdaki iletişim kanallarında ayrıca duyurulacaktır:

Kaynak: habr.com

Yorum ekle