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.
from __future__ import unicode_literals
und markieren Sie Binärstrings mit b'foo'
.2to3
Tool identifiziert wurden.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:
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:
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:
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.
Die meiste Arbeit bei der Umstellung auf Python 3 wurde vor Jahren geleistet, um sicherzustellen, dass alle unsere Abhängigkeiten mit Python 3 funktionieren:
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.
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.
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:
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.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:
release-2.2
Zweig.develop
Zweig, der zu Mopidy 3.0 wird, wurden die meisten veralteten Dinge entfernt.Als nächstes kommt für mich wahrscheinlich:
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...
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.
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:
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:
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:
mopidy.compat
ist weg.# encoding: utf-8
Kommentare sind weg.from __future__ ...
Importe sind weg.object
sind weg..encode()
und .decode()
kein explizites "utf-8"
Argument mehr.black
formatiert. :schwarzes Herz:isort
sind jetzt konfiguriert und können bei Bedarf zum Bereinigen von Importen verwendet werden.mock
wird durch unittest.mock
.assert
Anweisungen ersetzt, was eine bessere Lesbarkeit und bessere Fehlermeldungen bedeutet.%
und .format()
werden durch f-Strings ersetzt.setup.py
wurde minimiert und durch ein deklaratives setup.cfg
.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!
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:
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:
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.