Стварање пријатељства између Питхон-а и Басх-а: Издавање питхон-схелл и смарт-енв в библиотека. 1.0.1

Добар дан свима!

Фебруар КСНУМКС КСНУМКС година извршено званично микро издање библиотека смарт-енв и питхон-схелл. За оне који не знају, предлажем да прво прочитају први пост.

Укратко, промене укључују довршавање команди, проширене могућности за покретање команди, неке рефакторе и исправке грешака.

За детаље погледајте кат.

Шта је ново у питхон-схелл-у?

Почећу одмах са десертом.

Завршетак команде

Слажете се - згодно је када вам едитор/ИДЕ/терминал затражи назив команде, а понекад чак и параметре позива? Дакле, питхон-схелл постепено напредује у пружању сличне функционалности. Због чињенице да поља класе Схелл испод хаубе де-факто нису њена поља (свеприсутни __гетаттр__), аутоматско довршавање је такође креирано од нуле (преоптерећењем методе __дир__). Аутоматско довршавање тренутно ради у БПитхон и ИПитхон окружењима. Наравно, волео бих да видим интеграцију са угледнијим производима као што је ПиЦхарм, а могућности имплементације се проучавају у том правцу.

Додавање својстава

Као део издања, класа Схелл је добила ново ласт_цомманд својство. Потреба за тим се појавила зато што када је СхеллЕкцептион избачена наредбом са повратним кодом који није нула, објекат Цомманд није враћен из позива __цалл__() командном објекту. Сада постоји прилика да то урадите:

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

Листа својстава Цомманд објекта је такође проширена. Додато поље за грешке које враћа излаз команде у ток грешака.

Покретање команди са неважећим Питхон именима

Скоро сваки систем има бар један програм чије име није погодно као идентификатор у Питхон-у (на пример, добро познати услужни програм 2то3). Позови је са

Shell.2to3()

Ако не успе, преводилац га неће пустити.
Решење је да позовете команду на заобилазни начин:

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

Вреди напоменути да на исти начин можете покренути команде које су валидне са становишта тумача, што оставља могућност креирања флексибилних скрипти попут

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

Мање промене

  • Имплементиране су методе __репр__() и __стр__() објекта класе Цомманд, које сада производе интуитивне вредности (команда са параметрима и њен стдоут излаз, респективно).
  • Мање исправке кода.
  • Додавање покривености тестом, као и реорганизација постојећих.
  • Додавање класа Подпроцес и Процес чија је сврха стварање додатног нивоа апстракције при раду са модулом подпроцеса. Углавном је потребно да се елиминише дуплирање кода када се ради са Питхон 2/3, али потенцијално може да пружи и друге бонусе.

Шта је ново у смарт-енв?

За разлику од питхон-схелл-а, било је мање промена у библиотеци смарт-енв. Разлог за то је једноставан – недостатак слободног времена, током којег су нека потенцијална побољшања (на пример, аутодовршавање варијабли окружења) премештена у следеће издање.

У ствари, следеће промене су направљене у библиотеци:

  • Мање исправке кода.
  • Рефакторинг.
  • Реорганизација и усавршавање постојећих тестова.

Планови за следећа издања

питхон-схелл библиотека

  • Додавање подршке за неблокирајуће позиве команди (паралелизација извршавања).

смарт-енв библиотека

  • Имплементација аутодовршавања варијабли окружења у ЕНВ класи.
  • Подршка за ин оператор за проверу постојања енв променљиве.
  • Имплементација подршке за функције стр() и репр() за ЕНВ класу.

Датуми наредних издања биће накнадно објављени на следећим каналима комуникације:

Извор: ввв.хабр.цом

Додај коментар