-
Notifications
You must be signed in to change notification settings - Fork 701
Closed
Milestone
Description
Python 3 is the future of Python, it is widely available on the environments Mopidy is deployed on, and I'm quite interested in being able to use asyncio, which requires Python 3.3+. There's nothing outside the Mopidy project blocking us from moving to Python 3.
This is the master bug to track our way towards running Mopidy on Python 3.
- Dependencies:
- Pykka supports Python 2.6+, 3.2+.
- Tornado supports Python 2.6+, 3.2+.
- GStreamer:
- Switch to GStreamer 1.0 and PyGI #225: Switch GStreamer Python bindings from gst-python (Python 2 only) to PyGI (Python 2+3). To get everything working with PyGI, a port of GStreamer from 0.10 to 1.x at the same time is required.
- Prepare for loosing gst mixers #665: Make mixers independent of GStreamer, as mixers are removed in GStreamer 1.x.
- Consolidate playlist handling code #671: Extract/reimplement our playlist format support to not depend on GStreamer. There's some issues with reimplementing this on top of PyGI/GStreamer 1.x.
- Move code style towards being Python 2+3 compatible:
- flake8 warning clean code.
- Drop support for all Python versions older than 2.7.
- Use
from __future__ import unicode_literalseverywhere and mark binary strings withb'foo'. - Selectively fix portability issues identified by the
2to3tool.
- Development support:
- Use tox to run tests, so we can easily add Python 3 testing in parallel with Python 2.7.
- Mopidy-Spotify:
- Implement new libspotify binding, pyspotify 2, which supports Python 2.7, 3.2+.
- Reimplement Mopidy-Spotify on top of pyspotify 2.
- Mopidy-MPRIS:
- python-indicate bindings to libindicate can be replaced with PyGI.
- python-dbus can maybe be replaced by GDBus through PyGI.
- Extension ecosystem:
- Use tox as test runner in cookiecutter-mopidy-ext to be ready to start running tests on Python 3 too.
- Send pull requests/create issues for Python 2+3 support in all extensions when Mopidy itself works on Python 2+3.
- Once ~all extensions supports Python 2+3, drop Python 2 support in Mopidy.
- Remove Python 2isms.
- Enjoy new Python 3 features, like asyncio.
wolfsblu, firecat53, hugovk, thomas-mc-work, Firenox89 and 16 more