పైథాన్ మరియు బాష్ స్నేహం చేయడం: పైథాన్-షెల్ మరియు స్మార్ట్-ఎన్వి v లైబ్రరీల విడుదల. 1.0.1

అందరికీ శుభదినం!

29 ఫిబ్రవరి 2020 సంవత్సరం లైబ్రరీల అధికారిక సూక్ష్మ విడుదల జరిగింది స్మార్ట్-env и పైథాన్-షెల్. తెలియని వారి కోసం, మొదట చదవమని నేను సూచిస్తున్నాను మొదటి పోస్ట్.

సంక్షిప్తంగా, మార్పులలో కమాండ్ పూర్తి చేయడం, అమలు చేసే ఆదేశాల కోసం విస్తరించిన సామర్థ్యాలు, కొన్ని రీఫ్యాక్టరింగ్ మరియు బగ్ పరిష్కారాలు ఉన్నాయి.

వివరాల కోసం దయచేసి పిల్లిని చూడండి.

పైథాన్-షెల్‌లో కొత్తగా ఏమి ఉంది?

నేను డెజర్ట్‌తో వెంటనే ప్రారంభిస్తాను.

కమాండ్ పూర్తి

అంగీకరిస్తున్నాను - ఎడిటర్/IDE/టెర్మినల్ మిమ్మల్ని కమాండ్ పేరు మరియు కొన్నిసార్లు కాల్ పారామితులు కోసం ప్రాంప్ట్ చేసినప్పుడు ఇది సౌకర్యవంతంగా ఉందా? కాబట్టి పైథాన్-షెల్ ఇలాంటి కార్యాచరణను అందించడంలో క్రమంగా పురోగతి సాధిస్తోంది. హుడ్ కింద ఉన్న షెల్ క్లాస్ యొక్క ఫీల్డ్‌లు దాని ఫీల్డ్‌లు (సర్వవ్యాప్త __getattr__) కాకుండా వాస్తవంగా ఉన్నందున, స్వయంపూర్తి కూడా మొదటి నుండి సృష్టించబడింది (వరుసగా __dir__ పద్ధతిని ఓవర్‌లోడ్ చేయడం ద్వారా). స్వయంపూర్తి ప్రస్తుతం BPython మరియు IPython పరిసరాలలో పని చేస్తుంది. వాస్తవానికి, నేను PyCharm వంటి మరింత గౌరవనీయమైన ఉత్పత్తులతో ఏకీకరణను చూడాలనుకుంటున్నాను మరియు ఈ దిశలో అమలు అవకాశాలను అధ్యయనం చేస్తున్నారు.

లక్షణాలను జోడిస్తోంది

విడుదలలో భాగంగా, షెల్ క్లాస్ కొత్త లాస్ట్_కమాండ్ ప్రాపర్టీని పొందింది. దాని అవసరం ఏర్పడింది ఎందుకంటే షెల్ఎక్సెప్షన్ సున్నా కాని రిటర్న్ కోడ్‌తో కమాండ్ ద్వారా విసిరినప్పుడు, కమాండ్ ఆబ్జెక్ట్ __call__() కాల్ నుండి కమాండ్ ఆబ్జెక్ట్‌కు తిరిగి ఇవ్వబడలేదు. ఇప్పుడు దీన్ని చేయడానికి అవకాశం ఉంది:

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

కమాండ్ ఆబ్జెక్ట్ యొక్క లక్షణాల జాబితా కూడా విస్తరించబడింది. కమాండ్ అవుట్‌పుట్‌ను ఎర్రర్ స్ట్రీమ్‌కి అందించే ఎర్రర్‌ల ఫీల్డ్ జోడించబడింది.

చెల్లని పైథాన్ పేర్లతో ఆదేశాలను అమలు చేస్తోంది

దాదాపు ప్రతి సిస్టమ్‌లో కనీసం ఒక ప్రోగ్రామ్ ఉంటుంది, దీని పేరు పైథాన్‌లో ఐడెంటిఫైయర్‌గా సరిపోదు (ఉదాహరణకు, బాగా తెలిసిన 2to3 యుటిలిటీ). ఆమెను పిలవండి

Shell.2to3()

అది పని చేయకపోతే, వ్యాఖ్యాత దానిని అనుమతించడు.
కమాండ్‌ను రౌండ్అబౌట్ మార్గంలో కాల్ చేయడం దీనికి పరిష్కారం:

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

అదే విధంగా మీరు వ్యాఖ్యాత యొక్క కోణం నుండి చెల్లుబాటు అయ్యే ఆదేశాలను అమలు చేయగలరని గమనించాలి, ఇది వంటి సౌకర్యవంతమైన స్క్రిప్ట్‌లను సృష్టించే అవకాశాన్ని వదిలివేస్తుంది.

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

చిన్న మార్పులు

  • కమాండ్ క్లాస్ ఆబ్జెక్ట్ యొక్క __repr__() మరియు __str__() పద్ధతులు అమలు చేయబడ్డాయి, ఇవి ఇప్పుడు సహజమైన విలువలను ఉత్పత్తి చేస్తాయి (పరామితులు మరియు దాని stdout అవుట్‌పుట్‌తో కూడిన కమాండ్ వరుసగా).
  • చిన్న కోడ్ పరిష్కారాలు.
  • పరీక్ష కవరేజీని జోడించడం, అలాగే ఇప్పటికే ఉన్న వాటిని పునర్వ్యవస్థీకరించడం.
  • సబ్‌ప్రాసెస్ మరియు ప్రాసెస్ క్లాస్‌లను జోడించడం, సబ్‌ప్రాసెస్ మాడ్యూల్‌తో పని చేస్తున్నప్పుడు అదనపు స్థాయి సంగ్రహణను సృష్టించడం దీని ఉద్దేశ్యం. పైథాన్ 2/3తో పని చేస్తున్నప్పుడు కోడ్ డూప్లికేషన్‌ను తొలగించడానికి ఎక్కువగా అవసరం, కానీ ఇతర బోనస్‌లను కూడా సమర్ధవంతంగా అందించవచ్చు.

Smart-envలో కొత్తవి ఏమిటి?

python-shell కాకుండా, smart-env లైబ్రరీలో తక్కువ మార్పులు జరిగాయి. దీనికి కారణం చాలా సులభం - ఖాళీ సమయం లేకపోవడం, ఈ సమయంలో కొన్ని సంభావ్య మెరుగుదలలు (ఉదాహరణకు, ఎన్విరాన్‌మెంట్ వేరియబుల్స్ స్వీయపూర్తి) తదుపరి విడుదలకు తరలించబడ్డాయి.

వాస్తవానికి, లైబ్రరీకి క్రింది మార్పులు చేయబడ్డాయి:

  • చిన్న కోడ్ పరిష్కారాలు.
  • రీఫ్యాక్టరింగ్.
  • ఇప్పటికే ఉన్న పరీక్షల పునర్వ్యవస్థీకరణ మరియు శుద్ధీకరణ.

తదుపరి విడుదలలకు ప్రణాళికలు

పైథాన్-షెల్ లైబ్రరీ

  • నాన్-బ్లాకింగ్ కమాండ్ కాల్‌లకు మద్దతును జోడిస్తోంది (ఎగ్జిక్యూషన్ యొక్క సమాంతరీకరణ).

స్మార్ట్-ఎన్వి లైబ్రరీ

  • ENV క్లాస్‌లో ఎన్విరాన్‌మెంట్ వేరియబుల్స్ యొక్క ఆటోకంప్లీషన్ అమలు.
  • env వేరియబుల్ ఉనికిని తనిఖీ చేయడానికి ఇన్ ఆపరేటర్‌కు మద్దతు.
  • ENV తరగతి కోసం str() మరియు repr() ఫంక్షన్‌లకు మద్దతు అమలు.

తదుపరి విడుదలల తేదీలు క్రింది కమ్యూనికేషన్ ఛానెల్‌లలో మరింత ప్రకటించబడతాయి:

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి