Эҷоди дӯстии 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 бо фармони рамзи бозгашти ғайри сифр партофта шуд, объекти Фармон аз занги __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__()-и объекти синфи Command амалӣ карда шуданд, ки ҳоло арзишҳои интуитивиро тавлид мекунанд (фармон бо параметрҳо ва баромади stdout он мутаносибан).
  • Ислоҳи кодҳои хурд.
  • Илова кардани фарогирии санҷиш, инчунин азнавташкилдиҳии мавҷуда.
  • Илова кардани синфҳои Subprocess ва Process, ки ҳадафи онҳо эҷод кардани сатҳи иловагии абстраксия ҳангоми кор бо модули зерпроцессҳо мебошад. Ҳангоми кор бо Python 2/3 асосан барои бартараф кардани такрори код лозим буд, аммо эҳтимолан метавонад мукофотҳои дигарро низ таъмин кунад.

Дар smart-env чӣ нав аст?

Баръакси python-shell, дар китобхонаи smart-env тағйироти камтар ба амал омад. Сабаби ин оддӣ аст - набудани вақти холӣ, ки дар давоми он баъзе беҳбудиҳои эҳтимолӣ (масалан, худкор анҷом додани тағирёбандаҳои муҳити зист) ба версияи навбатӣ интиқол дода шуданд.

Дар асл, дар китобхона тағйироти зерин ворид карда шуданд:

  • Ислоҳи кодҳои хурд.
  • Рефакторинг.
  • Аз нав ташкил кардан ва такмил додани санҷишҳои мавҷуда.

Нақшаҳо барои нашрҳои оянда

китобхонаи python-shell

  • Илова кардани дастгирӣ барои зангҳои фармони ғайрибандӣ (параллелизатсияи иҷро).

китобхонаи smart-env

  • Амалисозии автоматии тағирёбандаҳои муҳити зист дар синфи ENV.
  • Дастгирии оператори in барои тафтиши мавҷудияти тағирёбандаи env.
  • Амалисозии дастгирии функсияҳои str() ва repr() барои синфи ENV.

Санаи нашрҳои навбатӣ минбаъд дар каналҳои алоқаи зерин эълон карда мешавад:

Манбаъ: will.com

Илова Эзоҳ