تكوين صداقة بين بايثون وباش: إصدار مكتبات python-shell وsmart-env v. 1.0.1

يوم جيد للجميع!

فبراير 29 2020 سنوات تم الإصدار الرسمي الصغير للمكتبات سمارت إنف и قذيفة الثعبان. لمن ليس لديه المعرفة أنصحك بقراءتها أولاً أول منشور.

باختصار، تتضمن التغييرات إكمال الأوامر، والقدرات الموسعة لتشغيل الأوامر، وبعض عمليات إعادة الهيكلة وإصلاحات الأخطاء.

لمزيد من التفاصيل يرجى الاطلاع على القط.

ما الجديد في بيثون شل؟

سأبدأ على الفور مع الحلوى.

إتمام الأمر

هل توافق - من الملائم أن يطالبك المحرر/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 (على سبيل المثال، الأداة المساعدة 2to3 المعروفة). اتصل بها

Shell.2to3()

إذا لم ينجح الأمر، فلن يسمح المترجم بذلك.
الحل هو استدعاء الأمر بطريقة ملتوية:

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

ومن الجدير بالذكر أنه بنفس الطريقة يمكنك تشغيل الأوامر الصالحة من وجهة نظر المترجم الفوري، مما يترك الفرصة لإنشاء نصوص برمجية مرنة مثل

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

تغييرات طفيفة

  • تم تنفيذ أساليب __repr__() و __str__() لكائن فئة الأوامر، والتي تنتج الآن قيمًا بديهية (أمر ذو معلمات ومخرجات stdout الخاصة به، على التوالي).
  • إصلاحات رمز طفيفة.
  • إضافة تغطية الاختبار، وكذلك إعادة تنظيم القائمة.
  • إضافة فئتي العمليات الفرعية والعمليات، والغرض منها هو إنشاء مستوى إضافي من التجريد عند العمل مع وحدة العمليات الفرعية. مطلوب في الغالب للتخلص من تكرار التعليمات البرمجية عند العمل مع Python 2/3، ولكن من المحتمل أن يوفر مكافآت أخرى أيضًا.

ما الجديد في البيئة الذكية؟

على عكس python-shell، كانت هناك تغييرات أقل في مكتبة Smart-env. السبب وراء ذلك بسيط - عدم وجود وقت فراغ، تم خلاله نقل بعض التحسينات المحتملة (على سبيل المثال، الإكمال التلقائي لمتغيرات البيئة) إلى الإصدار التالي.

في الواقع، تم إجراء التغييرات التالية على المكتبة:

  • إصلاحات رمز طفيفة.
  • إعادة بناء التعليمات البرمجية.
  • إعادة تنظيم وتحسين الاختبارات الحالية.

خطط للإصدارات القادمة

مكتبة بايثون شل

  • إضافة دعم لاستدعاءات الأوامر غير المحظورة (توازي التنفيذ).

مكتبة سمارت إنف

  • تنفيذ الإكمال التلقائي لمتغيرات البيئة في فئة ENV.
  • دعم عامل التشغيل للتحقق من وجود متغير env.
  • تنفيذ دعم الدالتين str() وrepr() لفئة ENV.

وسيتم الإعلان عن مواعيد الإصدارات القادمة عبر قنوات التواصل التالية:

المصدر: www.habr.com

إضافة تعليق