Python සහ Bash මිත්‍රත්වය ඇති කර ගැනීම: python-shell සහ smart-env v පුස්තකාල මුදා හැරීම. 1.0.1

හැමෝටම සුභ දවසක්!

29 පෙබරවාරි 2020 වසර පුස්තකාලවල නිල ක්ෂුද්‍ර මුදා හැරීම සිදු විය smart-env и python-shell. නොදන්නා අය සඳහා, මම එය මුලින්ම කියවන ලෙස යෝජනා කරමි පළමු පෝස්ට්.

කෙටියෙන් කිවහොත්, වෙනස්කම් වලට විධාන සම්පූර්ණ කිරීම, විධාන ක්රියාත්මක කිරීම සඳහා පුළුල් කිරීමේ හැකියාවන්, සමහර ප්රතිනිෂ්පාදනය සහ දෝෂ නිවැරදි කිරීම් ඇතුළත් වේ.

විස්තර සඳහා කරුණාකර බළලා බලන්න.

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)

සුළු වෙනස්කම්

  • Command class object හි __repr__() සහ __str__() ක්‍රම ක්‍රියාවට නංවා ඇති අතර, එය දැන් බුද්ධිමය අගයන් (පරාමිතීන් සහිත විධානයක් සහ එහි stdout ප්‍රතිදානය, පිළිවෙලින්) නිපදවයි.
  • කුඩා කේත නිවැරදි කිරීම්.
  • පරීක්ෂණ ආවරණය එකතු කිරීම මෙන්ම පවතින ඒවා ප්‍රතිසංවිධානය කිරීම.
  • උපක්‍රියාවලි සහ ක්‍රියාවලි පන්ති එකතු කිරීම, එහි අරමුණ වන්නේ උප ක්‍රියාවලි මොඩියුලය සමඟ වැඩ කිරීමේදී අතිරේක වියුක්ත මට්ටමක් නිර්මාණය කිරීමයි. Python 2/3 සමඟ වැඩ කරන විට කේත අනුපිටපත් ඉවත් කිරීමට බොහෝ දුරට අවශ්‍ය වේ, නමුත් වෙනත් ප්‍රසාද දීමනා ද ලබා දිය හැකිය.

Smart-env හි අලුත් මොනවාද?

python-shell මෙන් නොව, smart-env පුස්තකාලයේ අඩු වෙනස්කම් සිදුවී ඇත. මෙයට හේතුව සරලයි - නිදහස් කාලය නොමැතිකම, සමහර විභව වැඩිදියුණු කිරීම් (උදාහරණයක් ලෙස, පරිසර විචල්‍යයන් ස්වයංක්‍රීයව සම්පූර්ණ කිරීම) ඊළඟ නිකුතුවට ගෙන යන ලදී.

ඇත්ත වශයෙන්ම, පුස්තකාලයට පහත වෙනස්කම් සිදු කර ඇත:

  • කුඩා කේත නිවැරදි කිරීම්.
  • නැවත සකස් කිරීම.
  • පවතින පරීක්ෂණ ප්‍රතිසංවිධානය සහ ශෝධනය කිරීම.

මීළඟ නිකුතු සඳහා සැලසුම්

python-shell පුස්තකාලය

  • අවහිර නොවන විධාන ඇමතුම් සඳහා සහය එකතු කිරීම (ක්‍රියාත්මක කිරීමේ සමාන්තරකරණය).

smart-env පුස්තකාලය

  • ENV පන්තියේ පරිසර විචල්‍යයන් ස්වයංක්‍රීයව සම්පූර්ණ කිරීම ක්‍රියාත්මක කිරීම.
  • env විචල්‍යයක පැවැත්ම පරීක්ෂා කිරීමට in operator සඳහා සහාය.
  • ENV පන්තිය සඳහා str() සහ repr() ශ්‍රිත සඳහා සහය ක්‍රියාත්මක කිරීම.

මීළඟ නිකුතුවල දිනයන් පහත සන්නිවේදන නාලිකාවල තවදුරටත් ප්‍රකාශයට පත් කෙරේ.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න