د Python او Bash ملګرتیا جوړول: د python-shell او smart-env v کتابتونونو خوشې کول. ۱.۰.۱

ټولو ته ښه ورځ!

29 فبروري 2020 کلونو د کتابتونونو رسمي کوچني خپرونه ترسره شوه smart-env и python-shell. د هغو کسانو لپاره چې نه پوهیږي، زه وړاندیز کوم چې تاسو یې لومړی ولولئ لومړی پوسټ.

په لنډه توګه، په بدلونونو کې د کمانډ بشپړول، د کمانډونو د چلولو لپاره پراخ شوي وړتیاوې، ځینې بیاکتنې او بګ اصلاحات شامل دي.

د جزیاتو لپاره مهرباني وکړئ بلی وګورئ.

په python-shell کې څه نوي دي؟

زه به سمدلاسه د خوږ سره پیل وکړم.

د امر بشپړول

موافق یاست - دا مناسب دی کله چې مدیر/IDE/ټرمینل تاسو ته د قوماندې نوم لپاره هڅوي ، او ځینې وختونه حتی د تلیفون پیرامیټونه؟ نو python-shell په تدریجي ډول د ورته فعالیت چمتو کولو کې پرمختګ کوي. د دې حقیقت له امله چې د هود لاندې د شیل ټولګي ساحې په حقیقت کې د هغې ساحې نه دي (د هر اړخیز __getattr__)، اوتوماتیک تکمیل هم له سکریچ څخه رامینځته شوی (په ترتیب سره د __dir__ میتود ډیر بار کولو سره). اتوماتیک تکمیل اوس مهال په BPython او IPython چاپیریالونو کې کار کوي. البته، زه غواړم چې د PyCharm په څیر د نورو معتبر محصولاتو سره ادغام وګورم، او د پلي کولو امکانات پدې لوري مطالعه کیږي.

د ملکیتونو اضافه کول

د خوشې کولو برخې په توګه، د شیل ټولګي یو نوی وروستی_کمانډ ملکیت ترلاسه کړ. د دې اړتیا رامینځته شوه ځکه چې کله د 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__() میتودونه پلي شوي، کوم چې اوس رواني ارزښتونه تولیدوي (په ترتیب سره د پیرامیټونو او د هغې د stdout محصول سره کمانډ).
  • کوچني کوډ اصلاحات.
  • د ازموینې پوښښ اضافه کول، په بیله بیا د موجودو بیا تنظیم کول.
  • د فرعي پروسس او پروسې ټولګیو اضافه کول، چې موخه یې د فرعي پروسس ماډل سره کار کولو په وخت کې د خلاصون اضافي کچې رامینځته کول دي. د Python 2/3 سره کار کولو په وخت کې د کوډ نقل کولو له مینځه وړو لپاره ډیری اړین دي، مګر په احتمالي توګه نور بونس هم چمتو کولی شي.

په smart-env کې څه نوي دي؟

د python-shell برعکس، په سمارټ-env کتابتون کې لږ بدلونونه شتون لري. د دې دلیل ساده دی - د وړیا وخت نشتوالی، په کوم کې چې ځینې احتمالي پرمختګونه (د بیلګې په توګه، د چاپیریال متغیراتو اتوماتیک بشپړول) راتلونکي ریلیز ته لیږدول شوي.

په حقیقت کې، په کتابتون کې لاندې بدلونونه رامنځته شوي دي:

  • کوچني کوډ اصلاحات.
  • ریفکټور کول.
  • د موجوده ازموینو بیا تنظیم او اصلاح کول.

د راتلونکو خپرونو لپاره پلانونه

د python-shell کتابتون

  • د غیر بلاک کولو کمانډ تلیفونونو لپاره ملاتړ اضافه کول (د اجرا کولو موازي کول).

smart-env کتابتون

  • په ENV ټولګي کې د چاپیریال متغیرونو د اتوماتیک بشپړولو پلي کول.
  • د ان آپریټر لپاره ملاتړ ترڅو د env متغیر شتون چیک کړي.
  • د ENV ټولګي لپاره د str() او repr() دندو لپاره د ملاتړ پلي کول.

د راتلونکو خپرونو نیټې به نور په لاندې ارتباطي چینلونو کې اعلان شي:

سرچینه: www.habr.com

Add a comment