Միացնում ենք Python և Bash. python-shell և smart-env v. 1.0.1 գրադարանների թողարկում

Բարև բոլորին!

2020 թվականի փետրվարի 29-ը պաշտոնական միկրո-թողարկում է իրականացվել smart-env և python-shell. Ո quienes no están al tanto, propongo leer previamente առաջին գրառումը.

Հակիրճ ասած, փոփոխություններից մեկի մասին՝ ավտոմատ լրացում հրահանգների, հրահանգների գործարկման հնարավորությունների ընդլայնում, մի փոքր վերանայում և փաթեթներ գրանցումների:

Դիտել մանրամասները խնդրում եմ ստորև:

Ինչ նոր բան կա 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

Ինչպես նաև ավելացել է Command օբյեկտի հատկությունների ցուցակը: Ավելացվել է errors դաշտը, որը վերադարձնում է հրահանգի իրողությունները սխալներ հոսանքում:

Հրահանգների գործարկում Python-ի անվավեր անուններով

prácticamente cualquier sistema tiene al menos un programa cuyo nombre no sirve como identificador en Python (por ejemplo, conocida utilidad 2to3):

Shell.2to3()

չի ստացվի ՝ մեկնաբանիչը չի թույլտնելու:
Լուծումը՝ հրահանգը մեղմ ճանապարհով գործարկել:

Shell("2to3")  # վերադարձնում է հրահանգի օբյեկտ

Զարմանալի չէ, որ այս նույն կերպ կարելի է գործել նաև մեկնաբանիչի խոսակցական անուններով հրահանգների համար, ինչը թողնում է հնարավորություն ստեղծելու հարմարավետ սկրիպտեր, օրինակ՝

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

Փոքր փոփոխություններ

  • Տեղի ունենում են __repr__() և __str__() մեթոդների իրականացման Դաս Command օբյեկտի, որոնք այժմ վերադարձնում են ինտուիտիվ հասկացելի արժեքներ (հրահանգն իր պարամետրերով և stdout-ի արտադրանքը համապատասխան):
  • Փոքր հաղթահարումներ կոդում:
  • Ավելացրած тестերի ծածկումները, ինչպես նաև առկա արդյունակարքերը կազմակերպելով:
  • Ավելացված Subprocess և Process դասեր, որոնց նպատակն է ավելացնել լրացնող մակարդակ գործունեության մեջ subprocess մոդուլի հետ: Գլխավորապես, անհրաժեշտ է կոդի կրկնությունները վերացնելու համար Python 2/3-ի հետ, բայց կարող է տալ նաև այլ առավելություններ:

Ինչ նոր բան կա smart-env-ում?

Ոչ պակաս հետաքրքիր փոփոխություններ են տեղի ունեցել smart-env գրադարանը, ի տարբերություն python-shell-ի: Դա պարզ է՝ ժամանակի պակասի պատճառով, ինչի հետևանքով որոշ հնարավոր բարելավումներ (օրինակ, միջավայրերի փոփոխականների ավտամատակարարումը) տեղափոխվել են հաջորդ թողարկում:

Ի վերջո, գրադարանի մեջ տեղի են ունեցել հետևյալ փոփոխություններ:

  • Փոքր հաղթահարումներ կոդում:
  • Չափազահում:
  • Առկա թեստերի վերակազմավորում և բարելավում:

Հաջորդ թողարկումների պլաններ:

Python-shell գրադարանը:

  • Ավելացրել ենք հրավառակի աշտարակչություններ (կողմնակի կատարում):

Smart-env գրադարանը:

  • ENV դասում միջավայրերի փոփոխականների ավտոմատ լրացման իրականացում:
  • in օպերատորի աջակցություն՝ env-փոփոխականների գոյությունը ստուգելու համար:
  • ENV դասի համար str() և repr() ֆունկցիաների աջակցություն:

Հաջորդ թողարկումների մասին կհայտարարվի լրացուցիչ էությունն այդ հաղորդակցման ալիքներում:

Ընտանիք: habr.com

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster