Python жана Bash достугун түзүү: python-shell жана smart-env v китепканаларын чыгаруу. 1.0.1

Баарыңарга жакшы күн!

February 29 2020 жыл китепканалардын расмий микро-релизи болуп өттү smart-env и питон-кабык. Билбегендер үчүн алгач окуп чыгууну сунуштайм биринчи пост.

Кыскача айтканда, өзгөртүүлөр командаларды аткарууну, буйруктарды иштетүү үчүн кеңейтилген мүмкүнчүлүктөрдү, кээ бир рефакторингди жана мүчүлүштүктөрдү оңдоону камтыйт.

чоо-жайы үчүн кошка карагыла.

Python-shellде эмне жаңылык?

Мен дароо десерт менен баштайм.

Буйруктун бүтүшү

Макулмун - редактор/IDE/терминал сизден буйруктун атын, ал тургай кээде чалуу параметрлерин сураганда ыңгайлуубу? Ошентип, python-shell акырындык менен окшош функцияларды камсыз кылууда прогресске жетишүүдө. Капоттун астындагы Shell классынын талаалары анын талаалары эмес де-факто болгондуктан (бардык жердеги __getattr__), автотолуктоо да нөлдөн баштап түзүлгөн (тиешелүүлүгүнө жараша __dir__ ыкмасын ашыкча жүктөө менен). Автотолтуруу учурда BPython жана IPython чөйрөлөрүндө иштейт. Албетте, мен PyCharm сыяктуу кадыр-барктуу продуктылар менен интеграцияны көргүм келет жана бул багытта ишке ашыруу мүмкүнчүлүктөрү изилденип жатат.

Properties кошуу

Чыгаруунун бир бөлүгү катары, Shell классы жаңы last_command касиетин алды. Анын зарылдыгы келип чыккан, анткени ShellException нөл эмес кайтаруу коду менен буйрук тарабынан ыргытылганда, Command объекти __call__() чалуудан буйрук объектисине кайтарылган эмес. Эми муну жасоого мүмкүнчүлүк бар:

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

Command объектинин касиеттеринин тизмеси да кеңейди. Ката агымына буйрук чыгарууну кайтарган каталар талаасы кошулду.

Жараксыз Python аталыштары бар буйруктарды иштетүү

Дээрлик ар бир системада жок дегенде бир программа бар, анын аты Python тилинде идентификатор катары ылайыктуу эмес (мисалы, белгилүү 2to3 утилитасы). Аны менен чал

Shell.2to3()

Эгер ал иштебесе, котормочу аны өткөрбөйт.
Чечим команданы айланма жол менен чакыруу:

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

Белгилей кетчү нерсе, ошол эле жол менен сиз котормочунун көз карашы боюнча жарактуу буйруктарды иштете аласыз, бул сыяктуу ийкемдүү скрипттерди түзүүгө мүмкүнчүлүк берет.

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

Майда өзгөрүүлөр

  • Command классынын объектинин __repr__() жана __str__() методдору ишке ашырылды, алар азыр интуитивдик маанилерди чыгарышат (параметрлери бар буйрук жана анын stdout чыгаруусу, тиешелүүлүгүнө жараша).
  • Майда код оңдоолор.
  • Тесттик камтууну кошуу, ошондой эле барларды кайра уюштуруу.
  • Subprocess жана Process класстарын кошуу, алардын максаты субпроцесс модулу менен иштөөдө абстракциянын кошумча деңгээлин түзүү. Негизинен Python 2/3 менен иштөөдө коддун кайталанышын жок кылуу керек, бирок башка бонустарды да бере алат.

smart-env'де эмне жаңылык?

Python-shellден айырмаланып, smart-env китепканасында өзгөрүүлөр азыраак болду. Мунун себеби жөнөкөй - бош убакыттын жоктугу, анын жүрүшүндө кээ бир потенциалдуу жакшыртуулар (мисалы, айлана-чөйрөнүн өзгөрмөлөрүнүн автотолтуруусу) кийинки релизге жылдырылды.

Чындыгында китепканага төмөнкүдөй өзгөртүүлөр киргизилди:

  • Майда код оңдоолор.
  • Рефакторинг.
  • Учурдагы тесттерди кайра уюштуруу жана тактоо.

Кийинки чыгарылыштарга пландар

python-shell китепканасы

  • Бөгөттөлбөгөн буйрук чалууларды колдоону кошуу (аткаруу параллелизациясы).

smart-env китепканасы

  • ENV классында чөйрө өзгөрмөлөрүнүн автотолтуруусун ишке ашыруу.
  • env өзгөрмөнүн бар экендигин текшерүү үчүн in операторун колдоо.
  • ENV классы үчүн str() жана repr() функцияларын колдоону ишке ашыруу.

Кийинки чыгарылыштардын датасы төмөнкү байланыш каналдарында дагы жарыяланат:

Source: www.habr.com

Комментарий кошуу