Python 3 adalah masa depan Python, tersedia secara luas di lingkungan tempat Mopidy digunakan, dan saya cukup tertarik untuk dapat menggunakan asyncio, yang membutuhkan Python 3.3+. Tidak ada apa pun di luar proyek Mopidy yang menghalangi kami untuk pindah ke Python 3.
Ini adalah bug utama untuk melacak cara kami menjalankan Mopidy di Python 3.
from __future__ import unicode_literals
mana-mana dan tandai string biner dengan b'foo'
.2to3
.Hai, saya ingin membantu migrasi Python 3, apa saja yang sedang berlangsung? tidak ingin menginjak kaki siapa pun
Saya telah memulai cabang di jodal/feature/py3-compat tempat saya:
Saya belum menyentuh ini sejak November, kecuali bahwa saya mengubah basis cabang di atas Mopidy 2.0.0 beberapa hari yang lalu. Status saat ini adalah saya telah memperbaiki sekitar 1000 tes, dengan sekitar 240 tersisa.
Rencana ke depan adalah:
ok, saya akan memotong cabang itu dan mencoba memperbaiki tes apa pun yang saya bisa
Halo teman-teman, ada berita tentang masalah ini?
3½ tahun tersisa untuk ini
Apakah ada pembaruan tentang ini?
Porting ke Python 3 adalah tugas prioritas tertinggi pribadi saya ketika mengerjakan Mopidy, masalahnya adalah saya cukup sibuk dengan pekerjaan selama setahun terakhir.
Rencana saya saat ini, dalam urutan perkiraan, adalah:
Seperti yang Anda lihat, ada beberapa tugas yang harus dilakukan terlebih dahulu sebelum memulai porting itu sendiri. Yang mengatakan, bagian terbesar dari pekerjaan sudah selesai: Menulis ulang pyspotify untuk bekerja di Python 3 (dua tahun waktu luang saya dihabiskan di sini) dan porting Mopidy ke GStreamer 1.x (satu cuti ayah dari waktu luang dihabiskan di sini).
Aku akan sampai di sana, tapi butuh waktu. Jika orang ingin membantu, saya pikir yang paling membantu adalah membantu ekstensi port ke Python 3 segera setelah Mopidy mendukung 2+3.
Terima kasih atas pembaruannya, @jodal.
Saya pikir itu ide yang bagus untuk pindah ke Python3.
Saya baru di mopidy dan tidak pernah berkontribusi untuk itu, apakah Anda pikir saya?
dapat membantu Anda dengan sesuatu?
El mié., 22 de mar. de 2017 a la 07:08, Frederick Gnodtke <
[email protected]> penjelasan:
Terima kasih atas pembaruannya, @jodal https://github.com/jodal .
—
Anda menerima ini karena Anda berlangganan utas ini.
Balas email ini secara langsung, lihat di GitHub
https://github.com/mopidy/mopidy/issues/779#issuecomment-288352544 , atau bisukan
benang
https://github.com/notifications/unsubscribe-auth/AHQMO8UqLNKzfVQZAZJ3Pnjx2N7MsHg4ks5roPMEgaJpZM4CMq8p
.
Bantuan apa pun dengan proyek yang membebaskan sebagian dari beban pemeliharaan membantu dengan tujuan berbulu besar seperti Python 3, karena membebaskan waktu dari pengelola untuk mengerjakan masalah yang lebih besar itu sendiri atau untuk melakukan tinjauan kode yang tepat pada kontribusi yang lebih besar, yang dapat berupa cukup menguras tenaga dan waktu. Dua contoh utama membantu pengguna lain dengan men-debug masalah mereka, dan untuk mereproduksi kemungkinan bug, meminimalkan langkah-langkah yang diperlukan untuk mereproduksi, dan mendokumentasikan hasil dalam masalah.
@jodal Di mana kami dapat melihat pekerjaan Anda dengan python3?
Salam
@jodal cabang py3-compat yang Anda sebutkan terlihat agak... ditinggalkan. Apakah ada yang baru di suatu tempat?
Saya sedang mempertimbangkan untuk menulis ekstensi dan saya lebih suka menggali beberapa bug py3 di cabang mopidy yang tidak stabil daripada mengingat solusi py2 yang buruk.
Ini statusnya apa? apakah ada versi mopidy yang dapat digunakan dengan python3?
Dependency pylast akan segera menghentikan dukungan untuk Legacy Python 2: https://github.com/pylast/pylast/issues/265
Hai,
Saat ini saya memelihara pylast di Debian. Saya bermaksud mengunggah versi terbaru ([1]) yang tidak lagi mendukung Python 2.7
Saya berencana untuk menerbitkan versi ini pada akhir Februari, jika mopidy masih menggunakan Python 2 tidak akan disertakan
dalam rilis Debian berikutnya yang mungkin memalukan karena mopidy adalah perangkat lunak yang luar biasa :smiley:
Apakah ada cabang resmi di mana ini terjadi? Saya bersedia membantu ini terjadi
Salam
@jodal Apakah ekstensi pemblokir di sini? Jika demikian, saya sarankan membuka masalah terhadap setiap ekstensi dan merujuknya di sini untuk melacak. Jika Anda dapat memberikan beberapa instruksi dalam masalah tentang perubahan apa yang mungkin diperlukan, maka orang-orang yang tidak begitu akrab dengan Python (seperti saya) semoga masih bisa membantu.
PS Saya senang membantu dengan ekstensi yang saya gunakan (GMusic, Iris, Podcast, Scrobbler, Spotify), saya hanya tidak tahu harus berbuat apa saat ini.
Hai teman-teman, bisakah seseorang menjelaskan status adaptasi ke python3? Apakah kami memiliki perkiraan kapan versi python3 pertama akan dirilis? Terima kasih.
Saya masih berkomitmen untuk mem-porting Mopidy ke Python 3. Saya tidak akan membiarkan Mopidy mati dengan Python 2.
Sebagian besar pekerjaan memindahkan kami ke Python 3 dilakukan bertahun-tahun yang lalu untuk memastikan bahwa semua dependensi kami berfungsi pada Python 3:
Karena Anda mungkin dapat membaca yang tersirat dari sejarah panjang masalah ini dan status pelacak masalah, proyek ini dan open source secara umum, belum menjadi prioritas utama saya sejak saya pindah dari bekerja di perusahaan besar ke startup tiga tahun yang lalu.
Namun, saya perlahan mulai mengambil proyek open source saya lagi. Saya mencoba untuk fokus pada satu proyek pada satu waktu dan mengirimkannya sebelum mengambil yang berikutnya. Sejauh ini Mopidy.js dan Mopidy-MPRIS telah menerima cinta dan perhatian yang lembut. Saat ini, saya sedang mengerjakan rilis baru Pykka , yang di antara peningkatan kecil lainnya akan mengurangi waktu startup dari banyak pengaturan Mopidy dengan faktor besar.
Setelah Pykka 2 dikirim, tujuan utama saya adalah memindahkan Mopidy ke Python 3.
Saya tidak akan memberikan perkiraan waktu kapan pekerjaan itu akan selesai, karena itu hanya akan membuat diri saya gagal. Itu semua sangat tergantung pada faktor eksternal dan motivasi.
Untuk membantu, saya tidak melihat ada banyak kontributor baru yang dapat dilakukan untuk membantu upaya secara langsung secara signifikan. Saya masih belum kembali mengerjakan open source dalam irama yang dapat diprediksi dan teratur, sehingga ulasan PR akan dengan cepat menjadi demotivasi bagi kedua belah pihak. Seperti disebutkan sebelumnya dalam masalah ini, bantuan apa pun untuk mengurangi beban pemeliharaan umum selalu membantu secara tidak langsung.
Adapun pengembang inti lainnya, saya yakin mereka akan dapat membantu, tetapi kami semua memiliki prioritas dan proyek kami. Saya tidak akan menunggu waktu dan motivasi kita untuk menyelaraskan semuanya. Jika mereka bergabung begitu saya memulai dengan benar di Mopidy 3, itu akan menyenangkan, tapi saya tidak punya harapan.
Mengesampingkan semua ocehan saya tentang kehidupan dan segalanya, ini bukan tugas besar atau tugas yang tidak saya kenal. Ini sebagian besar masalah menyelesaikan hal-hal lain yang sedang berlangsung sehingga ini bisa menjadi fokus utama untuk sementara waktu.
Sejak saya menulis rencana terakhir di sini pada bulan Maret 2017, adopsi Python 3 sudah begitu jauh sehingga saya tidak lagi melihat gunanya mengambil langkah bertahap dari Python 2 hanya melalui 2+3 ke Python 3 saja. Mopidy 2.x telah melayani kami dengan cukup baik selama tiga tahun, dan akan menjadi tempat yang baik dan stabil untuk meninggalkan mereka yang terjebak di Python 2 karena alasan apa pun.
Jadi, merevisi rencana dari Maret 2017, saya membayangkan proses seperti ini:
pip install mopidy
, tetapi memungkinkan untuk menjalankan pip install --pre mopidy
untuk menginstal pra-rilis untuk pengujian ekstensi porting.Karena sudah lima bulan, saya kira sudah waktunya untuk memperbarui masalah ini. Rilis Pykka yang saya bicarakan terakhir kali dikirimkan sebagai Pykka 2.0 enam minggu lalu. Sejak itu, saya mulai mengerjakan Mopidy lagi:
release-2.2
.develop
yang akan menjadi Mopidy 3.0 sebagian besar barang usang telah dihapus.Selanjutnya bagi saya mungkin:
Apakah ada yang bisa saya lakukan untuk membantu membuat mopidy core, atau plugin mopidy-soundcloud berfungsi dengan python3?
Terima kasih atas kerja kerasmu selama ini @jodal!
Saya bertanya-tanya, bagaimana cara kita menginstal dokumen saat menggunakan Sphinx versi Python 3 untuk membuatnya (meminta tujuan pengemasan)?
Saya dulu melakukan make -C docs SPHINXBUILD=sphinx-build-2 man
tetapi mengubahnya untuk sphinx-build-3
hanya membuat kesalahan:
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()
Ini terjadi pada 2.2.3 dan 3.0.0a1. Atau part ini belum di-porting?
Mengingat bahwa v3 akan merusak kompatibilitas mundur, dan python2 akan berakhir pada bulan Januari, apakah ada alasan untuk menjaga kompatibilitas python2 di v3?
@tmcombs berkata:
Mengingat bahwa v3 akan merusak kompatibilitas mundur, dan python2 akan berakhir pada bulan Januari, apakah ada alasan untuk menjaga kompatibilitas python2 di v3?
Tidak, kami tidak berencana untuk menjaga kompatibilitas Python 2 di Mopidy 3.
Mengutip diri saya dari Februari:
Sejak saya menulis rencana terakhir di sini pada bulan Maret 2017, adopsi Python 3 sudah begitu jauh sehingga saya tidak lagi melihat gunanya mengambil langkah bertahap dari Python 2 hanya melalui 2+3 ke Python 3 saja. Mopidy 2.x telah melayani kami dengan cukup baik selama tiga tahun, dan akan menjadi tempat yang baik dan stabil untuk meninggalkan mereka yang terjebak di Python 2 karena alasan apa pun.
@PureTryOut berkata:
Ini terjadi pada 2.2.3 dan 3.0.0a1. Atau part ini belum di-porting?
Belum ada Mopidy yang di-porting ke Python 3. Kami baru saja melakukan penyederhanaan lain dan menghapus hal-hal yang tidak digunakan lagi untuk mempermudah transisi. Setelah porting, kami akan membuat dokumen dengan Sphinx yang berjalan di Python 3.
Bisakah saya menyarankan untuk memastikan rilis berikutnya (2.4.0?) kompatibel dengan Python 3? Sebagian besar distribusi berupaya menyingkirkan paket Python 2 mereka. Untuk kasus saya, Alpine Linux menjatuhkan Python 2 pada rilis berikutnya (3.11, akhir Januari tahun depan) yang berarti Mopidy akan dihapus dari repositori jika tidak kompatibel dengan Python 3 saat itu.
Mopidy 3.0 akan kompatibel dengan Python 3. Rencananya adalah untuk meluncurkannya sebelum akhir tahun.
Hai @jodal , Saya mungkin memiliki beberapa siklus cadangan dalam beberapa minggu mendatang untuk membantu beberapa fungsionalitas Python 3. Baik di mopidy secara langsung atau di ekstensi. Apakah Anda memiliki masalah khusus untuk ditangani?
Hai @zubieta!
Kami baru-baru ini menggabungkan pengaturan pengujian yang berhasil menjalankan ~10% dari rangkaian pengujian di Python 3. Ada beberapa PR yang akan segera digabungkan yang meningkatkannya menjadi ~20%. Silakan periksa PR apa yang sudah terbuka, sehingga Anda tidak menduplikasi pekerjaan apa pun, dan lihat deskripsi #1809 untuk panduan langkah demi langkah tentang cara mem-port beberapa modul lagi dan pengujiannya.
Ekstensi akan mengikuti segera setelah inti Mopidy berjalan di Python 3.
Saya pikir sudah waktunya untuk pembaruan status di Mopidy dan Python 3 ...
Setiap tes 2016 di rangkaian tes Mopidy sekarang berjalan di Python 2.7 dan Python 3.7. Semua pekerjaan ini digabungkan dalam cabang develop
. Terima kasih banyak kepada @kingosticks karena telah membantu upaya porting!
Saya baru saja merilis cabang develop
apa adanya ke PyPI sebagai Mopidy 3.0.0a2 . Itu dapat diinstal dengan:
python3.7 -m pip install --pre mopidy
Rilis ini belum mengalami pengujian ekstensif, selain memiliki rangkaian pengujian yang lulus, menjawab beberapa permintaan di MPD dan HTTP, dan memainkan beberapa file MP3.
Mopidy 3.0.0a2 mungkin akan menjadi satu-satunya rilis Mopidy yang pernah mendukung Python 2 dan 3. Kami akan segera mulai menghapus dukungan Python 2.7 dan membuat Mopidy menjadi basis kode Python yang lebih bersih dan modern.
Rencana menuju rilis final kira-kira sebagai berikut:
Sejalan dengan perjalanan menuju final 3.0, kami membutuhkan bantuan dengan sisa ekosistem 122 paket di PyPI yang ditemukan dengan mencari "mopidy".
Untuk setiap ekstensi yang Anda pedulikan:
76 komit, 204 file diubah, 9832 penyisipan (+), 9612 penghapusan (-) kemudian, kami memiliki pra-rilis lain: Mopidy 3.0.0a3 sekarang ada di PyPI. Itu dapat diinstal dengan:
python3 -m pip install --pre mopidy
Baru sejak 3.0.0a2:
mopidy.compat
hilang.# encoding: utf-8
komentar hilang.from __future__ ...
impor hilang.object
hilang..encode()
dan .decode()
tidak lagi menyertakan argumen "utf-8"
eksplisit.black
. :hati hitam:isort
sekarang dikonfigurasi, dan dapat digunakan untuk membersihkan impor bila diperlukan.mock
diganti dengan unittest.mock
.assert
, yang berarti keterbacaan yang lebih baik dan pesan kesalahan yang lebih baik.%
dan .format()
diganti dengan f-string.setup.py
telah diminimalkan dan diganti dengan deklaratif setup.cfg
.tox.ini
, dev-requirements.txt
, dan docs/requirements.txt
semuanya digantikan oleh "ekstra" di setup.cfg
. Ini berarti dependensi dev sekarang diinstal dengan python3 -m pip install -e ".[dev]"
.Jalan di depan masih terlihat seperti yang saya tulis di komentar sebelumnya.
Sehubungan dengan inti Mopidy, saya pikir kita sudah selesai di sini.
Sisa perjalanan ke final Mopidy 3.0 dilacak di tonggak sejarah v3.0:
https://github.com/mopidy/mopidy/milestone/55
Porting ekstensi kunci ke Python 3 dilacak di papan proyek ini:
https://github.com/orgs/mopidy/projects/2
Jika Anda menguji Mopidy di Python 3 dalam waktu dekat, silakan buka masalah untuk masalah apa pun yang Anda hadapi!
Komentar yang paling membantu
Saya masih berkomitmen untuk mem-porting Mopidy ke Python 3. Saya tidak akan membiarkan Mopidy mati dengan Python 2.
Sejarah
Sebagian besar pekerjaan memindahkan kami ke Python 3 dilakukan bertahun-tahun yang lalu untuk memastikan bahwa semua dependensi kami berfungsi pada Python 3:
Karena Anda mungkin dapat membaca yang tersirat dari sejarah panjang masalah ini dan status pelacak masalah, proyek ini dan open source secara umum, belum menjadi prioritas utama saya sejak saya pindah dari bekerja di perusahaan besar ke startup tiga tahun yang lalu.
Namun, saya perlahan mulai mengambil proyek open source saya lagi. Saya mencoba untuk fokus pada satu proyek pada satu waktu dan mengirimkannya sebelum mengambil yang berikutnya. Sejauh ini Mopidy.js dan Mopidy-MPRIS telah menerima cinta dan perhatian yang lembut. Saat ini, saya sedang mengerjakan rilis baru Pykka , yang di antara peningkatan kecil lainnya akan mengurangi waktu startup dari banyak pengaturan Mopidy dengan faktor besar.
Selanjutnya
Setelah Pykka 2 dikirim, tujuan utama saya adalah memindahkan Mopidy ke Python 3.
Saya tidak akan memberikan perkiraan waktu kapan pekerjaan itu akan selesai, karena itu hanya akan membuat diri saya gagal. Itu semua sangat tergantung pada faktor eksternal dan motivasi.
Untuk membantu, saya tidak melihat ada banyak kontributor baru yang dapat dilakukan untuk membantu upaya secara langsung secara signifikan. Saya masih belum kembali mengerjakan open source dalam irama yang dapat diprediksi dan teratur, sehingga ulasan PR akan dengan cepat menjadi demotivasi bagi kedua belah pihak. Seperti disebutkan sebelumnya dalam masalah ini, bantuan apa pun untuk mengurangi beban pemeliharaan umum selalu membantu secara tidak langsung.
Adapun pengembang inti lainnya, saya yakin mereka akan dapat membantu, tetapi kami semua memiliki prioritas dan proyek kami. Saya tidak akan menunggu waktu dan motivasi kita untuk menyelaraskan semuanya. Jika mereka bergabung begitu saya memulai dengan benar di Mopidy 3, itu akan menyenangkan, tapi saya tidak punya harapan.
Mengesampingkan semua ocehan saya tentang kehidupan dan segalanya, ini bukan tugas besar atau tugas yang tidak saya kenal. Ini sebagian besar masalah menyelesaikan hal-hal lain yang sedang berlangsung sehingga ini bisa menjadi fokus utama untuk sementara waktu.
Mopidy 3
Sejak saya menulis rencana terakhir di sini pada bulan Maret 2017, adopsi Python 3 sudah begitu jauh sehingga saya tidak lagi melihat gunanya mengambil langkah bertahap dari Python 2 hanya melalui 2+3 ke Python 3 saja. Mopidy 2.x telah melayani kami dengan cukup baik selama tiga tahun, dan akan menjadi tempat yang baik dan stabil untuk meninggalkan mereka yang terjebak di Python 2 karena alasan apa pun.
Jadi, merevisi rencana dari Maret 2017, saya membayangkan proses seperti ini:
pip install mopidy
, tetapi memungkinkan untuk menjalankanpip install --pre mopidy
untuk menginstal pra-rilis untuk pengujian ekstensi porting.