Python və Bash Dostluğunun yaradılması: Python-shell və smart-env v kitabxanalarının buraxılışı. 1.0.1

Hər kəsə xeyirli gün!

Fevral 29 2020 il kitabxanaların rəsmi mikro buraxılışı baş tutdu smart-env и piton qabığı. Bilməyənlər üçün əvvəlcə oxumağı məsləhət görürəm ilk yazı.

Bir sözlə, dəyişikliklərə əmrlərin tamamlanması, əmrləri yerinə yetirmək üçün genişləndirilmiş imkanlar, bəzi refaktorinq və səhvlərin düzəldilməsi daxildir.

Ətraflı məlumat üçün pişiyə baxın.

Python-shell-də nə yenilik var?

Dərhal desertlə başlayacağam.

Komandanın tamamlanması

Razılaşın - redaktor/IDE/terminal sizə əmrin adını və bəzən hətta zəng parametrlərini soruşduqda rahatdır? Beləliklə, python-shell oxşar funksionallığı təmin etməkdə tədricən irəliləyir. Kaputun altındakı Shell sinfinin sahələri onun sahələri deyil (hər yerdə olan __getattr__) faktiki olduğundan, avtomatik tamamlama da sıfırdan yaradılmışdır (müvafiq olaraq __dir__ metodunu həddən artıq yükləməklə). Avtomatik tamamlama hazırda BPython və IPython mühitlərində işləyir. Əlbəttə, mən PyCharm kimi daha hörmətli məhsullarla inteqrasiya görmək istərdim və bu istiqamətdə tətbiq imkanları araşdırılır.

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

Buraxılışın bir hissəsi olaraq Shell sinfi yeni last_command xüsusiyyətini aldı. Buna ehtiyac yarandı, çünki ShellException sıfırdan fərqli qaytarma kodu olan bir komanda tərəfindən atılanda, Command obyekti __call__() çağırışından əmr obyektinə qaytarılmadı. İndi bunu etmək üçün bir fürsət var:

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

Command obyektinin xassələrinin siyahısı da genişlənmişdir. Komanda çıxışını xəta axınına qaytaran səhvlər sahəsi əlavə edildi.

Etibarsız Python adları olan əmrlərin icrası

Demək olar ki, hər bir sistemdə adı Python-da identifikator kimi uyğun olmayan ən azı bir proqram var (məsələn, tanınmış 2to3 utiliti). Onunla zəng edin

Shell.2to3()

Əgər işləmirsə, tərcüməçi onu buraxmayacaq.
Həll yolu dairəvi şəkildə əmri çağırmaqdır:

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

Qeyd etmək lazımdır ki, eyni şəkildə tərcüməçinin nöqteyi-nəzərindən etibarlı olan əmrləri işlədə bilərsiniz və bu, kimi çevik skriptlər yaratmaq imkanını yaradır.

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

Kiçik dəyişikliklər

  • Command sinfi obyektinin __repr__() və __str__() metodları tətbiq edilmişdir ki, bu da indi intuitiv dəyərlər (parametrləri olan əmr və müvafiq olaraq stdout çıxışı) yaradır.
  • Kiçik kod düzəlişləri.
  • Test əhatə dairəsinin əlavə edilməsi, eləcə də mövcud olanların yenidən təşkili.
  • Məqsədi subproses modulu ilə işləyərkən əlavə abstraksiya səviyyəsini yaratmaq olan Subprocess və Process siniflərinin əlavə edilməsi. Əsasən Python 2/3 ilə işləyərkən kodun təkrarlanmasının aradan qaldırılması üçün lazım idi, lakin potensial olaraq digər bonuslar da təmin edə bilər.

smart-env-də nə yenilik var?

Python-shell-dən fərqli olaraq smart-env kitabxanasında daha az dəyişiklik olub. Bunun səbəbi sadədir - boş vaxtın olmaması, bu müddət ərzində bəzi potensial təkmilləşdirmələr (məsələn, mühit dəyişənlərinin avtomatik tamamlanması) növbəti buraxılışa köçürüldü.

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

  • Kiçik kod düzəlişləri.
  • Refaktorinq.
  • Mövcud testlərin yenidən təşkili və təkmilləşdirilməsi.

Növbəti buraxılışlar üçün planlar

python shell kitabxanası

  • Bloklanmayan əmr zəngləri üçün dəstəyin əlavə edilməsi (icranın paralelləşdirilməsi).

smart-env kitabxanası

  • ENV sinfində mühit dəyişənlərinin avtomatik tamamlanmasının həyata keçirilməsi.
  • Env dəyişəninin mövcudluğunu yoxlamaq üçün in operatoruna dəstək.
  • ENV sinfi üçün str() və repr() funksiyaları üçün dəstəyin həyata keçirilməsi.

Növbəti buraxılışların tarixləri daha sonra aşağıdakı rabitə kanallarında elan ediləcək:

Mənbə: www.habr.com

Добавить комментарий