Mopidy: من Port Mopidy إلى Python 3

تم إنشاؤها على ١٣ يوليو ٢٠١٤  ·  32تعليقات  ·  مصدر: mopidy/mopidy

Python 3 هو مستقبل Python ، وهو متاح على نطاق واسع في البيئات التي يعمل بها Mopidy ، وأنا مهتم جدًا بالقدرة على استخدام asyncio ، والذي يتطلب Python 3.3+. لا يوجد شيء خارج مشروع Mopidy يمنعنا من الانتقال إلى Python 3.

هذا هو الخطأ الرئيسي لتتبع طريقنا نحو تشغيل Mopidy على Python 3.

  • التبعيات:

    • [x] Pykka يدعم Python 2.6+، 3.2+.

    • [x] يدعم Tornado Python 2.6+، 3.2+.

    • GStreamer:

    • [x] # 225: بدّل روابط GStreamer Python من gst-python (Python 2 فقط) إلى PyGI (Python 2 + 3). للحصول على كل شيء يعمل مع PyGI ، يلزم وجود منفذ GStreamer من 0.10 إلى 1.x في نفس الوقت.

    • [x] # 665: صنع خلاطات مستقلة عن GStreamer ، حيث تتم إزالة الخلاطات في GStreamer 1.x.

    • [x] # 671: استخراج / إعادة تنفيذ دعم تنسيق قائمة التشغيل لدينا حتى لا يعتمد على GStreamer. هناك بعض المشكلات في إعادة تطبيق هذا في أعلى PyGI / GStreamer 1.x.

  • انقل نمط الكود نحو التوافق مع Python 2 + 3:

    • [x] flake8 تحذير رمز نظيف.

    • [x] قم بإسقاط الدعم لجميع إصدارات Python الأقدم من 2.7.

    • [x] استخدم from __future__ import unicode_literals كل مكان وقم بتمييز السلاسل الثنائية بـ b'foo' .

    • [x] إصلاح مشكلات قابلية النقل المحددة بواسطة أداة 2to3 انتقائي.

  • دعم التنمية:

    • [x] استخدم المواد السامة لإجراء الاختبارات ، حتى نتمكن بسهولة من إضافة اختبار Python 3 بالتوازي مع Python 2.7.

  • Mopidy- سبوتيفي:

    • [x] تنفيذ ربط libspotify الجديد ، pyspotify 2 ، والذي يدعم Python 2.7 ، 3.2+.

    • [x] أعد تطبيق Mopidy-Spotify فوق pyspotify 2.

  • Mopidy-MPRIS:

    • [x] يمكن الاستعاضة عن الارتباطات التي تشير إلى لغة الثعبان بـ PyGI.

    • [x] يمكن استبدال python-dbus بـ GDBus من خلال PyGI.

  • النظام البيئي للملحق:

    • [x] استخدم السُموم كعداء اختبار في cookiecutter-mopidy-ext لتكون جاهزًا لبدء تشغيل الاختبارات على Python 3 أيضًا.

    • [] إرسال طلبات سحب / إنشاء مشكلات لدعم Python 2 + 3 في جميع الامتدادات عندما يعمل Mopidy نفسه على Python 2 + 3.

  • [x] بمجرد أن تدعم جميع الامتدادات Python 2 + 3 ، قم بإسقاط دعم Python 2 في Mopidy.
  • [x] إزالة Python 2isms.
  • [x] استمتع بميزات Python 3 الجديدة ، مثل Asyncio.
C-enhancement

التعليق الأكثر فائدة

ما زلت ملتزمًا بنقل Mopidy إلى Python 3. لن أدع Mopidy يموت مع Python 2.

تاريخ

تم القيام بمعظم العمل الخاص بنقلنا إلى Python 3 منذ سنوات للتأكد من أن جميع تبعياتنا تعمل على Python 3:

  • كان Pykka متوافقًا مع Python 3 منذ استخراجه من Mopidy في عام 2011.
  • كان pyspotify 2.x إعادة كتابة كاملة للحصول على دعم Python 3 وإكمال روابط libspotify. استغرق هذا وحده ما يقرب من عامين من البداية إلى النهاية ، وهو العمل الذي أصبح الآن باطلاً في الغالب بفضل Spotify الذي كسر أجزاء كبيرة من libspotify.
  • كان ميناء Mopidy من GStreamer 0.10 / PyGObject إلى GStreamer 1.x / PyGI ، الذي تم إصداره في Mopidy 2.0 قبل ثلاث سنوات ، هو المشروع الأساسي لإجازة أبوي الثانية.

كما يمكنك أن تقرأ على الأرجح ما بين السطور من التاريخ الطويل لهذه المشكلة وحالة تعقب المشكلة ، لم يكن هذا المشروع والمصدر المفتوح بشكل عام على رأس أولوياتي منذ أن انتقلت من العمل في مؤسسة كبيرة إلى شركة ناشئة منذ ثلاثة أعوام.

ومع ذلك ، بدأت ببطء في التقاط مشاريعي مفتوحة المصدر مرة أخرى. أحاول التركيز على مشروع واحد في ذلك الوقت وشحنه قبل تولي المشروع التالي. حتى الآن تلقت Mopidy.js و Mopidy-MPRIS بعض الحب والرعاية. حاليًا ، أعمل على إصدار جديد من Pykka ، والذي من بين التحسينات الصغيرة الأخرى سيقلل من وقت بدء التشغيل للعديد من إعدادات Mopidy بعامل ضخم.

القادم

بمجرد شحن Pykka 2 ، فإن هدفي الأساسي هو نقل Mopidy إلى Python 3.

لن أعطي أي تقدير للوقت الذي سيكتمل فيه هذا العمل ، لأن ذلك من شأنه ببساطة أن يهيئ نفسي للفشل. كل هذا يتوقف كثيرا على العوامل الخارجية والدافع.

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

بالنسبة للمطورين الأساسيين الآخرين ، أنا متأكد من أنهم سيكونون قادرين على المساعدة ، لكن لدينا جميعًا أولوياتنا ومشاريعنا. لن أنتظر وقتنا وحافزنا للجميع. إذا انضموا بمجرد أن أبدأ بشكل صحيح في Mopidy 3 ، فسيكون ذلك رائعًا ، لكن ليس لدي أي توقعات.

إذا وضعنا كل ما عندي من تجول حول الحياة وكل شيء جانبًا ، فهذه ليست مهمة ضخمة ولا مهمة لست على دراية بها. يتعلق الأمر في الغالب بإكمال الأشياء الجارية الأخرى بحيث يمكن أن يصبح هذا هو التركيز الأساسي لفترة من الوقت.

موبيدي 3

منذ أن كتبت الخطة الأخيرة هنا في مارس 2017 ، أصبح اعتماد Python 3 حتى الآن لدرجة أنني لم أعد أرى الهدف من اتخاذ خطوات تدريجية من Python 2 فقط عبر 2 + 3 إلى Python 3 فقط. لقد خدمنا Mopidy 2.x جيدًا لمدة ثلاث سنوات ، وسيكون مكانًا جيدًا ومستقرًا لترك أولئك العالقين في Python 2 لأي سبب من الأسباب.

وبالتالي ، عند مراجعة الخطة اعتبارًا من مارس 2017 ، أتخيل عملية مثل هذه:

  • [x] قم بإزالة جميع الأشياء المهملة من Mopidy. راجع الإصدار 3.0 الرئيسي للتعرف على المشكلات التفصيلية.
  • [x] Port Mopidy إلى Python 3.
  • [x] قم بعمل إصدار مسبق لـ PyPI ، على سبيل المثال 3.0.0-rc1. لن يؤثر هذا على أولئك الذين يستخدمون pip install mopidy ، لكنه يجعل من الممكن تشغيل pip install --pre mopidy لتثبيت الإصدار التجريبي لاختبار الامتدادات المنقولة.
  • [x] قم بنقل جميع الامتدادات في Mopidy org إلى Python 3 ، وقم اختياريًا بعمل إصدارات أولية إلى PyPI.
  • [] Port / help port ملحقات أخرى ل Python 3. أرادت المساعدة بمجرد وصولنا إلى هنا.
  • [] قم بعمل إصدار رئيسي منسق من Mopidy core وجميع الامتدادات في Mopidy org.

ال 32 كومينتر

مرحبًا ، أود المساعدة في ترحيل Python 3 ، هل هناك شيء على وجه الخصوص قيد التنفيذ؟ لا تريد أن تطأ أصابع قدم أي شخص

لقد بدأت فرعًا في jodal / feature / py3-موافي حيث قمت بما يلي:

  • قام بتحديث التحقق من إصدار Python الذي يمنعك من بدء تشغيل Mopidy تحت Python 3
  • تحديث إعدادox.ini
  • البدء في إصلاح مشكلات Py3 لكل وحدة على حدة ، وإجراء الاختبارات تحت كل من Python 2 و Python 3

لم أتطرق إلى هذا منذ نوفمبر ، باستثناء أنني قمت بإعادة تأسيس الفرع أعلى Mopidy 2.0.0 منذ يومين. الحالة الحالية هي أنني أصلحت حوالي 1000 اختبار ، مع بقاء 240 تقريبًا.

الخطة المستقبلية هي:

  1. أصلح بقية المشكلات وحدة تلو الأخرى.
  2. خذ الخبرة من حل جميع المشكلات وحاول الوصول إلى أكبر قدر ممكن منها في Mopidy 2.x. يغير نهج الوحدة النمطية الحالي الخاص بي الأشياء (على سبيل المثال ، يبدأ في تهديد مسارات الملفات مثل Unicode بدلاً من بايت) التي لا أريد الهبوط فيها في Mopidy حتى الإصدار 3.0 ، حيث يُسمح لنا بتكسير الأشياء. يجب أن يكون الفرق الذي يتعذر على الأرض حتى 3.0 صغيرًا قدر الإمكان.
  3. استخدم Mopidy مع Python 3 ، واكتشف جميع المشكلات التي لا تغطيها الاختبارات.

حسنًا ، سأبتعد عن هذا الفرع وأحاول إصلاح أي اختبارات يمكنني القيام بها

مرحبا شباب ، أي أخبار عن هذا الموضوع؟

3 سنوات متبقية لهذا 😉

هل هناك أي تحديثات على هذا؟

يعد النقل إلى Python 3 أهم أولوياتي الشخصية عند العمل على Mopidy ، لكن المشكلة هي أنني كنت مشغولًا جدًا بالعمل خلال العام الماضي.

خطتي الحالية ، بترتيب تقريبي ، هي:

  • [x] إصلاح مجموعة اختبار Mopidy-MPRIS ، بحيث يمكنها تحمل التغييرات القادمة. هذا ممل بعض الشيء وعتبة بابي ميل.
  • [x] قم بإزالة جميع الأشياء المهملة من Mopidy وقم بإصدار رئيسي. اطلع على هذا الحدث الهام للتعرف على المشكلات التفصيلية. هذا أتطلع إليه.
  • [x] تأكد من أن جميع الامتدادات في Mopidy org لا تزال تعمل بعد الإزالة ، وقم بإجراء التغييرات والإصدارات اللازمة.
  • [x] Port Mopidy إلى Python 2 + 3 وقم بعمل إصدار رئيسي آخر.
  • [] قم بنقل جميع الامتدادات في Mopidy org إلى Python 3 فقط ثم حررها.
  • [] Port / help port جميع الامتدادات الأخرى إلى Python 3 فقط وحث على إطلاقها.
  • [] قم بإزالة دعم Python 2 من Mopidy نفسها.

كما ترى ، هناك بعض المهام التي يجب القيام بها أولاً قبل بدء النقل نفسه. بعد قولي هذا ، تم الانتهاء بالفعل من أكبر مجموعة من الأعمال: إعادة كتابة pyspotify للعمل على Python 3 (قضيت عامين من وقت فراغي هنا) ونقل Mopidy إلى GStreamer 1.x (إجازة أبوة واحدة من وقت الفراغ قضيت هنا).

سأصل إلى هناك ، لكن الأمر يستغرق وقتًا. إذا كان الناس يريدون المساعدة ، أعتقد أن الأكثر فائدة هو مساعدة امتدادات المنافذ إلى Python 3 بمجرد أن يدعم Mopidy 2 + 3.

شكرا على التحديث ،jodal.

أعتقد أن الانتقال إلى Python3 يعد فكرة جيدة.

أنا جديد في mopidy ولم أساهم فيه أبدًا ، هل تعتقد ذلك
هل تستطيع مساعدتك بشيء؟

المي ، 22 دي مار. de 2017 a la (s) 07:08، Frederick Gnodtke <
[email protected]> escribió:

شكرا على التحديث ، jodal https://github.com/jodal .

-
أنت تتلقى هذا لأنك مشترك في هذا الموضوع.
قم بالرد على هذا البريد الإلكتروني مباشرة ، وقم بعرضه على GitHub
https://github.com/mopidy/mopidy/issues/779#issuecomment-288352544 ، أو كتم الصوت
الخيط
https://github.com/notifications/unsubscribe-auth/AHQMO8UqLNKzfVQZAZJ3Pnjx2N7MsHg4ks5roPMEgaJpZM4CMq8p
.

تساعد أي مساعدة في المشروع الذي يحرر بعضًا من عبء الصيانة في تحقيق الأهداف الكبيرة مثل Python 3 ، حيث إنها توفر الوقت من المشرفين إما للعمل على المشكلات الأكبر بأنفسهم أو لإجراء مراجعة مناسبة للكود على مساهمات أكبر ، والتي يمكن أن تكون مرهقة للغاية وتستغرق وقتًا طويلاً. هناك مثالان رئيسيان يساعدان المستخدمين الآخرين في تصحيح أخطاءهم ، وإعادة إنتاج الأخطاء المحتملة ، وتقليل الخطوات اللازمة لإعادة إنتاج ، وتوثيق النتائج في المشكلات.

jodal أين يمكننا أن نرى عملك مع python3؟

مع تحياتي

jodal يبدو فرع py3-موافي الذي ذكرته قليلاً ... مهجور. هل يوجد واحد جديد في مكان ما؟
أفكر في كتابة ملحق وأفضل البحث في بعض أخطاء py3 في فرع mopidy غير المستقر بدلاً من تذكر حلول py2 السيئة.

ما هو الوضع على هذا؟ هل هناك نسخة من mopidy يمكن استخدامها مع python3؟

ستعمل pylast التبعية على إسقاط دعم Python 2 القديم قريبًا: https://github.com/pylast/pylast/issues/265

أهلا،
حاليًا أحتفظ بالبلاست في دبيان. أنوي تحميل أحدث إصدار ([1]) والذي لم يعد يدعم Python 2.7
أخطط لنشر هذا الإصدار في نهاية فبراير ، إذا كان mopidy لا يزال يستخدم Python 2 ، فلن يتم تضمينه
في الإصدار التالي من دبيان ، والذي قد يكون عارًا لأن mopidy هو برنامج رائع: مبتسم:

هل هناك أي فرع رسمي حيث يحدث هذا؟ أنا على استعداد للمساعدة في حدوث ذلك

يعتبر

jodal هل الامتدادات هي مانع هنا؟ إذا كان الأمر كذلك ، فإنني أقترح فتح مشكلة مقابل كل امتداد والرجوع إليها هنا للمتابعة. إذا كان بإمكانك تقديم بعض الإرشادات في المشكلة حول التغييرات التي من المحتمل أن تكون مطلوبة ، فمن المأمول أن الأشخاص الذين ليسوا على دراية ببايثون (مثلي) يمكنهم المساعدة.

ملاحظة: يسعدني مساعدتي في الامتدادات التي أستخدمها (GMusic و Iris و Podcast و Scrobbler و Spotify) ، فأنا لا أعرف حقًا ما يجب فعله في الوقت الحالي.

مرحبًا أيها الناس ، هل يمكن لشخص ما أن يوضح حالة التكيف مع python3؟ هل لدينا أي تقديرات عن موعد إصدار أول إصدار من python3؟ شكرا.

ما زلت ملتزمًا بنقل Mopidy إلى Python 3. لن أدع Mopidy يموت مع Python 2.

تاريخ

تم القيام بمعظم العمل الخاص بنقلنا إلى Python 3 منذ سنوات للتأكد من أن جميع تبعياتنا تعمل على Python 3:

  • كان Pykka متوافقًا مع Python 3 منذ استخراجه من Mopidy في عام 2011.
  • كان pyspotify 2.x إعادة كتابة كاملة للحصول على دعم Python 3 وإكمال روابط libspotify. استغرق هذا وحده ما يقرب من عامين من البداية إلى النهاية ، وهو العمل الذي أصبح الآن باطلاً في الغالب بفضل Spotify الذي كسر أجزاء كبيرة من libspotify.
  • كان ميناء Mopidy من GStreamer 0.10 / PyGObject إلى GStreamer 1.x / PyGI ، الذي تم إصداره في Mopidy 2.0 قبل ثلاث سنوات ، هو المشروع الأساسي لإجازة أبوي الثانية.

كما يمكنك أن تقرأ على الأرجح ما بين السطور من التاريخ الطويل لهذه المشكلة وحالة تعقب المشكلة ، لم يكن هذا المشروع والمصدر المفتوح بشكل عام على رأس أولوياتي منذ أن انتقلت من العمل في مؤسسة كبيرة إلى شركة ناشئة منذ ثلاثة أعوام.

ومع ذلك ، بدأت ببطء في التقاط مشاريعي مفتوحة المصدر مرة أخرى. أحاول التركيز على مشروع واحد في ذلك الوقت وشحنه قبل تولي المشروع التالي. حتى الآن تلقت Mopidy.js و Mopidy-MPRIS بعض الحب والرعاية. حاليًا ، أعمل على إصدار جديد من Pykka ، والذي من بين التحسينات الصغيرة الأخرى سيقلل من وقت بدء التشغيل للعديد من إعدادات Mopidy بعامل ضخم.

القادم

بمجرد شحن Pykka 2 ، فإن هدفي الأساسي هو نقل Mopidy إلى Python 3.

لن أعطي أي تقدير للوقت الذي سيكتمل فيه هذا العمل ، لأن ذلك من شأنه ببساطة أن يهيئ نفسي للفشل. كل هذا يتوقف كثيرا على العوامل الخارجية والدافع.

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

بالنسبة للمطورين الأساسيين الآخرين ، أنا متأكد من أنهم سيكونون قادرين على المساعدة ، لكن لدينا جميعًا أولوياتنا ومشاريعنا. لن أنتظر وقتنا وحافزنا للجميع. إذا انضموا بمجرد أن أبدأ بشكل صحيح في Mopidy 3 ، فسيكون ذلك رائعًا ، لكن ليس لدي أي توقعات.

إذا وضعنا كل ما عندي من تجول حول الحياة وكل شيء جانبًا ، فهذه ليست مهمة ضخمة ولا مهمة لست على دراية بها. يتعلق الأمر في الغالب بإكمال الأشياء الجارية الأخرى بحيث يمكن أن يصبح هذا هو التركيز الأساسي لفترة من الوقت.

موبيدي 3

منذ أن كتبت الخطة الأخيرة هنا في مارس 2017 ، أصبح اعتماد Python 3 حتى الآن لدرجة أنني لم أعد أرى الهدف من اتخاذ خطوات تدريجية من Python 2 فقط عبر 2 + 3 إلى Python 3 فقط. لقد خدمنا Mopidy 2.x جيدًا لمدة ثلاث سنوات ، وسيكون مكانًا جيدًا ومستقرًا لترك أولئك العالقين في Python 2 لأي سبب من الأسباب.

وبالتالي ، عند مراجعة الخطة اعتبارًا من مارس 2017 ، أتخيل عملية مثل هذه:

  • [x] قم بإزالة جميع الأشياء المهملة من Mopidy. راجع الإصدار 3.0 الرئيسي للتعرف على المشكلات التفصيلية.
  • [x] Port Mopidy إلى Python 3.
  • [x] قم بعمل إصدار مسبق لـ PyPI ، على سبيل المثال 3.0.0-rc1. لن يؤثر هذا على أولئك الذين يستخدمون pip install mopidy ، لكنه يجعل من الممكن تشغيل pip install --pre mopidy لتثبيت الإصدار التجريبي لاختبار الامتدادات المنقولة.
  • [x] قم بنقل جميع الامتدادات في Mopidy org إلى Python 3 ، وقم اختياريًا بعمل إصدارات أولية إلى PyPI.
  • [] Port / help port ملحقات أخرى ل Python 3. أرادت المساعدة بمجرد وصولنا إلى هنا.
  • [] قم بعمل إصدار رئيسي منسق من Mopidy core وجميع الامتدادات في Mopidy org.

منذ خمسة أشهر ، أعتقد أن الوقت قد حان لتحديث هذه المشكلة. تم شحن إصدار Pykka الذي تحدثت عنه آخر مرة باسم Pykka 2.0 قبل ستة أسابيع. منذ ذلك الحين ، بدأت العمل على Mopidy مرة أخرى:

  • تم إصدار Bugfix الإصدار 2.2.3 ، لذلك ليس لدينا حاليًا أي شيء لم يتم طرحه في الفرع release-2.2 .
  • في الفرع develop الذي سيصبح Mopidy 3.0 ، تمت إزالة معظم الأشياء المهملة.

من المحتمل أن يكون التالي بالنسبة لي هو:

  • [x] تبسيط التسجيل (# 1452)
  • [x] تحديد وتنفيذ كيفية التعامل مع مسارات نظام الملفات عند الانتقال من واجهات برمجة تطبيقات Python 2 الموجهة للبايت إلى واجهات برمجة تطبيقات نظام ملفات Python 3 النصية. (لا توجد مشكلة في تتبع هذا حتى الآن.)
  • [x] ابدأ في جعل مجموعة الاختبار تمر على Python 3.

هل هناك أي شيء يمكنني القيام به للمساعدة في إنشاء mopidy core أو المكوِّن الإضافي mopidy-soundcloud يعمل مع python3؟

شكرا لعملك حتى الآن @ jodal!

أنا أتساءل ، كيف يفترض بنا تثبيت المستندات عند استخدام إصدار Python 3 من Sphinx لبناءها (طلبًا لأغراض التعبئة والتغليف)؟

اعتدت أن أقوم بعمل make -C docs SPHINXBUILD=sphinx-build-2 man ولكن تغيير ذلك بالنسبة إلى sphinx-build-3 التخلص من الأخطاء فقط:

make: Entering directory '/home/builder/aports/community/mopidy/src/Mopidy-3.0.0a1/docs'
sphinx-build-3 -b man -d _build/doctrees   . _build/man
Running Sphinx v1.8.4

Configuration error:
The configuration file (or one of the modules it imports) called sys.exit()

يحدث هذا في كل من 2.2.3 و 3.0.0a1. أم أن هذا الجزء لم يتم استدارته بعد؟

بالنظر إلى أن الإصدار 3 سيعطل التوافق مع الإصدارات السابقة على أي حال ، وستنتهي Python2 في يناير ، فهل هناك سبب للحفاظ على توافق python2 في الإصدار 3؟

tmccombs قال:

بالنظر إلى أن الإصدار 3 سيعطل التوافق مع الإصدارات السابقة على أي حال ، وستنتهي Python2 في يناير ، فهل هناك سبب للحفاظ على توافق python2 في الإصدار 3؟

لا ، نحن لا نخطط للحفاظ على توافق Python 2 في Mopidy 3.

نقلا عن نفسي من فبراير:

منذ أن كتبت الخطة الأخيرة هنا في مارس 2017 ، أصبح اعتماد Python 3 حتى الآن لدرجة أنني لم أعد أرى الهدف من اتخاذ خطوات تدريجية من Python 2 فقط عبر 2 + 3 إلى Python 3 فقط. لقد خدمنا Mopidy 2.x جيدًا لمدة ثلاث سنوات ، وسيكون مكانًا جيدًا ومستقرًا لترك أولئك العالقين في Python 2 لأي سبب من الأسباب.

@ قال

يحدث هذا في كل من 2.2.3 و 3.0.0a1. أم أن هذا الجزء لم يتم استدارته بعد؟

لم يتم نقل أي من Mopidy إلى Python 3 حتى الآن. لقد قمنا للتو بإجراء عمليات تبسيط أخرى وإزالة الأشياء المهملة لتسهيل عملية النقل. بمجرد قيامنا بالتنقل ، سنقوم ببناء المستندات باستخدام Sphinx الذي يعمل على Python 3.

هل يمكنني أن أنصح بالتأكد من أن الإصدار التالي (2.4.0؟) متوافق مع Python 3؟ تعمل معظم التوزيعات على التخلص من حزم Python 2. بالنسبة لحالتي ، فإن Alpine Linux يقوم بإسقاط Python 2 في الإصدار التالي (3.11 ، نهاية يناير من العام المقبل) مما يعني أنه سيتم حذف Mopidy من المستودعات إذا لم تكن متوافقة مع Python 3 بحلول ذلك الوقت.

سيكون Mopidy 3.0 متوافقًا مع Python 3. ومن المقرر إصداره قبل نهاية العام.

مرحبًا jodal ، قد يكون لدي بعض الدورات الاحتياطية في الأسابيع المقبلة للمساعدة في بعض وظائف Python 3. إما في mopidy مباشرة أو في الامتدادات. هل لديك أي قضايا معينة للتعامل معها؟

مرحباzubieta!

لقد قمنا مؤخرًا بدمج إعداد اختبار يعمل بنجاح ~ 10٪ من مجموعة الاختبار على Python 3. وهناك عدد من العلاقات العامة سيتم دمجهما قريبًا مما يزيد ذلك إلى ~ 20٪. يرجى التحقق من العلاقات العامة المفتوحة بالفعل ، حتى لا تكرر أي عمل ، واطلع على وصف # 1809 للحصول على دليل تفصيلي حول كيفية نقل عدد قليل من الوحدات النمطية واختباراتها.

ستتبع الإضافات بمجرد تشغيل Mopidy core على Python 3.

أعتقد أن الوقت قد حان لتحديث الحالة على Mopidy و Python 3 ...

يعمل Mopidy 3.0.0a2 على Python 3: tada:

تعمل الآن كل واحدة من اختبارات 2016 في مجموعة اختبار Mopidy على كل من Python 2.7 و Python 3.7. تم دمج كل هذا العمل في الفرع develop . شكراً جزيلاً لـ kingosticks للمساعدة في جهود النقل!

لقد أصدرت للتو فرع develop كما هو لـ PyPI كـ Mopidy 3.0.0a2 . يمكن تثبيته بـ:

python3.7 -m pip install --pre mopidy

لم يخضع هذا الإصدار لأي اختبار مكثف ، بخلاف وجود مجموعة اختبار اجتياز ، والإجابة على بعض الطلبات عبر MPD و HTTP ، وتشغيل عدد قليل من ملفات MP3.

الطريق إلى الأمام: arrow_right:

من المحتمل أن يكون Mopidy 3.0.0a2 هو الإصدار الوحيد من Mopidy الذي يدعم كلاً من Python 2 و 3. سنبدأ على الفور في إزالة دعم Python 2.7 وجعل Mopidy قاعدة أكواد Python أنظف وأكثر حداثة.

خطة الإصدار النهائي تقريبًا كما يلي:

  • [x] قم بإزالة دعم Python 2.7 من Mopidy وتنظيفه بعد جهد النقل.
  • [x] تأكد من دعم Python 3.8.
  • [x] قم بتنسيق شفرة المصدر باللون الأسود.
  • [x] قم بعمل إصدار
  • [] إصلاح المشكلات في الإصدار 3.0 .
  • [] عمل إصدار تجريبي .
  • [] إصلاح أي أخطاء تم اكتشافها من خلال استخدام ونقل الامتدادات.
  • [] تقديم مرشح للإفراج عنهم .
  • [] بمجرد نقل مجموعة كبيرة بما يكفي من الامتدادات ...
  • [] الإصدار Mopidy 3.0 النهائي .

المساعدة المطلوبة: عيون_قلب:

بالتوازي مع المسيرة نحو 3.0 النهائي ، نحتاج إلى المساعدة في بقية النظام البيئي المكون من

لكل ملحق تهتم به:

  • [] المنفذ إلى Python> = 3.7. إسقاط دعم Python 2.7.
  • [] ضع في اعتبارك تضمين تحديثات إعداد المشروع من
  • [] عمل إصدارات مسبقة من المنافذ إلى PyPI.
  • [] بمجرد إصدار Mopidy 3.0 النهائي ، قم بعمل الإصدارات النهائية لـ PyPI.

76 التزامًا ، وتغيير 204 ملفًا ، وإدخال 9832 (+) ، وحذف 9612 (-) لاحقًا ، لدينا إصدار سابق آخر: Mopidy 3.0.0a3 موجود الآن على PyPI. يمكن تثبيته بـ:

python3 -m pip install --pre mopidy

جديد منذ 3.0.0a2:

  • انتهى دعم Python 2.7 ، بما في ذلك الكثير من التعليمات البرمجية القديمة / التوافق:

    • اختفت الوحدة النمطية mopidy.compat .

    • اختفت التعليقات # encoding: utf-8 .

    • اختفت الواردات from __future__ ... .

    • اختفت جميع الفئات الفرعية لـ object .

    • .encode() و .decode() يشتملان على وسيطة "utf-8" صريحة.

  • كود المصدر منسق بـ black . :قلب أسود:
  • تم تكوين isort الآن ، ويمكن استخدامه لتنظيف الواردات عند الحاجة.
  • تم استبدال mock بـ unittest.mock .
  • يتم استبدال طرق التأكيد unittest بعبارات pytest assert ، مما يعني إمكانية قراءة أفضل ورسائل خطأ أفضل.
  • يتم استبدال معظم مثيلات % و .format() بسلاسل f.
  • تعمل جميع linters على Python 3.
  • تم بناء المستندات على Python 3.
  • تعمل الاختبارات في CI على Python 3.8 بالإضافة إلى Python 3.7.
  • تم تصغير setup.py واستبداله بـ setup.cfg .
  • تم استبدال التبعيات في tox.ini و dev-requirements.txt و docs/requirements.txt بـ "الإضافات" في setup.cfg . هذا يعني أن تبعيات dev مثبتة الآن بـ python3 -m pip install -e ".[dev]" .

الطريق إلى الأمام لا يزال يبدو كما لو كنت مسودة في التعليق السابق.

فيما يتعلق بنواة Mopidy ، أعتقد أننا انتهينا هنا.

ما تبقى من الطريق إلى Mopidy 3.0 النهائي يتم تتبعه في الإصدار 3.0:
https://github.com/mopidy/mopidy/milestone/55

يتم تتبع نقل الامتدادات الرئيسية إلى Python 3 على لوحة المشروع هذه:
https://github.com/orgs/mopidy/projects/2

إذا قمت باختبار Mopidy على Python 3 في المستقبل القريب ، فيرجى فتح المشكلات الخاصة بأي مشاكل تواجهك!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات