Mopidy: Porter Mopidy vers Python 3

Créé le 13 juil. 2014  ·  32Commentaires  ·  Source: mopidy/mopidy

Python 3 est l'avenir de Python, il est largement disponible sur les environnements sur lesquels Mopidy est déployé, et je suis très intéressé de pouvoir utiliser asyncio, qui nécessite Python 3.3+. Rien en dehors du projet Mopidy ne nous empêche de passer à Python 3.

C'est le bogue principal pour suivre notre chemin vers l'exécution de Mopidy sur Python 3.

  • Dépendances :

    • [x] Pykka prend en charge Python 2.6+, 3.2+.

    • [x] Tornado prend en charge Python 2.6+, 3.2+.

    • GStreamer :

    • [x] #225 : Basculez les liaisons Python GStreamer de gst-python (Python 2 uniquement) à PyGI (Python 2+3). Pour que tout fonctionne avec PyGI, un portage de GStreamer de 0.10 à 1.x en même temps est requis.

    • [x] #665 : Rendre les mélangeurs indépendants de GStreamer, car les mélangeurs sont supprimés dans GStreamer 1.x.

    • [x] #671 : Extrayez/réimplémentez notre support de format de liste de lecture pour ne pas dépendre de GStreamer. Il y a quelques problèmes avec la réimplémentation de ceci sur PyGI/GStreamer 1.x.

  • Déplacer le style de code vers une compatibilité Python 2+3 :

    • [x] avertissement flake8 code propre.

    • [x] Abandon de la prise en charge de toutes les versions de Python antérieures à 2.7.

    • [x] Utilisez from __future__ import unicode_literals partout et marquez les chaînes binaires avec b'foo' .

    • [x] Correction sélective des problèmes de portabilité identifiés par l'outil 2to3 .

  • Aide au développement :

    • [x] Utilisez tox pour exécuter des tests, nous pouvons donc facilement ajouter des tests Python 3 en parallèle avec Python 2.7.

  • Mopidy-Spotify :

    • [x] Implémentez la nouvelle liaison libspotify, pyspotify 2, qui prend en charge Python 2.7, 3.2+.

    • [x] Réimplémenter Mopidy-Spotify au-dessus de pyspotify 2.

  • Mopidy-MPRIS :

    • [x] les liaisons python-indicate vers libindicate peuvent être remplacées par PyGI.

    • [x] python-dbus peut être remplacé par GDBus via PyGI.

  • Écosystème d'extension :

    • [x] Utilisez tox comme testeur dans cookiecutter-mopidy-ext pour être prêt à lancer des tests sur Python 3 également.

    • [ ] Envoyez des demandes d'extraction/créez des problèmes pour la prise en charge de Python 2+3 dans toutes les extensions lorsque Mopidy lui-même fonctionne sur Python 2+3.

  • [x] Une fois que ~toutes les extensions prennent en charge Python 2+3, supprimez la prise en charge de Python 2 dans Mopidy.
  • [x] Supprimez les 2ismes Python.
  • [x] Profitez des nouvelles fonctionnalités de Python 3, comme asyncio.
C-enhancement

Commentaire le plus utile

Je suis toujours déterminé à porter Mopidy sur Python 3. Je ne laisserai pas Mopidy mourir avec Python 2.

Histoire

La plupart du travail pour nous déplacer vers Python 3 a été effectué il y a des années en s'assurant que toutes nos dépendances fonctionnent sur Python 3:

  • Pykka est compatible avec Python 3 depuis son extraction de Mopidy en 2011.
  • pyspotify 2.x était une réécriture complète pour obtenir la prise en charge de Python 3 et des liaisons libspotify complètes. Cela à lui seul a pris près de deux ans du début à la fin, un travail qui est maintenant pour la plupart nul grâce à Spotify qui a brisé de grandes parties de libspotify.
  • Le portage de Mopidy de GStreamer 0.10/PyGObject vers GStreamer 1.x/PyGI, sorti dans Mopidy 2.0 il y a trois ans, était le projet principal de mon deuxième congé paternité.

Comme vous pouvez probablement le lire entre les lignes de la longue histoire de ce problème et de l'état du suivi des problèmes, ce projet et l'open source en général n'ont pas été ma priorité absolue depuis que je suis passé d'une grande entreprise à une startup il y a trois ans.

Cependant, je commence lentement à reprendre mes projets open source. J'essaie de me concentrer sur un projet à la fois et de l'expédier avant d'entreprendre le suivant. Jusqu'à présent, Mopidy.js et Mopidy-MPRIS ont reçu un amour et des soins tendres. Actuellement, je travaille sur une nouvelle version de Pykka , qui, entre autres petites améliorations, réduira considérablement le temps de démarrage de nombreuses configurations de Mopidy.

Suivant

Une fois Pykka 2 expédié, mon objectif principal est de déplacer Mopidy vers Python 3.

Je ne donnerai aucune estimation de temps pour quand ce travail sera terminé, car ce serait simplement me mettre en échec. Tout dépend beaucoup de facteurs externes et de motivation.

Quant à aider, je ne vois pas qu'il y ait beaucoup de nouveaux contributeurs peuvent faire pour aider de manière significative l'effort directement. Je ne suis toujours pas revenu à travailler sur l'open source à une cadence prévisible et régulière, donc les revues de relations publiques deviendraient rapidement démotivantes pour les deux parties. Comme mentionné précédemment dans ce numéro, toute aide visant à réduire la charge d'entretien général est toujours utile de manière indirecte.

Quant aux autres développeurs principaux, je suis sûr qu'ils pourraient vous aider, mais nous avons tous nos priorités et nos projets. Je n'attendrai pas notre temps et notre motivation pour tous s'aligner. S'ils se joignent à moi une fois que j'ai commencé correctement sur Mopidy 3, ce serait bien, mais je n'ai aucune attente.

En mettant toutes mes divagations sur la vie et tout de côté, ce n'est ni une tâche gigantesque ni une tâche que je ne connais pas. Il s'agit principalement de terminer les autres tâches en cours afin que cela puisse devenir l'objectif principal pendant un certain temps.

Mopidy 3

Depuis que j'ai écrit le dernier plan ici en mars 2017, l'adoption de Python 3 est allée si loin que je ne vois plus l'intérêt de passer progressivement de Python 2 uniquement via 2+3 à Python 3 uniquement. Mopidy 2.x nous a assez bien servi pendant trois ans et sera un endroit stable et stable pour laisser ceux qui sont bloqués sur Python 2 pour une raison quelconque.

Ainsi, en révisant le plan à partir de mars 2017, j'imagine un processus comme celui-ci :

  • [x] Supprimez tous les éléments obsolètes de Mopidy. Voir le jalon v3.0 pour les problèmes détaillés.
  • [x] Porter Mopidy vers Python 3.
  • [x] Faire une pré-version pour PyPI, par exemple 3.0.0-rc1. Cela n'affectera pas ceux qui exécutent pip install mopidy , mais permet d'exécuter pip install --pre mopidy pour installer la pré-version pour tester les extensions portées.
  • [x] Portez toutes les extensions de l'organisation Mopidy vers Python 3 et faites éventuellement des pré-versions vers PyPI.
  • [ ] Port/help port d'autres extensions vers Python 3. Aide recherchée une fois que nous serons arrivés ici.
  • [ ] Créez une version majeure coordonnée du noyau Mopidy et de toutes les extensions dans l'organisation Mopidy.

Tous les 32 commentaires

Hé, j'aimerais aider avec la migration de Python 3, quelque chose en particulier est en cours ? je ne veux marcher sur les pieds de personne

J'ai lancé une branche sur jodal/feature/py3-compat où j'ai :

  • mis à jour la vérification de la version Python qui vous empêche de démarrer Mopidy sous Python 3
  • mis à jour la configuration de tox.ini
  • commencer à corriger les problèmes de Py3 module par module, en exécutant les tests sous Python 2 et Python 3

Je n'y ai pas touché depuis novembre, sauf que j'ai rebasé la branche sur Mopidy 2.0.0 il y a quelques jours. L'état actuel est que j'ai corrigé environ 1000 tests, avec environ 240 restants.

Le plan à venir est de :

  1. Corrigez le reste des problèmes module par module.
  2. Tirez parti de l'expérience de la résolution de tous les problèmes et essayez d'en trouver le plus possible dans Mopidy 2.x. Mon approche actuelle module par module change des choses (par exemple, elle commence à menacer les chemins de fichiers en tant qu'Unicode au lieu d'octets) que je ne veux pas atterrir dans Mopidy avant la version 3.0, où nous sommes autorisés à casser les choses. Le diff can't-land-until-3.0 doit être aussi petit que possible.
  3. Utilisez Mopidy avec Python 3, en trouvant tous les problèmes non couverts par les tests.

ok, je vais sortir de cette branche et essayer de corriger tous les tests que je peux

Salut les gars, des nouvelles sur ce problème ?

Il reste 3 ans et demi pour ça 😉

Y a-t-il des mises à jour à ce sujet ?

Le portage vers Python 3 est ma tâche personnelle la plus prioritaire lorsque je travaille sur Mopidy, le problème est que j'ai été très occupé par le travail au cours de la dernière année.

Mon plan actuel, dans l'ordre approximatif, est de :

  • [x] Correction de la suite de tests Mopidy-MPRIS, afin qu'elle puisse survivre aux changements à venir. C'est un peu ennuyeux et ma porte mile.
  • [x] Supprimez tous les éléments obsolètes de Mopidy et faites une version majeure. Voir ce jalon pour les problèmes détaillés. C'est ce que j'attends avec impatience.
  • [x] Assurez-vous que toutes les extensions de l'organisation Mopidy fonctionnent toujours après la suppression, et apportez les modifications et versions nécessaires.
  • [x] Portez Mopidy vers Python 2 + 3 et faites une autre version majeure.
  • [ ] Portez toutes les extensions de l'organisation Mopidy vers Python 3 uniquement et publiez-les.
  • [ ] Port/help transfère toutes les autres extensions vers Python 3 uniquement et demande instamment de les publier.
  • [ ] Supprimez le support Python 2 de Mopidy lui-même.

Comme vous pouvez le voir, quelques tâches doivent être effectuées avant de commencer le portage lui-même. Cela dit, le plus gros travail est déjà terminé : réécriture de pyspotify pour travailler sur Python 3 (deux ans de mon temps libre ont été passés ici) et portage de Mopidy vers GStreamer 1.x (un congé de paternité de temps libre passé ici).

Je vais y arriver, mais ça prend du temps. Si les gens veulent aider, je pense que le plus utile serait d'aider les extensions de port vers Python 3 dès que Mopidy prend en charge 2+3.

Merci pour la mise à jour, @jodal.

Je pense que c'est une bonne idée de passer à Python3.

Je suis nouveau dans mopidy et n'y ai jamais contribué, pensez-vous que je
peut vous aider avec quelque chose?

El mié., 22 mars. de 2017 à 07:08, Frederick Gnodtke <
[email protected]> inscription :

Merci pour la mise à jour, @jodal https://github.com/jodal .

-
Vous recevez ceci parce que vous êtes abonné à ce fil.
Répondez directement à cet e-mail, consultez-le sur GitHub
https://github.com/mopidy/mopidy/issues/779#issuecomment-288352544 , ou couper le son
le fil
https://github.com/notifications/unsubscribe-auth/AHQMO8UqLNKzfVQZAZJ3Pnjx2N7MsHg4ks5roPMEgaJpZM4CMq8p
.

Toute aide au projet qui libère une partie du fardeau de la maintenance aide à atteindre les grands objectifs épineux comme Python 3, car elle libère le temps des mainteneurs pour travailler eux-mêmes sur les problèmes plus importants ou pour effectuer une révision de code appropriée sur des contributions plus importantes, ce qui peut être assez épuisant et chronophage. Deux exemples principaux sont d'aider d'autres utilisateurs à déboguer leurs problèmes et à reproduire les bogues possibles, à minimiser les étapes nécessaires à la reproduction et à documenter les résultats dans les problèmes.

@jodal Où pouvons-nous voir votre travail avec python3 ?

Cordialement

@jodal la branche py3-compat que vous avez mentionnée semble un peu... abandonnée. Y a-t-il un nouveau quelque part ?
J'envisage d'écrire une extension et je préférerais creuser dans certains bogues py3 dans une branche mpidy instable plutôt que de me souvenir des solutions de contournement py2 désagréables.

Quel est le statut à ce sujet ? existe-t-il une version de mopidy qui peut être utilisée avec python3 ?

La dépendance pylast abandonnera bientôt la prise en charge de l'ancien Python 2 : https://github.com/pylast/pylast/issues/265

Salut,
Actuellement, je maintiens pylast dans Debian. J'ai l'intention de télécharger la dernière version ([1]) qui ne prend plus en charge Python 2.7
Je prévois de publier cette version fin février, si mopidy utilise toujours Python 2 ne sera pas inclus
dans la prochaine version de Debian, ce qui pourrait être dommage car mpidy est un logiciel incroyable :smiley:

Y a-t-il une branche officielle où cela se passe? Je suis prêt à aider cela à se produire

Salutations

@jodal Les extensions sont-elles le bloqueur ici ? Si tel est le cas, je suggérerais d'ouvrir un problème pour chaque extension et de les référencer ici pour en garder une trace. Si vous pouvez donner des instructions dans le numéro sur les changements susceptibles d'être nécessaires, alors les gens qui ne sont pas si familiers avec Python (comme moi) pourraient, espérons-le, toujours aider.

PS Je suis heureux d'aider avec les extensions que j'utilise (GMusic, Iris, Podcast, Scrobbler, Spotify), je ne sais pas trop quoi faire pour le moment.

Salut les gens, quelqu'un peut-il clarifier le statut de l'adaptation à python3? Avons-nous une estimation de la date de sortie de la première version de python3 ? Merci.

Je suis toujours déterminé à porter Mopidy sur Python 3. Je ne laisserai pas Mopidy mourir avec Python 2.

Histoire

La plupart du travail pour nous déplacer vers Python 3 a été effectué il y a des années en s'assurant que toutes nos dépendances fonctionnent sur Python 3:

  • Pykka est compatible avec Python 3 depuis son extraction de Mopidy en 2011.
  • pyspotify 2.x était une réécriture complète pour obtenir la prise en charge de Python 3 et des liaisons libspotify complètes. Cela à lui seul a pris près de deux ans du début à la fin, un travail qui est maintenant pour la plupart nul grâce à Spotify qui a brisé de grandes parties de libspotify.
  • Le portage de Mopidy de GStreamer 0.10/PyGObject vers GStreamer 1.x/PyGI, sorti dans Mopidy 2.0 il y a trois ans, était le projet principal de mon deuxième congé paternité.

Comme vous pouvez probablement le lire entre les lignes de la longue histoire de ce problème et de l'état du suivi des problèmes, ce projet et l'open source en général n'ont pas été ma priorité absolue depuis que je suis passé d'une grande entreprise à une startup il y a trois ans.

Cependant, je commence lentement à reprendre mes projets open source. J'essaie de me concentrer sur un projet à la fois et de l'expédier avant d'entreprendre le suivant. Jusqu'à présent, Mopidy.js et Mopidy-MPRIS ont reçu un amour et des soins tendres. Actuellement, je travaille sur une nouvelle version de Pykka , qui, entre autres petites améliorations, réduira considérablement le temps de démarrage de nombreuses configurations de Mopidy.

Suivant

Une fois Pykka 2 expédié, mon objectif principal est de déplacer Mopidy vers Python 3.

Je ne donnerai aucune estimation de temps pour quand ce travail sera terminé, car ce serait simplement me mettre en échec. Tout dépend beaucoup de facteurs externes et de motivation.

Quant à aider, je ne vois pas qu'il y ait beaucoup de nouveaux contributeurs peuvent faire pour aider de manière significative l'effort directement. Je ne suis toujours pas revenu à travailler sur l'open source à une cadence prévisible et régulière, donc les revues de relations publiques deviendraient rapidement démotivantes pour les deux parties. Comme mentionné précédemment dans ce numéro, toute aide visant à réduire la charge d'entretien général est toujours utile de manière indirecte.

Quant aux autres développeurs principaux, je suis sûr qu'ils pourraient vous aider, mais nous avons tous nos priorités et nos projets. Je n'attendrai pas notre temps et notre motivation pour tous s'aligner. S'ils se joignent à moi une fois que j'ai commencé correctement sur Mopidy 3, ce serait bien, mais je n'ai aucune attente.

En mettant toutes mes divagations sur la vie et tout de côté, ce n'est ni une tâche gigantesque ni une tâche que je ne connais pas. Il s'agit principalement de terminer les autres tâches en cours afin que cela puisse devenir l'objectif principal pendant un certain temps.

Mopidy 3

Depuis que j'ai écrit le dernier plan ici en mars 2017, l'adoption de Python 3 est allée si loin que je ne vois plus l'intérêt de passer progressivement de Python 2 uniquement via 2+3 à Python 3 uniquement. Mopidy 2.x nous a assez bien servi pendant trois ans et sera un endroit stable et stable pour laisser ceux qui sont bloqués sur Python 2 pour une raison quelconque.

Ainsi, en révisant le plan à partir de mars 2017, j'imagine un processus comme celui-ci :

  • [x] Supprimez tous les éléments obsolètes de Mopidy. Voir le jalon v3.0 pour les problèmes détaillés.
  • [x] Porter Mopidy vers Python 3.
  • [x] Faire une pré-version pour PyPI, par exemple 3.0.0-rc1. Cela n'affectera pas ceux qui exécutent pip install mopidy , mais permet d'exécuter pip install --pre mopidy pour installer la pré-version pour tester les extensions portées.
  • [x] Portez toutes les extensions de l'organisation Mopidy vers Python 3 et faites éventuellement des pré-versions vers PyPI.
  • [ ] Port/help port d'autres extensions vers Python 3. Aide recherchée une fois que nous serons arrivés ici.
  • [ ] Créez une version majeure coordonnée du noyau Mopidy et de toutes les extensions dans l'organisation Mopidy.

Comme il y a cinq mois, je suppose qu'il est temps de mettre à jour ce problème. La version Pykka dont j'ai parlé la dernière fois a été expédiée sous le nom de Pykka 2.0 il y a six semaines. Depuis, j'ai recommencé à travailler sur Mopidy :

  • La version 2.2.3 du correctif de bogue est sortie, donc nous n'avons actuellement rien d'inédit dans la branche release-2.2 .
  • Dans la branche develop qui deviendra Mopidy 3.0, la plupart des éléments obsolètes ont été supprimés.

La prochaine étape pour moi est probablement :

  • [x] Simplification de la journalisation (#1452)
  • [x] Décidez et implémentez comment gérer les chemins de système de fichiers lors du passage des API Python 2 orientées octets aux API de système de fichiers Python 3 orientées texte. (Aucun problème de suivi pour le moment.)
  • [x] Commencez à faire passer la suite de tests sur Python 3.

Y a-t-il quelque chose que je puisse faire pour aider à faire fonctionner soit le noyau mpidy, soit le plugin mopidy-soundcloud avec python3 ?

Merci pour votre travail jusqu'à présent @jodal !

Je me demande, comment sommes-nous censés installer les documents lors de l'utilisation de la version Python 3 de Sphinx pour les construire (demander à des fins d'emballage) ?

J'avais l'habitude de faire make -C docs SPHINXBUILD=sphinx-build-2 man mais en changeant cela pour sphinx-build-3 juste des erreurs :

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()

Cela se produit à la fois sur 2.2.3 et 3.0.0a1. Ou cette partie n'est-elle tout simplement pas encore portée ?

Étant donné que la v3 rompra de toute façon la compatibilité descendante et que python2 sera en fin de vie en janvier, y a-t-il une raison de conserver la compatibilité python2 dans la v3 ?

@tmccombs a dit :

Étant donné que la v3 rompra de toute façon la compatibilité descendante et que python2 sera en fin de vie en janvier, y a-t-il une raison de conserver la compatibilité python2 dans la v3 ?

Non, nous ne prévoyons pas de conserver la compatibilité Python 2 dans Mopidy 3.

Je me cite à partir de février :

Depuis que j'ai écrit le dernier plan ici en mars 2017, l'adoption de Python 3 est allée si loin que je ne vois plus l'intérêt de passer progressivement de Python 2 uniquement via 2+3 à Python 3 uniquement. Mopidy 2.x nous a assez bien servi pendant trois ans et sera un endroit stable et stable pour laisser ceux qui sont bloqués sur Python 2 pour une raison quelconque.

@PureTryOut a dit :

Cela se produit à la fois sur 2.2.3 et 3.0.0a1. Ou cette partie n'est-elle tout simplement pas encore portée ?

Aucun de Mopidy n'a encore été porté sur Python 3. Nous venons de faire d'autres simplifications et de supprimer des éléments obsolètes pour faciliter la transition. Une fois le portage effectué, nous créerons la documentation avec Sphinx exécuté sur Python 3.

Puis-je vous conseiller de vous assurer que la prochaine version (2.4.0 ?) est compatible avec Python 3 ? La plupart des distributions travaillent à se débarrasser de leurs packages Python 2. Dans mon cas, Alpine Linux abandonne Python 2 d'ici la prochaine version (3.11, fin janvier de l'année prochaine), ce qui signifie que Mopidy sera supprimé des référentiels s'il n'est pas compatible avec Python 3 d'ici là.

Mopidy 3.0 sera compatible avec Python 3. Le plan est de le sortir avant la fin de l'année.

Salut @jodal , je pourrais avoir des cycles de rechange dans les semaines à venir pour aider avec certaines fonctionnalités de Python 3. Soit dans mopidy directement, soit dans les extensions. Avez-vous des problèmes particuliers à résoudre ?

Salut @zubieta !

Nous avons récemment fusionné une configuration de test qui exécute avec succès environ 10 % de la suite de tests sur Python 3. Il y a quelques PR qui seront bientôt fusionnés, ce qui augmentera ce chiffre à environ 20 %. Veuillez vérifier quels PR sont déjà ouverts, afin de ne pas dupliquer de travail, et consultez la description de #1809 pour un guide étape par étape sur la façon de porter quelques modules supplémentaires et leurs tests.

Les extensions suivront dès que le noyau Mopidy s'exécutera sur Python 3.

Je pense qu'il est temps de faire une mise à jour sur Mopidy et Python 3...

Mopidy 3.0.0a2 fonctionne sur Python 3 :tada:

Chacun des tests 2016 de la suite de tests de Mopidy s'exécute désormais à la fois sur Python 2.7 et Python 3.7. Tout ce travail est fusionné dans la branche develop . Un grand merci à @kingosticks pour son aide dans l'effort de portage !

Je viens de publier la branche develop en l'état vers PyPI en tant que Mopidy 3.0.0a2 . Il peut être installé avec :

python3.7 -m pip install --pre mopidy

Cette version n'a fait l'objet d'aucun test approfondi, à part avoir une suite de tests réussie, répondre à quelques requêtes via MPD et HTTP et lire une poignée de fichiers MP3.

Route à venir :arrow_right:

Mopidy 3.0.0a2 sera probablement la seule version de Mopidy à prendre en charge à la fois Python 2 et 3. Nous commencerons rapidement à supprimer la prise en charge de Python 2.7 et à faire de Mopidy une base de code Python plus propre et plus moderne.

Le plan vers une version finale est approximativement le suivant :

  • [x] Supprimez le support Python 2.7 de Mopidy et nettoyez après l'effort de portage.
  • [x] Assurez-vous que Python 3.8 est pris en charge.
  • [x] Formatez le code source avec Black.
  • [x] Faire une autre version alpha .
  • [ ] Corrigez les problèmes du jalon v3.0 .
  • [ ] Faire une version bêta .
  • [ ] Corrigez tous les bogues découverts lors de l'utilisation et du portage d'extensions.
  • [ ] Faire une release candidate .
  • [ ] Une fois qu'un ensemble d'extensions suffisamment important a été porté...
  • [ ] Version finale de Mopidy 3.0 .

Besoin d'aide :heart_eyes:

En parallèle de la marche vers la 3.0 finale, nous avons besoin d'aide avec le reste de l'écosystème de 122 packages sur PyPI trouvés en recherchant "mopidy".

Pour chaque extension qui vous intéresse :

  • [ ] Portage vers Python >= 3.7. Abandonnez la prise en charge de Python 2.7.
  • [ ] Envisagez d'inclure les modernisations de configuration de projet à partir de l' extension cookiecutter . Je mettrai à jour le cookiecutter sous peu, une fois que je serai en mesure de porter moi-même certaines extensions.
  • [ ] Faire des pré-versions des ports vers PyPI.
  • [ ] Une fois la version finale de Mopidy 3.0 publiée, effectuez les versions finales sur PyPI.

76 commits, 204 fichiers modifiés, 9832 insertions(+), 9612 suppressions(-) plus tard, nous avons une autre pré-version : Mopidy 3.0.0a3 est maintenant sur PyPI. Il peut être installé avec :

python3 -m pip install --pre mopidy

Nouveau depuis 3.0.0a2 :

  • La prise en charge de Python 2.7 a disparu, y compris de nombreux codes hérités/de compatibilité :

    • Le module mopidy.compat disparu.

    • # encoding: utf-8 commentaires

    • from __future__ ... importations de

    • Tous les sous-classements de object ont disparu.

    • .encode() et .decode() n'incluent plus d'argument explicite "utf-8" .

  • Le code source est formaté avec black . :coeur noir:
  • isort sont maintenant configurés et peuvent être utilisés pour nettoyer les importations en cas de besoin.
  • mock est remplacé par unittest.mock .
  • les méthodes d'assertion unittest sont remplacées par des instructions pytest assert , ce qui signifie une meilleure lisibilité et de meilleurs messages d'erreur.
  • La plupart des instances de % et .format() sont remplacées par des chaînes de caractères f.
  • Tous les linters fonctionnent sur Python 3.
  • Les documents sont construits sur Python 3.
  • Les tests en CI s'exécutent sur Python 3.8 en plus de Python 3.7.
  • setup.py a été minimisé et remplacé par un déclaratif setup.cfg .
  • Les dépendances dans tox.ini , dev-requirements.txt et docs/requirements.txt sont toutes remplacées par des "extras" dans setup.cfg . Cela signifie que les dépendances de développement sont maintenant installées avec python3 -m pip install -e ".[dev]" .

La route à suivre ressemble toujours à ce que j'ai rédigé dans le commentaire précédent.

En ce qui concerne le noyau Mopidy, je pense que nous avons terminé ici.

Le reste du chemin vers la finale de Mopidy 3.0 est suivi dans le jalon v3.0 :
https://github.com/mopidy/mopidy/milestone/55

Le portage des extensions clés vers Python 3 est suivi sur ce tableau de projet :
https://github.com/orgs/mopidy/projects/2

Si vous testez Mopidy sur Python 3 dans un proche avenir, veuillez ouvrir des problèmes pour tous les problèmes que vous rencontrez !

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

flyingrub picture flyingrub  ·  15Commentaires

handsomegui picture handsomegui  ·  12Commentaires

szuniverse picture szuniverse  ·  13Commentaires

jodal picture jodal  ·  13Commentaires

Mestelan picture Mestelan  ·  6Commentaires