Python болон Bash нөхөрлөлийг бий болгох нь: Python-shell болон smart-env v номын сангуудыг гаргах. 1.0.1

Бүгдэд нь энэ өдрийн мэнд!

29 Хоёрдугаар сар 2020 жил номын сангуудын албан ёсны бичил нээлт боллоо smart-env и питон бүрхүүл. Мэдэхгүй хүмүүст эхлээд уншихыг зөвлөж байна анхны бичлэг.

Товчхондоо, өөрчлөлтүүд нь тушаалыг дуусгах, тушаалуудыг ажиллуулах өргөтгөсөн боломжууд, зарим рефакторинг болон алдаа засваруудыг багтаасан болно.

Дэлгэрэнгүйг муурнаас үзнэ үү.

Python-shell-д ямар шинэ зүйл байна вэ?

Би тэр даруй амттангаар эхэлнэ.

Тушаал дуусгах

Зөвшөөрч байна уу - редактор/IDE/терминал танд командын нэр, заримдаа дуудлагын параметрүүдийг асуухад тохиромжтой юу? Тиймээс python-shell нь ижил төстэй функцийг хангахад аажмаар ахиц дэвшил гаргаж байна. Бүрээсний доорх Shell ангиллын талбарууд нь түүний талбар биш (хаа сайгүй байдаг __getattr__) байдаг тул автомат бөглөлтийг эхнээс нь бий болгосон (__dir__ аргыг хэт ачаалснаар). Автомат бөглөх нь одоогоор BPython болон IPython орчинд ажилладаг. Мэдээжийн хэрэг, би PyCharm гэх мэт илүү нэр хүндтэй бүтээгдэхүүнтэй нэгтгэхийг хүсч байгаа бөгөөд энэ чиглэлд хэрэгжүүлэх боломжийг судалж байна.

Properties нэмэх

Хувилбарын нэг хэсэг болгон Shell анги шинэ last_command шинж чанарыг хүлээн авсан. ShellException-ийг тэгээс өөр буцах кодтой тушаалаар шидэх үед тушаалын объект руу __call__() дуудлагаас Command объект буцаж ирээгүй тул үүний хэрэгцээ үүссэн. Одоо үүнийг хийх боломж байна:

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

Command объектын шинж чанаруудын жагсаалт мөн өргөжсөн. Командын гаралтыг алдааны урсгал руу буцаадаг алдааны талбарыг нэмсэн.

Хүчингүй Python нэртэй тушаалуудыг ажиллуулж байна

Бараг бүх системд дор хаяж нэг програм байдаг бөгөөд түүний нэр нь Python хэл дээр танигчаар тохирохгүй (жишээ нь, сайн мэддэг 2to3 хэрэгсэл). Түүнтэй хамт дууд

Shell.2to3()

Хэрэв энэ нь ажиллахгүй бол орчуулагч үүнийг нэвтрүүлэхгүй.
Үүний шийдэл бол командыг тойруулан дуудах явдал юм.

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

Үүнтэй адилаар та орчуулагчийн үүднээс хүчинтэй тушаалуудыг ажиллуулж болох бөгөөд энэ нь уян хатан скрипт үүсгэх боломжийг үлдээдэг гэдгийг тэмдэглэх нь зүйтэй.

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

Бага зэргийн өөрчлөлтүүд

  • Command классын объектын __repr__() ба __str__() аргуудыг хэрэгжүүлсэн бөгөөд одоо интуитив утгууд (параметр бүхий тушаал ба түүний stdout гаралт тус тус) үүсгэдэг.
  • Жижиг кодын засварууд.
  • Туршилтын хамрах хүрээг нэмэх, мөн одоо байгаа хүмүүсийг дахин зохион байгуулах.
  • Дэд процесс болон процессын ангиудыг нэмэх нь дэд процессын модультай ажиллахдаа хийсвэрлэлийн нэмэлт түвшинг бий болгох зорилготой юм. Python 2/3-тай ажиллахдаа кодын давхардлыг арилгахад ихэвчлэн хэрэгтэй байсан ч бусад урамшуулал өгөх боломжтой.

smart-env-д ямар шинэ зүйл байна вэ?

Python-shell-ээс ялгаатай нь smart-env номын санд цөөн өөрчлөлт гарсан. Үүний шалтгаан нь энгийн байдаг - чөлөөт цаг байхгүй, зарим боломжит сайжруулалтууд (жишээлбэл, орчны хувьсагчдыг автоматаар бөглөх) дараагийн хувилбар руу шилжсэн.

Үнэн хэрэгтээ номын санд дараах өөрчлөлтүүд орсон байна.

  • Жижиг кодын засварууд.
  • Дахин засварлах.
  • Одоо байгаа туршилтуудыг дахин зохион байгуулах, боловсронгуй болгох.

Дараагийн хувилбаруудын төлөвлөгөө

питон бүрхүүлийн номын сан

  • Блоклохгүй командын дуудлагын дэмжлэгийг нэмж байна (гүйцэтгэлийн зэрэгцээ).

smart-env номын сан

  • ENV анги дахь орчны хувьсагчдыг автоматаар дүүргэхийг хэрэгжүүлэх.
  • env хувьсагч байгаа эсэхийг шалгах in операторын дэмжлэг.
  • ENV ангиллын str() болон repr() функцүүдийн дэмжлэгийг хэрэгжүүлэх.

Дараагийн хувилбаруудын огноог дараах харилцаа холбооны сувгаар цаашид зарлах болно.

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх