Python және Bash достығын жасау: python-shell және smart-env v кітапханаларының шығарылымы. 1.0.1

Мейірімді күні барлық!

29 ақпан 2020 жыл кітапханалардың ресми шағын шығарылымы өтті smart-env и питон-қабық. Білмейтіндерге алдымен оқып шығуды ұсынамын бірінші пост.

Қысқаша айтқанда, өзгерістер пәрменді аяқтауды, пәрмендерді іске қосу үшін кеңейтілген мүмкіндіктерді, кейбір рефакторингті және қателерді түзетуді қамтиды.

Толық ақпаратты мысықтан қараңыз.

Python-shell-де қандай жаңалықтар бар?

Мен бірден десертпен бастаймын.

Пәрменді аяқтау

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

Қасиеттерді қосу

Шығарылым бөлігі ретінде Shell сыныбы жаңа last_command сипатын алды. Оның қажеттілігі туындады, себебі ShellException нөлден басқа қайтару коды бар пәрмен арқылы шығарылған кезде, Command нысаны __call__() шақыруынан пәрмен нысанына қайтарылмады. Енді мұны істеуге мүмкіндік бар:

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

Пәрмен нысанының қасиеттерінің тізімі де кеңейді. Пәрмен шығысын қате ағынына қайтаратын қателер өрісі қосылды.

Жарамсыз Python атаулары бар пәрмендерді іске қосу

Әрбір дерлік жүйеде кем дегенде бір бағдарлама бар, оның аты Python тілінде идентификатор ретінде жарамайды (мысалы, белгілі 2to3 утилитасы). Онымен бірге қоңырау шалыңыз

Shell.2to3()

Егер ол жұмыс істемесе, аудармашы оны жібермейді.
Шешім пәрменді айналмалы жолмен шақыру болып табылады:

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

Айта кету керек, дәл осылай сіз аудармашы тұрғысынан жарамды командаларды іске қоса аласыз, бұл икемді сценарийлерді жасау мүмкіндігін қалдырады.

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

Кішігірім өзгерістер

  • Команда сыныбы нысанының __repr__() және __str__() әдістері ендірілді, олар енді интуитивті мәндерді шығарады (тиісінше параметрлері бар пәрмен және оның stdout шығысы).
  • Шағын кодты түзетулер.
  • Сынақ қамтуын қосу, сондай-ақ барларын қайта ұйымдастыру.
  • Subprocess және Process кластарын қосу, олардың мақсаты ішкі процесс модулімен жұмыс істеу кезінде абстракцияның қосымша деңгейін құру. Негізінен Python 2/3-пен жұмыс істегенде кодтың қайталануын жою үшін қажет, бірақ басқа бонустарды да бере алады.

smart-env қолданбасында қандай жаңалықтар бар?

Python-shell-ден айырмашылығы, smart-env кітапханасында өзгерістер аз болды. Мұның себебі қарапайым – бос уақыттың болмауы, оның барысында кейбір әлеуетті жақсартулар (мысалы, орта айнымалы мәндерін автотолтыру) келесі шығарылымға ауыстырылды.

Іс жүзінде кітапханаға келесі өзгерістер енгізілді:

  • Шағын кодты түзетулер.
  • Рефакторинг.
  • Қолданыстағы сынақтарды қайта ұйымдастыру және нақтылау.

Келесі шығарылымдарға арналған жоспарлар

питон-қабық кітапханасы

  • Бұғаттамайтын пәрмен шақыруларына қолдауды қосу (орындауды параллельдеу).

smart-env кітапханасы

  • ENV класындағы орта айнымалыларының автотолтыруын жүзеге асыру.
  • env айнымалысының бар-жоғын тексеру үшін in операторын қолдау.
  • ENV класы үшін str() және repr() функцияларын қолдауды жүзеге асыру.

Келесі шығарылымдардың күндері келесі байланыс арналарында қосымша хабарланады:

Ақпарат көзі: www.habr.com

пікір қалдыру