Python və Bash-i birləşdiririk: python-shell və smart-env kitabxanalarının 1.0.1 versiyasının buraxılışı

Hər kəsə salam!

29 fevral 2020-ci il təxminən rəsmi mikro-reliz baş tutdu smart-envpython-shell. Xəbərdə olmayanlar üçün əvvəlki yazını oxumağı tövsiyə edirəm ilk yazı.

Qısa desək, dəyişikliklər arasında komandaların avtomatik tamamlanması, komanda icra etmə imkanı, bir az refaktorinq və səhv düzəlişləri var.

Ətraflı məlumat üçün davam edin.

python-shell-də nə yenilik var?

Dərhal desertlə başlayım.

Komanda avtomatik tamamlama

Qəbul edirsiniz ki, redaktor/IDE/terminal komandanın adını və bəzən çağırış parametrlərini göstərdikdə rahatdır? Elə python-shell də belə bir funksionallıq təmin etməyə doğru irəliləyir. Shell sinfinin altındakı sahələr de-facto onun sahələri olmadığından (__getattr__ adlandırılmış), avtomatik tamamlanma sıfırdan yaradılmışdır (müvafiq olaraq __dir__ metodunun yenidən yüklənməsi). Hal-hazırda avtomatik tamamlanma BPython və IPython mühitlərində işləyir. Əlbəttə ki, PyCharm kimi daha tanınmış məhsullarla inteqrasiya görmək istəyirik və bu istiqamətdə imkanlar araşdırılır.

Xüsusiyyətlərin əlavə edilməsi

Reliz çərçivəsində Shell sinfi yeni last_command xüsusiyyətini qazandı. Bu, ShellException ilə sıfırdan fərqli qaytarma kodu olan komanda ilə xəta meydana gəldikdə, Command obyekti __call__() metodu vasitəsilə qorunmağı tələb edir. İndi belə etmək mümkündür:

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

Həmçinin Command obyektinin xassələri siyahısı genişləndi. errors sahəsi əlavə olundu ki, bu da komandanın çıxışını səhv axınında qaytarır.

Python-da etibarsız adlarla komandaların icrası

Halmost bütün sistemlərdə Python üçün identifikator rolunu oynamayan ən azı bir proqram var (məsələn, məşhur 2to3 aləti). Onu çağırmaq mümkün deyil

Shell.2to3()

interpretator buraxmayacaq.
Həll yolu — komandanı dolanma yolu ilə çağırmaqdır:

Shell("2to3")  # komanda obyekti qaytarır

Eyni zamanda, bu yolla interpretator tərəfindən etibarlı olan komandaları da icra etmək mümkündür ki, bu da elastik skript yazma imkanı verir

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

Kiçik dəyişikliklər

  • __repr__() və __str__() metodları Command sinfində implementasiya edilmişdir ki, bu da indiyə qədər intuitiv olaraq başa düşülən dəyərləri (parametrlərlə komandaları və stdout çıxışını müvafiq olaraq) verir.
  • Koda kiçik düzəlişlər edilib.
  • Test örtüyünün əlavə edilməsi və mövcudların yenidən təşkili.
  • Subprocess və Process siniflərinin əlavə edilməsi, məqsəd — subprocess modulu ilə işləyərkən əlavə bir abstraksiya səviyyəsini yaratmaqdır. Bu, əsasən Python 2/3 ilə işləyərkən kodun təkrarını aradan qaldırmaq üçündür, lakin potensial olaraq başqa avantajlar da təqdim edə bilər.

smart-env-də nə yenilik var?

Python-shell-dən fərqli olaraq, smart-env kitabxanasında dəyişikliklər daha az baş vermişdir. Bunun səbəbi sadədir — sərbəst vaxtın olmaması nəticəsində bəzi potensial inkişaflar (məsələn, mühit dəyişkənlərinin avtomatik tamamlanması) növbəti buraxılışa keçirilib.

Əslində, kitabxanada aşağıdakı dəyişikliklər edilmişdir:

  • Koda kiçik düzəlişlər edilib.
  • Refaktoring.
  • Mövcud testlərin yenidən təşkili və təkmilləşdirilməsi.

Növbəti buraxılışlarla bağlı planlar

python-shell kitabxanası

  • Komanda çağırışlarının qeyri-bloklama dəstəyinin əlavə edilməsi (icra etmənin paralelləşdirilməsi).

smart-env kitabxanası

  • ENV sinifində mühit dəyişkənlərinin avtomatik tamamlanmasının tətbiqi.
  • Env-dəm dəyişkəninin mövcudluğunu yoxlamaq üçün in operatorunun dəstəyi.
  • ENV sinifi üçün str() və repr() funksiyalarının dəstəyi.

Növbəti buraxılışların tarixləri ilə bağlı əlavə elanlar aşağıdakı rabitə kanallarında olacaq:

Mənbə: habr.com

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster