نجمع بين Python و Bash: إصدار مكتبات python-shell و smart-env v. 1.0.1

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

في 29 فبراير 2020 ، تم عقد الإصدار الصغير الرسمي من مكتبات smart-env و python-shell . بالنسبة لأولئك الذين ليسوا على دراية ، أقترح أن تقرأ أول مشاركة .

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

أطلب تفاصيل تحت القط.

ما الجديد في python-shell؟


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

إكمال الفريق


موافق - هل هو ملائم عندما يطالب المحرر / IDE / Terminal اسم الأمر ، وأحيانًا استدعاء المعلمات؟ لذا فإن 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)

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


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

ما الجديد في smart-env؟


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

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

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

خطط الإصدار التالي


مكتبة Python-shell


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

مكتبة Smart-env


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

سيتم الإعلان عن مواعيد الإصدارات القادمة بالإضافة إلى ذلك في قنوات الاتصال التالية:


All Articles