Mopidy: Mopidy auf Python 3 portieren

Erstellt am 13. Juli 2014  ·  32Kommentare  ·  Quelle: mopidy/mopidy

Python 3 ist die Zukunft von Python, es ist in den Umgebungen, in denen Mopidy bereitgestellt wird, weit verbreitet, und ich bin sehr daran interessiert, asyncio verwenden zu können, das Python 3.3+ erfordert. Außerhalb des Mopidy-Projekts hindert uns nichts daran, zu Python 3 zu wechseln.

Dies ist der Hauptfehler, um unseren Weg zur Ausführung von Mopidy auf Python 3 zu verfolgen.

  • Abhängigkeiten:

    • [x] Pykka unterstützt Python 2.6+, 3.2+.

    • [x] Tornado unterstützt Python 2.6+, 3.2+.

    • GStreamer:

    • [x] #225: Schalte die GStreamer-Python-Bindungen von gst-python (nur Python 2) auf PyGI (Python 2+3) um. Damit alles mit PyGI funktioniert, ist gleichzeitig eine Portierung von GStreamer von 0.10 auf 1.x erforderlich.

    • [x] #665: Machen Sie Mixer unabhängig von GStreamer, da Mixer in GStreamer 1.x entfernt werden.

    • [x] #671: Extrahieren/reimplementieren Sie unsere Wiedergabelistenformat-Unterstützung, um nicht von GStreamer abhängig zu sein. Es gibt einige Probleme bei der Neuimplementierung von PyGI/GStreamer 1.x.

  • Den Codestil dahingehend verschieben, dass er mit Python 2+3 kompatibel ist:

    • [x] Flake8 Warnung sauberer Code.

    • [x] Drop-Unterstützung für alle Python-Versionen älter als 2.7.

    • [x] Verwenden Sie überall from __future__ import unicode_literals und markieren Sie Binärstrings mit b'foo' .

    • [x] Beheben Sie selektiv Portabilitätsprobleme, die vom 2to3 Tool identifiziert wurden.

  • Entwicklungsunterstützung:

    • [x] Verwenden Sie tox, um Tests auszuführen, damit wir problemlos Python 3-Tests parallel zu Python 2.7 hinzufügen können.

  • Mopidy-Spotify:

    • [x] Implementieren Sie die neue libspotify-Bindung, pyspotify 2, die Python 2.7, 3.2+ unterstützt.

    • [x] Reimplementieren Sie Mopidy-Spotify über Pyspotify 2.

  • Mopidy-MPRIS:

    • [x] Python-indicate-Bindungen an libindicate können durch PyGI ersetzt werden.

    • [x] python-dbus kann vielleicht über PyGI durch GDBus ersetzt werden.

  • Erweiterungs-Ökosystem:

    • [x] Verwenden Sie tox als Test Runner in cookiecutter-mopidy-ext, um bereit zu sein, auch Tests auf Python 3 auszuführen.

    • [ ] Senden Sie Pull-Requests/Erstellen Sie Probleme für die Unterstützung von Python 2+3 in allen Erweiterungen, wenn Mopidy selbst mit Python 2+3 arbeitet.

  • [x] Sobald ~alle Erweiterungen Python 2+3 unterstützen, lösche die Python 2-Unterstützung in Mopidy.
  • [x] Python 2isms entfernen.
  • [x] Genießen Sie neue Python 3-Funktionen wie Asyncio.
C-enhancement

Hilfreichster Kommentar

Ich bin immer noch entschlossen, Mopidy auf Python 3 zu portieren. Ich werde Mopidy nicht mit Python 2 sterben lassen.

Geschichte

Die meiste Arbeit bei der Umstellung auf Python 3 wurde vor Jahren geleistet, um sicherzustellen, dass alle unsere Abhängigkeiten mit Python 3 funktionieren:

  • Pykka ist seit seiner Extraktion aus Mopidy im Jahr 2011 mit Python 3 kompatibel.
  • pyspotify 2.x wurde komplett neu geschrieben, um Python 3-Unterstützung zu erhalten und die libspotify-Bindungen zu vervollständigen. Allein dies dauerte von Anfang bis Ende fast zwei Jahre, eine Arbeit, die jetzt größtenteils hinfällig ist, da Spotify große Teile von libspotify zerstört hat.
  • Die vor drei Jahren in Mopidy 2.0 veröffentlichte Portierung von Mopidy von GStreamer 0.10/PyGObject auf GStreamer 1.x/PyGI war das Hauptprojekt meines zweiten Vaterschaftsurlaubs.

Wie Sie wahrscheinlich zwischen den Zeilen aus der langen Geschichte dieses Problems und dem Stand des Issue-Trackers lesen können, war dieses Projekt und Open Source im Allgemeinen nicht meine oberste Priorität, seit ich von einem großen Unternehmen zu einem Startup gewechselt bin vor drei Jahren.

Allerdings fange ich langsam wieder an, meine Open-Source-Projekte wieder aufzunehmen. Ich versuche, mich jeweils auf ein Projekt zu konzentrieren und es auszuliefern, bevor ich das nächste annehme. Bis jetzt hat Mopidy.js und Mopidy-MPRIS einige liebevolle Zuwendung erfahren . Derzeit arbeite ich an einer neuen Version von Pykka , die neben anderen kleinen Verbesserungen die Startzeit vieler Mopidy-Setups um einen großen Faktor verkürzen wird.

Next Up

Sobald Pykka 2 ausgeliefert wurde, besteht mein Hauptziel darin, Mopidy auf Python 3 umzustellen.

Ich werde keine Zeitschätzung geben, wann diese Arbeit abgeschlossen sein wird, da ich mich einfach auf das Scheitern einstellen würde. Alles hängt stark von externen Faktoren und der Motivation ab.

Was das Helfen betrifft, so sehe ich nicht, dass neue Mitwirkende viel tun können, um die Bemühungen direkt zu unterstützen. Ich bin immer noch nicht wieder dabei, in einem vorhersehbaren und regelmäßigen Rhythmus an Open Source zu arbeiten, daher würden PR-Rezensionen für beide Seiten schnell demotivierend werden. Wie bereits in dieser Ausgabe erwähnt, hilft jede Hilfe zur Reduzierung des allgemeinen Wartungsaufwands immer indirekt.

Was andere Core-Entwickler betrifft, so bin ich mir sicher, dass sie helfen könnten, aber wir alle haben unsere Prioritäten und Projekte. Ich werde nicht auf unsere Zeit und Motivation warten, um alle aufeinander abzustimmen. Wenn sie mitmachen, sobald ich richtig mit Mopidy 3 angefangen habe, wäre das schön, aber ich habe keine Erwartungen.

Abgesehen von all meinem Geschwafel über das Leben und alles beiseite, ist dies weder eine gigantische noch eine mir unbekannte Aufgabe. Es geht hauptsächlich darum, die anderen laufenden Sachen zu vervollständigen, damit dies für eine Weile der Hauptfokus werden kann.

Mopidy 3

Seit ich den letzten Plan hier im März 2017 geschrieben habe, ist die Einführung von Python 3 so weit fortgeschritten, dass ich keinen Sinn mehr darin sehe, schrittweise Schritte von Python 2 nur über 2+3 nur zu Python 3 zu machen. Mopidy 2.x hat uns drei Jahre lang gute Dienste geleistet und wird ein guter und stabiler Ort sein, um diejenigen, die aus irgendeinem Grund bei Python 2 feststecken, zu verlassen.

Bei der Überarbeitung des Plans vom März 2017 stelle ich mir also einen Prozess wie folgt vor:

  • [x] Entferne alle veralteten Sachen von Mopidy. Detaillierte Informationen zu den Problemen finden
  • [x] Mopidy auf Python 3 portieren.
  • [x] Erstellen Sie eine Vorabversion von PyPI, zB 3.0.0-rc1. Dies hat keine Auswirkungen auf diejenigen, die pip install mopidy ausführen, ermöglicht es jedoch, pip install --pre mopidy auszuführen, um die Vorabversion zum Testen von portierten Erweiterungen zu installieren.
  • [x] Portieren Sie alle Erweiterungen in der Mopidy-Organisation auf Python 3 und erstellen Sie optional Vorabversionen auf PyPI.
  • [ ] Portieren/Hilfe Portieren anderer Erweiterungen zu Python 3. Hilfe gesucht, sobald wir hier sind.
  • [ ] Erstellen Sie eine koordinierte Hauptversion des Mopidy-Kerns und aller Erweiterungen in der Mopidy-Organisation.

Alle 32 Kommentare

Hey, ich würde gerne bei der Python 3-Migration helfen, ist etwas Besonderes im Gange? will niemandem auf die Zehen treten

Ich habe einen Zweig bei jodal/feature/py3-compat gegründet, in dem ich:

  • die Python-Versionsprüfung aktualisiert, die Sie daran hindert, Mopidy unter Python 3 zu starten
  • das tox.ini-Setup aktualisiert
  • Beginnen Sie mit der Behebung von Py3-Problemen modulweise und führen Sie die Tests sowohl unter Python 2 als auch unter Python 3 aus

Ich habe das seit November nicht mehr angerührt, außer dass ich den Zweig vor ein paar Tagen auf Mopidy 2.0.0 umbasiert habe. Der aktuelle Status ist, dass ich ungefähr 1000 Tests durchgeführt habe, von denen noch ungefähr 240 übrig sind.

Der Plan im Voraus ist:

  1. Beheben Sie die restlichen Probleme Modul für Modul.
  2. Nehmen Sie die Erfahrung aus der Behebung aller Probleme und versuchen Sie, so viel wie möglich davon in Mopidy 2.x zu landen. Mein derzeitiger modulweiser Ansatz ändert Dinge (zB fängt er an, Dateipfade als Unicode anstelle von Bytes zu bedrohen), die ich nicht vor der 3.0-Version in Mopidy landen möchte, wo wir Dinge kaputt machen dürfen. Der Can't-land-until-3.0-Diff sollte so klein wie möglich sein.
  3. Verwenden Sie Mopidy mit Python 3 und finden Sie alle Probleme, die nicht von Tests abgedeckt werden.

ok, ich werde mich von diesem Zweig abzweigen und versuchen, alle Tests zu beheben, die ich kann

Hallo Leute, gibt es Neuigkeiten zu diesem Thema?

Noch 3½ Jahre dafür

Gibt es hierzu Updates?

Die Portierung auf Python 3 ist meine persönliche höchste Priorität bei der Arbeit an Mopidy, das Problem ist, dass ich das letzte Jahr ziemlich beschäftigt mit der Arbeit war.

Mein derzeitiger Plan ist in ungefährer Reihenfolge:

  • [x] Repariere die Mopidy-MPRIS Testsuite, damit sie die kommenden Änderungen übersteht. Das ist ein bisschen langweilig und meine Haustürmeile.
  • [x] Entfernen Sie alle veralteten Sachen von Mopidy und machen Sie eine Hauptversion. Siehe diesen Meilenstein für die detaillierten Ausgaben. Darauf freue ich mich.
  • [x] Stellen Sie sicher, dass alle Erweiterungen in der Mopidy-Organisation nach dem Entfernen noch funktionieren, und nehmen Sie die erforderlichen Änderungen und Freigaben vor.
  • [x] Portiere Mopidy auf Python 2 + 3 und erstelle eine weitere Hauptversion.
  • [ ] Alle Erweiterungen in der Mopidy-Organisation nur auf Python 3 portieren und freigeben.
  • [ ] Portieren/helfen Sie, alle anderen Erweiterungen nur auf Python 3 zu portieren und drängen Sie auf eine Veröffentlichung.
  • [ ] Entfernen Sie die Python 2-Unterstützung von Mopidy selbst.

Wie Sie sehen, müssen Sie zunächst einige Aufgaben erledigen, bevor Sie mit der Portierung selbst beginnen. Die größte Arbeit ist jedoch bereits abgeschlossen: Umschreiben von pyspotify auf Python 3 (zwei Jahre meiner Freizeit verbrachte ich hier) und die Portierung von Mopidy auf GStreamer 1.x (ein Vaterschaftsurlaub in der Freizeit verbrachte hier).

Ich werde hinkommen, aber es braucht Zeit. Wenn Leute helfen wollen, denke ich, wäre es am hilfreichsten, Erweiterungen für Python 3 zu portieren, sobald Mopidy 2+3 unterstützt.

Danke für das Update, @jodal.

Ich denke, es ist eine gute Idee, zu Python3 zu wechseln.

Ich bin neu in mopidy und habe noch nie dazu beigetragen, denkst du, dass ich?
kann dir bei etwas helfen?

El Mié., 22. Mär. de 2017 a la(s) 07:08, Frederick Gnodtke <
[email protected]> escribió:

Danke für das Update, @jodal https://github.com/jodal .


Sie erhalten dies, weil Sie diesen Thread abonniert haben.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/mopidy/mopidy/issues/779#issuecomment-288352544 oder stumm
der Faden
https://github.com/notifications/unsubscribe-auth/AHQMO8UqLNKzfVQZAZJ3Pnjx2N7MsHg4ks5roPMEgaJpZM4CMq8p
.

Jede Hilfe beim Projekt, die einen Teil des Wartungsaufwands entlastet, hilft bei den großen haarigen Zielen wie Python 3, da sie den Betreuern Zeit spart, entweder an den größeren Problemen selbst zu arbeiten oder bei größeren Beiträgen eine ordnungsgemäße Codeüberprüfung durchzuführen, was sein kann ziemlich anstrengend und zeitaufwendig. Zwei Paradebeispiele sind, anderen Benutzern beim Debuggen ihrer Probleme zu helfen und mögliche Fehler zu reproduzieren, die zur Reproduktion erforderlichen Schritte zu minimieren und die Ergebnisse in den Problemen zu dokumentieren.

@jodal Wo können wir deine Arbeit mit Python3 sehen?

Grüße

@jodal der von dir erwähnte py3-compat-Zweig sieht ein bisschen ... verlassen aus. Gibt es irgendwo ein neues?
Ich erwäge, eine Erweiterung zu schreiben, und ich würde es vorziehen, einige py3-Fehler im instabilen Mopidy-Zweig zu untersuchen, anstatt sich an böse py2-Workarounds zu erinnern.

Wie ist der Stand dazu? Gibt es eine Version von Mopidy, die mit Python3 verwendet werden kann?

Dependency Pylast stellt die Unterstützung für Legacy-Python 2 bald ein: https://github.com/pylast/pylast/issues/265

Hi,
Derzeit betreue ich Pylast in Debian. Ich beabsichtige, die neueste Version ([1]) hochzuladen, die Python 2.7 nicht mehr unterstützt
Ich plane, diese Version Ende Februar zu veröffentlichen, wenn mopidy noch Python 2 verwendet, wird es nicht enthalten sein
in der nächsten Debian-Version, was schade sein könnte, da Mopidy eine erstaunliche Software ist :smiley:

Gibt es eine offizielle Filiale, in der das passiert? Ich bin bereit zu helfen, dass dies geschieht

Grüße

@jodal Sind die Erweiterungen hier der Blocker? Wenn ja, würde ich vorschlagen, für jede Erweiterung ein Problem zu eröffnen und hier darauf zu verweisen, um den Überblick zu behalten. Wenn Sie in der Ausgabe einige Anweisungen dazu geben können, welche Änderungen wahrscheinlich erforderlich sind, können Personen, die mit Python nicht so vertraut sind (wie ich), hoffentlich trotzdem helfen.

PS Ich helfe gerne mit den Erweiterungen, die ich verwende (GMusic, Iris, Podcast, Scrobbler, Spotify), ich weiß nur nicht wirklich, was ich im Moment tun soll.

Hey Leute, kann bitte jemand den Status der Anpassung an Python3 klären? Haben wir Schätzungen, wann die erste Python3-Version veröffentlicht wird? Vielen Dank.

Ich bin immer noch entschlossen, Mopidy auf Python 3 zu portieren. Ich werde Mopidy nicht mit Python 2 sterben lassen.

Geschichte

Die meiste Arbeit bei der Umstellung auf Python 3 wurde vor Jahren geleistet, um sicherzustellen, dass alle unsere Abhängigkeiten mit Python 3 funktionieren:

  • Pykka ist seit seiner Extraktion aus Mopidy im Jahr 2011 mit Python 3 kompatibel.
  • pyspotify 2.x wurde komplett neu geschrieben, um Python 3-Unterstützung zu erhalten und die libspotify-Bindungen zu vervollständigen. Allein dies dauerte von Anfang bis Ende fast zwei Jahre, eine Arbeit, die jetzt größtenteils hinfällig ist, da Spotify große Teile von libspotify zerstört hat.
  • Die vor drei Jahren in Mopidy 2.0 veröffentlichte Portierung von Mopidy von GStreamer 0.10/PyGObject auf GStreamer 1.x/PyGI war das Hauptprojekt meines zweiten Vaterschaftsurlaubs.

Wie Sie wahrscheinlich zwischen den Zeilen aus der langen Geschichte dieses Problems und dem Stand des Issue-Trackers lesen können, war dieses Projekt und Open Source im Allgemeinen nicht meine oberste Priorität, seit ich von einem großen Unternehmen zu einem Startup gewechselt bin vor drei Jahren.

Allerdings fange ich langsam wieder an, meine Open-Source-Projekte wieder aufzunehmen. Ich versuche, mich jeweils auf ein Projekt zu konzentrieren und es auszuliefern, bevor ich das nächste annehme. Bis jetzt hat Mopidy.js und Mopidy-MPRIS einige liebevolle Zuwendung erfahren . Derzeit arbeite ich an einer neuen Version von Pykka , die neben anderen kleinen Verbesserungen die Startzeit vieler Mopidy-Setups um einen großen Faktor verkürzen wird.

Next Up

Sobald Pykka 2 ausgeliefert wurde, besteht mein Hauptziel darin, Mopidy auf Python 3 umzustellen.

Ich werde keine Zeitschätzung geben, wann diese Arbeit abgeschlossen sein wird, da ich mich einfach auf das Scheitern einstellen würde. Alles hängt stark von externen Faktoren und der Motivation ab.

Was das Helfen betrifft, so sehe ich nicht, dass neue Mitwirkende viel tun können, um die Bemühungen direkt zu unterstützen. Ich bin immer noch nicht wieder dabei, in einem vorhersehbaren und regelmäßigen Rhythmus an Open Source zu arbeiten, daher würden PR-Rezensionen für beide Seiten schnell demotivierend werden. Wie bereits in dieser Ausgabe erwähnt, hilft jede Hilfe zur Reduzierung des allgemeinen Wartungsaufwands immer indirekt.

Was andere Core-Entwickler betrifft, so bin ich mir sicher, dass sie helfen könnten, aber wir alle haben unsere Prioritäten und Projekte. Ich werde nicht auf unsere Zeit und Motivation warten, um alle aufeinander abzustimmen. Wenn sie mitmachen, sobald ich richtig mit Mopidy 3 angefangen habe, wäre das schön, aber ich habe keine Erwartungen.

Abgesehen von all meinem Geschwafel über das Leben und alles beiseite, ist dies weder eine gigantische noch eine mir unbekannte Aufgabe. Es geht hauptsächlich darum, die anderen laufenden Sachen zu vervollständigen, damit dies für eine Weile der Hauptfokus werden kann.

Mopidy 3

Seit ich den letzten Plan hier im März 2017 geschrieben habe, ist die Einführung von Python 3 so weit fortgeschritten, dass ich keinen Sinn mehr darin sehe, schrittweise Schritte von Python 2 nur über 2+3 nur zu Python 3 zu machen. Mopidy 2.x hat uns drei Jahre lang gute Dienste geleistet und wird ein guter und stabiler Ort sein, um diejenigen, die aus irgendeinem Grund bei Python 2 feststecken, zu verlassen.

Bei der Überarbeitung des Plans vom März 2017 stelle ich mir also einen Prozess wie folgt vor:

  • [x] Entferne alle veralteten Sachen von Mopidy. Detaillierte Informationen zu den Problemen finden
  • [x] Mopidy auf Python 3 portieren.
  • [x] Erstellen Sie eine Vorabversion von PyPI, zB 3.0.0-rc1. Dies hat keine Auswirkungen auf diejenigen, die pip install mopidy ausführen, ermöglicht es jedoch, pip install --pre mopidy auszuführen, um die Vorabversion zum Testen von portierten Erweiterungen zu installieren.
  • [x] Portieren Sie alle Erweiterungen in der Mopidy-Organisation auf Python 3 und erstellen Sie optional Vorabversionen auf PyPI.
  • [ ] Portieren/Hilfe Portieren anderer Erweiterungen zu Python 3. Hilfe gesucht, sobald wir hier sind.
  • [ ] Erstellen Sie eine koordinierte Hauptversion des Mopidy-Kerns und aller Erweiterungen in der Mopidy-Organisation.

Da es fünf Monate her ist, ist es wohl an der Zeit, dieses Problem zu aktualisieren. Die Pykka-Version, von der ich das letzte Mal gesprochen habe, wurde vor sechs Wochen als Pykka 2.0 ausgeliefert. Seitdem arbeite ich wieder an Mopidy:

  • Bugfix-Release 2.2.3 ist draußen, daher haben wir derzeit nichts unveröffentlichtes im release-2.2 Zweig.
  • Im develop Zweig, der zu Mopidy 3.0 wird, wurden die meisten veralteten Dinge entfernt.

Als nächstes kommt für mich wahrscheinlich:

  • [x] Protokollierung vereinfachen (#1452)
  • [x] Entscheiden und implementieren Sie, wie Dateisystempfade beim Wechsel von byteorientierten Python 2-APIs zu textorientierten Python 3-Dateisystem-APIs behandelt werden. (Noch kein Problem, dies zu verfolgen.)
  • [x] Beginnen Sie damit, die Testsuite an Python 3 weiterzugeben.

Gibt es etwas, was ich tun könnte, um zu helfen, dass entweder der Mopidy-Kern oder das Mopidy-Soundcloud-Plugin mit Python3 funktioniert?

Danke für deine bisherige Arbeit @jodal!

Ich frage mich, wie wir die Dokumente installieren sollen, wenn wir die Python 3-Version von Sphinx verwenden, um sie zu erstellen (nach Paketierungszwecken fragen)?

Früher habe ich make -C docs SPHINXBUILD=sphinx-build-2 man aber das Ändern für sphinx-build-3 nur Fehler:

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

Dies geschieht sowohl bei 2.2.3 als auch bei 3.0.0a1. Oder ist dieses Teil nur noch nicht portiert?

Angesichts der Tatsache, dass v3 sowieso die Abwärtskompatibilität bricht und Python2 im Januar ausläuft, gibt es einen Grund, die Python2-Kompatibilität in v3 beizubehalten?

@tmccombs sagte:

Angesichts der Tatsache, dass v3 sowieso die Abwärtskompatibilität bricht und Python2 im Januar ausläuft, gibt es einen Grund, die Python2-Kompatibilität in v3 beizubehalten?

Nein, wir planen nicht, die Kompatibilität von Python 2 in Mopidy 3 aufrechtzuerhalten.

Ich zitiere mich vom Februar:

Seit ich den letzten Plan hier im März 2017 geschrieben habe, ist die Einführung von Python 3 so weit fortgeschritten, dass ich keinen Sinn mehr darin sehe, schrittweise Schritte von Python 2 nur über 2+3 nur zu Python 3 zu machen. Mopidy 2.x hat uns drei Jahre lang gute Dienste geleistet und wird ein guter und stabiler Ort sein, um diejenigen, die aus irgendeinem Grund bei Python 2 feststecken, zu verlassen.

@PureTryOut sagte:

Dies geschieht sowohl bei 2.2.3 als auch bei 3.0.0a1. Oder ist dieses Teil nur noch nicht portiert?

Keines von Mopidy wurde noch auf Python 3 portiert. Wir haben gerade andere Vereinfachungen vorgenommen und veraltete Dinge entfernt, um den Übergang zu erleichtern. Nach der Portierung erstellen wir die Dokumentation mit Sphinx, das auf Python 3 ausgeführt wird.

Könnte ich raten, sicherzustellen, dass die nächste Version (2.4.0?) mit Python 3 kompatibel ist? Die meisten Distributionen arbeiten daran, ihre Python-2-Pakete loszuwerden. In meinem Fall entfernt Alpine Linux Python 2 bis zur nächsten Version (3.11, Ende Januar nächsten Jahres), was bedeutet, dass Mopidy aus den Repositorys entfernt wird, wenn es bis dahin nicht mit Python 3 kompatibel ist.

Mopidy 3.0 wird mit Python 3 kompatibel sein. Es ist geplant, es vor Ende des Jahres herauszubringen.

Hallo @jodal , ich habe in den kommenden Wochen möglicherweise einige freie Zyklen, um bei einigen Python 3-Funktionen zu helfen. Entweder in mopidy direkt oder in den Extensions. Sie haben besondere Probleme zu lösen?

Hallo @zubieta!

Wir haben vor kurzem ein Test-Setup zusammengeführt, das erfolgreich ~10% der Testsuite auf Python 3 ausführt. Es gibt einige PRs, die bald zusammengeführt werden, wodurch diese Zahl auf ~20% erhöht wird. Bitte überprüfen Sie, welche PRs bereits geöffnet sind, damit Sie keine Arbeit wiederholen, und sehen Sie sich die Beschreibung von #1809 an, um eine Schritt-für-Schritt-Anleitung zum Portieren einiger weiterer Module und deren Tests zu erhalten.

Erweiterungen werden folgen, sobald Mopidy Core auf Python 3 läuft.

Ich denke, es ist Zeit für ein Status-Update zu Mopidy und Python 3...

Mopidy 3.0.0a2 läuft auf Python 3: tada:

Jeder einzelne der 2016er Tests in der Testsuite von Mopidy läuft jetzt sowohl auf Python 2.7 als auch auf Python 3.7. All diese Arbeit wird im develop Zweig zusammengeführt. Ein großes Dankeschön an @kingosticks für die Hilfe bei der Portierung!

Ich habe gerade den develop Zweig unverändert für PyPI als Mopidy 3.0.0a2 freigegeben . Es kann installiert werden mit:

python3.7 -m pip install --pre mopidy

Diese Version wurde keinen umfangreichen Tests unterzogen, außer dass sie eine bestandene Testsuite hatte, einige Anfragen über MPD und HTTP beantwortete und eine Handvoll MP3-Dateien abspielte.

Straße voraus :arrow_right:

Mopidy 3.0.0a2 wird wahrscheinlich die einzige Mopidy-Version sein, die jemals sowohl Python 2 als auch 3 unterstützt. Wir werden umgehend damit beginnen, die Unterstützung von Python 2.7 zu entfernen und Mopidy zu einer saubereren und moderneren Python-Codebasis zu machen.

Der Plan für eine endgültige Veröffentlichung sieht ungefähr wie folgt aus:

  • [x] Entfernen Sie die Python 2.7-Unterstützung von Mopidy und bereinigen Sie nach der Portierung.
  • [x] Stellen Sie sicher, dass Python 3.8 unterstützt wird.
  • [x] Formatieren Sie den Quellcode mit Schwarz.
  • [x] Erstelle eine weitere Alpha- Version.
  • [ ] Beheben Sie die Probleme im
  • [ ] Erstellen Sie eine Beta- Version.
  • [ ] Beheben Sie alle Fehler, die durch die Verwendung und Portierung von Erweiterungen entdeckt wurden.
  • [ ] Erstellen Sie einen Release Candidate .
  • [ ] Nachdem ein ausreichend großer Satz von Erweiterungen portiert wurde...
  • [ ] Veröffentlichung von Mopidy 3.0 endgültig .

Hilfe benötigt :heart_eyes:

Parallel zum Marsch in Richtung 3.0-Finale benötigen wir 122 Paketen auf PyPI, die durch die Suche nach "mopidy" gefunden werden.

Für jede Erweiterung, die Ihnen wichtig ist:

  • [ ] Portierung auf Python >= 3.7. Lassen Sie die Unterstützung von Python 2.7 fallen.
  • [ ] Ziehen Sie in Betracht , Modernisierungen der Projekteinrichtung aus dem
  • [ ] Machen Sie Vorabversionen der Ports zu PyPI.
  • [ ] Sobald Mopidy 3.0 final veröffentlicht ist, machen Sie finale Releases auf PyPI.

76 Commits, 204 Dateien geändert, 9832 Einfügungen (+), 9612 Löschungen (-) später haben wir eine weitere Vorabversion: Mopidy 3.0.0a3 ist jetzt auf PyPI. Es kann installiert werden mit:

python3 -m pip install --pre mopidy

Neu seit 3.0.0a2:

  • Die Unterstützung für Python 2.7 ist weg, einschließlich vieler Legacy-/Kompatibilitätscodes:

    • Das Modul mopidy.compat ist weg.

    • # encoding: utf-8 Kommentare sind weg.

    • from __future__ ... Importe sind weg.

    • Alle Unterklassen von object sind weg.

    • .encode() und .decode() kein explizites "utf-8" Argument mehr.

  • Quellcode ist mit black formatiert. :schwarzes Herz:
  • isort sind jetzt konfiguriert und können bei Bedarf zum Bereinigen von Importen verwendet werden.
  • mock wird durch unittest.mock .
  • Unittest-Assertionsmethoden werden durch pytest assert Anweisungen ersetzt, was eine bessere Lesbarkeit und bessere Fehlermeldungen bedeutet.
  • Die meisten Instanzen von % und .format() werden durch f-Strings ersetzt.
  • Alle Linters laufen auf Python 3.
  • Docs basieren auf Python 3.
  • Tests in CI werden auf Python 3.8 zusätzlich zu Python 3.7 ausgeführt.
  • setup.py wurde minimiert und durch ein deklaratives setup.cfg .
  • Abhängigkeiten in tox.ini , dev-requirements.txt und docs/requirements.txt werden alle durch "Extras" in setup.cfg . Das bedeutet, dass Dev-Abhängigkeiten jetzt mit python3 -m pip install -e ".[dev]" installiert werden.

Der Weg vor uns sieht immer noch so aus, wie ich ihn im vorherigen Kommentar skizziert habe.

Was den Mopidy-Kern betrifft, denke ich, dass wir hier fertig sind.

Der Rest des Weges zum Mopidy 3.0-Finale wird im v3.0-Meilenstein verfolgt:
https://github.com/mopidy/mopidy/milestone/55

Die Portierung von Schlüsselerweiterungen auf Python 3 wird auf diesem Projektboard verfolgt:
https://github.com/orgs/mopidy/projects/2

Wenn Sie Mopidy in naher Zukunft auf Python 3 testen, öffnen Sie bitte Probleme für alle Probleme, auf die Sie stoßen!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen