Բարև բոլորին!
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
